From 83b7958ca9d551cb0d581d9dabdf156b39b5d7eb Mon Sep 17 00:00:00 2001 From: Erin Shaben Date: Wed, 19 Feb 2025 00:36:09 -0500 Subject: [PATCH 01/40] move pages, links, images, and snippets to new IA --- .CONTRIBUTING.md | 4 +- .../core-contracts/receiveEmitterCheck.ts | 0 .../core-contracts/receiveMessageEVM.sol | 0 .../core-contracts/receiveMessageSolana.rs | 0 .../core-contracts/receiving.sol | 0 .../core-contracts/sendMessageEVM.sol | 0 .../core-contracts/sendMessageSolana.rs | 0 .../core-contracts/sending.sol | 0 .../wormhole-relayers/ExampleContract.sol | 0 .../wormhole-relayers/getQuoteAndSend.sol | 0 .../quoteEVMDeliveryPrice.sol | 0 .../receiveWormholeMessages.sol | 0 .../wormhole-relayers/sendPayloadToEvm.sol | 0 .../use-queries/eth-call-initial-request.txt | 0 .../use-queries/eth-call-initial-response.txt | 0 .../queries/use-queries/query-demo.sol | 0 .../query-proxy-query-response.jsx | 0 .../query-request-with-api-key.jsx | 0 .../queries/use-queries/test-full.jsx | 0 .../cosmos/gatewayIBCRelayerConfig.toml | 86 - .../typescript-sdk}/addresses.ts | 0 .../typescript-sdk}/cctp.ts | 0 .../typescript-sdk}/config-override.ts | 0 .../typescript-sdk}/config.ts | 0 .../typescript-sdk}/custom-route.ts | 0 .../typescript-sdk}/ethers.js | 0 .../typescript-sdk}/example-core-bridge.ts | 0 .../typescript-sdk}/get-chain.ts | 0 .../typescript-sdk}/get-vaa.ts | 0 .../protocols-payloads/pl-1.ts | 0 .../protocols-payloads/pl-2.ts | 0 .../protocols-payloads/pl-3.ts | 0 .../protocols-payloads/pl-4.ts | 0 .../protocols-payloads/pl-5.ts | 0 .../protocols-payloads/pl-6.ts | 0 .../protocols-payloads/pl-7.ts | 0 .../protocols-payloads/pl-8.ts | 0 .../typescript-sdk}/router.ts | 0 .../typescript-sdk}/sdk-layout/layout-0.ts | 0 .../typescript-sdk}/sdk-layout/layout-1.ts | 0 .../typescript-sdk}/sdk-layout/layout-10.ts | 0 .../typescript-sdk}/sdk-layout/layout-11.ts | 0 .../typescript-sdk}/sdk-layout/layout-12.ts | 0 .../typescript-sdk}/sdk-layout/layout-13.ts | 0 .../typescript-sdk}/sdk-layout/layout-14.ts | 0 .../typescript-sdk}/sdk-layout/layout-15.ts | 0 .../typescript-sdk}/sdk-layout/layout-16.ts | 0 .../typescript-sdk}/sdk-layout/layout-17.ts | 0 .../typescript-sdk}/sdk-layout/layout-18.ts | 0 .../typescript-sdk}/sdk-layout/layout-19.ts | 0 .../typescript-sdk}/sdk-layout/layout-2.ts | 0 .../typescript-sdk}/sdk-layout/layout-20.ts | 0 .../typescript-sdk}/sdk-layout/layout-21.ts | 0 .../typescript-sdk}/sdk-layout/layout-22.ts | 0 .../typescript-sdk}/sdk-layout/layout-23.ts | 0 .../typescript-sdk}/sdk-layout/layout-25.ts | 0 .../typescript-sdk}/sdk-layout/layout-26.ts | 0 .../typescript-sdk}/sdk-layout/layout-27.ts | 0 .../typescript-sdk}/sdk-layout/layout-3.ts | 0 .../typescript-sdk}/sdk-layout/layout-4.ts | 0 .../typescript-sdk}/sdk-layout/layout-5.ts | 0 .../typescript-sdk}/sdk-layout/layout-6.ts | 0 .../typescript-sdk}/sdk-layout/layout-7.ts | 0 .../typescript-sdk}/sdk-layout/layout-8.ts | 0 .../typescript-sdk}/sdk-layout/layout-9.ts | 0 .../typescript-sdk}/signers.ts | 0 .../typescript-sdk}/token-bridge-snippet.ts | 0 .../typescript-sdk}/token-bridge.ts | 0 .../typescript-sdk}/tokens.ts | 0 .../vaas-protocols/solidity-sdk.sol | 0 .../typescript-sdk}/vaas-protocols/ts-sdk.ts | 0 .../cctp/CCTPReceiver.sol | 0 .../cctp/CCTPSender.sol | 0 .../cctp/CircleIntegration.sol | 0 .../cctp/MessageTransmitter.sol | 0 .../cctp/TokenMessenger.sol | 0 .../cctp/TokenMinter.sol | 0 .../cctp/receivePayloadAndUSDC.sol | 0 .../cctp/sendCrossChainDeposit.sol | 0 .../cctp/sendUSDCWithPayloadToEvm.sol | 0 .../connect/configuration/add-token.tsx | 0 .../configuration/advanced-configuration.json | 0 .../connect/configuration/arbitrary-token.tsx | 0 .../configuration/configure-hosted.tsx | 0 .../connect/configuration/configure-html.html | 0 .../configuration/configure-react-v0.tsx | 0 .../configuration/configure-react-v1.tsx | 0 .../configuration/custom-coingecko-key.jsx | 0 .../configuration/custom-colors-hosted.tsx | 0 .../connect/configuration/custom-colors.tsx | 0 .../custom-disable-arbitrary-tokens.jsx | 0 .../connect/configuration/custom-full.jsx | 0 .../connect/configuration/custom-menu.jsx | 0 .../custom-simple-testnet-v0.tsx | 0 .../custom-simple-testnet-v1.jsx | 0 .../configuration/custom-simple-v0.jsx | 0 .../configuration/custom-simple-v1.jsx | 0 .../custom-tokens-whitelist-advanced.jsx | 0 .../configuration/custom-tokens-whitelist.jsx | 0 .../custom-tx-settings-solana.jsx | 0 .../configuration/example-all-routes.ts | 0 .../connect/configuration/example-cctp.ts | 0 .../connect/configuration/index.ts | 0 .../configuration/sample-configuration.json | 0 .../connect/overview/cdn-with-version.html | 0 .../connect/overview/cdn.html | 0 .../connect/overview/hosted.js | 0 .../connect/overview/import-v0.js | 0 .../connect/overview/import-v1.js | 0 .../deployment-process/INttToken.sol | 0 .../deployment-process/initialize.txt | 0 .../cctp/DepositForBurn-event.md | 0 .../cctp/MessageSent-event.md | 0 build/.pages | 6 +- build/applications/.pages | 6 - build/applications/index.md | 46 - build/contract-integrations/.pages | 10 - build/contract-integrations/faqs.md | 4 +- build/contract-integrations/index.md | 70 - build/core-messaging/.pages | 5 + .../core-contracts.md | 16 +- build/core-messaging/index.md | 6 + .../wormhole-relayers.md | 12 +- build/index.md | 16 - .../multigov/.pages | 2 +- .../multigov/deployment.md | 4 +- .../multigov/faq.md | 0 .../multigov/index.md | 6 +- .../multigov/upgrade.md | 2 +- build/{applications => }/queries/.pages | 2 +- build/{applications => }/queries/faqs.md | 2 +- build/{applications => }/queries/index.md | 6 +- build/{applications => }/queries/overview.md | 6 +- .../{applications => }/queries/use-queries.md | 26 +- build/reference/.pages | 2 +- build/start-building/.pages | 3 +- build/start-building/demos.md | 40 - build/start-building/index.md | 44 +- build/toolkit/.pages | 6 +- .../dev-env.md | 0 build/toolkit/index.md | 6 +- build/toolkit/solidity-sdk.md | 6 +- build/toolkit/tilt.md | 190 - .../typescript-sdk}/.pages | 2 +- .../typescript-sdk}/index.md | 4 +- .../typescript-sdk}/protocols-payloads.md | 18 +- .../typescript-sdk}/sdk-layout.md | 56 +- .../typescript-sdk}/vaas-protocols.md | 8 +- .../typescript-sdk}/wormhole-sdk.md | 56 +- build/toolkit/wormhole-sdk/.pages | 6 - build/toolkit/wormhole-sdk/index.md | 30 - build/transfers/.pages | 7 + .../cctp.md | 32 +- .../connect/.pages | 2 +- .../connect/configuration-v0.md | 20 +- .../connect/configuration/.pages | 0 .../connect/configuration/configure-data.md | 26 +- .../connect/configuration/configure-theme.md | 6 +- .../connect/configuration/index.md | 8 +- .../connect/faqs.md | 2 +- .../connect/features.md | 2 +- .../connect/index.md | 10 +- .../connect/overview.md | 22 +- .../connect/routes.md | 6 +- .../connect/upgrade.md | 8 +- build/transfers/index.md | 6 + .../native-token-transfers/.pages | 0 .../native-token-transfers/cli-commands.md | 0 .../configuration/.pages | 0 .../configuration/access-control.md | 0 .../configuration/index.md | 4 +- .../configuration/rate-limiting.md | 0 .../deployment-process/.pages | 0 .../deployment-process/deploy-to-evm.md | 8 +- .../deployment-process/deploy-to-solana.md | 6 +- .../deployment-process/index.md | 10 +- .../deployment-process/installation.md | 0 .../deployment-process/post-deployment.md | 4 +- .../deployment-process/troubleshooting.md | 10 +- .../native-token-transfers/faqs.md | 4 +- .../native-token-transfers/index.md | 6 +- .../managers-transceivers.md | 0 .../wormhole-relayers/relayer-1.webp | Bin .../queries/overview/overview-1.webp | Bin .../supported-networks/acala.webp | Bin 116202 -> 0 bytes .../supported-networks/algorand.webp | Bin 12792 -> 0 bytes .../supported-networks/aptos.webp | Bin 3438 -> 0 bytes .../supported-networks/arbitrum-sepolia.webp | Bin 39546 -> 0 bytes .../supported-networks/arbitrum.webp | Bin 39546 -> 0 bytes .../supported-networks/aurora.webp | Bin 94008 -> 0 bytes .../supported-networks/avalanche.webp | Bin 21046 -> 0 bytes .../supported-networks/base.webp | Bin 22936 -> 0 bytes .../supported-networks/base_sepolia.webp | Bin 22936 -> 0 bytes .../supported-networks/berachain.webp | Bin 26012 -> 0 bytes .../supported-networks/blast.webp | Bin 21678 -> 0 bytes .../supported-networks/bsc.webp | Bin 27782 -> 0 bytes .../supported-networks/celestia.webp | Bin 54934 -> 0 bytes .../supported-networks/celo.webp | Bin 32716 -> 0 bytes .../supported-networks/cosmoshub.webp | Bin 23910 -> 0 bytes .../supported-networks/dymension.webp | Bin 26716 -> 0 bytes .../supported-networks/ethereum.webp | Bin 16102 -> 0 bytes .../supported-networks/evmos.webp | Bin 25054 -> 0 bytes .../supported-networks/fantom.webp | Bin 25070 -> 0 bytes .../supported-networks/gnosis.webp | Bin 3862 -> 0 bytes .../supported-networks/holesky.webp | Bin 16102 -> 0 bytes .../supported-networks/injective.webp | Bin 28070 -> 0 bytes .../supported-networks/karura.webp | Bin 22290 -> 0 bytes .../supported-networks/klaytn.webp | Bin 1874 -> 0 bytes .../supported-networks/kujira.webp | Bin 40744 -> 0 bytes .../supported-networks/linea.webp | Bin 4060 -> 0 bytes .../supported-networks/mantle.webp | Bin 23502 -> 0 bytes .../supported-networks/moonbeam.webp | Bin 23196 -> 0 bytes .../supported-networks/near.webp | Bin 15164 -> 0 bytes .../supported-networks/neon.webp | Bin 18266 -> 0 bytes .../supported-networks/neutron.webp | Bin 9632 -> 0 bytes .../supported-networks/oasis.webp | Bin 41292 -> 0 bytes .../supported-networks/optimism.webp | Bin 21094 -> 0 bytes .../supported-networks/optimism_sepolia.webp | Bin 21094 -> 0 bytes .../supported-networks/osmosis.webp | Bin 50464 -> 0 bytes .../supported-networks/polygon.webp | Bin 22628 -> 0 bytes .../supported-networks/polygon_sepolia.webp | Bin 22628 -> 0 bytes .../supported-networks/provenance.webp | Bin 17828 -> 0 bytes .../supported-networks/pythnet.webp | Bin 18712 -> 0 bytes .../supported-networks/rootstock.webp | Bin 30574 -> 0 bytes .../supported-networks/scroll.webp | Bin 13578 -> 0 bytes .../supported-networks/seda.webp | Bin 19188 -> 0 bytes .../supported-networks/sei.webp | Bin 20830 -> 0 bytes .../supported-networks/seievm.webp | Bin 20830 -> 0 bytes .../supported-networks/sepolia.webp | Bin 16102 -> 0 bytes .../supported-networks/snaxchain.webp | Bin 3278 -> 0 bytes .../supported-networks/solana.webp | Bin 15054 -> 0 bytes .../supported-networks/stargaze.webp | Bin 24220 -> 0 bytes .../supported-networks/sui.webp | Bin 24940 -> 0 bytes .../supported-networks/terra.webp | Bin 25056 -> 0 bytes .../supported-networks/terra2.webp | Bin 26906 -> 0 bytes .../supported-networks/xlayer.webp | Bin 4114 -> 0 bytes .../supported-networks/xpla.webp | Bin 25182 -> 0 bytes images/build/toolkit/tilt/tilt-1.webp | Bin 19914 -> 0 bytes .../architecture/architecture-1.webp | Bin .../introduction/introduction-1.webp | Bin .../messaging/gateway/gateway-diagram.webp | Bin 2565314 -> 0 bytes .../architecture/architecture-1.webp | Bin .../architecture/architecture-2.webp | Bin .../token-bridge/token-bridge-diagram.webp | Bin learn/.pages | 9 +- learn/fundamentals/.pages | 7 - learn/fundamentals/index.md | 52 - learn/{fundamentals => }/glossary.md | 0 learn/governance/.pages | 2 +- learn/governance/index.md | 6 +- learn/index.md | 16 - learn/infrastructure/.pages | 3 +- .../architecture.md | 4 +- learn/infrastructure/core-contracts.md | 2 +- learn/infrastructure/index.md | 2 +- learn/infrastructure/spy.md | 4 +- learn/{fundamentals => }/introduction.md | 14 +- learn/{fundamentals => }/security.md | 4 +- learn/{messaging => transfers}/.pages | 4 +- learn/{messaging => transfers}/cctp.md | 4 +- learn/{messaging => transfers}/index.md | 6 +- .../native-token-transfers/.pages | 0 .../native-token-transfers/architecture.md | 8 +- .../native-token-transfers/deployment.md | 0 .../native-token-transfers/index.md | 12 +- .../native-token-transfers/overview.md | 8 +- .../native-token-transfers/security.md | 0 .../{messaging => transfers}/token-bridge.md | 2 +- llms.txt | 21128 ++++++++-------- tutorials/by-product/connect/index.md | 2 +- tutorials/by-product/connect/react-dapp.md | 4 +- .../cross-chain-contracts.md | 2 +- .../by-product/contract-integrations/index.md | 12 +- tutorials/by-product/multigov/index.md | 2 +- tutorials/by-product/wormhole-sdk/index.md | 2 +- .../wormhole-sdk/tokens-via-token-bridge.md | 2 +- .../by-product/wormhole-sdk/usdc-via-cctp.md | 2 +- 277 files changed, 10634 insertions(+), 11720 deletions(-) rename .snippets/code/build/{contract-integrations => core-messaging}/core-contracts/receiveEmitterCheck.ts (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/core-contracts/receiveMessageEVM.sol (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/core-contracts/receiveMessageSolana.rs (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/core-contracts/receiving.sol (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/core-contracts/sendMessageEVM.sol (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/core-contracts/sendMessageSolana.rs (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/core-contracts/sending.sol (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/wormhole-relayers/ExampleContract.sol (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/wormhole-relayers/getQuoteAndSend.sol (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/wormhole-relayers/quoteEVMDeliveryPrice.sol (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/wormhole-relayers/receiveWormholeMessages.sol (100%) rename .snippets/code/build/{contract-integrations => core-messaging}/wormhole-relayers/sendPayloadToEvm.sol (100%) rename .snippets/code/build/{applications => }/queries/use-queries/eth-call-initial-request.txt (100%) rename .snippets/code/build/{applications => }/queries/use-queries/eth-call-initial-response.txt (100%) rename .snippets/code/build/{applications => }/queries/use-queries/query-demo.sol (100%) rename .snippets/code/build/{applications => }/queries/use-queries/query-proxy-query-response.jsx (100%) rename .snippets/code/build/{applications => }/queries/use-queries/query-request-with-api-key.jsx (100%) rename .snippets/code/build/{applications => }/queries/use-queries/test-full.jsx (100%) delete mode 100644 .snippets/code/build/start-building/supported-networks/cosmos/gatewayIBCRelayerConfig.toml rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/addresses.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/cctp.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/config-override.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/config.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/custom-route.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/ethers.js (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/example-core-bridge.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/get-chain.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/get-vaa.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads/pl-1.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads/pl-2.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads/pl-3.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads/pl-4.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads/pl-5.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads/pl-6.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads/pl-7.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads/pl-8.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/router.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-0.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-1.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-10.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-11.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-12.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-13.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-14.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-15.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-16.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-17.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-18.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-19.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-2.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-20.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-21.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-22.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-23.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-25.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-26.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-27.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-3.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-4.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-5.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-6.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-7.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-8.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout/layout-9.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/signers.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/token-bridge-snippet.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/token-bridge.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/tokens.ts (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/vaas-protocols/solidity-sdk.sol (100%) rename .snippets/code/build/{applications/wormhole-sdk => toolkit/typescript-sdk}/vaas-protocols/ts-sdk.ts (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/CCTPReceiver.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/CCTPSender.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/CircleIntegration.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/MessageTransmitter.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/TokenMessenger.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/TokenMinter.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/receivePayloadAndUSDC.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/sendCrossChainDeposit.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/cctp/sendUSDCWithPayloadToEvm.sol (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/add-token.tsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/advanced-configuration.json (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/arbitrary-token.tsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/configure-hosted.tsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/configure-html.html (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/configure-react-v0.tsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/configure-react-v1.tsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-coingecko-key.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-colors-hosted.tsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-colors.tsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-disable-arbitrary-tokens.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-full.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-menu.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-simple-testnet-v0.tsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-simple-testnet-v1.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-simple-v0.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-simple-v1.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-tokens-whitelist-advanced.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-tokens-whitelist.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/custom-tx-settings-solana.jsx (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/example-all-routes.ts (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/example-cctp.ts (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/index.ts (100%) rename .snippets/code/build/{applications => transfers}/connect/configuration/sample-configuration.json (100%) rename .snippets/code/build/{applications => transfers}/connect/overview/cdn-with-version.html (100%) rename .snippets/code/build/{applications => transfers}/connect/overview/cdn.html (100%) rename .snippets/code/build/{applications => transfers}/connect/overview/hosted.js (100%) rename .snippets/code/build/{applications => transfers}/connect/overview/import-v0.js (100%) rename .snippets/code/build/{applications => transfers}/connect/overview/import-v1.js (100%) rename .snippets/code/build/{contract-integrations => transfers}/native-token-transfers/deployment-process/INttToken.sol (100%) rename .snippets/code/build/{contract-integrations => transfers}/native-token-transfers/deployment-process/initialize.txt (100%) rename .snippets/text/build/{contract-integrations => transfers}/cctp/DepositForBurn-event.md (100%) rename .snippets/text/build/{contract-integrations => transfers}/cctp/MessageSent-event.md (100%) delete mode 100644 build/applications/.pages delete mode 100644 build/applications/index.md delete mode 100644 build/contract-integrations/.pages delete mode 100644 build/contract-integrations/index.md create mode 100644 build/core-messaging/.pages rename build/{contract-integrations => core-messaging}/core-contracts.md (94%) create mode 100644 build/core-messaging/index.md rename build/{contract-integrations => core-messaging}/wormhole-relayers.md (94%) rename build/{contract-integrations => }/multigov/.pages (74%) rename build/{contract-integrations => }/multigov/deployment.md (95%) rename build/{contract-integrations => }/multigov/faq.md (100%) rename build/{contract-integrations => }/multigov/index.md (94%) rename build/{contract-integrations => }/multigov/upgrade.md (96%) rename build/{applications => }/queries/.pages (75%) rename build/{applications => }/queries/faqs.md (96%) rename build/{applications => }/queries/index.md (80%) rename build/{applications => }/queries/overview.md (94%) rename build/{applications => }/queries/use-queries.md (88%) delete mode 100644 build/start-building/demos.md rename build/{contract-integrations => toolkit}/dev-env.md (100%) delete mode 100644 build/toolkit/tilt.md rename build/{applications/wormhole-sdk => toolkit/typescript-sdk}/.pages (90%) rename build/{applications/wormhole-sdk => toolkit/typescript-sdk}/index.md (83%) rename build/{applications/wormhole-sdk => toolkit/typescript-sdk}/protocols-payloads.md (95%) rename build/{applications/wormhole-sdk => toolkit/typescript-sdk}/sdk-layout.md (92%) rename build/{applications/wormhole-sdk => toolkit/typescript-sdk}/vaas-protocols.md (92%) rename build/{applications/wormhole-sdk => toolkit/typescript-sdk}/wormhole-sdk.md (92%) delete mode 100644 build/toolkit/wormhole-sdk/.pages delete mode 100644 build/toolkit/wormhole-sdk/index.md create mode 100644 build/transfers/.pages rename build/{contract-integrations => transfers}/cctp.md (95%) rename build/{applications => transfers}/connect/.pages (87%) rename build/{applications => transfers}/connect/configuration-v0.md (93%) rename build/{applications => transfers}/connect/configuration/.pages (100%) rename build/{applications => transfers}/connect/configuration/configure-data.md (89%) rename build/{applications => transfers}/connect/configuration/configure-theme.md (92%) rename build/{applications => transfers}/connect/configuration/index.md (81%) rename build/{applications => transfers}/connect/faqs.md (98%) rename build/{applications => transfers}/connect/features.md (97%) rename build/{applications => transfers}/connect/index.md (82%) rename build/{applications => transfers}/connect/overview.md (79%) rename build/{applications => transfers}/connect/routes.md (91%) rename build/{applications => transfers}/connect/upgrade.md (98%) create mode 100644 build/transfers/index.md rename build/{contract-integrations => transfers}/native-token-transfers/.pages (100%) rename build/{contract-integrations => transfers}/native-token-transfers/cli-commands.md (100%) rename build/{contract-integrations => transfers}/native-token-transfers/configuration/.pages (100%) rename build/{contract-integrations => transfers}/native-token-transfers/configuration/access-control.md (100%) rename build/{contract-integrations => transfers}/native-token-transfers/configuration/index.md (77%) rename build/{contract-integrations => transfers}/native-token-transfers/configuration/rate-limiting.md (100%) rename build/{contract-integrations => transfers}/native-token-transfers/deployment-process/.pages (100%) rename build/{contract-integrations => transfers}/native-token-transfers/deployment-process/deploy-to-evm.md (94%) rename build/{contract-integrations => transfers}/native-token-transfers/deployment-process/deploy-to-solana.md (93%) rename build/{contract-integrations => transfers}/native-token-transfers/deployment-process/index.md (73%) rename build/{contract-integrations => transfers}/native-token-transfers/deployment-process/installation.md (100%) rename build/{contract-integrations => transfers}/native-token-transfers/deployment-process/post-deployment.md (88%) rename build/{contract-integrations => transfers}/native-token-transfers/deployment-process/troubleshooting.md (86%) rename build/{contract-integrations => transfers}/native-token-transfers/faqs.md (98%) rename build/{contract-integrations => transfers}/native-token-transfers/index.md (75%) rename build/{contract-integrations => transfers}/native-token-transfers/managers-transceivers.md (100%) rename images/build/{contract-integrations => core-messaging}/wormhole-relayers/relayer-1.webp (100%) rename images/build/{applications => }/queries/overview/overview-1.webp (100%) delete mode 100644 images/build/start-building/supported-networks/acala.webp delete mode 100644 images/build/start-building/supported-networks/algorand.webp delete mode 100644 images/build/start-building/supported-networks/aptos.webp delete mode 100644 images/build/start-building/supported-networks/arbitrum-sepolia.webp delete mode 100644 images/build/start-building/supported-networks/arbitrum.webp delete mode 100644 images/build/start-building/supported-networks/aurora.webp delete mode 100644 images/build/start-building/supported-networks/avalanche.webp delete mode 100644 images/build/start-building/supported-networks/base.webp delete mode 100644 images/build/start-building/supported-networks/base_sepolia.webp delete mode 100644 images/build/start-building/supported-networks/berachain.webp delete mode 100644 images/build/start-building/supported-networks/blast.webp delete mode 100644 images/build/start-building/supported-networks/bsc.webp delete mode 100644 images/build/start-building/supported-networks/celestia.webp delete mode 100644 images/build/start-building/supported-networks/celo.webp delete mode 100644 images/build/start-building/supported-networks/cosmoshub.webp delete mode 100644 images/build/start-building/supported-networks/dymension.webp delete mode 100644 images/build/start-building/supported-networks/ethereum.webp delete mode 100644 images/build/start-building/supported-networks/evmos.webp delete mode 100644 images/build/start-building/supported-networks/fantom.webp delete mode 100644 images/build/start-building/supported-networks/gnosis.webp delete mode 100644 images/build/start-building/supported-networks/holesky.webp delete mode 100644 images/build/start-building/supported-networks/injective.webp delete mode 100644 images/build/start-building/supported-networks/karura.webp delete mode 100644 images/build/start-building/supported-networks/klaytn.webp delete mode 100644 images/build/start-building/supported-networks/kujira.webp delete mode 100644 images/build/start-building/supported-networks/linea.webp delete mode 100644 images/build/start-building/supported-networks/mantle.webp delete mode 100644 images/build/start-building/supported-networks/moonbeam.webp delete mode 100644 images/build/start-building/supported-networks/near.webp delete mode 100644 images/build/start-building/supported-networks/neon.webp delete mode 100644 images/build/start-building/supported-networks/neutron.webp delete mode 100644 images/build/start-building/supported-networks/oasis.webp delete mode 100644 images/build/start-building/supported-networks/optimism.webp delete mode 100644 images/build/start-building/supported-networks/optimism_sepolia.webp delete mode 100644 images/build/start-building/supported-networks/osmosis.webp delete mode 100644 images/build/start-building/supported-networks/polygon.webp delete mode 100644 images/build/start-building/supported-networks/polygon_sepolia.webp delete mode 100644 images/build/start-building/supported-networks/provenance.webp delete mode 100644 images/build/start-building/supported-networks/pythnet.webp delete mode 100644 images/build/start-building/supported-networks/rootstock.webp delete mode 100644 images/build/start-building/supported-networks/scroll.webp delete mode 100644 images/build/start-building/supported-networks/seda.webp delete mode 100644 images/build/start-building/supported-networks/sei.webp delete mode 100644 images/build/start-building/supported-networks/seievm.webp delete mode 100644 images/build/start-building/supported-networks/sepolia.webp delete mode 100644 images/build/start-building/supported-networks/snaxchain.webp delete mode 100644 images/build/start-building/supported-networks/solana.webp delete mode 100644 images/build/start-building/supported-networks/stargaze.webp delete mode 100644 images/build/start-building/supported-networks/sui.webp delete mode 100644 images/build/start-building/supported-networks/terra.webp delete mode 100644 images/build/start-building/supported-networks/terra2.webp delete mode 100644 images/build/start-building/supported-networks/xlayer.webp delete mode 100644 images/build/start-building/supported-networks/xpla.webp delete mode 100644 images/build/toolkit/tilt/tilt-1.webp rename images/learn/{fundamentals => infrastructure}/architecture/architecture-1.webp (100%) rename images/learn/{fundamentals => }/introduction/introduction-1.webp (100%) delete mode 100644 images/learn/messaging/gateway/gateway-diagram.webp rename images/learn/{messaging => transfers}/native-token-transfers/architecture/architecture-1.webp (100%) rename images/learn/{messaging => transfers}/native-token-transfers/architecture/architecture-2.webp (100%) rename images/learn/{messaging => transfers}/token-bridge/token-bridge-diagram.webp (100%) delete mode 100644 learn/fundamentals/.pages delete mode 100644 learn/fundamentals/index.md rename learn/{fundamentals => }/glossary.md (100%) rename learn/{fundamentals => infrastructure}/architecture.md (95%) rename learn/{fundamentals => }/introduction.md (87%) rename learn/{fundamentals => }/security.md (97%) rename learn/{messaging => transfers}/.pages (79%) rename learn/{messaging => transfers}/cctp.md (87%) rename learn/{messaging => transfers}/index.md (89%) rename learn/{messaging => transfers}/native-token-transfers/.pages (100%) rename learn/{messaging => transfers}/native-token-transfers/architecture.md (96%) rename learn/{messaging => transfers}/native-token-transfers/deployment.md (100%) rename learn/{messaging => transfers}/native-token-transfers/index.md (79%) rename learn/{messaging => transfers}/native-token-transfers/overview.md (93%) rename learn/{messaging => transfers}/native-token-transfers/security.md (100%) rename learn/{messaging => transfers}/token-bridge.md (99%) diff --git a/.CONTRIBUTING.md b/.CONTRIBUTING.md index e84a82064..6e0e97237 100644 --- a/.CONTRIBUTING.md +++ b/.CONTRIBUTING.md @@ -172,7 +172,7 @@ If your additions or modifications are limited to content on an existing page, t ## Adding Code and Text Snippets -Snippets are used to manage reusable lines of code or text. They are organized to mirror the structure of the docs site and stored under the root-level `.snippets` directory. For example, to add a code snippet to the page `build/applications/wormhole-sdk.md`, you would place the code snippet in the folder `.snippets/code/build/applications/wormhole-sdk`. +Snippets are used to manage reusable lines of code or text. They are organized to mirror the structure of the docs site and stored under the root-level `.snippets` directory. For example, to add a code snippet to the page `build/toolkit/typescript-sdk.md`, you would place the code snippet in the folder `.snippets/code/build/toolkit/typescript-sdk`. Text snippets are useful for pieces of copy you find the need to reuse often, such as disclaimers. Code snippets allow you to reuse pieces of code throughout a document while maintaining a single place to update that code when needed. @@ -188,7 +188,7 @@ Learn more about the effective use of [snippets](https://facelessuser.github.io/ ## Adding Images -Images are stored in the `images` subdirectory. They are organized to mirror the structure of the docs site. For example, to add an image to the page `build/applications/wormhole-sdk.md`, you would place the image in the folder `images/build/applications/wormhole-sdk`. +Images are stored in the `images` subdirectory. They are organized to mirror the structure of the docs site. For example, to add an image to the page `build/toolkit/typescript-sdk.md`, you would place the image in the folder `images/build/toolkit/typescript-sdk`. All images intended for display on the website should be in `.webp` format. You can look up an image converter online to convert from `.jpeg`, `.png`, or other formats to `.webp`. diff --git a/.snippets/code/build/contract-integrations/core-contracts/receiveEmitterCheck.ts b/.snippets/code/build/core-messaging/core-contracts/receiveEmitterCheck.ts similarity index 100% rename from .snippets/code/build/contract-integrations/core-contracts/receiveEmitterCheck.ts rename to .snippets/code/build/core-messaging/core-contracts/receiveEmitterCheck.ts diff --git a/.snippets/code/build/contract-integrations/core-contracts/receiveMessageEVM.sol b/.snippets/code/build/core-messaging/core-contracts/receiveMessageEVM.sol similarity index 100% rename from .snippets/code/build/contract-integrations/core-contracts/receiveMessageEVM.sol rename to .snippets/code/build/core-messaging/core-contracts/receiveMessageEVM.sol diff --git a/.snippets/code/build/contract-integrations/core-contracts/receiveMessageSolana.rs b/.snippets/code/build/core-messaging/core-contracts/receiveMessageSolana.rs similarity index 100% rename from .snippets/code/build/contract-integrations/core-contracts/receiveMessageSolana.rs rename to .snippets/code/build/core-messaging/core-contracts/receiveMessageSolana.rs diff --git a/.snippets/code/build/contract-integrations/core-contracts/receiving.sol b/.snippets/code/build/core-messaging/core-contracts/receiving.sol similarity index 100% rename from .snippets/code/build/contract-integrations/core-contracts/receiving.sol rename to .snippets/code/build/core-messaging/core-contracts/receiving.sol diff --git a/.snippets/code/build/contract-integrations/core-contracts/sendMessageEVM.sol b/.snippets/code/build/core-messaging/core-contracts/sendMessageEVM.sol similarity index 100% rename from .snippets/code/build/contract-integrations/core-contracts/sendMessageEVM.sol rename to .snippets/code/build/core-messaging/core-contracts/sendMessageEVM.sol diff --git a/.snippets/code/build/contract-integrations/core-contracts/sendMessageSolana.rs b/.snippets/code/build/core-messaging/core-contracts/sendMessageSolana.rs similarity index 100% rename from .snippets/code/build/contract-integrations/core-contracts/sendMessageSolana.rs rename to .snippets/code/build/core-messaging/core-contracts/sendMessageSolana.rs diff --git a/.snippets/code/build/contract-integrations/core-contracts/sending.sol b/.snippets/code/build/core-messaging/core-contracts/sending.sol similarity index 100% rename from .snippets/code/build/contract-integrations/core-contracts/sending.sol rename to .snippets/code/build/core-messaging/core-contracts/sending.sol diff --git a/.snippets/code/build/contract-integrations/wormhole-relayers/ExampleContract.sol b/.snippets/code/build/core-messaging/wormhole-relayers/ExampleContract.sol similarity index 100% rename from .snippets/code/build/contract-integrations/wormhole-relayers/ExampleContract.sol rename to .snippets/code/build/core-messaging/wormhole-relayers/ExampleContract.sol diff --git a/.snippets/code/build/contract-integrations/wormhole-relayers/getQuoteAndSend.sol b/.snippets/code/build/core-messaging/wormhole-relayers/getQuoteAndSend.sol similarity index 100% rename from .snippets/code/build/contract-integrations/wormhole-relayers/getQuoteAndSend.sol rename to .snippets/code/build/core-messaging/wormhole-relayers/getQuoteAndSend.sol diff --git a/.snippets/code/build/contract-integrations/wormhole-relayers/quoteEVMDeliveryPrice.sol b/.snippets/code/build/core-messaging/wormhole-relayers/quoteEVMDeliveryPrice.sol similarity index 100% rename from .snippets/code/build/contract-integrations/wormhole-relayers/quoteEVMDeliveryPrice.sol rename to .snippets/code/build/core-messaging/wormhole-relayers/quoteEVMDeliveryPrice.sol diff --git a/.snippets/code/build/contract-integrations/wormhole-relayers/receiveWormholeMessages.sol b/.snippets/code/build/core-messaging/wormhole-relayers/receiveWormholeMessages.sol similarity index 100% rename from .snippets/code/build/contract-integrations/wormhole-relayers/receiveWormholeMessages.sol rename to .snippets/code/build/core-messaging/wormhole-relayers/receiveWormholeMessages.sol diff --git a/.snippets/code/build/contract-integrations/wormhole-relayers/sendPayloadToEvm.sol b/.snippets/code/build/core-messaging/wormhole-relayers/sendPayloadToEvm.sol similarity index 100% rename from .snippets/code/build/contract-integrations/wormhole-relayers/sendPayloadToEvm.sol rename to .snippets/code/build/core-messaging/wormhole-relayers/sendPayloadToEvm.sol diff --git a/.snippets/code/build/applications/queries/use-queries/eth-call-initial-request.txt b/.snippets/code/build/queries/use-queries/eth-call-initial-request.txt similarity index 100% rename from .snippets/code/build/applications/queries/use-queries/eth-call-initial-request.txt rename to .snippets/code/build/queries/use-queries/eth-call-initial-request.txt diff --git a/.snippets/code/build/applications/queries/use-queries/eth-call-initial-response.txt b/.snippets/code/build/queries/use-queries/eth-call-initial-response.txt similarity index 100% rename from .snippets/code/build/applications/queries/use-queries/eth-call-initial-response.txt rename to .snippets/code/build/queries/use-queries/eth-call-initial-response.txt diff --git a/.snippets/code/build/applications/queries/use-queries/query-demo.sol b/.snippets/code/build/queries/use-queries/query-demo.sol similarity index 100% rename from .snippets/code/build/applications/queries/use-queries/query-demo.sol rename to .snippets/code/build/queries/use-queries/query-demo.sol diff --git a/.snippets/code/build/applications/queries/use-queries/query-proxy-query-response.jsx b/.snippets/code/build/queries/use-queries/query-proxy-query-response.jsx similarity index 100% rename from .snippets/code/build/applications/queries/use-queries/query-proxy-query-response.jsx rename to .snippets/code/build/queries/use-queries/query-proxy-query-response.jsx diff --git a/.snippets/code/build/applications/queries/use-queries/query-request-with-api-key.jsx b/.snippets/code/build/queries/use-queries/query-request-with-api-key.jsx similarity index 100% rename from .snippets/code/build/applications/queries/use-queries/query-request-with-api-key.jsx rename to .snippets/code/build/queries/use-queries/query-request-with-api-key.jsx diff --git a/.snippets/code/build/applications/queries/use-queries/test-full.jsx b/.snippets/code/build/queries/use-queries/test-full.jsx similarity index 100% rename from .snippets/code/build/applications/queries/use-queries/test-full.jsx rename to .snippets/code/build/queries/use-queries/test-full.jsx diff --git a/.snippets/code/build/start-building/supported-networks/cosmos/gatewayIBCRelayerConfig.toml b/.snippets/code/build/start-building/supported-networks/cosmos/gatewayIBCRelayerConfig.toml deleted file mode 100644 index 3d7bc85d7..000000000 --- a/.snippets/code/build/start-building/supported-networks/cosmos/gatewayIBCRelayerConfig.toml +++ /dev/null @@ -1,86 +0,0 @@ -[global] -log_level = "info" - -[mode.clients] -enabled = true -refresh = true -misbehaviour = false - -[mode.connections] -enabled = false - -[mode.channels] -enabled = false - -[mode.packets] -enabled = true -clear_interval = 50 -clear_on_start = true -tx_confirmation = true -auto_register_counterparty_payee = false - -[rest] -enabled = true -host = "127.0.0.1" -port = 3000 - -[telemetry] -enabled = true -host = "127.0.0.1" -port = 3001 - -[telemetry.buckets.latency_submitted] -start = 500 -end = 20000 -buckets = 10 - -[telemetry.buckets.latency_confirmed] -start = 1000 -end = 30000 -buckets = 10 - -[[chains]] -id = "wormchain" -type = "CosmosSdk" -rpc_addr = "..." -grpc_addr = "..." -rpc_timeout = "10s" -trusted_node = true -account_prefix = "wormhole" -key_name = "default" -key_store_type = "Test" -store_prefix = "ibc" -default_gas = 1000000 -max_gas = 9000000 -gas_multiplier = 1.2 -max_msg_num = 30 -max_tx_size = 180000 -max_grpc_decoding_size = 33554432 -clock_drift = "5s" -max_block_time = "30s" -ccv_consumer_chain = false -memo_prefix = "" -sequential_batch_tx = false -trusting_period = '14days' - -[chains.event_source] -mode = "push" -url = "..." -batch_delay = "500ms" - -[chains.trust_threshold] -numerator = "2" -denominator = "3" - -[chains.gas_price] -price = 0.0 -denom = "utest" - -[chains.packet_filter] -policy = 'allow' -list = [ -['transfer', 'channel-3'], # Osmosis transfer -] - -[chains.address_type] -derivation = "cosmos" \ No newline at end of file diff --git a/.snippets/code/build/applications/wormhole-sdk/addresses.ts b/.snippets/code/build/toolkit/typescript-sdk/addresses.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/addresses.ts rename to .snippets/code/build/toolkit/typescript-sdk/addresses.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/cctp.ts b/.snippets/code/build/toolkit/typescript-sdk/cctp.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/cctp.ts rename to .snippets/code/build/toolkit/typescript-sdk/cctp.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/config-override.ts b/.snippets/code/build/toolkit/typescript-sdk/config-override.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/config-override.ts rename to .snippets/code/build/toolkit/typescript-sdk/config-override.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/config.ts b/.snippets/code/build/toolkit/typescript-sdk/config.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/config.ts rename to .snippets/code/build/toolkit/typescript-sdk/config.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/custom-route.ts b/.snippets/code/build/toolkit/typescript-sdk/custom-route.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/custom-route.ts rename to .snippets/code/build/toolkit/typescript-sdk/custom-route.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/ethers.js b/.snippets/code/build/toolkit/typescript-sdk/ethers.js similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/ethers.js rename to .snippets/code/build/toolkit/typescript-sdk/ethers.js diff --git a/.snippets/code/build/applications/wormhole-sdk/example-core-bridge.ts b/.snippets/code/build/toolkit/typescript-sdk/example-core-bridge.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/example-core-bridge.ts rename to .snippets/code/build/toolkit/typescript-sdk/example-core-bridge.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/get-chain.ts b/.snippets/code/build/toolkit/typescript-sdk/get-chain.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/get-chain.ts rename to .snippets/code/build/toolkit/typescript-sdk/get-chain.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/get-vaa.ts b/.snippets/code/build/toolkit/typescript-sdk/get-vaa.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/get-vaa.ts rename to .snippets/code/build/toolkit/typescript-sdk/get-vaa.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-1.ts b/.snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-1.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-1.ts rename to .snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-1.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-2.ts b/.snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-2.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-2.ts rename to .snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-2.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-3.ts b/.snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-3.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-3.ts rename to .snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-3.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-4.ts b/.snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-4.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-4.ts rename to .snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-4.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-5.ts b/.snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-5.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-5.ts rename to .snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-5.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-6.ts b/.snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-6.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-6.ts rename to .snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-6.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-7.ts b/.snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-7.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-7.ts rename to .snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-7.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-8.ts b/.snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-8.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/protocols-payloads/pl-8.ts rename to .snippets/code/build/toolkit/typescript-sdk/protocols-payloads/pl-8.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/router.ts b/.snippets/code/build/toolkit/typescript-sdk/router.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/router.ts rename to .snippets/code/build/toolkit/typescript-sdk/router.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-0.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-0.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-0.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-0.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-1.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-1.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-1.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-1.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-10.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-10.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-10.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-10.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-11.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-11.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-11.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-11.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-12.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-12.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-12.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-12.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-13.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-13.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-13.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-13.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-14.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-14.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-14.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-14.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-15.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-15.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-15.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-15.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-16.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-16.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-16.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-16.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-17.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-17.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-17.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-17.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-18.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-18.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-18.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-18.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-19.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-19.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-19.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-19.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-2.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-2.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-2.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-2.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-20.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-20.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-20.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-20.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-21.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-21.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-21.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-21.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-22.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-22.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-22.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-22.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-23.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-23.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-23.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-23.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-25.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-25.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-25.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-25.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-26.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-26.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-26.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-26.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-27.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-27.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-27.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-27.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-3.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-3.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-3.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-3.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-4.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-4.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-4.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-4.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-5.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-5.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-5.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-5.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-6.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-6.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-6.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-6.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-7.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-7.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-7.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-7.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-8.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-8.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-8.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-8.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-9.ts b/.snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-9.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/sdk-layout/layout-9.ts rename to .snippets/code/build/toolkit/typescript-sdk/sdk-layout/layout-9.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/signers.ts b/.snippets/code/build/toolkit/typescript-sdk/signers.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/signers.ts rename to .snippets/code/build/toolkit/typescript-sdk/signers.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/token-bridge-snippet.ts b/.snippets/code/build/toolkit/typescript-sdk/token-bridge-snippet.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/token-bridge-snippet.ts rename to .snippets/code/build/toolkit/typescript-sdk/token-bridge-snippet.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/token-bridge.ts b/.snippets/code/build/toolkit/typescript-sdk/token-bridge.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/token-bridge.ts rename to .snippets/code/build/toolkit/typescript-sdk/token-bridge.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/tokens.ts b/.snippets/code/build/toolkit/typescript-sdk/tokens.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/tokens.ts rename to .snippets/code/build/toolkit/typescript-sdk/tokens.ts diff --git a/.snippets/code/build/applications/wormhole-sdk/vaas-protocols/solidity-sdk.sol b/.snippets/code/build/toolkit/typescript-sdk/vaas-protocols/solidity-sdk.sol similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/vaas-protocols/solidity-sdk.sol rename to .snippets/code/build/toolkit/typescript-sdk/vaas-protocols/solidity-sdk.sol diff --git a/.snippets/code/build/applications/wormhole-sdk/vaas-protocols/ts-sdk.ts b/.snippets/code/build/toolkit/typescript-sdk/vaas-protocols/ts-sdk.ts similarity index 100% rename from .snippets/code/build/applications/wormhole-sdk/vaas-protocols/ts-sdk.ts rename to .snippets/code/build/toolkit/typescript-sdk/vaas-protocols/ts-sdk.ts diff --git a/.snippets/code/build/contract-integrations/cctp/CCTPReceiver.sol b/.snippets/code/build/transfers/cctp/CCTPReceiver.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/CCTPReceiver.sol rename to .snippets/code/build/transfers/cctp/CCTPReceiver.sol diff --git a/.snippets/code/build/contract-integrations/cctp/CCTPSender.sol b/.snippets/code/build/transfers/cctp/CCTPSender.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/CCTPSender.sol rename to .snippets/code/build/transfers/cctp/CCTPSender.sol diff --git a/.snippets/code/build/contract-integrations/cctp/CircleIntegration.sol b/.snippets/code/build/transfers/cctp/CircleIntegration.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/CircleIntegration.sol rename to .snippets/code/build/transfers/cctp/CircleIntegration.sol diff --git a/.snippets/code/build/contract-integrations/cctp/MessageTransmitter.sol b/.snippets/code/build/transfers/cctp/MessageTransmitter.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/MessageTransmitter.sol rename to .snippets/code/build/transfers/cctp/MessageTransmitter.sol diff --git a/.snippets/code/build/contract-integrations/cctp/TokenMessenger.sol b/.snippets/code/build/transfers/cctp/TokenMessenger.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/TokenMessenger.sol rename to .snippets/code/build/transfers/cctp/TokenMessenger.sol diff --git a/.snippets/code/build/contract-integrations/cctp/TokenMinter.sol b/.snippets/code/build/transfers/cctp/TokenMinter.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/TokenMinter.sol rename to .snippets/code/build/transfers/cctp/TokenMinter.sol diff --git a/.snippets/code/build/contract-integrations/cctp/receivePayloadAndUSDC.sol b/.snippets/code/build/transfers/cctp/receivePayloadAndUSDC.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/receivePayloadAndUSDC.sol rename to .snippets/code/build/transfers/cctp/receivePayloadAndUSDC.sol diff --git a/.snippets/code/build/contract-integrations/cctp/sendCrossChainDeposit.sol b/.snippets/code/build/transfers/cctp/sendCrossChainDeposit.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/sendCrossChainDeposit.sol rename to .snippets/code/build/transfers/cctp/sendCrossChainDeposit.sol diff --git a/.snippets/code/build/contract-integrations/cctp/sendUSDCWithPayloadToEvm.sol b/.snippets/code/build/transfers/cctp/sendUSDCWithPayloadToEvm.sol similarity index 100% rename from .snippets/code/build/contract-integrations/cctp/sendUSDCWithPayloadToEvm.sol rename to .snippets/code/build/transfers/cctp/sendUSDCWithPayloadToEvm.sol diff --git a/.snippets/code/build/applications/connect/configuration/add-token.tsx b/.snippets/code/build/transfers/connect/configuration/add-token.tsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/add-token.tsx rename to .snippets/code/build/transfers/connect/configuration/add-token.tsx diff --git a/.snippets/code/build/applications/connect/configuration/advanced-configuration.json b/.snippets/code/build/transfers/connect/configuration/advanced-configuration.json similarity index 100% rename from .snippets/code/build/applications/connect/configuration/advanced-configuration.json rename to .snippets/code/build/transfers/connect/configuration/advanced-configuration.json diff --git a/.snippets/code/build/applications/connect/configuration/arbitrary-token.tsx b/.snippets/code/build/transfers/connect/configuration/arbitrary-token.tsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/arbitrary-token.tsx rename to .snippets/code/build/transfers/connect/configuration/arbitrary-token.tsx diff --git a/.snippets/code/build/applications/connect/configuration/configure-hosted.tsx b/.snippets/code/build/transfers/connect/configuration/configure-hosted.tsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/configure-hosted.tsx rename to .snippets/code/build/transfers/connect/configuration/configure-hosted.tsx diff --git a/.snippets/code/build/applications/connect/configuration/configure-html.html b/.snippets/code/build/transfers/connect/configuration/configure-html.html similarity index 100% rename from .snippets/code/build/applications/connect/configuration/configure-html.html rename to .snippets/code/build/transfers/connect/configuration/configure-html.html diff --git a/.snippets/code/build/applications/connect/configuration/configure-react-v0.tsx b/.snippets/code/build/transfers/connect/configuration/configure-react-v0.tsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/configure-react-v0.tsx rename to .snippets/code/build/transfers/connect/configuration/configure-react-v0.tsx diff --git a/.snippets/code/build/applications/connect/configuration/configure-react-v1.tsx b/.snippets/code/build/transfers/connect/configuration/configure-react-v1.tsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/configure-react-v1.tsx rename to .snippets/code/build/transfers/connect/configuration/configure-react-v1.tsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-coingecko-key.jsx b/.snippets/code/build/transfers/connect/configuration/custom-coingecko-key.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-coingecko-key.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-coingecko-key.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-colors-hosted.tsx b/.snippets/code/build/transfers/connect/configuration/custom-colors-hosted.tsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-colors-hosted.tsx rename to .snippets/code/build/transfers/connect/configuration/custom-colors-hosted.tsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-colors.tsx b/.snippets/code/build/transfers/connect/configuration/custom-colors.tsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-colors.tsx rename to .snippets/code/build/transfers/connect/configuration/custom-colors.tsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-disable-arbitrary-tokens.jsx b/.snippets/code/build/transfers/connect/configuration/custom-disable-arbitrary-tokens.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-disable-arbitrary-tokens.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-disable-arbitrary-tokens.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-full.jsx b/.snippets/code/build/transfers/connect/configuration/custom-full.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-full.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-full.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-menu.jsx b/.snippets/code/build/transfers/connect/configuration/custom-menu.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-menu.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-menu.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-simple-testnet-v0.tsx b/.snippets/code/build/transfers/connect/configuration/custom-simple-testnet-v0.tsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-simple-testnet-v0.tsx rename to .snippets/code/build/transfers/connect/configuration/custom-simple-testnet-v0.tsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-simple-testnet-v1.jsx b/.snippets/code/build/transfers/connect/configuration/custom-simple-testnet-v1.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-simple-testnet-v1.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-simple-testnet-v1.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-simple-v0.jsx b/.snippets/code/build/transfers/connect/configuration/custom-simple-v0.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-simple-v0.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-simple-v0.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-simple-v1.jsx b/.snippets/code/build/transfers/connect/configuration/custom-simple-v1.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-simple-v1.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-simple-v1.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-tokens-whitelist-advanced.jsx b/.snippets/code/build/transfers/connect/configuration/custom-tokens-whitelist-advanced.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-tokens-whitelist-advanced.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-tokens-whitelist-advanced.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-tokens-whitelist.jsx b/.snippets/code/build/transfers/connect/configuration/custom-tokens-whitelist.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-tokens-whitelist.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-tokens-whitelist.jsx diff --git a/.snippets/code/build/applications/connect/configuration/custom-tx-settings-solana.jsx b/.snippets/code/build/transfers/connect/configuration/custom-tx-settings-solana.jsx similarity index 100% rename from .snippets/code/build/applications/connect/configuration/custom-tx-settings-solana.jsx rename to .snippets/code/build/transfers/connect/configuration/custom-tx-settings-solana.jsx diff --git a/.snippets/code/build/applications/connect/configuration/example-all-routes.ts b/.snippets/code/build/transfers/connect/configuration/example-all-routes.ts similarity index 100% rename from .snippets/code/build/applications/connect/configuration/example-all-routes.ts rename to .snippets/code/build/transfers/connect/configuration/example-all-routes.ts diff --git a/.snippets/code/build/applications/connect/configuration/example-cctp.ts b/.snippets/code/build/transfers/connect/configuration/example-cctp.ts similarity index 100% rename from .snippets/code/build/applications/connect/configuration/example-cctp.ts rename to .snippets/code/build/transfers/connect/configuration/example-cctp.ts diff --git a/.snippets/code/build/applications/connect/configuration/index.ts b/.snippets/code/build/transfers/connect/configuration/index.ts similarity index 100% rename from .snippets/code/build/applications/connect/configuration/index.ts rename to .snippets/code/build/transfers/connect/configuration/index.ts diff --git a/.snippets/code/build/applications/connect/configuration/sample-configuration.json b/.snippets/code/build/transfers/connect/configuration/sample-configuration.json similarity index 100% rename from .snippets/code/build/applications/connect/configuration/sample-configuration.json rename to .snippets/code/build/transfers/connect/configuration/sample-configuration.json diff --git a/.snippets/code/build/applications/connect/overview/cdn-with-version.html b/.snippets/code/build/transfers/connect/overview/cdn-with-version.html similarity index 100% rename from .snippets/code/build/applications/connect/overview/cdn-with-version.html rename to .snippets/code/build/transfers/connect/overview/cdn-with-version.html diff --git a/.snippets/code/build/applications/connect/overview/cdn.html b/.snippets/code/build/transfers/connect/overview/cdn.html similarity index 100% rename from .snippets/code/build/applications/connect/overview/cdn.html rename to .snippets/code/build/transfers/connect/overview/cdn.html diff --git a/.snippets/code/build/applications/connect/overview/hosted.js b/.snippets/code/build/transfers/connect/overview/hosted.js similarity index 100% rename from .snippets/code/build/applications/connect/overview/hosted.js rename to .snippets/code/build/transfers/connect/overview/hosted.js diff --git a/.snippets/code/build/applications/connect/overview/import-v0.js b/.snippets/code/build/transfers/connect/overview/import-v0.js similarity index 100% rename from .snippets/code/build/applications/connect/overview/import-v0.js rename to .snippets/code/build/transfers/connect/overview/import-v0.js diff --git a/.snippets/code/build/applications/connect/overview/import-v1.js b/.snippets/code/build/transfers/connect/overview/import-v1.js similarity index 100% rename from .snippets/code/build/applications/connect/overview/import-v1.js rename to .snippets/code/build/transfers/connect/overview/import-v1.js diff --git a/.snippets/code/build/contract-integrations/native-token-transfers/deployment-process/INttToken.sol b/.snippets/code/build/transfers/native-token-transfers/deployment-process/INttToken.sol similarity index 100% rename from .snippets/code/build/contract-integrations/native-token-transfers/deployment-process/INttToken.sol rename to .snippets/code/build/transfers/native-token-transfers/deployment-process/INttToken.sol diff --git a/.snippets/code/build/contract-integrations/native-token-transfers/deployment-process/initialize.txt b/.snippets/code/build/transfers/native-token-transfers/deployment-process/initialize.txt similarity index 100% rename from .snippets/code/build/contract-integrations/native-token-transfers/deployment-process/initialize.txt rename to .snippets/code/build/transfers/native-token-transfers/deployment-process/initialize.txt diff --git a/.snippets/text/build/contract-integrations/cctp/DepositForBurn-event.md b/.snippets/text/build/transfers/cctp/DepositForBurn-event.md similarity index 100% rename from .snippets/text/build/contract-integrations/cctp/DepositForBurn-event.md rename to .snippets/text/build/transfers/cctp/DepositForBurn-event.md diff --git a/.snippets/text/build/contract-integrations/cctp/MessageSent-event.md b/.snippets/text/build/transfers/cctp/MessageSent-event.md similarity index 100% rename from .snippets/text/build/contract-integrations/cctp/MessageSent-event.md rename to .snippets/text/build/transfers/cctp/MessageSent-event.md diff --git a/build/.pages b/build/.pages index 8880c8705..c3147fd16 100644 --- a/build/.pages +++ b/build/.pages @@ -2,7 +2,9 @@ title: Build nav: - index.md - start-building - - applications - - contract-integrations + - transfers + - core-messaging + - multigov + - queries - toolkit - reference \ No newline at end of file diff --git a/build/applications/.pages b/build/applications/.pages deleted file mode 100644 index 6bcfaf19d..000000000 --- a/build/applications/.pages +++ /dev/null @@ -1,6 +0,0 @@ -title: Build Frontend Applications -nav: - - index.md - - wormhole-sdk - - queries - - connect diff --git a/build/applications/index.md b/build/applications/index.md deleted file mode 100644 index 0041cec07..000000000 --- a/build/applications/index.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Building Frontend Applications -description: Learn how tools like Queries, Wormhole Connect, and the Wormhole SDK come together to build frontend applications with seamless interoperability. ---- - -# Build Frontend Applications - -## Get Started - -Wormhole offers multiple tools to make your user-facing application integrations easier. Whether you are looking for a type-safe friendly SDK, a React widget to enable user-friendly UI development, or on-demand API access to Guardian attestations, you'll find it here. - -
- -- :octicons-code-square-16:{ .lg .middle } **Wormhole TypeScript SDK** - - --- - - The Wormhole TypeScript SDK exposes constants, contract interfaces, basic types, VAA payload definitions, EVM-specific utilities, and the EVM Token Bridge protocol client, combining convenience with the peace of mind of TypeScript type safety out of the box. - - [:custom-arrow: Get started with the SDK](/docs/build/applications/wormhole-sdk/) - -
- -
- -- :octicons-codescan-16:{ .lg .middle } **Wormhole Queries** - - --- - - Wormhole Queries offers on-demand access to Guardian-attested on-chain data via a simple REST endpoint. Wormhole Guardians, who run full nodes for various connected chains, facilitate this cross-chain query service. This method is faster and more cost-effective, eliminating the need for gas payments and transaction finality wait times. - - [:custom-arrow: Get started with Queries](/docs/build/applications/queries/) - -
- -
- -- :octicons-arrow-switch-16:{ .lg .middle } **Wormhole Connect** - - --- - - Wormhole Connect is a React widget that lets developers offer an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. Offering both code and no-code styling options, Wormhole Connect is highly customizable to meet the needs of your application. - - [:custom-arrow: Get started with Connect](/docs/build/applications/connect/) - -
diff --git a/build/contract-integrations/.pages b/build/contract-integrations/.pages deleted file mode 100644 index f472c2c42..000000000 --- a/build/contract-integrations/.pages +++ /dev/null @@ -1,10 +0,0 @@ -title: Build Contract Integrations -nav: - - index.md - - 'Wormhole Relayer': 'wormhole-relayers.md' - - 'Core Contracts': 'core-contracts.md' - - 'CCTP': 'cctp.md' - - native-token-transfers - - multigov - - 'Development Environment': 'dev-env.md' - - 'FAQS': 'faqs.md' \ No newline at end of file diff --git a/build/contract-integrations/faqs.md b/build/contract-integrations/faqs.md index b88916837..3911faa87 100644 --- a/build/contract-integrations/faqs.md +++ b/build/contract-integrations/faqs.md @@ -7,7 +7,7 @@ description: Frequently asked questions about integrating contracts with Wormhol ## Can ownership of wrapped tokens be transferred from the Token Bridge? -No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/messaging/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. +No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. - **On EVM chains** - when you attest a token, the Token Bridge deploys a new ERC-20 contract as a beacon proxy. The upgrade authority for these contracts is the Token Bridge contract itself - **On Solana** - the Token Bridge deploys a new SPL token, where the upgrade authority is a Program Derived Address (PDA) controlled by the Token Bridge @@ -32,7 +32,7 @@ These resources will guide you through building and deploying custom relayers ta ## Is there a way to use NTT tokens with chains that don't currently support NTT? -Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/messaging/token-bridge/){target=\_blank}. For example: +Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank}. For example: - **Wrapped token scenario** - a token, such as the W token, can be bridged to non-NTT networks using the Token Bridge. When the token is bridged to a chain like Sui, a wrapped version of the token is created (e.g., Wrapped W token) - **Unwrapping requirement** - tokens bridged using the Token Bridge cannot be directly transferred to NTT-supported chains. To transfer them, they must first be unwrapped on the non-NTT chain and then transferred via the appropriate mechanism diff --git a/build/contract-integrations/index.md b/build/contract-integrations/index.md deleted file mode 100644 index 865842f4f..000000000 --- a/build/contract-integrations/index.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Smart Contract Integrations -description: This section takes you from setting up your developer environment and configuring token transfers to deploying your custom multichain protocol. ---- - -# Build Contract Integrations - -## Get Started - -The content in this section will teach you how to create smart contracts that integrate with Wormhole's messaging protocols, enabling your applications to send and receive messages across multiple blockchains. Discover the tools and techniques to build seamless cross-chain functionality into your decentralized applications. - -
- -- :octicons-arrow-switch-16:{ .lg .middle } **Wormhole Relayer** - - --- - - Get familiar with the Wormhole relayer interfaces and learn the essential requirements for interacting with the relayer to send and receive cross-chain messages. - - [:custom-arrow: Get started with the Wormhole relayer](/docs/build/contract-integrations/wormhole-relayers/) - -- :octicons-file-code-16:{ .lg .middle } **Core Contracts** - - --- - - Discover how to develop or adapt your contracts to interact directly with Wormhole's Core Contracts for sending and receiving cross-chain messages. - - [:custom-arrow: Get started with Core Contracts](/docs/build/contract-integrations/core-contracts/) - -- :octicons-code-square-16:{ .lg .middle } **CCTP** - - --- - - Learn how to interact directly with Circle's CCTP Bridge contracts, including Token Messenger, Token Minter, and Message Transmitter. - - [:custom-arrow: Get started with CCTP](/docs/build/contract-integrations/cctp/) - -- :octicons-sync-16:{ .lg .middle } **Native Token Transfers** - - --- - - Find guidance on how to get started with the Native Token Transfers (NTT) framework, including deploying and configuring NTT contracts. - - [:custom-arrow: Get started with NTT](/docs/build/contract-integrations/native-token-transfers/) - -- :octicons-people-16:{ .lg .middle } **MultiGov** - - --- - - Discover how to start your MultiGov integration, from deploying and configuring essential contracts to managing your setup, including contract upgrades. - - [:custom-arrow: Get started with MultiGov](/docs/build/contract-integrations/multigov/) - -- :octicons-terminal-16:{ .lg .middle } **Development Environment** - - --- - - Learn how to set up a development environment for comprehensive testing, including VAA generation and relaying, to ensure full integration functionality. - - [:custom-arrow: Set up a dev environment](/docs/build/contract-integrations/dev-env/) - -- :octicons-question-16:{ .lg .middle } **Contract Integrations FAQs** - - --- - - Frequently asked questions about integrating contracts with Wormhole, including ownership of wrapped tokens and developing custom relayers. - - [:custom-arrow: Check out the FAQs](/docs/build/contract-integrations/faqs/) - -
diff --git a/build/core-messaging/.pages b/build/core-messaging/.pages new file mode 100644 index 000000000..d6ed0b79a --- /dev/null +++ b/build/core-messaging/.pages @@ -0,0 +1,5 @@ +title: Core Messaging +nav: + - index.md + - 'Wormhole Relayer': 'wormhole-relayers.md' + - 'Core Contracts': 'core-contracts.md' diff --git a/build/contract-integrations/core-contracts.md b/build/core-messaging/core-contracts.md similarity index 94% rename from build/contract-integrations/core-contracts.md rename to build/core-messaging/core-contracts.md index 770cef27c..63cd8e29d 100644 --- a/build/contract-integrations/core-contracts.md +++ b/build/core-messaging/core-contracts.md @@ -32,14 +32,14 @@ While the implementation details of the Core Contracts vary by network, the core ### Sending Messages -To send a message, regardless of the environment or chain, the Core Contract is invoked with a message argument from an [emitter](/docs/learn/fundamentals/glossary/#emitter){target=\_blank}. This emitter might be your contract or an existing application such as the [Token Bridge](/docs/learn/messaging/token-bridge/#token-bridge){target=\_blank}. +To send a message, regardless of the environment or chain, the Core Contract is invoked with a message argument from an [emitter](/docs/learn/glossary/#emitter){target=\_blank}. This emitter might be your contract or an existing application such as the [Token Bridge](/docs/learn/transfers/token-bridge/#token-bridge){target=\_blank}. === "EVM" The `IWormhole.sol` interface provides the `publishMessage` function, which can be used to publish a message directly to the Core Contract: ```solidity - --8<-- 'code/build/contract-integrations/core-contracts/sending.sol' + --8<-- 'code/build/core-messaging/core-contracts/sending.sol' ``` ??? interface "Parameters" @@ -69,7 +69,7 @@ To send a message, regardless of the environment or chain, the Core Contract is ??? interface "Example" ```solidity - --8<-- 'code/build/contract-integrations/core-contracts/sendMessageEVM.sol' + --8<-- 'code/build/core-messaging/core-contracts/sendMessageEVM.sol' ``` View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/evm/src/01_hello_world){target=\_blank} repository on GitHub. @@ -163,7 +163,7 @@ To send a message, regardless of the environment or chain, the Core Contract is ??? interface "Example" ```rust - --8<-- 'code/build/contract-integrations/core-contracts/sendMessageSolana.rs' + --8<-- 'code/build/core-messaging/core-contracts/sendMessageSolana.rs' ``` View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/solana/programs/01_hello_world){target=\_blank} repository on GitHub. @@ -181,7 +181,7 @@ The way a message is received and handled depends on the environment. On EVM chains, the message passed is the raw VAA encoded as binary. The `IWormhole.sol` interface provides the `parseAndVerifyVM` function, which can be used to parse and verify the received message. ```solidity - --8<-- 'code/build/contract-integrations/core-contracts/receiving.sol' + --8<-- 'code/build/core-messaging/core-contracts/receiving.sol' ``` ??? interface "Parameters" @@ -231,7 +231,7 @@ The way a message is received and handled depends on the environment. ??? interface "Example" ```solidity - --8<-- 'code/build/contract-integrations/core-contracts/receiveMessageEVM.sol' + --8<-- 'code/build/core-messaging/core-contracts/receiveMessageEVM.sol' ``` View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/evm/src/01_hello_world){target=\_blank} repository on GitHub. @@ -250,7 +250,7 @@ The way a message is received and handled depends on the environment. ??? interface "Example" ```rust - --8<-- 'code/build/contract-integrations/core-contracts/receiveMessageSolana.rs' + --8<-- 'code/build/core-messaging/core-contracts/receiveMessageSolana.rs' ``` View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/solana/programs/01_hello_world){target=\_blank} repository on GitHub. @@ -268,7 +268,7 @@ require(isRegisteredSender(emitterChainId, emitterAddress), "Invalid emitter"); This check can be applied after the VAA is parsed, ensuring only authorized senders can interact with the receiving contract. Trusted emitters can be registered using a method like `setRegisteredSender` during contract deployment or initialization. ```typescript ---8<-- 'code/build/contract-integrations/core-contracts/receiveEmitterCheck.ts' +--8<-- 'code/build/core-messaging/core-contracts/receiveEmitterCheck.ts' ``` #### Additional Checks diff --git a/build/core-messaging/index.md b/build/core-messaging/index.md new file mode 100644 index 000000000..354b94376 --- /dev/null +++ b/build/core-messaging/index.md @@ -0,0 +1,6 @@ +--- +title: Core Messaging Layer Contracts +description: Learn to use Wormhole’s foundational messaging contracts to build multichain apps with direct control over publishing, verifying, relaying, and more. +--- + +# Core Messaging \ No newline at end of file diff --git a/build/contract-integrations/wormhole-relayers.md b/build/core-messaging/wormhole-relayers.md similarity index 94% rename from build/contract-integrations/wormhole-relayers.md rename to build/core-messaging/wormhole-relayers.md index 5424053ff..552139133 100644 --- a/build/contract-integrations/wormhole-relayers.md +++ b/build/core-messaging/wormhole-relayers.md @@ -18,7 +18,7 @@ Before getting started, it's important to note that the Wormhole-deployed relaye To interact with the Wormhole relayer, you'll need to create contracts on the source and target chains to handle the sending and receiving of messages. No off-chain logic needs to be implemented to take advantage of Wormhole-powered relaying.
- ![Wormhole Relayer](/docs/images/build/contract-integrations/wormhole-relayers/relayer-1.webp) + ![Wormhole Relayer](/docs/images/build/core-messaging/wormhole-relayers/relayer-1.webp)
The components outlined in blue must be implemented.
@@ -41,7 +41,7 @@ To retrieve the contract address of the Wormhole relayer, refer to the Wormhole Your initial set up should resemble the following: ```solidity ---8<-- 'code/build/contract-integrations/wormhole-relayers/ExampleContract.sol' +--8<-- 'code/build/core-messaging/wormhole-relayers/ExampleContract.sol' ``` The code provided sets up the basic structure for your contract to interact with the Wormhole relayer using the address supplied to the constructor. By leveraging methods from the `IWormholeRelayer` interface, you can implement message sending and receiving functionalities. The following sections will detail the specific methods you need to use for these tasks. @@ -51,13 +51,13 @@ The code provided sets up the basic structure for your contract to interact with To send a message to a contract on another EVM chain, you can call the `sendPayloadToEvm` method provided by the `IWormholeRelayer` interface. ```solidity ---8<-- 'code/build/contract-integrations/wormhole-relayers/sendPayloadToEvm.sol' +--8<-- 'code/build/core-messaging/wormhole-relayers/sendPayloadToEvm.sol' ``` The `sendPayloadToEvm` method is marked `payable` to receive fee payment for the transaction. The value to attach to the invocation is determined by calling the `quoteEVMDeliveryPrice`, which provides an estimate of the cost of gas on the target chain. ```solidity ---8<-- 'code/build/contract-integrations/wormhole-relayers/quoteEVMDeliveryPrice.sol' +--8<-- 'code/build/core-messaging/wormhole-relayers/quoteEVMDeliveryPrice.sol' ``` This method should be called before sending a message, and the value returned for `nativePriceQuote` should be attached to the call to send the payload to cover the transaction's cost on the target chain. @@ -65,7 +65,7 @@ This method should be called before sending a message, and the value returned fo In total, sending a message across EVM chains can be as simple as getting a fee quote and sending the message as follows: ```solidity ---8<-- 'code/build/contract-integrations/wormhole-relayers/getQuoteAndSend.sol' +--8<-- 'code/build/core-messaging/wormhole-relayers/getQuoteAndSend.sol' ``` ### Receive a Message @@ -73,7 +73,7 @@ In total, sending a message across EVM chains can be as simple as getting a fee To receive a message using a Wormhole relayer, the target contract must implement the [`IWormholeReceiver`](https://github.com/wormhole-foundation/wormhole-relayer-solidity-sdk/blob/main/src/interfaces/IWormholeReceiver.sol){target=\_blank} interface, as shown in the [previous section](#interacting-with-the-wormhole-relayer). ```solidity ---8<-- 'code/build/contract-integrations/wormhole-relayers/receiveWormholeMessages.sol' +--8<-- 'code/build/core-messaging/wormhole-relayers/receiveWormholeMessages.sol' ``` The logic inside the function body may be whatever business logic is required to take action on the specific payload. diff --git a/build/index.md b/build/index.md index 0806b0358..b7ee17b70 100644 --- a/build/index.md +++ b/build/index.md @@ -20,22 +20,6 @@ Whether you’re developing front-end applications using Wormhole's application- [:custom-arrow: Get started](/docs/build/start-building/) -- :octicons-browser-16:{ .lg .middle } **Build Frontend Applications** - - --- - - Learn how tools like Queries, Wormhole Connect, and the Wormhole SDK come together to build applications with seamless interoperability. - - [:custom-arrow: Build applications](/docs/build/applications/) - -- :octicons-file-code-16:{ .lg .middle } **Build Contract Integrations** - - --- - - Begin your journey by creating smart contracts that harness the power of Wormhole's advanced messaging protocols. - - [:custom-arrow: Build contract integrations](/docs/build/contract-integrations/) - - :octicons-gear-16:{ .lg .middle } **Toolkit** --- diff --git a/build/contract-integrations/multigov/.pages b/build/multigov/.pages similarity index 74% rename from build/contract-integrations/multigov/.pages rename to build/multigov/.pages index 1afec413e..dd1c96254 100644 --- a/build/contract-integrations/multigov/.pages +++ b/build/multigov/.pages @@ -1,4 +1,4 @@ -title: MultiGov +title: Multichain Governance (MultiGov) nav: - index.md - 'Deployment': 'deployment.md' diff --git a/build/contract-integrations/multigov/deployment.md b/build/multigov/deployment.md similarity index 95% rename from build/contract-integrations/multigov/deployment.md rename to build/multigov/deployment.md index 7cb864bd2..1d60502c6 100644 --- a/build/contract-integrations/multigov/deployment.md +++ b/build/multigov/deployment.md @@ -5,7 +5,7 @@ description: Set up and deploy MultiGov locally with step-by-step instructions f # Deployment -This guide provodes instructions to set up and deploy the MultiGov governance system locally. Before diving into the technical deployment, ensure that MultiGov is the right fit for your project’s governance needs by following the steps for the [integration process](/docs/build/contract-integrations/multigov/){target=\_blank}. +This guide provodes instructions to set up and deploy the MultiGov governance system locally. Before diving into the technical deployment, ensure that MultiGov is the right fit for your project’s governance needs by following the steps for the [integration process](/docs/build/multigov/){target=\_blank}. Once your project is approved through the intake process and you’ve collaborated with the Tally team to tailor MultiGov to your requirements, use this guide to configure, compile, and deploy the necessary smart contracts across your desired blockchain networks. This deployment will enable decentralized governance across your hub and spoke chains. @@ -34,7 +34,7 @@ For developers looking to set up a local MultiGov environment: ```bash cp .env.example .env ``` - Edit `.env` with your specific [configuration](/docs/build/contract-integrations/multigov/deployment/#configuration){target=\_blank} + Edit `.env` with your specific [configuration](/docs/build/multigov/deployment/#configuration){target=\_blank} 3. Compile contracts: ```bash diff --git a/build/contract-integrations/multigov/faq.md b/build/multigov/faq.md similarity index 100% rename from build/contract-integrations/multigov/faq.md rename to build/multigov/faq.md diff --git a/build/contract-integrations/multigov/index.md b/build/multigov/index.md similarity index 94% rename from build/contract-integrations/multigov/index.md rename to build/multigov/index.md index a0aa6f96b..e10de2542 100644 --- a/build/contract-integrations/multigov/index.md +++ b/build/multigov/index.md @@ -24,7 +24,7 @@ Take the following steps to get started with a MultiGov integration: Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. - [:custom-arrow: Discover how to deploy MultiGov](/docs/build/contract-integrations/multigov/deployment/) + [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deployment/) - :octicons-file-code-16:{ .lg .middle } **Upgrade Contracts** @@ -32,7 +32,7 @@ Take the following steps to get started with a MultiGov integration: Learn the process and key considerations for upgrading MultiGov contracts, ensuring system integrity and careful planning across cross-chain components. - [:custom-arrow: Discover how to upgrade MultiGov](/docs/build/contract-integrations/multigov/upgrade/) + [:custom-arrow: Discover how to upgrade MultiGov](/docs/build/multigov/upgrade/) - :octicons-question-16:{ .lg .middle } **Technical FAQs** @@ -40,7 +40,7 @@ Take the following steps to get started with a MultiGov integration: Find answers to common technical questions about MultiGov, covering technical setup, security, proposal creation, and more. - [:custom-arrow: Find the answer to your technical questions](/docs/build/contract-integrations/multigov/faq/) + [:custom-arrow: Find the answer to your technical questions](/docs/build/multigov/faq/) diff --git a/build/contract-integrations/multigov/upgrade.md b/build/multigov/upgrade.md similarity index 96% rename from build/contract-integrations/multigov/upgrade.md rename to build/multigov/upgrade.md index 0bee7e8a8..56870a312 100644 --- a/build/contract-integrations/multigov/upgrade.md +++ b/build/multigov/upgrade.md @@ -10,7 +10,7 @@ MultiGov is designed to be flexible but stable. Upgrades should be rare and care ## Key Considerations for Upgrades - **`HubGovernor`**: - - Not upgradeable. A new deployment requires redeploying several components of the MultiGov system. Refer to the [Process for Major System Upgrade](/docs/build/contract-integrations/multigov/upgrade/#process-for-major-system-upgrade) section for more details + - Not upgradeable. A new deployment requires redeploying several components of the MultiGov system. Refer to the [Process for Major System Upgrade](/docs/build/multigov/upgrade/#process-for-major-system-upgrade) section for more details - **`HubVotePool`**: - Can be replaced by setting a new `HubVotePool` on the `HubGovernor` diff --git a/build/applications/queries/.pages b/build/queries/.pages similarity index 75% rename from build/applications/queries/.pages rename to build/queries/.pages index 5a76d1521..e151b6700 100644 --- a/build/applications/queries/.pages +++ b/build/queries/.pages @@ -1,4 +1,4 @@ -title: Queries +title: Real-time Data (Queries) nav: - index.md - 'Overview': overview.md diff --git a/build/applications/queries/faqs.md b/build/queries/faqs.md similarity index 96% rename from build/applications/queries/faqs.md rename to build/queries/faqs.md index 8c37e49dd..1bf090e03 100644 --- a/build/applications/queries/faqs.md +++ b/build/queries/faqs.md @@ -20,7 +20,7 @@ description: Wormhole Queries FAQ covering available libraries, query examples, ## Are there any query examples? -Certainly. You can find a complete guide on the [Use Queries page](/docs/build/applications/queries/use-queries/){target=\_blank}. Additionally, you can find full code examples in the following repositories: +Certainly. You can find a complete guide on the [Use Queries page](/docs/build/queries/use-queries/){target=\_blank}. Additionally, you can find full code examples in the following repositories: - [Basic Example Query Demo](https://github.com/wormholelabs-xyz/example-queries-demo/){target=\_blank} - [Solana Stake Pool Example Query](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} diff --git a/build/applications/queries/index.md b/build/queries/index.md similarity index 80% rename from build/applications/queries/index.md rename to build/queries/index.md index 6f9bc43b5..1e77cd4a8 100644 --- a/build/applications/queries/index.md +++ b/build/queries/index.md @@ -17,7 +17,7 @@ Wormhole Queries offers on-demand access to Guardian-attested on-chain data via Explore Wormhole Queries, offering real-time access to verified blockchain data via a REST API endpoint, enabling secure cross-chain interactions and verifications. - [:custom-arrow: Learn about Queries](/docs/build/applications/queries/overview/) + [:custom-arrow: Learn about Queries](/docs/build/queries/overview/) - :octicons-code-16:{ .lg .middle } **Use Queries** @@ -25,7 +25,7 @@ Wormhole Queries offers on-demand access to Guardian-attested on-chain data via Explore a simple demo of interacting with Wormhole Queries using an `eth_call` request to query the supply of wETH on Ethereum using a Wormhole query. - [:custom-arrow: Get hands-on](/docs/build/applications/queries/use-queries/) + [:custom-arrow: Get hands-on](/docs/build/queries/use-queries/) - :octicons-book-16:{ .lg .middle } **Query FAQs** @@ -33,6 +33,6 @@ Wormhole Queries offers on-demand access to Guardian-attested on-chain data via Explore frequently asked questions about Wormhole Queries. - [:custom-arrow: Check out the FAQs](/docs/build/applications/queries/faqs/) + [:custom-arrow: Check out the FAQs](/docs/build/queries/faqs/) diff --git a/build/applications/queries/overview.md b/build/queries/overview.md similarity index 94% rename from build/applications/queries/overview.md rename to build/queries/overview.md index a4ecab292..ba8a82101 100644 --- a/build/applications/queries/overview.md +++ b/build/queries/overview.md @@ -8,7 +8,7 @@ description: Explore Wormhole Queries, offering real-time access to verified blo Wormhole Guardians, who run full nodes for various connected chains, facilitate a new cross-chain query service that allows for on-demand attested responses to queries, bypassing the inefficiencies of traditional transaction-based data retrieval. This method is faster and cost-effective, eliminating the need for gas payments and transaction finality wait times. !!! note - Queries are currently in closed beta, though you can start developing today. Check out [Use Queries](/docs/build/applications/queries/use-queries/){target=\_blank} and reach out to [Join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank}. + Queries are currently in closed beta, though you can start developing today. Check out [Use Queries](/docs/build/queries/use-queries/){target=\_blank} and reach out to [Join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank}. Wormhole Queries offers on-demand access to Guardian-attested on-chain data. The current implementation provides integrators with a simple REST endpoint to initiate an off-chain request via a proxy. The proxy then forwards the request to the Guardians and gathers a quorum of responses. The result returns the encoded response, including the request details and the Guardian signatures. The request validation performed by the query module includes a three step process that involves verifying the signature to ensure it has the correct prefix, confirming that the signer is authorized to execute query requests, and validating the legitimacy of all per-chain requests contained in the query. You can read more about Queries in the [white paper](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0013_ccq.md){target=\_blank}. @@ -16,7 +16,7 @@ Wormhole Queries offers on-demand access to Guardian-attested on-chain data. The The general overview of a query's flow is as follows: an off-chain process sends HTTPS query requests to a Query Proxy, which validates and forwards them to the Guardians; these Guardians independently validate, sign, and return the response, with the entire process typically taking less than a second. -![The architecture flow of a query](/docs/images/build/applications/queries/overview/overview-1.webp) +![The architecture flow of a query](/docs/images/build/queries/overview/overview-1.webp) The step-by-step flow of a query is as follows: @@ -89,7 +89,7 @@ For example, many chains have implementations forked from [Geth](https://github. Remember that Wormhole Queries are currently in beta. You can [register to join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to fully experiment with Wormhole Queries. -Be sure to check out the [FAQs](/docs/build/applications/queries/faqs/){target=\_blank} and the [Use Queries guide](/docs/build/applications/queries/use-queries/){target=\_blank}. +Be sure to check out the [FAQs](/docs/build/queries/faqs/){target=\_blank} and the [Use Queries guide](/docs/build/queries/use-queries/){target=\_blank}. You can also check out the following examples of applications that make use of Wormhole Queries: diff --git a/build/applications/queries/use-queries.md b/build/queries/use-queries.md similarity index 88% rename from build/applications/queries/use-queries.md rename to build/queries/use-queries.md index 34a788b6e..85ad39dc7 100644 --- a/build/applications/queries/use-queries.md +++ b/build/queries/use-queries.md @@ -20,13 +20,13 @@ Before digging into anything Queries-specific, this page will look at how to mak The prepared curl request is as follows: ```bash title="eth_call JSON-RPC request" ---8<-- 'code/build/applications/queries/use-queries/eth-call-initial-request.txt' +--8<-- 'code/build/queries/use-queries/eth-call-initial-request.txt' ``` And the corresponding response is: ```bash title="eth_call JSON-RPC reponse" ---8<-- 'code/build/applications/queries/use-queries/eth-call-initial-response.txt' +--8<-- 'code/build/queries/use-queries/eth-call-initial-response.txt' ``` Converting the returned value of the executed call from hexidecimal results in the value `3172615244782286193073777`. You can compare your result to the [**Read Contract**](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#readContract){target=\_blank} tab in Etherscan. Your result will be different as WETH is minted/burned over time. @@ -44,26 +44,26 @@ In order to make an `EthCallQueryRequest`, you need a specific block number or h You can request the latest block from a public node using `eth_getBlockByNumber`. ```jsx ---8<-- 'code/build/applications/queries/use-queries/test-full.jsx:12:12' ---8<-- 'code/build/applications/queries/use-queries/test-full.jsx:19:26' +--8<-- 'code/build/queries/use-queries/test-full.jsx:12:12' +--8<-- 'code/build/queries/use-queries/test-full.jsx:19:26' ``` Then construct the call data. ```jsx ---8<-- 'code/build/applications/queries/use-queries/test-full.jsx:13:16' +--8<-- 'code/build/queries/use-queries/test-full.jsx:13:16' ``` Finally, put it all together in a `QueryRequest`. ```jsx ---8<-- 'code/build/applications/queries/use-queries/test-full.jsx:44:53' +--8<-- 'code/build/queries/use-queries/test-full.jsx:44:53' ``` This request consists of one `PerChainQueryRequest`, which is an `EthCallQueryRequest` to Ethereum. You can use `console.log` to print the JSON object and review the structure. ```jsx ---8<-- 'code/build/applications/queries/use-queries/test-full.jsx:54:54' +--8<-- 'code/build/queries/use-queries/test-full.jsx:54:54' // { // "nonce": 0, // "requests": [ @@ -89,7 +89,7 @@ This request consists of one `PerChainQueryRequest`, which is an `EthCallQueryRe For easier testing, the Query SDK provides a `QueryProxyMock` method. This method will perform the request and sign the result with the [Devnet](/docs/build/toolkit/tilt/){target=\_blank} Guardian key. The `mock` call returns the same format as the Query Proxy. ```jsx ---8<-- 'code/build/applications/queries/use-queries/test-full.jsx:55:57' +--8<-- 'code/build/queries/use-queries/test-full.jsx:55:57' // { // signatures: ['...'], // bytes: '...' @@ -99,14 +99,14 @@ For easier testing, the Query SDK provides a `QueryProxyMock` method. This metho This response is suited for on-chain use, but the SDK also includes a parser to make the results readable via the client. ```jsx ---8<-- 'code/build/applications/queries/use-queries/test-full.jsx:58:64' +--8<-- 'code/build/queries/use-queries/test-full.jsx:58:64' // Mock Query Result: 0x000000000000000000000000000000000000000000029fd09d4d81addb3ccfee (3172556167631284394053614) ``` Testing this all together might look like the following: ```jsx ---8<-- 'code/build/applications/queries/use-queries/test-full.jsx' +--8<-- 'code/build/queries/use-queries/test-full.jsx' ``` ### Fork Testing @@ -132,7 +132,7 @@ If you are using `EthCallWithFinality`, you will need to mine additional blocks The standardized means of making a `QueryRequest` with an API key is as follows: ```jsx ---8<-- 'code/build/applications/queries/use-queries/query-request-with-api-key.jsx' +--8<-- 'code/build/queries/use-queries/query-request-with-api-key.jsx' ``` Remember to always take steps to protect your sensitive API keys, such as defining them in `.env` files and including such files in your `.gitignore`. @@ -165,7 +165,7 @@ See the [QueryDemo](https://github.com/wormholelabs-xyz/example-queries-demo/blo ??? code "View the complete `QueryDemo`" ```solidity - --8<-- 'code/build/applications/queries/use-queries/query-demo.sol' + --8<-- 'code/build/queries/use-queries/query-demo.sol' ``` ## Submit a Query Response On-Chain @@ -175,5 +175,5 @@ The `QueryProxyQueryResponse` result requires a slight tweak when submitting to This example submits the transaction to the demo contract: ```jsx ---8<-- 'code/build/applications/queries/use-queries/query-proxy-query-response.jsx' +--8<-- 'code/build/queries/use-queries/query-proxy-query-response.jsx' ``` diff --git a/build/reference/.pages b/build/reference/.pages index af17b15bb..c4775bfd5 100644 --- a/build/reference/.pages +++ b/build/reference/.pages @@ -3,5 +3,5 @@ nav: - index.md - 'Chain IDs' : 'chain-ids.md' - 'Contract Addresses' : 'contract-addresses.md' - - 'Consistency Levels': 'consistency-levels.md' + - 'Wormhole Finality': 'consistency-levels.md' - 'Wormhole Formatted Addresses': 'wormhole-formatted-addresses.md' diff --git a/build/start-building/.pages b/build/start-building/.pages index e99e15dea..c0b3e18af 100644 --- a/build/start-building/.pages +++ b/build/start-building/.pages @@ -1,6 +1,7 @@ title: Start Building nav: - index.md +# TODO: Products - 'Supported Networks': 'supported-networks.md' - 'Testnet Faucets': 'testnet-faucets.md' - - 'Demos': 'demos.md' \ No newline at end of file + - 'Explorer': 'https://wormholescan.io/' diff --git a/build/start-building/demos.md b/build/start-building/demos.md deleted file mode 100644 index c81da97fc..000000000 --- a/build/start-building/demos.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Example Demo Code Repos -description: Explore various demos showcasing Wormhole's features, including starter apps, cross-chain examples, and UI components for token transfers and lending protocols. ---- - -# Demos - -This page features various demos showcasing Wormhole's features, including starter apps, cross-chain examples, and UI components for token transfers and lending protocols. - -### Scaffolding - -[Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding){target=\_blank} is a starter application repository that contains example dApps that integrate with Wormhole messaging. It includes basic xDapp structures, tests, and walkthroughs for core components like Wormhole messaging and the portal token bridge. - -### Wormhole Examples - -[Wormhole Examples](https://github.com/wormhole-foundation/wormhole-examples){target=\_blank} contains a variety of example components. It features a mix of relayers, cross-chain applications, NFT projects, and more. - -### Basic Examples - -[Basic Examples](https://github.com/wormhole-foundation/xdapp-book/tree/main/projects){target=\_blank} features straightforward example projects that showcase minimum-code examples for how to send messages, tokens, and other standard functions. - -### Native USDC Bridging - -The [Native USDC Bridging](https://github.com/wormhole-foundation/wormhole-circle-integration){target=\_blank} repo demonstrates an integration of Circle's Cross-Chain Transfer Protocol using Wormhole. - -### Reference Bridge UI - -[Reference Bridge UI](https://github.com/wormhole-foundation/example-token-bridge-ui){target=\_blank} is an example GUI that can be used to perform token transfers around the ecosystem. - -### Borrow Lend - -[Borrow Lend](https://github.com/wormhole-foundation/example-wormhole-lending){target=\_blank} contains two examples of cross-chain lending protocol implementations. The first example provides a basic lending skeleton for borrowing and lending between two chains. In contrast, the second example offers a more advanced cross-chain lending model using a hub-and-spoke approach. - -### Wormhole NTT Connect Demo - -The [Wormhole NTT Connect](https://github.com/wormhole-foundation/demo-ntt-connect){target=\_blank} demo configures a Vite-React TypeScript application using the Wormhole TypeScript SDK and, as an example, preconfigures the Wormhole Connect widget to allow transfers between Sepolia and Solana Testnet environments. - -### Wormhole Demo NTT TS SDK - -The [Demo NTT TS SDK Example](https://github.com/wormhole-foundation/demo-ntt-ts-sdk){target=\_blank} demonstrates the use of the Wormhole TS SDK to facilitate token transfers between different blockchain networks after performing a deployment of the Native Token Transfers framework. diff --git a/build/start-building/index.md b/build/start-building/index.md index e88c73536..b33e7122b 100644 --- a/build/start-building/index.md +++ b/build/start-building/index.md @@ -9,28 +9,6 @@ description: This section has all you need to start developing with Wormhole, in Wormhole's role as a Generic Message Passing (GMP) protocol means it facilitates interoperability across multiple areas of project development. The following sections will help you locate the tools most relevant to your development needs whether you are focused on building frontend user interfaces or smart contracts and protocols. This section also links to developer resources like references and code examples which are helpful for all builders looking to integrate with Wormhole. -## Choose Your Development Pathway - -
- -- :octicons-browser-16:{ .lg .middle } **Build Frontend Applications** - - --- - - Build user-friendly frontends that interact with Wormhole's existing integrations, enabling your users to transfer assets, query information, and monitor cross-chain activity. - - [:custom-arrow: Build frontend applications](/docs/build/applications/) - -- :octicons-file-code-16:{ .lg .middle } **Build Contract Integrations** - - --- - - Leverage Wormhole's powerful messaging protocols to create contracts that can communicate and interact across multiple blockchains. By using Wormhole’s core infrastructure, you can enable secure and seamless messaging, asset transfers, and more between supported networks. - - [:custom-arrow: Integrate with contracts](/docs/build/contract-integrations/) - -
- ## Get Hands-On
@@ -43,14 +21,6 @@ Wormhole's role as a Generic Message Passing (GMP) protocol means it facilitates [:custom-arrow: Explore tutorials](/docs/tutorials/) -- :octicons-code-16:{ .lg .middle } **Demos** - - --- - - Explore pre-built reference applications that demonstrate real-world use cases of Wormhole’s messaging protocols and token bridges. - - [:custom-arrow: Get inspired with demos](/docs/build/start-building/demos/) -
## Essential Resources for Development @@ -65,22 +35,20 @@ Wormhole's role as a Generic Message Passing (GMP) protocol means it facilitates [:custom-arrow: Discover supported networks](/docs/build/start-building/supported-networks/) -- :octicons-list-unordered-16:{ .lg .middle } **Reference** +- :octicons-goal-16:{ .lg .middle } **Testnet Faucets** --- - Access the essential Wormhole chain IDs and smart contract addresses for messaging protocols, token bridges, and other key components. - - [:custom-arrow: Explore Reference](/docs/build/reference/){target=\_blank} - + Get Testnet tokens to start experimenting with cross-chain transfers and contract deployment. + [:custom-arrow: Find Testnet faucets](/docs/build/start-building/testnet-faucets/) -- :octicons-goal-16:{ .lg .middle } **Testnet Faucets** +- :octicons-list-unordered-16:{ .lg .middle } **Reference** --- - Get Testnet tokens to start experimenting with cross-chain transfers and contract deployment. + Access the essential Wormhole chain IDs and smart contract addresses for messaging protocols, token bridges, and other key components. - [:custom-arrow: Find Testnet faucets](/docs/build/start-building/testnet-faucets/) + [:custom-arrow: Explore Reference](/docs/build/reference/){target=\_blank} diff --git a/build/toolkit/.pages b/build/toolkit/.pages index 9e8c11b62..09cfc2aa5 100644 --- a/build/toolkit/.pages +++ b/build/toolkit/.pages @@ -1,7 +1,7 @@ title: Toolkit nav: - index.md - - 'Wormholescan': 'https://wormholescan.io/' - - wormhole-sdk + - typescript-sdk - 'Solidity SDK': 'solidity-sdk.md' - - 'FAQs': 'faqs.md' +# - 'Development Environment': 'dev-env.md' +# - 'FAQs': 'faqs.md' diff --git a/build/contract-integrations/dev-env.md b/build/toolkit/dev-env.md similarity index 100% rename from build/contract-integrations/dev-env.md rename to build/toolkit/dev-env.md diff --git a/build/toolkit/index.md b/build/toolkit/index.md index c98c30f74..59312231a 100644 --- a/build/toolkit/index.md +++ b/build/toolkit/index.md @@ -33,7 +33,7 @@ Regardless of which network development environment you are using, there are a f Explore Wormhole's TypeScript SDK and learn how to perform different types of transfers, including native, token, and USDC transfers. - [:custom-arrow: Get started with the SDK](/docs/build/applications/wormhole-sdk/) + [:custom-arrow: Get started with the SDK](/docs/build/toolkit/typescript-sdk/) - :octicons-code-square-16:{ .lg .middle } **Solidity SDK** @@ -51,13 +51,15 @@ Regardless of which network development environment you are using, there are a f [:custom-arrow: Get started with Tilt](/docs/build/toolkit/tilt/) + diff --git a/build/toolkit/solidity-sdk.md b/build/toolkit/solidity-sdk.md index bf66f6d0c..05fcfe62f 100644 --- a/build/toolkit/solidity-sdk.md +++ b/build/toolkit/solidity-sdk.md @@ -52,7 +52,7 @@ The Wormhole Solidity SDK consists of key components that streamline cross-chain The [`WormholeRelayerSDK.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank} contract simplifies cross-chain messaging and asset transfers by integrating several necessary modules, including the Wormhole relayer. By automating message delivery between chains, the Wormhole relayer removes the need for developers to manage relayer infrastructure or handle gas on the target chain. Delivery providers handle the message payload, ensuring secure and efficient communication. -You can refer to the [Wormhole relayer documentation](/docs/build/contract-integrations/wormhole-relayers/){target=\_blank} for more details. +You can refer to the [Wormhole relayer documentation](/docs/build/core-messaging/wormhole-relayers/){target=\_blank} for more details. Key modules in the SDK include: @@ -100,7 +100,7 @@ These security measures ensure messages come from the correct source and are pro The Wormhole Solidity SDK interacts with the Wormhole relayer for sending and receiving messages across EVM-compatible chains. The [`IWormholeRelayer`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/IWormholeRelayer.sol){target=\_blank} and [`IWormholeReceiver`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/IWormholeReceiver.sol){target=\_blank} interfaces are central to cross-chain communication, enabling secure and efficient message delivery. -For detailed information on how to implement these interfaces, refer to the [Wormhole Relayer Interfaces documentation](/docs/build/contract-integrations/wormhole-relayers/#wormhole-relayer-interfaces){target=\_blank}. This section covers: +For detailed information on how to implement these interfaces, refer to the [Wormhole Relayer Interfaces documentation](/docs/build/core-messaging/wormhole-relayers/#wormhole-relayer-interfaces){target=\_blank}. This section covers: - **`IWormholeRelayer`** – methods for sending cross-chain messages, VAAs, and token transfers - **`IWormholeReceiver`** – the required implementation for receiving cross-chain messages @@ -154,7 +154,7 @@ To receive tokens on the target chain, implement a contract that inherits from ` In this example, `TokenReceiver` allows the contract to handle tokens sent from the source chain. Once the cross-chain message is received, the `receiveWormholeMessages` function processes the incoming tokens. Always validate the message's authenticity and source. !!! note - Always verify the source of incoming messages and tokens to prevent unauthorized access to your contract. Please refer to the [Emitter Verification](/docs/build/contract-integrations/core-contracts/#validating-the-emitter/){target=\_blank} section for more details. + Always verify the source of incoming messages and tokens to prevent unauthorized access to your contract. Please refer to the [Emitter Verification](/docs/build/core-messaging/core-contracts/#validating-the-emitter/){target=\_blank} section for more details. ## Testing Environment diff --git a/build/toolkit/tilt.md b/build/toolkit/tilt.md deleted file mode 100644 index 41711a458..000000000 --- a/build/toolkit/tilt.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Tilt Introduction and Setup -description: Learn about Tilt, a Wormhole dev environment with a local Kubernetes set up for cross-chain testing with Guardian nodes and relayers for seamless development. ---- - -# Tilt - -[Tilt](https://tilt.dev/){target=\_blank} is part of the official Docker ecosystem. It's a tool that allows developers to configure a Kubernetes environment for development easily. - -!!! note - Tilt is often referred to as "Devnet" in the Wormhole ecosystem, so any information labeled as "Devnet" also applies to Tilt. - -However, in the context of Wormhole, "Tilt" refers to the development environment used by the [Wormhole Core repository](https://github.com/wormhole-foundation/wormhole){target=\_blank}. This environment stands up Docker images for all the tools necessary to build across multiple blockchains, including: - -- All the Wormhole-supported blockchains and ecosystems -- A Guardian node -- Relayers -- Databases, Redis -- Utility front ends - -The Tilt environment is designed to provide an entire cross-chain development stack right out of the box. - -## Is Tilt Right for You? - -Tilt is a good option for developers who need a local development environment and have access to a machine that can handle running it. It is also an excellent option for developers who want to establish a CI testing suite. - -=== "Pros" - - - Out-of-the-box support for the many components needed to develop across the heterogeneous blockchain spaces - - Consistent development environment, where contracts deploy deterministically, and everything is already linked up - - Ability to easily enable or disable components as needed - - Regularly updated as new components join the Wormhole ecosystem - -=== "Cons" - - - Relatively high system requirements, but this can be mitigated by disabling components - - Most blockchains are "blank slates" with no contracts deployed. Thus, if your contracts have any dependencies, you may have to deploy them yourself or alter the default Tilt configuration - - Spin-up and rebuild times can be slow, which can result in a slow workflow - -## Tilt Installation - -Tilt functions best in a UNIX-style environment. To run the Tilt environment, make sure you have [Tilt](https://docs.tilt.dev/install.html){target=\_blank} and [Go](https://go.dev/doc/install){target=\_blank} installed. - -### MacOS Instructions - -You'll need to have `homebrew` installed on your system. You can install it with: - -```bash -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -``` - -Install Go: - -```bash -brew install go -``` - -Install Docker: - -```bash -brew install docker -``` - -After installation, go into Docker settings and switch on `kubernetes`. Also configure Docker to have 4 CPUs and about 16GB of RAM. - -Install Tilt: - -```bash -brew install tilt -``` - -### Linux Instructions - -#### Install Go - -You can install Go with the following command: - -```bash -wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz && -rm -r /usr/local/go && tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz -``` - -#### Install Docker Desktop - -If you're using Linux with a windows manager, it's highly recommended that you install Docker Desktop, since it comes with built-in Kubernetes, and you won't need to download Minikube. It's recommended that you allocate Docker at least 4 CPUs and 16GB RAM. Also, make sure you set up Docker as a non-root user. You can refer to [this list of Docker installation methods](https://docs.docker.com/engine/install/ubuntu/#installation-methods){target=\_blank}. - -If you're using Docker Desktop, you can enable Kubernetes by going into Settings > Kubernetes and checking the checkbox to enable Kubernetes. - -![Enable Kubernetes](/docs/images/build/toolkit/tilt/tilt-1.webp) - -#### Minikube - -The alternative to Docker Desktop with Kubernetes is to install [minikube](https://minikube.sigs.k8s.io/docs/start/){target=\_blank}. You can configure Minikube as follows: - -```bash -minikube start --driver=docker --kubernetes-version=v1.23.3 --cpus=4 --memory=14G --disk-size=10G --namespace=wormhole -``` - -If you reboot your VM you'll need to run the `minikube start` command again before you bring up Tilt. - -#### Install Tilt - -You can install Tilt with the following command: - -```bash -curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash -``` - -### Linux Experimental Instructions - -This is an experimental, single-command setup script. - -!!! warning - This is only recommended if you're running headless Linux and unable to use Docker Desktop, as you can enable Kubernetes from Docker. - -This experimental single command setup script should install dependencies for you on Linux and configure everything properly. If it doesn't work as expected, refer to the [standard Linux installation steps above](#linux-instructions). - -```bash -curl $URL | sh install_linux.sh && -cd wormhole/ && -./tilt.sh -``` - -If you've all got prerequisites installed, clone the Wormhole Core Repository and start Tilt. - -```bash -git clone --branch main https://github.com/wormhole-foundation/wormhole.git && -cd wormhole && -tilt up -``` - -### Virtual Machine Instructions - -If you're running Tilt in a VM, you'll need to pass in some extra flags to enable Tilt to listen to incoming traffic from external addresses: - -```bash -tilt up --host=0.0.0.0 -- --webHost=0.0.0.0 -``` - -You can now access the Tilt UI at `vm_external_ip:10350`. If the VM's external IP doesn't work, check the firewall and port settings to make sure your VM allows incoming traffic. Be sure to check out the [`Tiltfile`](https://github.com/wormhole-foundation/wormhole/blob/main/Tiltfile){target=\_blank}, which has much of the configuration and arguments for the development environment. It's relatively straightforward to enable and disable components. For example, you can enable blockchains by setting them to true at startup. Note the use of the `--` separator between Tilt command flags and the flags you wish to pass to configure the setup. - -```bash -tilt up -- --algorand --solana -``` - -## Using Tilt - -Tilt can be treated as an external environment or Devnet that you can easily spin up and tear down. If you've followed the standard setup, all your resources will be bound to various ports on localhost. To see all the endpoints that are hosted in your Tilt environment, you should check out the Tilt dashboard, located at `http://localhost:10350/overview`. - -All the deployed contract addresses can be found under the Devnet section of the chain being used in the [Environments](/docs/build/start-building/supported-networks/){target=\_blank} pages. Useful information pertaining to funded wallets and private keys can also be found in the [`Devnet.md`](https://github.com/wormhole-foundation/wormhole/blob/main/docs/devnet.md){target=\_blank} file of the docs. - -## Shutting Down Tilt - -To shut down Tilt, run `tilt down` with the same network flags provided in the `tilt up` command. - -```bash -tilt down -- --solana --algorand -``` - -## FAQ - -### Where are Fantom, Celo, Polygon, and Other EVM Chains? - -The smart contract development environment is effectively the same for all chains that support EVM. For changes in gas costs and transaction times, consider testing contract logic on Devnet and then using Testnet environments to get chain-specific answers. - -### Solana is Taking Forever - -Due to Solana's architecture, building the Solana pod often takes 25-40 minutes. Consider increasing the number of CPU cores assigned to Devnet for a faster build. - -### Solana Program Deploy Doesn't Work - -Kubernetes doesn't currently allow port forwarding for UDP ports ([GitHub Issue](https://github.com/kubernetes/kubernetes/issues/47862){target=\_blank}), which is what Solana uses for `solana program deploy`. Instead, it is recommended to use [Solana Deployer](https://github.com/acheroncrypto/solana-deployer){target=\_blank}. Not only does this deploy programs over regular RPC (thus bypassing UDP port requirements), but it's also much faster than `Solana program deploy.` - -### How Do I Reset State For a Pod? - -If you want to iterate quickly and don't want to bring Tilt down and back up, you can reset a pod's state by clicking the refresh button next to the pod name in the Tilt UI. - -## Contracts and Accounts - -The Devnet environment deploys the core layer and Token Bridge to each chain at the same addresses every time. It also provides funds to specific wallets. - -## Default Ports - -| Service | Port | -|:------------------:|:----:| -| Guardian REST | 7071 | -| Guardian gRPC Port | 7070 | -| Eth0 RPC | 8545 | -| Eth1 RPC | 8546 | -| Solana RPC | 8899 | \ No newline at end of file diff --git a/build/applications/wormhole-sdk/.pages b/build/toolkit/typescript-sdk/.pages similarity index 90% rename from build/applications/wormhole-sdk/.pages rename to build/toolkit/typescript-sdk/.pages index 9f2d16f11..c3b4d3669 100644 --- a/build/applications/wormhole-sdk/.pages +++ b/build/toolkit/typescript-sdk/.pages @@ -1,4 +1,4 @@ -title: Wormhole SDK +title: TypeScript SDK nav: - index.md - 'TypeScript SDK' : 'wormhole-sdk.md' diff --git a/build/applications/wormhole-sdk/index.md b/build/toolkit/typescript-sdk/index.md similarity index 83% rename from build/applications/wormhole-sdk/index.md rename to build/toolkit/typescript-sdk/index.md index 40ff46f78..006e94dde 100644 --- a/build/applications/wormhole-sdk/index.md +++ b/build/toolkit/typescript-sdk/index.md @@ -17,7 +17,7 @@ The Wormhole SDK provides developers with essential tools for cross-chain commun Learn about the core functionalities of the Wormhole SDK, including how to use its features for building cross-chain applications. - [:custom-arrow: Explore the SDK](/docs/build/applications/wormhole-sdk/wormhole-sdk/) + [:custom-arrow: Explore the SDK](/docs/build/toolkit/typescript-sdk/wormhole-sdk/) - :octicons-code-16:{ .lg .middle } **Layouts** @@ -25,6 +25,6 @@ The Wormhole SDK provides developers with essential tools for cross-chain commun Discover how to define, serialize, and deserialize data structures using the Wormhole SDK's layout system, ensuring efficient cross-chain communication. - [:custom-arrow: Learn about layouts](/docs/build/applications/wormhole-sdk/sdk-layout/) + [:custom-arrow: Learn about layouts](/docs/build/toolkit/typescript-sdk/sdk-layout/) diff --git a/build/applications/wormhole-sdk/protocols-payloads.md b/build/toolkit/typescript-sdk/protocols-payloads.md similarity index 95% rename from build/applications/wormhole-sdk/protocols-payloads.md rename to build/toolkit/typescript-sdk/protocols-payloads.md index 88e5c5bcf..857d7fa9e 100644 --- a/build/applications/wormhole-sdk/protocols-payloads.md +++ b/build/toolkit/typescript-sdk/protocols-payloads.md @@ -68,7 +68,7 @@ Protocol registration involves two key tasks: For example, here's the `TokenBridge` protocol registration: ```typescript ---8<-- "code/build/applications/wormhole-sdk/protocols-payloads/pl-1.ts" +--8<-- "code/build/toolkit/typescript-sdk/protocols-payloads/pl-1.ts" ``` This code snippet: @@ -83,7 +83,7 @@ You can view the full implementation in the [`TokenBridge` protocol file](https: Some protocols require platform-specific behavior. For instance, the EVM-compatible Wormhole Registry maps native addresses for Ethereum-based chains: ```typescript ---8<-- "code/build/applications/wormhole-sdk/protocols-payloads/pl-2.ts" +--8<-- "code/build/toolkit/typescript-sdk/protocols-payloads/pl-2.ts" ``` This ensures that `EvmAddress` is registered as the native address type for EVM-compatible platforms. See the [EVM platform address file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/platforms/evm/src/address.ts#L98-L106){target=\_blank} for details. @@ -107,7 +107,7 @@ Payload registration involves: 1. **Define payload layouts** - create layouts to structure your payloads. For instance, a protocol might use a `TransferWithPayload` layout: ```typescript - --8<-- "code/build/applications/wormhole-sdk/protocols-payloads/pl-3.ts" + --8<-- "code/build/toolkit/typescript-sdk/protocols-payloads/pl-3.ts" ``` 2. **Register payloads** - use `registerPayloadTypes` to map payload literals to their layouts: @@ -129,7 +129,7 @@ These steps link payload literals and their layouts, enabling seamless runtime h At the core of the payload registration process is the `payloadFactory`, a registry that manages the mapping between payload literals and layouts: ```typescript ---8<-- "code/build/applications/wormhole-sdk/protocols-payloads/pl-4.ts" +--8<-- "code/build/toolkit/typescript-sdk/protocols-payloads/pl-4.ts" ``` - The `payloadFactory` ensures each payload literal maps to its layout uniquely @@ -139,7 +139,7 @@ This implementation ensures dynamic, efficient handling of payloads at runtime. ## Integrate Protocols with Payloads -Integrating payloads with protocols enables dynamic identification through payload literals, while serialization and deserialization ensure their binary representation is compatible across chains. For more details on these processes, refer to the [Layouts page](/docs/build/applications/wormhole-sdk/sdk-layout/){target=\_blank}. +Integrating payloads with protocols enables dynamic identification through payload literals, while serialization and deserialization ensure their binary representation is compatible across chains. For more details on these processes, refer to the [Layouts page](/docs/build/toolkit/typescript-sdk/sdk-layout/){target=\_blank}. ### Payload Discriminators @@ -157,7 +157,7 @@ This system ensures: Below is an example of how the Wormhole SDK builds a discriminator to distinguish between payload layouts: ```typescript ---8<-- "code/build/applications/wormhole-sdk/protocols-payloads/pl-5.ts" +--8<-- "code/build/toolkit/typescript-sdk/protocols-payloads/pl-5.ts" ``` - [`layoutDiscriminator`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/9105de290c91babbf8ad031bd89cc75ee38739c8/core/base/src/utils/layout.ts#L16){target=\_blank} takes a list of layouts and generates a function that can identify the appropriate layout for a given serialized payload @@ -179,7 +179,7 @@ Payloads are registered to the `TokenBridge` protocol via the `PayloadLiteralToL Additionally, the protocol uses reusable layouts like [`transferCommonLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/76b20317b0f68e823d4e6c4a2e41bb2a7705c64f/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts#L29C7-L47){target=\_blank} and extends them in more specialized layouts such as [`transferWithPayloadLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/76b20317b0f68e823d4e6c4a2e41bb2a7705c64f/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts#L49-L57){target=\_blank}: ```typescript ---8<-- "code/build/applications/wormhole-sdk/protocols-payloads/pl-6.ts" +--8<-- "code/build/toolkit/typescript-sdk/protocols-payloads/pl-6.ts" ``` This layout includes: @@ -193,7 +193,7 @@ This layout includes: To manage multiple payloads, the `TokenBridge` protocol utilizes a discriminator to distinguish between payload types dynamically. For example: ```typescript ---8<-- "code/build/applications/wormhole-sdk/protocols-payloads/pl-7.ts" +--8<-- "code/build/toolkit/typescript-sdk/protocols-payloads/pl-7.ts" ``` - The [`getTransferDiscriminator`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/protocols/tokenBridge/tokenBridge.ts#L67-L70){target=\_blank} function dynamically evaluates payloads using predefined layouts @@ -204,7 +204,7 @@ To manage multiple payloads, the `TokenBridge` protocol utilizes a discriminator Here’s how the `TokenBridge` protocol connects its payloads to the Wormhole SDK: ```typescript ---8<-- "code/build/applications/wormhole-sdk/protocols-payloads/pl-8.ts" +--8<-- "code/build/toolkit/typescript-sdk/protocols-payloads/pl-8.ts" ``` This registration links the `TokenBridge` payload literals to their respective layouts, enabling serialization and deserialization at runtime. diff --git a/build/applications/wormhole-sdk/sdk-layout.md b/build/toolkit/typescript-sdk/sdk-layout.md similarity index 92% rename from build/applications/wormhole-sdk/sdk-layout.md rename to build/toolkit/typescript-sdk/sdk-layout.md index 29198bac3..d6e336c7c 100644 --- a/build/applications/wormhole-sdk/sdk-layout.md +++ b/build/toolkit/typescript-sdk/sdk-layout.md @@ -37,7 +37,7 @@ Layout items can represent: Below is an example of a layout that might be used to serialize a message across the Wormhole protocol: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-0.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-0.ts" ``` In this example: @@ -72,7 +72,7 @@ Layouts also allow for custom conversions, which help map complex or custom type For example, consider a custom conversion for a chain ID: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-1.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-1.ts" ``` This setup allows Wormhole to convert between human-readable formats and binary-encoded data used in payloads. @@ -82,7 +82,7 @@ This setup allows Wormhole to convert between human-readable formats and binary- The layout system performs error checks during serialization and deserialization. An error is thrown if data is incorrectly sized or in the wrong format. Refer to the below example: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-2.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-2.ts" ``` ## Application of Layouts @@ -96,7 +96,7 @@ To get started with layouts in Wormhole, you need to define your structure. A la Consider the following layout for a payload: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-3.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-3.ts" ``` In this example: @@ -111,7 +111,7 @@ In this example: Once a layout is defined, the next step is to serialize data according to that structure. You can accomplish this using the `serializeLayout` function from the Wormhole SDK. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-4.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-4.ts" ``` This takes the data structure (`examplePayload`) and serializes it according to the rules defined in the layout (`exampleLayout`). The result is a `Uint8Array` representing the serialized binary data. @@ -121,7 +121,7 @@ This takes the data structure (`examplePayload`) and serializes it according to Deserialization is the reverse of serialization. Given a serialized `Uint8Array`, we can convert it back into its original structure using the `deserializeLayout` function. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-5.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-5.ts" ``` This will output the structured object, making it easy to work with data transmitted or received from another chain. @@ -149,7 +149,7 @@ In complex protocols, layouts can contain nested structures. Nested layouts beco Refer to the following nested layout where a message contains nested fields: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-6.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-6.ts" ``` In this layout: @@ -170,7 +170,7 @@ type NestedMessage = LayoutToType; This ensures that when you serialize or deserialize data, it matches the expected structure. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-7.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-7.ts" ``` Attempting to assign data of incorrect types will result in a compile-time error. The Wormhole SDK's layout system enforces strong types, reducing runtime errors and improving code reliability. @@ -180,7 +180,7 @@ Attempting to assign data of incorrect types will result in a compile-time error You can serialize and deserialize nested structures in the same way as simpler layouts: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-8.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-8.ts" ``` Strong typing in TypeScript ensures that the message object conforms to the nested layout structure. This reduces the risk of data inconsistency during cross-chain communication. @@ -206,7 +206,7 @@ const chainItemBase = { binary: 'uint', size: 2 } as const; The dynamic chain ID layout, [`chainItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/chain.ts#L13-L40){target=\_blank}, extends `chainItemBase` by adding flexible custom conversion logic. It enables runtime validation of chain IDs, supports optional null values, and restricts chain IDs to a predefined set when needed. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-9.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-9.ts" ``` This layout is versatile. It allows the serialization of human-readable chain names (e.g., `Ethereum`) to numeric IDs (e.g., `1`) and vice versa. This is particularly useful when working with dynamic configurations or protocols supporting multiple chains. @@ -216,7 +216,7 @@ This layout is versatile. It allows the serialization of human-readable chain na The fixed chain ID layout, [`fixedChainItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/chain.ts#L42-L49){target=\_blank}, is more rigid. It also extends `chainItemBase`, but the custom field is hardcoded for a single chain. This eliminates runtime validation and enforces strict adherence to a specific chain. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-10.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-10.ts" ``` This layout allows developers to efficiently serialize and deserialize messages involving a single, fixed chain ID. @@ -230,7 +230,7 @@ The Wormhole SDK uses a Universal Address Layout to serialize and deserialize bl The [`universalAddressItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/universalAddress.ts#L7-L14){target=\_blank} defines the layout for addresses. It uses the binary type bytes and enforces a fixed size of 32 bytes for consistency. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-11.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-11.ts" ``` This layout ensures consistent address handling by defining the following: @@ -247,7 +247,7 @@ In the Wormhole SDK, the Signature Layout defines how to serialize and deseriali The `signatureLayout` specifies the binary structure of a secp256k1 signature. It divides the signature into three components: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-12.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-12.ts" ``` This layout provides a clear binary format for the secp256k1 signature, making it efficient to process within the Wormhole protocol. @@ -257,7 +257,7 @@ This layout provides a clear binary format for the secp256k1 signature, making i The [`signatureItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/signature.ts#L15-L22){target=\_blank} builds upon the `signatureLayout` by adding custom conversion logic. This conversion transforms raw binary data into a high-level `Signature` object and vice versa. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-13.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-13.ts" ``` The `custom` field ensures seamless integration of raw binary data with the `Signature` class, encapsulating signature-specific logic. @@ -273,7 +273,7 @@ The Wormhole SDK’s layout system is designed to handle various data structures For example, different message types can be identified using a payload ID, and the layout for each message can be determined at runtime: ```typescript - --8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-14.ts" + --8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-14.ts" ``` The switch statement helps developers parse multiple payload types using the same structure, depending on a control field like an ID. @@ -287,7 +287,7 @@ The Wormhole SDK’s layout system is designed to handle various data structures In some cases, a field may always contain a predefined value. The layout system supports fixed conversions, allowing developers to “hard-code” these values: ```typescript - --8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-15.ts" + --8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-15.ts" ``` **Example: Omitted Fields** @@ -295,7 +295,7 @@ The Wormhole SDK’s layout system is designed to handle various data structures Omitted fields are useful for handling padding or reserved fields that do not carry meaningful information and can safely be excluded from the deserialized output: ```typescript - --8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-16.ts" + --8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-16.ts" ``` In this example, `reserved` is a padding field with a fixed, non-dynamic value that serves no functional purpose. It is omitted from the deserialized result but still considered during serialization to maintain the correct binary format. @@ -321,7 +321,7 @@ The Wormhole SDK organizes the VAA structure into three key components: **Header layout:** ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-17.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-17.ts" ``` The header defines metadata for validating and processing the VAA, such as the Guardian set index and signatures. Each signature is represented using the `signatureItem` layout, ensuring consistency and compatibility across different platforms. @@ -333,7 +333,7 @@ The header defines metadata for validating and processing the VAA, such as the G **Envelope layout:** ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-18.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-18.ts" ``` The envelope encapsulates the VAA's core message data, including chain-specific information like the emitter address and sequence number. This structured layout ensures that the VAA can be securely transmitted across chains. @@ -343,7 +343,7 @@ The envelope encapsulates the VAA's core message data, including chain-specific The Payload contains the user-defined data specific to the application or protocol, such as a token transfer message, governance action, or other cross-chain operation. The layout of the payload is dynamic and depends on the payload type, identified by the `payloadLiteral` field. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-19.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-19.ts" ``` This example demonstrates a payload containing: @@ -368,7 +368,7 @@ At runtime, the payload layout is appended to the `baseLayout` to form the compl The Wormhole SDK provides the [`serialize`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/functions.ts#L48-L54){target=\_blank} function to serialize a VAA message. This function combines the base layout (header and envelope) with the appropriate payload layout, ensuring the message’s format is correct for transmission across chains. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-20.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-20.ts" ``` ???- note "How does it work?" @@ -376,7 +376,7 @@ The Wormhole SDK provides the [`serialize`](https://github.com/wormhole-foundati Internally, the serialize function dynamically combines the `baseLayout` (header and envelope) with the payload layout defined by the `payloadLiteral`. The complete layout is then passed to the `serializeLayout` function, which converts the data into binary format. ```typescript - --8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-21.ts" + --8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-21.ts" ``` #### Deserializing VAA Data @@ -384,7 +384,7 @@ The Wormhole SDK provides the [`serialize`](https://github.com/wormhole-foundati The Wormhole SDK provides the [`deserialize`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/functions.ts#L162-L200){target=\_blank} function to parse a VAA from its binary format back into a structured object. This function uses the `baseLayout` and payload discriminator logic to ensure the VAA is correctly interpreted. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-22.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-22.ts" ``` ???- note "How does it work?" @@ -392,14 +392,14 @@ The Wormhole SDK provides the [`deserialize`](https://github.com/wormhole-founda Internally, the `deserialize` function uses the `baseLayout` (header and envelope) to parse the main VAA structure. It then identifies the appropriate payload layout using the provided payload type or discriminator. ```typescript - --8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-23.ts" + --8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-23.ts" ``` ### Registering Custom Payloads In the Wormhole SDK, payloads rely on layouts to define their binary structure, ensuring consistency and type safety across protocols. Custom payloads extend this functionality, allowing developers to handle protocol-specific features or unique use cases. -To learn how to define and register payloads using layouts, refer to the [Building Protocols and Payloads](/docs/build/applications/wormhole-sdk/protocols-payloads/){target=\_blank} page for a detailed guide. +To learn how to define and register payloads using layouts, refer to the [Building Protocols and Payloads](/docs/build/toolkit/typescript-sdk/protocols-payloads/){target=\_blank} page for a detailed guide. ## Common Pitfalls & Best Practices @@ -440,7 +440,7 @@ Rather than defining sizes or types manually, reuse the predefined layout items For instance, use the `chainItem` layout for chain IDs or `universalAddressItem` for blockchain addresses: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-25.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-25.ts" ``` By leveraging predefined layout items, you reduce redundancy, maintain consistency, and ensure compatibility with Wormhole’s standards. @@ -462,7 +462,7 @@ Focusing on reusing predefined layout items and converting deserialized data int Always handle errors during both serialization and deserialization. Catching exceptions allows you to log or resolve issues gracefully when working with potentially corrupted or invalid data. ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-26.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-26.ts" ``` #### Leverage Reusable Layouts @@ -472,7 +472,7 @@ Creating reusable layouts for commonly repeated structures improves code maintai For example, define a reusable layout for chain IDs and addresses: ```typescript ---8<-- "code/build/applications/wormhole-sdk/sdk-layout/layout-27.ts" +--8<-- "code/build/toolkit/typescript-sdk/sdk-layout/layout-27.ts" ``` By abstracting common elements into a single layout, you ensure consistency across different parts of your application and simplify future updates. diff --git a/build/applications/wormhole-sdk/vaas-protocols.md b/build/toolkit/typescript-sdk/vaas-protocols.md similarity index 92% rename from build/applications/wormhole-sdk/vaas-protocols.md rename to build/toolkit/typescript-sdk/vaas-protocols.md index 737968228..f00cb3a96 100644 --- a/build/applications/wormhole-sdk/vaas-protocols.md +++ b/build/toolkit/typescript-sdk/vaas-protocols.md @@ -11,8 +11,8 @@ Wormhole's core functionality revolves around [Verifiable Action Approvals](/doc For deeper insights into serialization, deserialization, and protocol design, refer to: -- [Data Layouts](/docs/build/applications/wormhole-sdk/sdk-layout/){target=\_blank} for serialization concepts -- [Building Protocols and Payloads](/docs/build/applications/wormhole-sdk/protocols-payloads/){target=\_blank} for designing custom protocol messages +- [Data Layouts](/docs/build/toolkit/typescript-sdk/sdk-layout/){target=\_blank} for serialization concepts +- [Building Protocols and Payloads](/docs/build/toolkit/typescript-sdk/protocols-payloads/){target=\_blank} for designing custom protocol messages This guide will help you understand how to handle VAAs and protocol messages in off-chain and on-chain scenarios. @@ -56,7 +56,7 @@ The TypeScript SDK is designed for off-chain operations like reading, validating In the example below, we use the real [`envelopeLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dd6bd2463264680597519285ff559f9e92e85ca7/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} from Wormhole's TS SDK to deserialize and extract essential information like the emitter chain, sequence, and consistency level: ```typescript ---8<-- "code/build/applications/wormhole-sdk/vaas-protocols/ts-sdk.ts" +--8<-- "code/build/toolkit/typescript-sdk/vaas-protocols/ts-sdk.ts" ``` For more details, you can refer to the [parseVAA example](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/examples/src/parseVaa.ts){target=\_blank} in the Wormhole SDK repository. @@ -68,5 +68,5 @@ The Solidity SDK enables on-chain processing of VAAs directly within smart contr Below is an example of parsing an envelope on-chain using the Solidity SDK: ```solidity ---8<-- "code/build/applications/wormhole-sdk/vaas-protocols/solidity-sdk.sol" +--8<-- "code/build/toolkit/typescript-sdk/vaas-protocols/solidity-sdk.sol" ``` \ No newline at end of file diff --git a/build/applications/wormhole-sdk/wormhole-sdk.md b/build/toolkit/typescript-sdk/wormhole-sdk.md similarity index 92% rename from build/applications/wormhole-sdk/wormhole-sdk.md rename to build/toolkit/typescript-sdk/wormhole-sdk.md index 9726833ca..9611a09f0 100644 --- a/build/applications/wormhole-sdk/wormhole-sdk.md +++ b/build/toolkit/typescript-sdk/wormhole-sdk.md @@ -96,48 +96,48 @@ Alternatively, you can install a specific set of published packages individually Getting your integration started is simple. First, import Wormhole: ```ts ---8<-- 'code/build/applications/wormhole-sdk/get-vaa.ts::1' +--8<-- 'code/build/toolkit/typescript-sdk/get-vaa.ts::1' ``` Then, import each of the ecosystem [platforms](#platforms) that you wish to support: ```ts ---8<-- 'code/build/applications/wormhole-sdk/get-vaa.ts:4:9' +--8<-- 'code/build/toolkit/typescript-sdk/get-vaa.ts:4:9' ``` To make the [platform](#platforms) modules available for use, pass them to the Wormhole constructor: ```ts ---8<-- 'code/build/applications/wormhole-sdk/get-vaa.ts:13:20' +--8<-- 'code/build/toolkit/typescript-sdk/get-vaa.ts:13:20' ``` With a configured Wormhole object, you can do things like parse addresses for the provided platforms, get a [`ChainContext`](#chain-context) object, or fetch VAAs. ```ts ---8<-- 'code/build/applications/wormhole-sdk/get-vaa.ts:22:22' +--8<-- 'code/build/toolkit/typescript-sdk/get-vaa.ts:22:22' ``` You can retrieve a VAA as follows. In this example, a timeout of `60,000` milliseconds is used. The amount of time required for the VAA to become available will vary by network. ```ts ---8<-- 'code/build/applications/wormhole-sdk/get-vaa.ts:54:61' +--8<-- 'code/build/toolkit/typescript-sdk/get-vaa.ts:54:61' ``` ??? code "View the complete script" ```ts - --8<-- 'code/build/applications/wormhole-sdk/get-vaa.ts' + --8<-- 'code/build/toolkit/typescript-sdk/get-vaa.ts' ``` Optionally, you can override the default configuration with a partial `WormholeConfig` object to specify particular fields, such as a different RPC endpoint. ```ts ---8<-- 'code/build/applications/wormhole-sdk/config-override.ts' +--8<-- 'code/build/toolkit/typescript-sdk/config-override.ts' ``` ??? code "View the complete script" ```ts - --8<-- 'code/build/applications/wormhole-sdk/config.ts' + --8<-- 'code/build/toolkit/typescript-sdk/config.ts' ``` ## Concepts @@ -171,7 +171,7 @@ See the [Platforms folder of the TypeScript SDK](https://github.com/wormhole-fou The `definitions` package of the SDK includes the `ChainContext` class, which creates an interface for working with connected chains in a standardized way. This class contains the network, chain, and platform configurations for connected chains and cached RPC and protocol clients. The `ChainContext` class also exposes chain-specific methods and utilities. Much of the functionality comes from the `Platform` methods but some specific chains may have overridden methods via the context. This is also where the `Network`, `Chain`, and `Platform` type parameters which are used throughout the package are defined. ```ts ---8<-- 'code/build/applications/wormhole-sdk/get-chain.ts' +--8<-- 'code/build/toolkit/typescript-sdk/get-chain.ts' ``` ### Addresses @@ -179,7 +179,7 @@ The `definitions` package of the SDK includes the `ChainContext` class, which cr The SDK uses the `UniversalAddress` class to implement the `Address` interface, which all address types must implement. Addresses from various networks are parsed into their byte representation and modified as needed to ensure they are exactly 32 bytes long. Each platform also has an address type that understands the native address formats, referred to as `NativeAddress.` These abstractions allow you to work with addresses consistently regardless of the underlying chain. ```ts ---8<-- 'code/build/applications/wormhole-sdk/addresses.ts' +--8<-- 'code/build/toolkit/typescript-sdk/addresses.ts' ``` ### Tokens @@ -191,7 +191,7 @@ Wormhole uses their contract address to create a `TokenId` for standard tokens. Finally, the snippet demonstrates how to convert a `TokenId` back into a regular address format when needed. ```ts ---8<-- 'code/build/applications/wormhole-sdk/tokens.ts' +--8<-- 'code/build/toolkit/typescript-sdk/tokens.ts' ``` ### Signers @@ -203,7 +203,7 @@ A `SignOnlySigner` is used when the signer isn't connected to the network or pre Conversely, a `SignAndSendSigner` is appropriate when the signer is connected to the network and intends to broadcast the transactions. This type of signer also accepts an array of unsigned transactions but returns an array of transaction IDs corresponding to the order of the unsigned transactions. ```ts ---8<-- 'code/build/applications/wormhole-sdk/signers.ts' +--8<-- 'code/build/toolkit/typescript-sdk/signers.ts' ``` #### Set Up a Signer with Ethers.js @@ -211,7 +211,7 @@ Conversely, a `SignAndSendSigner` is appropriate when the signer is connected to To sign transactions programmatically with the Wormhole SDK, you can use Ethers.js to manage private keys and handle signing. Here's an example of setting up a signer using Ethers.js: ```javascript ---8<-- 'code/build/applications/wormhole-sdk/ethers.js' +--8<-- 'code/build/toolkit/typescript-sdk/ethers.js' ``` - **`provider`** - responsible for connecting to the Ethereum network (or any EVM-compatible network). It acts as a bridge between your application and the blockchain, allowing you to fetch data, check the state of the blockchain, and submit transactions @@ -256,7 +256,7 @@ Lastly, the code will demonstrate how to verify the message on the receiving end ???+ code "View the complete script" ```ts - --8<-- 'code/build/applications/wormhole-sdk/example-core-bridge.ts' + --8<-- 'code/build/toolkit/typescript-sdk/example-core-bridge.ts' ``` The payload contains the information necessary to perform whatever action is required based on the protocol that uses it. @@ -266,7 +266,7 @@ The payload contains the information necessary to perform whatever action is req The most familiar protocol built on Wormhole is the Token Bridge. Every chain has a `TokenBridge` protocol client that provides a consistent interface for interacting with the Token Bridge, which includes methods to generate the transactions required to transfer tokens and methods to generate and redeem attestations. `WormholeTransfer` abstractions are the recommended way to interact with these protocols, but it is possible to use them directly. ```ts ---8<-- 'code/build/applications/wormhole-sdk/token-bridge-snippet.ts' +--8<-- 'code/build/toolkit/typescript-sdk/token-bridge-snippet.ts' ``` Supported protocols are defined in the [definitions module](https://github.com/wormhole-foundation/connect-sdk/tree/main/core/definitions/src/protocols){target=\_blank}. @@ -292,12 +292,12 @@ The transfer process is divided into three main steps: For automatic transfers, the process ends after initiation. The code waits for the transfer to be attested for manual transfers and then completes it on the destination chain. ```ts ---8<-- 'code/build/applications/wormhole-sdk/token-bridge.ts:120:158' +--8<-- 'code/build/toolkit/typescript-sdk/token-bridge.ts:120:158' ``` ??? code "View the complete script" ```ts hl_lines="122" - --8<-- 'code/build/applications/wormhole-sdk/token-bridge.ts' + --8<-- 'code/build/toolkit/typescript-sdk/token-bridge.ts' ``` Internally, this uses the [TokenBridge](#token-bridge) protocol client to transfer tokens. Like other Protocols, the `TokenBridge` protocol provides a consistent set of methods across all chains to generate a set of transactions for that specific chain. @@ -313,12 +313,12 @@ An optional payload can be included with the transfer, though it's set to undefi When waiting for the `VAA`, a timeout of `60,000` milliseconds is used. The amount of time required for the VAA to become available will [vary by network](https://developers.circle.com/stablecoins/docs/required-block-confirmations#mainnet){target=\_blank}. ```ts ---8<-- 'code/build/applications/wormhole-sdk/cctp.ts:69:112' +--8<-- 'code/build/toolkit/typescript-sdk/cctp.ts:69:112' ``` ??? code "View the complete script" ```ts - --8<-- 'code/build/applications/wormhole-sdk/cctp.ts' + --8<-- 'code/build/toolkit/typescript-sdk/cctp.ts' ``` ### Recovering Transfers @@ -326,12 +326,12 @@ When waiting for the `VAA`, a timeout of `60,000` milliseconds is used. The amou It may be necessary to recover an abandoned transfer before it is completed. To do this, instantiate the `Transfer` class with the `from` static method and pass one of several types of identifiers. A `TransactionId` or `WormholeMessageId` may be used to recover the transfer. ```ts ---8<-- 'code/build/applications/wormhole-sdk/cctp.ts:120:126' +--8<-- 'code/build/toolkit/typescript-sdk/cctp.ts:120:126' ``` ??? code "View the complete script" ```ts hl_lines="130" - --8<-- 'code/build/applications/wormhole-sdk/cctp.ts' + --8<-- 'code/build/toolkit/typescript-sdk/cctp.ts' ``` ## Routes @@ -343,19 +343,19 @@ To provide a more flexible and generic interface, the `Wormhole` class provides The following section demonstrates setting up and validating a token transfer using Wormhole's routing system. ```ts ---8<-- 'code/build/applications/wormhole-sdk/router.ts:24:31' +--8<-- 'code/build/toolkit/typescript-sdk/router.ts:24:31' ``` Once created, the resolver can be used to provide a list of input and possible output tokens. ```ts ---8<-- 'code/build/applications/wormhole-sdk/router.ts:33:53' +--8<-- 'code/build/toolkit/typescript-sdk/router.ts:33:53' ``` Once the tokens are selected, a `RouteTransferRequest` may be created to provide a list of routes that can fulfill the request. Creating a transfer request fetches the token details since all routes will need to know about the tokens. ```ts ---8<-- 'code/build/applications/wormhole-sdk/router.ts:55:67' +--8<-- 'code/build/toolkit/typescript-sdk/router.ts:55:67' ``` Choosing the best route is currently left to the developer, but strategies might include sorting by output amount or expected time to complete the transfer (no estimate is currently provided). @@ -365,19 +365,19 @@ After choosing the best route, extra parameters like `amount`, `nativeGasDropoff After successful validation, the code requests a transfer quote. This quote likely includes important details such as fees, estimated time, and the final amount to be received. If the quote is generated successfully, it's displayed for the user to review and decide whether to proceed with the transfer. This process ensures that all transfer details are properly set up and verified before any actual transfer occurs. ```ts ---8<-- 'code/build/applications/wormhole-sdk/router.ts:72:93' +--8<-- 'code/build/toolkit/typescript-sdk/router.ts:72:93' ``` Finally, assuming the quote looks good, the route can initiate the request with the quote and the `signer`. ```ts ---8<-- 'code/build/applications/wormhole-sdk/router.ts:100:106' +--8<-- 'code/build/toolkit/typescript-sdk/router.ts:100:106' ``` ??? code "View the complete script" ```ts - --8<-- 'code/build/applications/wormhole-sdk/router.ts' + --8<-- 'code/build/toolkit/typescript-sdk/router.ts' ``` See the `router.ts` example in the [examples directory](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/examples){target=\_blank} for a full working example. @@ -387,7 +387,7 @@ See the `router.ts` example in the [examples directory](https://github.com/wormh Routes can be imported from any npm package that exports them and configured with the resolver. Custom routes must extend [`Route`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/0c57292368146c460abc9ce9e7f6a42be8e0b903/connect/src/routes/route.ts#L21-L64){target=\_blank} and implement [`StaticRouteMethods`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/0c57292368146c460abc9ce9e7f6a42be8e0b903/connect/src/routes/route.ts#L101){target=\_blank}. ```ts ---8<-- 'code/build/applications/wormhole-sdk/custom-route.ts' +--8<-- 'code/build/toolkit/typescript-sdk/custom-route.ts' ``` A noteworthy example of a route exported from a separate npm package is Wormhole Native Token Transfers (NTT). See the [`NttAutomaticRoute`](https://github.com/wormhole-foundation/native-token-transfers/blob/66f8e414223a77f5c736541db0a7a85396cab71c/sdk/route/src/automatic.ts#L48){target=\_blank} route implementation. diff --git a/build/toolkit/wormhole-sdk/.pages b/build/toolkit/wormhole-sdk/.pages deleted file mode 100644 index 93b64f97e..000000000 --- a/build/toolkit/wormhole-sdk/.pages +++ /dev/null @@ -1,6 +0,0 @@ -title: Wormhole SDK -nav: - - index.md - - 'TypeScript SDK' : '/docs/build/applications/wormhole-sdk/wormhole-sdk/' - - 'Data Layouts': '/docs/build/applications/wormhole-sdk/sdk-layout/' - diff --git a/build/toolkit/wormhole-sdk/index.md b/build/toolkit/wormhole-sdk/index.md deleted file mode 100644 index 40ff46f78..000000000 --- a/build/toolkit/wormhole-sdk/index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Wormhole SDK -description: The Wormhole SDK provides tools for cross-chain communication, token bridges, and more, enabling developers to integrate with multiple blockchain environments. ---- - -# Wormhole SDK - -## Get Started - -The Wormhole SDK provides developers with essential tools for cross-chain communication, token bridges, and more. This SDK enables seamless interaction between different blockchain environments with a focus on performance and usability. - -
- -- :octicons-book-16:{ .lg .middle } **Wormhole SDK** - - --- - - Learn about the core functionalities of the Wormhole SDK, including how to use its features for building cross-chain applications. - - [:custom-arrow: Explore the SDK](/docs/build/applications/wormhole-sdk/wormhole-sdk/) - -- :octicons-code-16:{ .lg .middle } **Layouts** - - --- - - Discover how to define, serialize, and deserialize data structures using the Wormhole SDK's layout system, ensuring efficient cross-chain communication. - - [:custom-arrow: Learn about layouts](/docs/build/applications/wormhole-sdk/sdk-layout/) - -
diff --git a/build/transfers/.pages b/build/transfers/.pages new file mode 100644 index 000000000..84979bde9 --- /dev/null +++ b/build/transfers/.pages @@ -0,0 +1,7 @@ +title: Multichain Transfers +nav: + - index.md + - connect + - native-token-transfers +# TODO: Token Bridge + - 'CCTP Bridge': 'cctp.md' diff --git a/build/contract-integrations/cctp.md b/build/transfers/cctp.md similarity index 95% rename from build/contract-integrations/cctp.md rename to build/transfers/cctp.md index 16b1f8a81..3aa094f2d 100644 --- a/build/contract-integrations/cctp.md +++ b/build/transfers/cctp.md @@ -7,7 +7,7 @@ description: Learn how to interact directly with Circle's CCTP Bridge contracts, ## Introduction -Circle's [Cross-Chain Transfer Protocol (CCTP)](/docs/learn/messaging/cctp/){target=\_blank} by Circle is a permissionless utility that facilitates secure and efficient USDC transfers across blockchain networks through native burning and minting mechanisms. +Circle's [Cross-Chain Transfer Protocol (CCTP)](/docs/learn/transfers/cctp/){target=\_blank} by Circle is a permissionless utility that facilitates secure and efficient USDC transfers across blockchain networks through native burning and minting mechanisms. As decentralized finance (DeFi) protocols evolve, the need for flexible, secure cross-chain messaging has expanded, requiring solutions beyond simple asset transfers. Wormhole enhances CCTP's capabilities by allowing developers to compose more complex cross-chain interactions. With Wormhole's generic messaging, applications can execute smart contract logic alongside native USDC transfers, enabling richer, more versatile cross-chain experiences. @@ -33,7 +33,7 @@ This contract can be found in [Wormhole's `wormhole-circle-integration` reposito ??? code "Circle Integration contract" ```solidity - --8<-- 'code/build/contract-integrations/cctp/CircleIntegration.sol' + --8<-- 'code/build/transfers/cctp/CircleIntegration.sol' ``` The functions provided by the Circle Integration contract are as follows: @@ -215,7 +215,7 @@ Additionally, the contract provides methods for updating or replacing previously ??? code "Token Messenger contract" ```solidity - --8<-- 'code/build/contract-integrations/cctp/TokenMessenger.sol' + --8<-- 'code/build/transfers/cctp/TokenMessenger.sol' ``` This contract and the interfaces, contracts, and libraries it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/TokenMessenger.sol){target=\_blank} on GitHub. @@ -258,7 +258,7 @@ The functions provided by the Token Messenger contract are as follows: `DepositForBurn` - event emitted when `depositForBurn` is called. The `destinationCaller` is set to `bytes32(0)` to allow any address to call `receiveMessage` on the destination domain - --8<-- 'text/build/contract-integrations/cctp/DepositForBurn-event.md' + --8<-- 'text/build/transfers/cctp/DepositForBurn-event.md' - **`depositForBurnWithCaller`** - deposits and burns tokens from the sender to be minted on the destination domain. This method differs from `depositForBurn` in that the mint on the destination domain can only be called by the designated `destinationCaller` address @@ -302,7 +302,7 @@ The functions provided by the Token Messenger contract are as follows: `DepositForBurn` - event emitted when `depositForBurnWithCaller` is called - --8<-- 'text/build/contract-integrations/cctp/DepositForBurn-event.md' + --8<-- 'text/build/transfers/cctp/DepositForBurn-event.md' - **`replaceDepositForBurn`** — replaces a previous `BurnMessage` to modify the mint recipient and/or the destination caller. The replacement message reuses the `_nonce` created by the original message, which allows the original message's sender to update the details without requiring a new deposit @@ -338,7 +338,7 @@ The functions provided by the Token Messenger contract are as follows: `DepositForBurn` - event emitted when `replaceDepositForBurn` is called. Note that the `destinationCaller` will reflect the new destination caller, which may be the same as the original destination caller, a new destination caller, or an empty destination caller (`bytes32(0)`), indicating that any destination caller is valid - --8<-- 'text/build/contract-integrations/cctp/DepositForBurn-event.md' + --8<-- 'text/build/transfers/cctp/DepositForBurn-event.md' - **`handleReceiveMessage`** - handles an incoming message received by the local `MessageTransmitter` and takes the appropriate action. For a burn message, it mints the associated token to the requested recipient on the local domain. @@ -414,7 +414,7 @@ Additional features include replacing previously sent messages, setting maximum ??? code "Message Transmitter contract" ```solidity - --8<-- 'code/build/contract-integrations/cctp/MessageTransmitter.sol' + --8<-- 'code/build/transfers/cctp/MessageTransmitter.sol' ``` This contract and the interfaces, contracts, and libraries it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/MessageTransmitter.sol){target=\_blank} on GitHub. @@ -503,7 +503,7 @@ The functions provided by the Message Transmitter contract are as follows: ??? interface "Emits" - --8<-- 'text/build/contract-integrations/cctp/MessageSent-event.md' + --8<-- 'text/build/transfers/cctp/MessageSent-event.md' - **`sendMessageWithCaller`** — sends a message to the destination domain and recipient, requiring a specific caller to trigger the message on the target chain. It increments the `nonce`, assigns a unique `nonce` to the message, and emits a `MessageSent` event @@ -539,7 +539,7 @@ The functions provided by the Message Transmitter contract are as follows: ??? interface "Emits" - --8<-- 'text/build/contract-integrations/cctp/MessageSent-event.md' + --8<-- 'text/build/transfers/cctp/MessageSent-event.md' - **`replaceMessage`** — replaces an original message with a new message body and/or updates the destination caller. The replacement message reuses the `_nonce` created by the original message @@ -573,7 +573,7 @@ The functions provided by the Message Transmitter contract are as follows: ??? interface "Emits" - --8<-- 'text/build/contract-integrations/cctp/MessageSent-event.md' + --8<-- 'text/build/transfers/cctp/MessageSent-event.md' ### Token Minter Contract @@ -585,7 +585,7 @@ To enhance control and flexibility, the contract includes mechanisms to pause op ??? code "Token Minter contract" ```solidity - --8<-- 'code/build/contract-integrations/cctp/TokenMinter.sol' + --8<-- 'code/build/transfers/cctp/TokenMinter.sol' ``` This contract and the interfaces and contracts it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/TokenMinter.sol){target=\_blank} on GitHub. @@ -628,13 +628,13 @@ To streamline this process, you can use the [Wormhole Solidity SDK](https://gith ??? code "CCTP Sender contract" ```solidity - --8<-- 'code/build/contract-integrations/cctp/CCTPSender.sol' + --8<-- 'code/build/transfers/cctp/CCTPSender.sol' ``` The `CCTPSender` abstract contract exposes the `sendUSDCWithPayloadToEvm` function. This function publishes a CCTP transfer of the provided `amount` of USDC and requests that the transfer be delivered along with a `payload` to the specified `targetAddress` on the `targetChain`. ```solidity ---8<-- 'code/build/contract-integrations/cctp/sendUSDCWithPayloadToEvm.sol' +--8<-- 'code/build/transfers/cctp/sendUSDCWithPayloadToEvm.sol' ``` ??? interface "Parameters" @@ -695,7 +695,7 @@ When the `sendUSDCWithPayloadToEvm` function is called, the following series of A simple example implementation is as follows: ```solidity ---8<-- 'code/build/contract-integrations/cctp/sendCrossChainDeposit.sol' +--8<-- 'code/build/transfers/cctp/sendCrossChainDeposit.sol' ``` The above example sends a specified amount of USDC and the recipient's address as a payload to a target contract on another chain, ensuring that the correct cost is provided for the cross-chain transfer. @@ -709,7 +709,7 @@ Using the Wormhole-deployed relayer automatically triggers the `receiveWormholeM ??? code "CCTP Receiver contract" ```solidity - --8<-- 'code/build/contract-integrations/cctp/CCTPReceiver.sol' + --8<-- 'code/build/transfers/cctp/CCTPReceiver.sol' ``` Although you do not need to interact with the `receiveWormholeMessages` function directly, it's important to understand what it does. This function processes cross-chain messages and USDC transfers via Wormhole's Circle (CCTP) Bridge. Here's a summary of what it does: @@ -726,7 +726,7 @@ Although you do not need to interact with the `receiveWormholeMessages` functi You'll need to implement the `receivePayloadAndUSDC` function to transfer the USDC and handle the payload as your application needs. A simple example implementation is as follows: ```solidity ---8<-- 'code/build/contract-integrations/cctp/receivePayloadAndUSDC.sol' +--8<-- 'code/build/transfers/cctp/receivePayloadAndUSDC.sol' ``` ## Complete Example diff --git a/build/applications/connect/.pages b/build/transfers/connect/.pages similarity index 87% rename from build/applications/connect/.pages rename to build/transfers/connect/.pages index f9f3482f8..6bf304dd7 100644 --- a/build/applications/connect/.pages +++ b/build/transfers/connect/.pages @@ -1,4 +1,4 @@ -title: Connect +title: Connect UI Widget nav: - index.md - 'Overview': overview.md diff --git a/build/applications/connect/configuration-v0.md b/build/transfers/connect/configuration-v0.md similarity index 93% rename from build/applications/connect/configuration-v0.md rename to build/transfers/connect/configuration-v0.md index f6c3ee761..82a16ee7e 100644 --- a/build/applications/connect/configuration-v0.md +++ b/build/transfers/connect/configuration-v0.md @@ -12,7 +12,7 @@ Wormhole Connect is a flexible React widget that streamlines cross-chain asset t This guide provides detailed instructions on configuring Wormhole Connect and highlights the many ways it can be customized to fit your specific needs, from integrating supported blockchains and tokens to tailoring the user interface. !!! note - For documentation on the latest version of Connect, please refer to the current [configuration documentation](/docs/build/applications/connect/configuration/){target=\_blank}. If you are looking to upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/applications/connect/upgrade/){target=\_blank} for detailed instructions. + For documentation on the latest version of Connect, please refer to the current [configuration documentation](/docs/build/transfers/connect/configuration/){target=\_blank}. If you are looking to upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/transfers/connect/upgrade/){target=\_blank} for detailed instructions. ## Get Started @@ -21,13 +21,13 @@ Configure the Wormhole Connect React component by passing a `WormholeConnectConf === "React" ```ts - --8<-- 'code/build/applications/connect/configuration/configure-react-v0.tsx' + --8<-- 'code/build/transfers/connect/configuration/configure-react-v0.tsx' ``` === "HTML Tags" ```html - --8<-- 'code/build/applications/connect/configuration/configure-html.html' + --8<-- 'code/build/transfers/connect/configuration/configure-html.html' ``` ## Examples {: #examples } @@ -36,7 +36,7 @@ Below are some examples of different ways you can configure Connect. See `Wormho ??? code "View `WormholeConnectConfig`" ```ts - --8<-- 'code/build/applications/connect/configuration/index.ts' + --8<-- 'code/build/transfers/connect/configuration/index.ts' ``` ### Custom Networks and RPC Endpoints {: #custom-networks-and-rpc-endpoints } @@ -46,13 +46,13 @@ Specify supported networks, tokens, and custom RPC endpoints. Your users may enc === "Mainnet" ```js - --8<-- 'code/build/applications/connect/configuration/custom-simple-v0.jsx' + --8<-- 'code/build/transfers/connect/configuration/custom-simple-v0.jsx' ``` === "Testnet" ```js - --8<-- 'code/build/applications/connect/configuration/custom-simple-testnet-v0.tsx' + --8<-- 'code/build/transfers/connect/configuration/custom-simple-testnet-v0.tsx' ``` !!! note @@ -63,7 +63,7 @@ Specify supported networks, tokens, and custom RPC endpoints. Your users may enc Wormhole Connect offers a high level of customizability that suits and integrates with your application's design, including various options for buttons, backgrounds, popovers, fonts, and more. The following example demonstrates a variety of appearance customizations. Remember, if you prefer a visual to aid in designing your widget, you can use the [no code style interface](https://connect-in-style.wormhole.com/){target=\_blank}. ```jsx ---8<-- 'code/build/applications/connect/configuration/custom-full.jsx' +--8<-- 'code/build/transfers/connect/configuration/custom-full.jsx' ``` ### Environment {: #environment } @@ -109,7 +109,7 @@ This example configuration limits Connect to the Solana and Ethereum networks an See [`src/config/types.ts`](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank} for the type definition of `TokensConfig`. ```json ---8<-- 'code/build/applications/connect/configuration/arbitrary-token.tsx' +--8<-- 'code/build/transfers/connect/configuration/arbitrary-token.tsx' ``` ## More Configuration Options {: #more-configuration-options } @@ -214,7 +214,7 @@ By setting the `showHamburgerMenu` option to `false,` you can add extra links. T #### Sample Configuration {: #sample-configuration } ```json ---8<-- 'code/build/applications/connect/configuration/sample-configuration.json' +--8<-- 'code/build/transfers/connect/configuration/sample-configuration.json' ``` ### CoinGecko API Key {: #coingecko-api-key } @@ -240,7 +240,7 @@ Specify a set of extra networks to be displayed on the network selection modal, ??? code "View full configuration" ```json - --8<-- 'code/build/applications/connect/configuration/advanced-configuration.json' + --8<-- 'code/build/transfers/connect/configuration/advanced-configuration.json' ``` ### More Tokens {: #more-tokens } diff --git a/build/applications/connect/configuration/.pages b/build/transfers/connect/configuration/.pages similarity index 100% rename from build/applications/connect/configuration/.pages rename to build/transfers/connect/configuration/.pages diff --git a/build/applications/connect/configuration/configure-data.md b/build/transfers/connect/configuration/configure-data.md similarity index 89% rename from build/applications/connect/configuration/configure-data.md rename to build/transfers/connect/configuration/configure-data.md index fce7b8381..fb481cc58 100644 --- a/build/applications/connect/configuration/configure-data.md +++ b/build/transfers/connect/configuration/configure-data.md @@ -14,13 +14,13 @@ Configure Wormhole Connect by passing a `WormholeConnectConfig` object as the `c === "React integration" ```ts - --8<-- 'code/build/applications/connect/configuration/configure-react-v1.tsx' + --8<-- 'code/build/transfers/connect/configuration/configure-react-v1.tsx' ``` === "Hosted integration" ```ts - --8<-- 'code/build/applications/connect/configuration/configure-hosted.tsx' + --8<-- 'code/build/transfers/connect/configuration/configure-hosted.tsx' ``` !!! note @@ -35,13 +35,13 @@ Connect lets you customize the available chains to match your project's needs. Y === "Mainnet" ```js - --8<-- 'code/build/applications/connect/configuration/custom-simple-v1.jsx' + --8<-- 'code/build/transfers/connect/configuration/custom-simple-v1.jsx' ``` === "Testnet" ```js - --8<-- 'code/build/applications/connect/configuration/custom-simple-testnet-v1.jsx' + --8<-- 'code/build/transfers/connect/configuration/custom-simple-testnet-v1.jsx' ``` !!! note @@ -77,15 +77,15 @@ For further details on the `route` plugin interface, refer to the [Wormhole Type To configure Wormhole Connect to offer only USDC transfers via the CCTP route, use the following configuration: ```typescript ---8<-- 'code/build/applications/connect/configuration/example-cctp.ts' +--8<-- 'code/build/transfers/connect/configuration/example-cctp.ts' ``` #### Example: Offer All Default Routes and Third-Party Plugins -In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge and CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/contract-integrations/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. +In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge and CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/transfers/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. ```typescript ---8<-- 'code/build/applications/connect/configuration/example-all-routes.ts' +--8<-- 'code/build/transfers/connect/configuration/example-all-routes.ts' ``` This flexible plugin allows you to combine default routes (such as Token Bridge and CCTP) with third-party protocols, offering complete control over which routes are available in your application. @@ -102,7 +102,7 @@ This example configuration adds the BONK token to Connect. Note the `wrappedToke See the [Connect source code](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank} for the type definition of `TokensConfig`. ```typescript ---8<-- 'code/build/applications/connect/configuration/add-token.tsx' +--8<-- 'code/build/transfers/connect/configuration/add-token.tsx' ``` ### Whitelisting Tokens {: #whitelisting-tokens } @@ -115,13 +115,13 @@ Connect offers a list of built-in tokens by default. You can see it below: You can customize the tokens shown in the UI using the `tokens` property. The following example adds a custom token and limits Connect to showing only that token, along with the native gas tokens ETH and SOL. ```jsx ---8<-- 'code/build/applications/connect/configuration/custom-tokens-whitelist.jsx' +--8<-- 'code/build/transfers/connect/configuration/custom-tokens-whitelist.jsx' ``` You can whitelist tokens by symbol or by specifying tuples of [chain, address]. For example, this would show only BONK token (on all chains you've whitelisted) as well as [`EPjFW...TDt1v`](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v){target=\_blank} on Solana, which is USDC. ```jsx ---8<-- 'code/build/applications/connect/configuration/custom-tokens-whitelist-advanced.jsx' +--8<-- 'code/build/transfers/connect/configuration/custom-tokens-whitelist-advanced.jsx' ``` ### User-Inputted Tokens {: #user-inputted-tokens } @@ -131,7 +131,7 @@ As of version 2.0, Connect allows users to paste token addresses to bridge any t If you provide a token whitelist (see above), this is turned off automatically. However, you can also disable it explicitly like this: ```jsx ---8<-- 'code/build/applications/connect/configuration/custom-disable-arbitrary-tokens.jsx' +--8<-- 'code/build/transfers/connect/configuration/custom-disable-arbitrary-tokens.jsx' ``` Setting `ui.disableUserInputtedTokens` to `true` will disable the ability to paste in token addresses. @@ -141,7 +141,7 @@ Setting `ui.disableUserInputtedTokens` to `true` will disable the ability to pas Landing transactions on Solana can require finely tuned priority fees when there is congestion. You can tweak how Connect determines these with `transactionSettings`. All of the parameters in this configuration are optional; you can provide any combination of them. ```jsx ---8<-- 'code/build/applications/connect/configuration/custom-tx-settings-solana.jsx' +--8<-- 'code/build/transfers/connect/configuration/custom-tx-settings-solana.jsx' ``` !!! note @@ -163,5 +163,5 @@ If you would like to offer Reown Cloud (formerly WalletConnect) as a supported w The CoinGecko API can be used to fetch token price data. If you have a [CoinGecko API Plan](https://apiguide.coingecko.com/getting-started/getting-started){target=\_blank}, you can include the API key in the configuration. ```jsx ---8<-- 'code/build/applications/connect/configuration/custom-coingecko-key.jsx' +--8<-- 'code/build/transfers/connect/configuration/custom-coingecko-key.jsx' ``` diff --git a/build/applications/connect/configuration/configure-theme.md b/build/transfers/connect/configuration/configure-theme.md similarity index 92% rename from build/applications/connect/configuration/configure-theme.md rename to build/transfers/connect/configuration/configure-theme.md index a72822461..e05de2461 100644 --- a/build/applications/connect/configuration/configure-theme.md +++ b/build/transfers/connect/configuration/configure-theme.md @@ -14,13 +14,13 @@ You can customize Connect's color scheme by providing a `theme` prop. === "React integration" ```ts - --8<-- 'code/build/applications/connect/configuration/custom-colors.tsx' + --8<-- 'code/build/transfers/connect/configuration/custom-colors.tsx' ``` === "Hosted integration" ```ts - --8<-- 'code/build/applications/connect/configuration/custom-colors-hosted.tsx' + --8<-- 'code/build/transfers/connect/configuration/custom-colors-hosted.tsx' ``` The `WormholeConnectTheme` type supports the following properties: @@ -53,5 +53,5 @@ By setting the `showHamburgerMenu` option to `false,` you can add extra links. T | `order` | Order where the new item should be injected | ```jsx ---8<-- 'code/build/applications/connect/configuration/custom-menu.jsx' +--8<-- 'code/build/transfers/connect/configuration/custom-menu.jsx' ``` diff --git a/build/applications/connect/configuration/index.md b/build/transfers/connect/configuration/index.md similarity index 81% rename from build/applications/connect/configuration/index.md rename to build/transfers/connect/configuration/index.md index 361ebd9bd..fa8a317e6 100644 --- a/build/applications/connect/configuration/index.md +++ b/build/transfers/connect/configuration/index.md @@ -12,9 +12,9 @@ Wormhole Connect is a flexible React widget that streamlines cross-chain asset t This guide provides detailed instructions on configuring Wormhole Connect and highlights the many ways it can be customized to fit your specific needs, from integrating supported blockchains and tokens to tailoring the user interface. !!! note - To upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/applications/connect/upgrade/){target=\_blank} for instructions. + To upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/transfers/connect/upgrade/){target=\_blank} for instructions. - If you're using an older version of Wormhole Connect (v0.x), please refer to the [v0.x configuration documentation](/docs/build/applications/connect/configuration-v0/){target=\_blank}. + If you're using an older version of Wormhole Connect (v0.x), please refer to the [v0.x configuration documentation](/docs/build/transfers/connect/configuration-v0/){target=\_blank}.
@@ -25,7 +25,7 @@ This guide provides detailed instructions on configuring Wormhole Connect and hi Learn how to configure the networks, tokens, and routes supported by Wormhole Connect. Set up RPC endpoints, whitelist tokens, and leverage multiple bridging protocols to meet your dApp's needs. - [:custom-arrow: Get started](/docs/build/applications/connect/configuration/configure-data/) + [:custom-arrow: Get started](/docs/build/transfers/connect/configuration/configure-data/) - :octicons-apps-16:{ .lg .middle } **Theme** @@ -33,6 +33,6 @@ This guide provides detailed instructions on configuring Wormhole Connect and hi Discover how to style the Wormhole Connect widget to align with your brand. Customize colors, fonts, and UI elements to deliver a seamless user experience. - [:custom-arrow: Explore routes](/docs/build/applications/connect/configuration/configure-theme/) + [:custom-arrow: Explore routes](/docs/build/transfers/connect/configuration/configure-theme/)
diff --git a/build/applications/connect/faqs.md b/build/transfers/connect/faqs.md similarity index 98% rename from build/applications/connect/faqs.md rename to build/transfers/connect/faqs.md index c4bb7383b..4ba750b6c 100644 --- a/build/applications/connect/faqs.md +++ b/build/transfers/connect/faqs.md @@ -23,7 +23,7 @@ Connect supports around 30 chains, spanning various blockchain runtimes: - Solana - Move-based chains (Sui, Aptos) -For a complete list of supported chains, see the [Connect-supported chains list](/docs/build/applications/connect/features/){target=\_blank}. +For a complete list of supported chains, see the [Connect-supported chains list](/docs/build/transfers/connect/features/){target=\_blank}. ## What is gas dropoff? diff --git a/build/applications/connect/features.md b/build/transfers/connect/features.md similarity index 97% rename from build/applications/connect/features.md rename to build/transfers/connect/features.md index 31ff9960a..416569fbc 100644 --- a/build/applications/connect/features.md +++ b/build/transfers/connect/features.md @@ -42,7 +42,7 @@ This route appears if both of the following conditions are satisfied: ### Token Bridge Relayer {: #token-bridge-relayer} -On the [routes](/docs/build/applications/connect/routes/){target=\_blank} page, this is referred to as the automatic route in the Token Bridge section. +On the [routes](/docs/build/transfers/connect/routes/){target=\_blank} page, this is referred to as the automatic route in the Token Bridge section. Trustless relayers can execute the second transaction on behalf of the user, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. diff --git a/build/applications/connect/index.md b/build/transfers/connect/index.md similarity index 82% rename from build/applications/connect/index.md rename to build/transfers/connect/index.md index a2310b21f..2b840acb8 100644 --- a/build/applications/connect/index.md +++ b/build/transfers/connect/index.md @@ -17,7 +17,7 @@ Wormhole Connect is a React widget offering an easy-to-use interface to facilita Explore Wormhole Connect, the React widget that allows you to offer an easy-to-use UI for cross-chain asset transfers via Wormhole in a web application. - [:custom-arrow: Get started](/docs/build/applications/connect/overview/) + [:custom-arrow: Get started](/docs/build/transfers/connect/overview/) - :octicons-code-16:{ .lg .middle } **Routes** @@ -25,14 +25,14 @@ Wormhole Connect is a React widget offering an easy-to-use interface to facilita Explore Wormhole Connect's routing capabilities for asset transfers, featuring Token Bridge, CCTP, NTT, and various blockchain-specific routes for optimal UX. - [:custom-arrow: Explore routes](/docs/build/applications/connect/routes/) + [:custom-arrow: Explore routes](/docs/build/transfers/connect/routes/) - :octicons-globe-16:{ .lg .middle } **Features** --- Learn which features of Connect are available for your network of choice. - [:custom-arrow: Discover supported features](/docs/build/applications/connect/features/) + [:custom-arrow: Discover supported features](/docs/build/transfers/connect/features/) - :octicons-pencil-16:{ .lg .middle } **Configuration** @@ -40,7 +40,7 @@ Wormhole Connect is a React widget offering an easy-to-use interface to facilita Configure Wormhole Connect for React or HTML, set themes, define tokens, networks, and customize RPC endpoints for enhanced blockchain interactions. - [:custom-arrow: Configure for customization](/docs/build/applications/connect/configuration/) + [:custom-arrow: Configure for customization](/docs/build/transfers/connect/configuration/) - :octicons-question-16:{ .lg .middle } **Connect FAQs** @@ -48,7 +48,7 @@ Wormhole Connect is a React widget offering an easy-to-use interface to facilita Find answers to common questions about Wormhole Connect, including supported assets, chains, and integration options. - [:custom-arrow: Read Connect FAQs](/docs/build/applications/connect/faqs/) + [:custom-arrow: Read Connect FAQs](/docs/build/transfers/connect/faqs/) diff --git a/build/applications/connect/overview.md b/build/transfers/connect/overview.md similarity index 79% rename from build/applications/connect/overview.md rename to build/transfers/connect/overview.md index e3c1a9e4f..5005a639e 100644 --- a/build/applications/connect/overview.md +++ b/build/transfers/connect/overview.md @@ -15,13 +15,13 @@ The [Wormhole TypeScript SDK](https://docs.wormhole.com/wormhole/reference/sdk-d Wormhole Connect is easy to customize to suit your application's needs. You can specify technical details like supported assets and custom RPCs or forgo customization and have a full-featured widget. The widget UI is highly customizable, with extensive styling options available, including a user-friendly no code styling interface for those who prefer a more visual approach to design. The features of Wormhole Connect include: -- Multiple ways to bridge assets ([routes](/docs/build/applications/connect/routes/){target=\_blank}) +- Multiple ways to bridge assets ([routes](/docs/build/transfers/connect/routes/){target=\_blank}) - Extensive ways to style the UI (including the [no code styling interface](https://connect-in-style.wormhole.com/){target=\_blank}) -- Ways to [configure](/docs/build/applications/connect/configuration/){target=\_blank} what feature set to offer +- Ways to [configure](/docs/build/transfers/connect/configuration/){target=\_blank} what feature set to offer - Ability to configure any token to bridge via Wormhole -- [Ability to drop off some gas](/docs/build/applications/connect/features/){target=\_blank} at the destination +- [Ability to drop off some gas](/docs/build/transfers/connect/features/){target=\_blank} at the destination -For more details about the features of Wormhole Connect and a breakdown of supported features by chain, be sure to check [the features page](/docs/build/applications/connect/features/){target=\_blank}. +For more details about the features of Wormhole Connect and a breakdown of supported features by chain, be sure to check [the features page](/docs/build/transfers/connect/features/){target=\_blank}. ## Production DApp Examples {: #production-dapp-examples } @@ -44,7 +44,7 @@ npm i @wormhole-foundation/wormhole-connect Now you can import the React component: ```ts ---8<-- 'code/build/applications/connect/overview/import-v1.js' +--8<-- 'code/build/transfers/connect/overview/import-v1.js' ``` ### Use Hosted Version via CDN {: #use-hosted-version-via-cdn} @@ -53,20 +53,20 @@ If you're not using React, you can still embed Connect on your website by using ???+ code "v1.x" ```ts - --8<-- 'code/build/applications/connect/overview/hosted.js' + --8<-- 'code/build/transfers/connect/overview/hosted.js' ``` ???- code "v0.x" Simply copy and paste the following into your HTML body, and replace the ```INSERT_WORMHOLE_CONNECT_VERSION``` in the links with the most recent production version of Wormhole Connect. You can check what the most recent version is on [NPM](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/latest){target=\_blank}. ```html - --8<-- 'code/build/applications/connect/overview/cdn.html' + --8<-- 'code/build/transfers/connect/overview/cdn.html' ``` For example, for [0.3.13](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/0.3.13){target=\_blank}: ```html - --8<-- 'code/build/applications/connect/overview/cdn-with-version.html' + --8<-- 'code/build/transfers/connect/overview/cdn-with-version.html' ``` !!! note @@ -74,7 +74,7 @@ If you're not using React, you can still embed Connect on your website by using ## Configuration {: #configuration} -This is just an overview of what's possible. Check the [Configuration docs](/docs/build/applications/connect/configuration/){target=\_blank} for details about all the configuration options. +This is just an overview of what's possible. Check the [Configuration docs](/docs/build/transfers/connect/configuration/){target=\_blank} for details about all the configuration options. The default configuration of Wormhole Connect may not be exactly what you're looking for. You may want to: @@ -82,6 +82,6 @@ The default configuration of Wormhole Connect may not be exactly what you're loo - Restrict the chains that you allow in your app - Add support for your project's token, and eliminate tokens you don't want to reduce noise - Configuring custom RPC URLs (This is highly recommended as default public RPCs are heavily throttled) - - Restrict the [routes](/docs/build/applications/connect/routes/){target=\_blank} that are available + - Restrict the [routes](/docs/build/transfers/connect/routes/){target=\_blank} that are available -For additional information on the preceding options, check the [configuration options](/docs/build/applications/connect/configuration/){target=\_blank} and customize your widget however you like. +For additional information on the preceding options, check the [configuration options](/docs/build/transfers/connect/configuration/){target=\_blank} and customize your widget however you like. diff --git a/build/applications/connect/routes.md b/build/transfers/connect/routes.md similarity index 91% rename from build/applications/connect/routes.md rename to build/transfers/connect/routes.md index b9de674e5..477c63ef9 100644 --- a/build/applications/connect/routes.md +++ b/build/transfers/connect/routes.md @@ -5,11 +5,11 @@ description: Explore Wormhole Connect's routing capabilities for asset transfers ## Routes Overview {: #routes-overview} -This page explains the concept of routes in Wormhole Connect. To configure routes for your widget, check the [Wormhole Connect Configuration](/docs/build/applications/connect/configuration/){target=\_blank}. +This page explains the concept of routes in Wormhole Connect. To configure routes for your widget, check the [Wormhole Connect Configuration](/docs/build/transfers/connect/configuration/){target=\_blank}. Routes are methods by which the widget will transfer the assets. Wormhole Connect supports Token Bridge transfers for any arbitrary token, and for specific tokens, it also supports more advanced transfer methods that provide superior UX. -When you select the source chain, source token, and destination chain, Wormhole Connect will display the best routes available for that particular combination. In practice, if routes other than the Token Bridge are available, only those will be displayed. Check the [feature matrix](/docs/build/applications/connect/features/){target=\_blank} to see under which exact conditions the routes appear. +When you select the source chain, source token, and destination chain, Wormhole Connect will display the best routes available for that particular combination. In practice, if routes other than the Token Bridge are available, only those will be displayed. Check the [feature matrix](/docs/build/transfers/connect/features/){target=\_blank} to see under which exact conditions the routes appear. ## Token Bridge Routes {: #token-bridge-routes} @@ -39,7 +39,7 @@ Trustless relayers can execute the second transaction on the user's behalf. Ther ## Native Token Transfers (NTT) Routes {: #native-token-transfers-ntt-routes} -[Wormhole's Native Token Transfer (NTT) framework](https://github.com/wormhole-foundation/native-token-transfers/){target=\_blank} enables token issuers to retain full ownership of their tokens across any number of chains, unlike the Token Bridge. The token issuer must deploy NTT contracts, and Wormhole Connect needs to be [configured](/docs/build/applications/connect/configuration/){target=\_blank} with the appropriate `nttGroups` before such tokens are recognized as transferrable via NTT. Refer to the [documentation in the NTT repository](https://github.com/wormhole-foundation/native-token-transfers?tab=readme-ov-file#overview){target=\_blank} for more information about the contracts needed and the framework in general. +[Wormhole's Native Token Transfer (NTT) framework](https://github.com/wormhole-foundation/native-token-transfers/){target=\_blank} enables token issuers to retain full ownership of their tokens across any number of chains, unlike the Token Bridge. The token issuer must deploy NTT contracts, and Wormhole Connect needs to be [configured](/docs/build/transfers/connect/configuration/){target=\_blank} with the appropriate `nttGroups` before such tokens are recognized as transferrable via NTT. Refer to the [documentation in the NTT repository](https://github.com/wormhole-foundation/native-token-transfers?tab=readme-ov-file#overview){target=\_blank} for more information about the contracts needed and the framework in general. #### Manual Route {: #manual-route-ntt} diff --git a/build/applications/connect/upgrade.md b/build/transfers/connect/upgrade.md similarity index 98% rename from build/applications/connect/upgrade.md rename to build/transfers/connect/upgrade.md index 686e61e84..832fa0bd5 100644 --- a/build/applications/connect/upgrade.md +++ b/build/transfers/connect/upgrade.md @@ -17,7 +17,7 @@ This guide will help you migrate to the new version in just a few simple steps. These updates ensure better performance and a smoother integration experience. -For complete documentation on the previous version of Wormhole Connect, please refer to the [Wormhole Connect guide](/docs/build/applications/connect/){target=\_blank}. +For complete documentation on the previous version of Wormhole Connect, please refer to the [Wormhole Connect guide](/docs/build/transfers/connect/){target=\_blank}. ## Update the Connect Package @@ -128,8 +128,8 @@ The `routes` property in Wormhole Connect version 1.0 has significantly improved By default, if no `routes` property is set, Wormhole Connect will provide routes for two core protocols: - - [Wormhole Token Bridge](/docs/learn/messaging/token-bridge/){target=\_blank} - - [CCTP](/docs/learn/messaging/cctp/){target=\_blank} + - [Wormhole Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} + - [CCTP](/docs/learn/transfers/cctp/){target=\_blank} For most use cases, integrators require more than the default routes. The new `routes` property allows you to specify which protocols to include and exclude any routes unnecessary for your application, including both default and third-party routes. @@ -176,7 +176,7 @@ const config: WormholeConnectConfig = { #### Example: Offer All Default Routes and Third-Party Plugins -In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge & CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/contract-integrations/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. +In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge & CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/transfers/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. ```typescript import WormholeConnect, { diff --git a/build/transfers/index.md b/build/transfers/index.md new file mode 100644 index 000000000..a9d6d19e2 --- /dev/null +++ b/build/transfers/index.md @@ -0,0 +1,6 @@ +--- +title: Multichain Transfers +description: This section guides you through using Wormhole products to securely and efficiently transfer assets and messages across multiple blockchains. +--- + +# Multichain Transfers diff --git a/build/contract-integrations/native-token-transfers/.pages b/build/transfers/native-token-transfers/.pages similarity index 100% rename from build/contract-integrations/native-token-transfers/.pages rename to build/transfers/native-token-transfers/.pages diff --git a/build/contract-integrations/native-token-transfers/cli-commands.md b/build/transfers/native-token-transfers/cli-commands.md similarity index 100% rename from build/contract-integrations/native-token-transfers/cli-commands.md rename to build/transfers/native-token-transfers/cli-commands.md diff --git a/build/contract-integrations/native-token-transfers/configuration/.pages b/build/transfers/native-token-transfers/configuration/.pages similarity index 100% rename from build/contract-integrations/native-token-transfers/configuration/.pages rename to build/transfers/native-token-transfers/configuration/.pages diff --git a/build/contract-integrations/native-token-transfers/configuration/access-control.md b/build/transfers/native-token-transfers/configuration/access-control.md similarity index 100% rename from build/contract-integrations/native-token-transfers/configuration/access-control.md rename to build/transfers/native-token-transfers/configuration/access-control.md diff --git a/build/contract-integrations/native-token-transfers/configuration/index.md b/build/transfers/native-token-transfers/configuration/index.md similarity index 77% rename from build/contract-integrations/native-token-transfers/configuration/index.md rename to build/transfers/native-token-transfers/configuration/index.md index fdac1b90b..b5b9e9384 100644 --- a/build/contract-integrations/native-token-transfers/configuration/index.md +++ b/build/transfers/native-token-transfers/configuration/index.md @@ -17,7 +17,7 @@ This section contains information on configuring Native Token Transfers (NTT), i Discover options for configuring rate limits and how queueing effects transaction flow. - [:custom-arrow: Explore rate limit options](/docs/build/contract-integrations/native-token-transfers/configuration/rate-limiting/) + [:custom-arrow: Explore rate limit options](/docs/build/transfers/native-token-transfers/configuration/rate-limiting/) - :octicons-unlock-16:{ .lg .middle } **Access Control** @@ -25,6 +25,6 @@ This section contains information on configuring Native Token Transfers (NTT), i Learn more about access control, including why you should consider setting a separate Pauser address as part of your development security plan. - [:custom-arrow: Explore access control roles](/docs/build/contract-integrations/native-token-transfers/configuration/access-control/) + [:custom-arrow: Explore access control roles](/docs/build/transfers/native-token-transfers/configuration/access-control/) diff --git a/build/contract-integrations/native-token-transfers/configuration/rate-limiting.md b/build/transfers/native-token-transfers/configuration/rate-limiting.md similarity index 100% rename from build/contract-integrations/native-token-transfers/configuration/rate-limiting.md rename to build/transfers/native-token-transfers/configuration/rate-limiting.md diff --git a/build/contract-integrations/native-token-transfers/deployment-process/.pages b/build/transfers/native-token-transfers/deployment-process/.pages similarity index 100% rename from build/contract-integrations/native-token-transfers/deployment-process/.pages rename to build/transfers/native-token-transfers/deployment-process/.pages diff --git a/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md similarity index 94% rename from build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm.md rename to build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md index 5d13d6006..cd3c67ec4 100644 --- a/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md @@ -24,7 +24,7 @@ These functions aren't part of the standard ERC-20 interface. The [`INttToken` i ??? code "View the complete `INttToken` Interface`" ```solidity - --8<-- 'code/build/contract-integrations/native-token-transfers/deployment-process/INttToken.sol' + --8<-- 'code/build/transfers/native-token-transfers/deployment-process/INttToken.sol' ``` Later, you set mint authority to the corresponding `NttManager` contract. You can also follow the scripts in the [example NTT token](https://github.com/wormhole-foundation/example-ntt-token){target=\_blank} repository to deploy a token contract. @@ -43,7 +43,7 @@ For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), th This process ensures that the total token supply remains consistent across all chains, with the hub chain acting as the source of truth. -For more detailed information, see the [Deployment Models](/docs/learn/messaging/native-token-transfers/deployment/){target=\_blank} page. +For more detailed information, see the [Deployment Models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank} page. ### Key Differences Between Modes @@ -82,7 +82,7 @@ export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: ```bash ---8<-- 'code/build/contract-integrations/native-token-transfers/deployment-process/initialize.txt' +--8<-- 'code/build/transfers/native-token-transfers/deployment-process/initialize.txt' ``` While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. @@ -140,4 +140,4 @@ The final step in the deployment process is to set the NTT Manager as a minter o By default, NTT transfers to EVM blockchains support automatic relaying via the Wormhole relayer, which doesn't require the user to perform a transaction on the destination chain to complete the transfer. !!!important - To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. \ No newline at end of file + To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. \ No newline at end of file diff --git a/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md similarity index 93% rename from build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana.md rename to build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index 64eacd420..ee42dd2cb 100644 --- a/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -89,11 +89,11 @@ Initialize a new `deployment.json` file specifying the network: ### Deployment Mode Requirements The NTT CLI supports two deployment models: **Hub-and-Spoke** and **Burn-and-Mint**. -For a detailed explanation of these models, see the [Deployment Models](/docs/learn/messaging/native-token-transfers/deployment/){target=\_blank} page. +For a detailed explanation of these models, see the [Deployment Models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank} page. #### Hub-and-Spoke -No additional configuration is required for hub-and-spoke deployments. Tokens retain their original mint authority, so the steps below are not necessary. You can [generate a new NTT program key pair](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#generate-ntt-program-key-pair) and [deploy the NTT program](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#__tabbed_2_2) directly. +No additional configuration is required for hub-and-spoke deployments. Tokens retain their original mint authority, so the steps below are not necessary. You can [generate a new NTT program key pair](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#generate-ntt-program-key-pair) and [deploy the NTT program](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#__tabbed_2_2) directly. #### Burn-and-Mint @@ -194,4 +194,4 @@ ntt push --payer INSERT_YOUR_KEYPAIR_JSON By default, NTT transfers to Solana support manual relaying, which requires the user to perform a transaction on Solana to complete the transfer. UI components such as Wormhole Connect support this out of the box. For automatic Wormhole relaying support on Solana, [contact](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} Wormhole contributors. !!!important - To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. \ No newline at end of file + To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. \ No newline at end of file diff --git a/build/contract-integrations/native-token-transfers/deployment-process/index.md b/build/transfers/native-token-transfers/deployment-process/index.md similarity index 73% rename from build/contract-integrations/native-token-transfers/deployment-process/index.md rename to build/transfers/native-token-transfers/deployment-process/index.md index b40fd0c2c..11a37fb1f 100644 --- a/build/contract-integrations/native-token-transfers/deployment-process/index.md +++ b/build/transfers/native-token-transfers/deployment-process/index.md @@ -17,7 +17,7 @@ This section provides information on installing Wormhole's Native Token Transfer Prerequisites and commands for installing the NTT CLI and working with the NTT framework. - [:custom-arrow: Install the NTT CLI](/docs/build/contract-integrations/native-token-transfers/deployment-process/installation/) + [:custom-arrow: Install the NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) - :octicons-rocket-16:{ .lg .middle } **Deploy to EVM** @@ -25,7 +25,7 @@ This section provides information on installing Wormhole's Native Token Transfer Find information on preparing for NTT deployment to EVM, including an example NTT token repository. - [:custom-arrow: Deploy token and NTT contracts](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm/) + [:custom-arrow: Deploy token and NTT contracts](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/) - :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** @@ -33,7 +33,7 @@ This section provides information on installing Wormhole's Native Token Transfer Your guide to NTT deployment to Solana, including setup, token compatibility, mint/burn modes, and CLI usage. - [:custom-arrow: Deploy token and NTT contracts](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/) + [:custom-arrow: Deploy token and NTT contracts](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/) - :octicons-search-16:{ .lg .middle } **Post Deployment** @@ -41,7 +41,7 @@ This section provides information on installing Wormhole's Native Token Transfer Learn how to best monitor and maintain your NTT deployment to get the most out of your Wormhole integration while providing security for users. - [:custom-arrow: Explore next steps](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/) + [:custom-arrow: Explore next steps](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/) - :octicons-alert-16:{ .lg .middle } **Troubleshooting** @@ -49,6 +49,6 @@ This section provides information on installing Wormhole's Native Token Transfer Explore solutions and detailed guidance in our troubleshooting guide to resolve issues with NTT deployment. - [:custom-arrow: Get help](/docs/build/contract-integrations/native-token-transfers/deployment-process/troubleshooting/) + [:custom-arrow: Get help](/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting/) diff --git a/build/contract-integrations/native-token-transfers/deployment-process/installation.md b/build/transfers/native-token-transfers/deployment-process/installation.md similarity index 100% rename from build/contract-integrations/native-token-transfers/deployment-process/installation.md rename to build/transfers/native-token-transfers/deployment-process/installation.md diff --git a/build/contract-integrations/native-token-transfers/deployment-process/post-deployment.md b/build/transfers/native-token-transfers/deployment-process/post-deployment.md similarity index 88% rename from build/contract-integrations/native-token-transfers/deployment-process/post-deployment.md rename to build/transfers/native-token-transfers/deployment-process/post-deployment.md index 10b7bb0eb..6fd1b8477 100644 --- a/build/contract-integrations/native-token-transfers/deployment-process/post-deployment.md +++ b/build/transfers/native-token-transfers/deployment-process/post-deployment.md @@ -10,9 +10,9 @@ description: Learn post-deployment guidelines for optimizing Wormhole NTT, which To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed NTT: - Implement a robust testing plan for your multichain token before launching -- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/contract-integrations/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits +- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits - Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience -- Alternatively the [Wormhole SDK](/docs/build/applications/wormhole-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Alternatively the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure - Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment diff --git a/build/contract-integrations/native-token-transfers/deployment-process/troubleshooting.md b/build/transfers/native-token-transfers/deployment-process/troubleshooting.md similarity index 86% rename from build/contract-integrations/native-token-transfers/deployment-process/troubleshooting.md rename to build/transfers/native-token-transfers/deployment-process/troubleshooting.md index 55eb92211..250191005 100644 --- a/build/contract-integrations/native-token-transfers/deployment-process/troubleshooting.md +++ b/build/transfers/native-token-transfers/deployment-process/troubleshooting.md @@ -7,15 +7,15 @@ description: Resolve common issues in NTT deployment with this troubleshooting g If you encounter issues during the NTT deployment process, check the following common points: -- **Solana and Anchor versions** - ensure you are using the expected versions of Solana and Anchor as outlined in the [deployment page](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#install-dependencies){target=\_blank} +- **Solana and Anchor versions** - ensure you are using the expected versions of Solana and Anchor as outlined in the [deployment page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#install-dependencies){target=\_blank} - [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** - [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** - **Token compliance on EVM** - verify that your token is an ERC20 token on the EVM chain - **Mint authority transfer** - - **For burn or spoke tokens on Solana** - ensure the token mint authority was transferred as described in the [set SPL Token Mint Authority](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#set-spl-token-mint-authority){target=\_blank} section - - **For EVM tokens** - confirm the token minter was set to the NTT Manager. Refer to the [set Token Minter to NTT Manager](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm/#set-token-minter-to-ntt-manager){target=\_blank} section for details -- **Decimal configuration** - run `ntt pull` to correctly configure the decimals in your `deployment.json` file. More details in the [configure NTT](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#configure-ntt){target=\_blank} section -- **Rate limit configuration** - increase your rate limits to a value greater than zero. A rate limit of zero can cause transactions to get stuck. Learn more on how to [configure rate limits](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm/#configure-ntt){target=\_blank} + - **For burn or spoke tokens on Solana** - ensure the token mint authority was transferred as described in the [set SPL Token Mint Authority](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#set-spl-token-mint-authority){target=\_blank} section + - **For EVM tokens** - confirm the token minter was set to the NTT Manager. Refer to the [set Token Minter to NTT Manager](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/#set-token-minter-to-ntt-manager){target=\_blank} section for details +- **Decimal configuration** - run `ntt pull` to correctly configure the decimals in your `deployment.json` file. More details in the [configure NTT](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#configure-ntt){target=\_blank} section +- **Rate limit configuration** - increase your rate limits to a value greater than zero. A rate limit of zero can cause transactions to get stuck. Learn more on how to [configure rate limits](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/#configure-ntt){target=\_blank} - **Docker environment based on Ubuntu 20.04 with all dependencies required for Wormhole NTT CLI development** - run `docker compose up -d` to start the container in your terminal from the directory containing the `docker-compose.yml` file ???- interface "Dockerfile" diff --git a/build/contract-integrations/native-token-transfers/faqs.md b/build/transfers/native-token-transfers/faqs.md similarity index 98% rename from build/contract-integrations/native-token-transfers/faqs.md rename to build/transfers/native-token-transfers/faqs.md index ec30972d0..9d72f20ce 100644 --- a/build/contract-integrations/native-token-transfers/faqs.md +++ b/build/transfers/native-token-transfers/faqs.md @@ -7,9 +7,9 @@ description: Frequently asked questions about Wormhole Native Token Transfers, i ## Do you have an example of how cross-chain lending can be implemented using Wormhole? -Yes, we have an example of cross-chain lending that leverages [Wormhole’s Token Bridge](/learn/messaging/token-nft-bridge/){target=\_blank}. In this example, collateral deposits (such as ETH on Ethereum) are bridged to a hub chain. Once the collateral is deposited, the borrowed assets, like wrapped BNB, are bridged to Binance Smart Chain. You can explore the full implementation in this [cross-chain lending example repository](https://github.com/wormhole-foundation/example-wormhole-lending){target=_blank}. +Yes, we have an example of cross-chain lending that leverages [Wormhole’s Token Bridge](/learn/transfers/token-nft-bridge/){target=\_blank}. In this example, collateral deposits (such as ETH on Ethereum) are bridged to a hub chain. Once the collateral is deposited, the borrowed assets, like wrapped BNB, are bridged to Binance Smart Chain. You can explore the full implementation in this [cross-chain lending example repository](https://github.com/wormhole-foundation/example-wormhole-lending){target=_blank}. -Alternatively, you can also implement cross-chain lending using [Wormhole’s core messaging](/learn/messaging/native-token-transfers/){target=\_blank} instead of the Token Bridge, which avoids the limitations imposed by governor limits. ETH would be custodied on Ethereum, and BNB on the Binance spoke during this setup. When a user deposits ETH on Ethereum, a core bridge message is sent to the hub for accounting purposes. The hub then emits a message that can be redeemed on Binance to release the BNB. This approach allows for more direct asset control across chains while reducing reliance on Token Bridge limits. +Alternatively, you can also implement cross-chain lending using [Wormhole’s core messaging](/learn/transfers/native-token-transfers/){target=\_blank} instead of the Token Bridge, which avoids the limitations imposed by governor limits. ETH would be custodied on Ethereum, and BNB on the Binance spoke during this setup. When a user deposits ETH on Ethereum, a core bridge message is sent to the hub for accounting purposes. The hub then emits a message that can be redeemed on Binance to release the BNB. This approach allows for more direct asset control across chains while reducing reliance on Token Bridge limits. ## What causes the "No protocols registered for Evm" error in Wormhole SDK? diff --git a/build/contract-integrations/native-token-transfers/index.md b/build/transfers/native-token-transfers/index.md similarity index 75% rename from build/contract-integrations/native-token-transfers/index.md rename to build/transfers/native-token-transfers/index.md index 4823d8e62..78d73051a 100644 --- a/build/contract-integrations/native-token-transfers/index.md +++ b/build/transfers/native-token-transfers/index.md @@ -17,7 +17,7 @@ This section provides comprehensive guidance on configuring, deploying, and mana Guidance on installation, deployment to EVM and Solana, and maintaining your NTT after deployment. - [:custom-arrow: Start the deployment process](/docs/build/contract-integrations/native-token-transfers/deployment-process/) + [:custom-arrow: Start the deployment process](/docs/build/transfers/native-token-transfers/deployment-process/) - :octicons-gear-16:{ .lg .middle } **Configure NTT** @@ -25,7 +25,7 @@ This section provides comprehensive guidance on configuring, deploying, and mana Find information on configuring NTT, including guidance on setting Owner and Pauser access control roles and management of rate-limiting. - [:custom-arrow: Configure your NTT deployment](/docs/build/contract-integrations/native-token-transfers/configuration/) + [:custom-arrow: Configure your NTT deployment](/docs/build/transfers/native-token-transfers/configuration/) - :octicons-question-16:{ .lg .middle } **NTT FAQs** @@ -33,6 +33,6 @@ This section provides comprehensive guidance on configuring, deploying, and mana Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. - [:custom-arrow: Check out the FAQs](/docs/build/contract-integrations/native-token-transfers/faqs/) + [:custom-arrow: Check out the FAQs](/docs/build/transfers/native-token-transfers/faqs/) diff --git a/build/contract-integrations/native-token-transfers/managers-transceivers.md b/build/transfers/native-token-transfers/managers-transceivers.md similarity index 100% rename from build/contract-integrations/native-token-transfers/managers-transceivers.md rename to build/transfers/native-token-transfers/managers-transceivers.md diff --git a/images/build/contract-integrations/wormhole-relayers/relayer-1.webp b/images/build/core-messaging/wormhole-relayers/relayer-1.webp similarity index 100% rename from images/build/contract-integrations/wormhole-relayers/relayer-1.webp rename to images/build/core-messaging/wormhole-relayers/relayer-1.webp diff --git a/images/build/applications/queries/overview/overview-1.webp b/images/build/queries/overview/overview-1.webp similarity index 100% rename from images/build/applications/queries/overview/overview-1.webp rename to images/build/queries/overview/overview-1.webp diff --git a/images/build/start-building/supported-networks/acala.webp b/images/build/start-building/supported-networks/acala.webp deleted file mode 100644 index 079d57f80b0813a7686a8f9dc6579055af00db4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116202 zcmXt3Zx|9nOHxclQ-xO>2?7EF~T>g@AzkM+=m>`R8RT zQF0|3|L>ot+-=AAkf3%a^o=5mqO_)5_BoixJNb?qXpy&=UuzGJ8~f^N%gf7G zbTu?ITJQq5_5QoJ6crVjy02~rGQYH*Tn5vUO?2>`7sc$yDG}r?P*Z$EvnO5T;^PwJ z5a8*nZ*TUqg+Af7V`5=qo}8JQR!~;FB6L2fTY;=7GfID(!z(@1J2PJEWI8O(?@RH$ zJl%&MA{DC|OprZR^go%Z`?v8MqD;GQH@bWs(|)%Wd>{E7+RnTMG7(c`5Y>X%fBj#xQySt0#QUzem1n;S9dod5R=} z8oNvM_+$UJT{YeGgq*w!S!MY$o0jmyVG`VP+kzzUIgGQE6qSf7do)Bp_`6} zYSlk7zt(ycw)AbMjwcoG&;ran9|nN+g%M96BbSPeTg)Sj&w?l=WS#GHEFLK`^-+i%{xU&)f7 z{Q+dWuU~~n|JLn?<5EQ5M;zTajg6|{6dEG|oHbVLx44gHW#o1BX@03}f2DVl` z?}dlNT$Jdc#tywJA{1n%4Z{2H*51D@Q=o6qcT{1NZzbfP35ANv*!;DCY4ybY89|an z4&(|Xg4#_DJKc@IN8mfEv4NSc+WN|W@EdZ>TMyH!?u(2&2~vUQv>eRQ@-eF2;WAej z_K)}5jjfu;H4EG}^554?Q&+!{SlD~&(FT6R4rj8}oarZTZ$%q}dmI&ATGGzbn&1W^ zi0)pSgQG|39?5xU^|Em0JDI5a00S|;NNRdDEfcyyJ0s?Npqk%eb5U8C#HaLQ2(|{? zyp96F^qzPzR$RF5WBCZZ@B4eBOU55}9u&N;$^*YO4Jl5kg?2lCc$ zecHxd%5Yl9@fY-xFz41P)sCRtm6m#J3TDx8eZ zb5bZ-s;_!0Kiefv;I{r}T+pz$gqRtj(%UXc?f2on*5@lLX}8iH*pENh$Z!|^#g?od zPD4!t1U9EauhLLZ6#CBuQIQe*mpB0OfZQUSL&ZtikZO} zb}i$L+~x`%x|F3iCU#!gZC=7&N?NwbFhh6=u6fe-kCuY-$crtft( z9BsJfWm1unmsyEMYbUf2feH==Y-jM#$t@f%%2u@8+zbzCGak>d{r8DAv~ajDJ3Lp6 zV~WujRoN*z_0#AGhHWS$a^ZFygEyW_tis1tjU)bQ!~3^0DF-`U`*J8I zcxoC|J9SpqWP!!$d8@Iz8KGfMR!5Rc3HABAzHR6gtRe4fO&G!D&`;^o!&L8F0zb(f zJ))t5rNM#aPiG=yuM<@3w?L2&-p)0MVs)#K$Gy)De+o_iBs>0F-0u#$)S;+>o5LNf zXiGUl!G7CjE;jDkhf1?-M#H~lB7U6)$M7OzhnF0r@i7$~)bI2S@pL=w^?IYnc*q7d zIC{t?Hw7QJ#0~ft>ZCgDJW#K0QnM1|8rCn$LN2Zriuxs|_j_M^KQ+@Knsw5CZJQN^ zjHZD*cW1gEu)bzih);m9a=Ah}hQWS9`Gq`D`(toRBZHI%a{ge0eI&GVBeI~Y+1zP~ z=x$z&x<4z$;LKI3|13H9{1talwQfS$T~?%3%cEij6LMH~z?ChY6D(TiYt|0q;=6I5 zP9-)NGArtGdcK?EiTASuxU)T<(mZLcK9fJ>X&vQa7JM3-2Wm>d;P81q*fvE z{DV$v3EiEKpK~-`9g0=Uz^f0nZqSG)K=jSBE97_hR5U#Mjb-UtOMu4RnYm4*AwoiqXk=3mNl-B3~}hB=lTd`=S)*kiTzyy zEd@&r5W|}xgB#0NKL!ob*Y%(t?CUbmwN?C61rY33@|{}qSmHh9MFNMa-iVP{8TnQi zIm8QOJzmy@Oc_@oE!eF&d zF?a&4#-b7C_=||qTE8&r2BR8SOHQG|X!FzHGoHz!6QB164-T_9tiRnfSeKdUJG)Q! zc+cSZJzI~}nVU~AGB7Z3fBV=B34Hwa;V&*JDLH)G*k~j#^isd`((UV7+xvAtrMZF1 zr|ltIqD1cs7d|+xd$gcxA=Rmxu`V7qK2vnE&gu8AkV z_bEJjjuz#TcyA^$H1ALJ9Yk6@a&6T3U4O-AvWg5OnC0SQ;t;5-Z@05WMp;!+)zweP z&P~iBK97hTjSTh~fix1$Ca)aBaVmePL&XVXV>@iFP!4!rzqQHe@p*A16XJVVNRj9h zD{;L-D}$`g#QuVldmP5GnYJ!U9Qc2Qp6rVd@6^v4b4l-20(yfF=){{C;aoUB*alJ6 z5r-g-T;G5UUN6tO;-n+KA!91?g^z~EF=mAU5^k+1}eaB8c4#RrDEdz<8 zE6PobGcr_#%{$c6(T|SFfLvTCWxX|~p?ZTe$jjImcO|Mwuj$dcH$$uP{skx^=lD-# zUEkGZ{hqD>4Q*=g(ghtBhh&0Dt$sio2y;mhdql`;_1(;SJSVRQ`0bv7E^{*?-zGca zpqQS*;FzdW!9SSCP_W>06S7jZ^dSRVDx1j#YNF=>i3_IrArMC>C`vBoi(v0G^Y$Tn zPsJIg+8|+ljja643y*J<5jd^92n)yUAqo6}(8oGi%yGP&d{k{-c<<*ur7t=anA5T) z$^kvD5EgF8{Nv@J^Y^%Ak$0%_(~~SUA$?o=h8ekp`w0^Khnjrw-;D6}v5gSQR<&1* zavanw0<5v#1C_l^G#l3uK|>afE+`_ZUF1d0icT56cU_UivGP;&Td>*M>RIVqvoDdM zmdu_gD;}oxD)-1jyc3r^BayDC@*TBK)YT=9!vf23DDJ$JS54`>u+MqXNJxYY#M3V8 zinDv)_LT$no_toOI=63?qC7c2ZE*Qu3jDNh;u)(*<6NYbntA8jo4e;MR#cU}MWx{3 zsrKYpToJ5BJz!tlo(cc6Na39wy6xXCw1E-vcLt?gnYCcIb{;}2qHw_J>ocDG19d2pvLYV&|uK< zr5DYk!{K#mkT`M_^I6(l!0K-8H^MXV01)Kc^XN zpF|I0#Pcz>a}Wu8bhgQpVCkwsZm>)pRQzs`=l5WJxb#7Sw6f?I-_7SPydNUhj;n&i z!K0CD2 zTnHNuljq+#69cyKQM`B<=t|b}Sp)1H+B5hli&sMWYuh*(*UTtSao`5K^F+z_TLmm$G&r55urI{VVez$LP5P_5Mn#&we8O zEb@@nc>M%X{+*kc8hYwBp#QKjl9kFRlvq3VRScW@9?Z#H95>`?}F$@VerMBbhP!l zMJkm_FMnBaq69x)7SiXSjra{{Qro^gdME-{n{Y65L`WlqvIoyd;wG0j1ySm@Cilvn zQ98x7+M)e#;0Y>4;A}isHsae{2wh_j>&p?xP<5`WCk3lf?)IPvCA38rV(*4A=y$sD zZQ47x=|UnbD#8X2PApeKJ3C`6OgAPjcH#||f{-X+v!X|dj>PL$V5yq^ zqUsaJD80^RqrqH0T>J$|>I{n++J~;rLPBLhtQTWEkwk?`IrrjvSHSw!iu^Av{@R^( zC_bAzTrgW%JXfU55$V3MlwE>IIxOpbC&+Z@&oIK$ms~rH)0brD`gUKH{sdH3Hq8p zNfs<4kH!%uaria~bb9!$8~V0>^Vq(4=Q6N8;|({i?mAI>8v+me~R2?%&^HgpbSF4PJ{JN z+89{qHI6}BQu#2ePcBM`Zgi%LmiD|c=DwLqJ?XRY(*l9Op|L=_^7L!t&cHbb4VoOrt24B^av%3o>5RPA;@kKBv!)nwmkW<#^hxx3arr!9r zr5qUfE97H157p)+*ZH};`t-rAc-xml0>hZ&I5*j zNCPboa8rFhaEv9xAtl(K2w+B${W@+48ko{!>W59N0be0(m}DL>p1Z2LIQN zC`c{?d7fDrcMCc&NVvV2mv)$mo0Y!FxMm*O0?nM(IX?sXP5>r{pDEaSI~H@z{w{0h z`9D@~AENP?qN97_<8M9~NygIhXkx3c{~lD~%7?O^K;3MRei<}qBz(CiWJ=wY_cSgC z4{tZ&=8TnDKa8)Pgs*a@k2dJQD`xfd4>Rsla-@~4wm6OnW{N|7wnyMQ^d2qtY@tvsN_=INB&El))irKwYCQ?KVtrQjBhjGZ|;~whC?R5%2?8Tu( zLR$N)=dnWXgYtL!d(6Enm>YUzb%qtuke>xJv)Wz!!}}i#A@eB&jK6Jvci1I(8ug*iApJ+(ksnwk`18zehR6vD^&kIDU~q$05qi>Dmy5l)TK4eFKOayKX}$&A79k z)#ZlXfwFhXmk-N2hYUZfEq+=%f!NH@0|F?bHyFE4t^RUY6EVI*2&GO+;YI4!F6B># zr+}0si3H_nS;E37pdN@hNzPvP(wpwPnk*)h~h zdtB=-Rz6NigL$0=Ie`VuY=1mZvOSErKb=2Fu#9IJ8eQsHc699~)X%f&4PqRzg!y7a zW(@j=Of%()ydNXSYoaV`LDcYyc^dXcj9%HK-z>p?78?Y63B~Zo)#UdPW2p1;sT26F z){zCWe?>mZS7ei?s zrmX90Su_m!`X=kltnr|kF5os8la-2+9B_+>@@mn36FYeaUcF*caFs1^k=a6nhc*)B zWK68Kz}lJk4H0=xk}>bwg+bavJpEWV@f}z|5OBpZ4Xf?L%f#mpk9hNw@#YWbq>gXa z4eFG2aI!s}Tr$K-P`BJjaM}ijW>WVOjF-?(BC@My98Rx)Kt!@Z=DZ2QVQ^P32rgCI6C=nr%A+f(MS1`8IQZCQhtv zzs;%k{8}z0$acMAA_wtC!&eRP`V+DH7@k$h`UhKI9B!wyW0?9wYDpJ0tM9@wsdTVn zvJB`P61w1}Bxv{m4*zaS#e^v9JWSmF3o#AkhLE?05=`$qs}f~8=biXR3B+)uO~zb0 zqnmFUxX@wZk{oi2TW5k8ft41NLaaWB?yC+3_-GqUVbVg{0_=m{b7Kt&U|*G5-g%A>O@zTK7S8MX$nl4clP^9F&fl;$j{h3(EroMiN2)g9z9 zTL;qzK$^m{>QLjkSL;{2^}x(zx2!>QMt(T_HRd3Ctw+qp+H=Akk+uz7TFB$ks%2i( z1*2hE)85?(Z)eD`8$gDOk~9U;KQ>}3NsknmlFd_BVz?V`0Xe`elJGk*rifD@jCueb zli7$v=v|KQPd%vRk-rD5^#Lfb3T_#kQr8}4dm-(VwYA3vfKVQ<^91xC|4BIj zes3E#$3foy_+vYY7xfightYZv97`lD`pUJz$#x7UG?1?z9gA_0zDkzB9<7GKJ+CS} zZfJ{YQkHMxEWYfcK#OCAYns|Qbi z%tR;BVl>eXzCRgi0{OsIT^ld-LcX#LrI2Mr)t5~ILyj-9*gp$r2KWLz+hH)#o=1-n zf@sB`WmZNmzMg72m@&n)7lg3d|Dz(_CrhRtb+St2=x51&mKj|?sJ~`KUUtWd;qB{T z6|`f@G4&3Y4@MvPyN6KE78c)LmN=MpwZvq@9HYIYl#!>79MLYsC=rY`e?HD>&*gc+emO4)GcX#b$k}Ls zfE&*(q2Sj^PR|kaPuky@%Nz$c^%`B+Qtzd)7$oh))Aj9jFoGVVPZ{V{$)}NDWze*A zo5!Z4GDxW<=52QnEaOuPMoqS}(S4N5|77AM z{mSPDj38oo(`)o#Gy(4+>=L|E=Ir!t$RHNESvqi#-00$ybfglc(P}r;XR?~8X51(| zW1`g`zB~fVR*!b!=655!_+5(Q3FXA>SE^WdEepXM)&#^mEQ8btO}>Sv^)?VBnd7LA z+V$(kU>0!baXSg?zqHTMEtPa^c)uwXQSmqr#x9*p#3S~`W8@uk_did)Gys|j(t4Kd ztR_pS+Fb7POgp3&z(L#62#QbNS^u?tP?tBYzX=r&JS9ZOeicFG8m!iQL&Cpl!!IOw zfsE;+5f2ukW#%Njk>w=v4kcW2uh%Z*FzKJ;7HgW&&*&B6Q41E?%AwaXvuzh7K%pl zXym!MP5XjcY&B1Ru!q>)BwR)hbzdw@YPk6_Axi9V5~dbpOZcoNgEQ7Miwz5BQxEG~ zw<^Fbi*wWXW>ZOOGxos)$EfM#t0kE~#rAddOJ*!gy*3FIVf|-T!M8Rnlbc>zPKBZmR*Vh{8Me>7=A4v1c}F_M^S%-u zrLR2cn{#;DfP5iO8Tx%)En_Vik6E<)6I-cFlzbU(Ay_W1%-zAqK_5BzyDQ$93Ozp6 zFfTMSJOEsvTB4S>iATniH|E7M5NTwq%J>Y-4Y>bId~BFYkEMWHK9;Yx&eO1OB>rLF zZ*lQ`))xqF+zW)*_ z7YYWIToi{r)l9Y+2lhD;x8X@W9!AI}G%$9}eqG^61Lgb{L)OyGn2o*I!icNjV!eIb z2O@YMFx(Y*uw!-nmad{0?gUmtzc`BX5gQ;=1n<@h&PUsX?mf;{W!9L9)n0V<^ zO?Cw|udHinUphE4l`Inv7SQKLew{$-3tvfy==Zm$HStn_o_uo;*52?)ElF@>0kUti zTJa}FzATi@Tt_OJR@OcuQ(72;dIt zJO-NZ29U*c?OQc;7s|`-N@r7qOiTrL7JJFGO_kJF^c*_*BVH{d4K{GGUa=Sqz5Z+f zk8z8e3Uedd(B34Z@T)yfx+uUt9f$5>`kLq(8AfXFIO^1(v=QueE`G(eoO=} zYJS%iY&$JPk-7-CCSnFKZq$LW9U2HJlRfZZ7mK|{d#VZ1n(${QME#wsF}~XID0E%1 zHVneYK`yjC0fNT_OxE)GBbgk!lCce&i06*5ij7Ce z2?45dNXmNA-~AT|N00`D^o-Yz#fC|ZhQ~R;E|KTVb+Yvpc&MlCc`2TarB+>-3w0R5 zxtjg;vFTBY9_fi<6%#IzIV$#m>MI3tw5r2UMMRH1ag{((gkLieCOl*m9xrs7qxGb7 zjuo=?yg$NoPWMB_7@dX6)5EbM|B{3=U4ChOQP(6Yu89~5Z~(kxii_uwhcz)tv@zHa z@q_-}kQuLN4G!}^S(AtPUPQE$-4MWRhs`3q{8*@EUK)5H$>52>{h%Nltj;5Dn2oQm zJhv8>n6BhO5JEPgK&;~1g-^H7Ksrm03Rt#fJ@0jEn6qz90C#aq#I0ChbRU{hggm)` z7t>5s1Y2mscCc8_e+~|-8BLC-+lZH}`-SYN61rr?t8YS7VerFG2BJ_q;Z43u7p>SV z=a;A)wNlI-*@oJr@15$=4Bz#6Dj=->6C*O%zfaZKebyIbv+% zaBd9eIK@li&x5Ny+E0W>kdt3s3`~WEYj1N)CAQ34N@H;_JAMx1-{cI7?P)pLC^f*% zGKy??ww?%AV$#@mt9&`}BCBW9m2J~i^IAz7Wn26uqE3iR&>jIulU@x@A9y#J6>cV^ z+2j)aQvSvQ(XI#Dn5b;Xr%wFK82h6qq9I}bYsyUyHSf}hU8kPW%oMA&H%mjI*3R`? zCp}1487Y4aaLPM@zp|1WcHnYLVh_8=9rXMQtw<;UQ-QxLWaamY{l6eFY8P%s;_vdn zz3< zibL_f^qY}2olEv~A$(F~G|uJvGYg$7Bf&03SXDJhrga(nc~nvC7pLm2(*0Y}a?tZg z(LWvhg>=TWd)xPs=#)|0YLB)iS{IXK`Wqnf*w4@ww!d3<jb9$xgTY%J^X5~itq*tZUj6wqBOXi|`EyAZrANwfMC`FT4zW%Q{!En*cL^uB?iy`33~tztuP+9vr0_PP={OUea*^iCsJeVUN= zuZ>k=Y{x>aeYR3&^gLWdhZ7XZE~SlqRVN6w)jKcIbxxIW7sA?5w*6h$fKUo zZSbS9K5XYhzPwZ3cv^a>D7K5*OapX!6VoLpUE^KNmnm{%3MBYRA)PCzjgA7waVYv0{^K#1?Mj?qy4wA=3!PVbza2>z1ppLoTn7}OKO z+um!@%rF<|L)@(QE9y3Mk@cX}tf6|-79GQaA+bS7jdvR?vj@O3HrGQ+s{esOdXpW_ zbvKTAc;#p^8v8NS8W02>&rpm?5gxHQyNdS?GDT==XpT7M5%O|nE&w3Ev zYpOT$il#4Fl62KlauXDr7}`P8KS+E)A@)3VNM-=NCeRgm%i$lcy)124<%@;}7D$m{ zu6o_#mRkF34Yj>WEGCb*tJYWU%Eh#eSmY-`GTGkPrM)cg#Jc3B3g}717HVV%{EL9B zcf^N1)sZZ3EEc}Uv=XKrU)Si5VeE`@kKOc9*LZ(ZPXw#F}hLsP(SteymBO6rtcEoLX+*4 zRV&LS;UO?h2K)z3EcE&gmcSz(=p95fd!CztN|``f^yX`vL%e~Qb6-%{2Ne9}i`;>t zroi51%+L%M1al#|^xHG}@(jV6!ugDfc`?yseQmn-3O%nEj}+snzBrPyHlcM}KZJXP zdV-%=Ec8cqrm+E!h#Rd#FeVQ*C=6A{4TC}pbWm?YXlz|FXd1Bc8zgoB5X#tH&VgQA zj=K77WHQ9`G5pIgB&4IaEGd$!5M@?<2K6GK|oBRXwJBdvU8O(^mA zJM(>G+zxv1EfR1cRnX>AySQ*8zE5XN{M=pTU}+Du#uA(a8Ix<>4Oj+@j~VyyiLRcr zniy2BtR_3(Tt{jpsmLO+tPq{{<&qkf?7W7f$34k|wHj|pSUP7S5VMsr1c-XYAW5|- z)pfkXSBdzlvq+gu$#Xq!ba0R2H(-}uihQ+m5x)|cT04gS`WYZ6HX&;gKAb4~aQ}#E zL2mhHfGI%cNmtW${lumT1@7K}KCM-~1<9{eBF-XA{YzZV#v~e}DZ%K7pH1g08Cgg( zi=rFeKxkWZjX$bfygKD@^^$}(G2iwC8kyQjeF)mt9|4+Y?H;;L$6!P<96bSWvAIr0 zQg3XDQ}$G%?dh&AoC_)0HjFTp8>UQM{Gz)=GNK`-?HlrfVVy*tna2F^(P+=Y_pVsh9cc$!SKRw6hcaLQJbkx``vHN6_HvqNIssr;k7N)DW)+w zv7=ni@8rbUH&wyrEr`R*p*4^7G9+P!#6O?GVdPBa;QE3v zoa01SaU}UdcoO0>b-3TN-)zsxUtD&n1VjPoO*P{Y&OrS;`aZnX`8V`+ zJ!Lec`pkEggg{pjtqe0^i^~l+{26{Z_&%bjbHpK_SD~Rj^S9Bwr0fEmn%DO2=z)}r zMi0U$s+&`$5k^<;LakDznB|Xum!{6eJb?alxdSoHUc@x%={x5^M+%sYzPVM>bM&up zbH|Zq(gXis8#>TK3O!2z%VZ_2%l6&}N-pjBLHBi*A^O4vz9bc=MLtOp+shQ(WtJqc zlP;$T*q@QW)c3&KWor!PfRz71FlQTnM?bx!av%5iKMq~Ht1@!$IDmJ=;v?_+{@)lP z?iN}M!)dsA;%zIkign4RbG_e2TS|6UznFTwC=bWID*A*{m-k$A# zZ|984bCJHr{1tsq0@RH%i7V5^h3!X~x5W)7K1lCe)Bq1J%it!@9ILCYc*8qYQ};Tk znb$lyO3h^O@sc#0mTT3ea=|7VH}C3fSRLg{Bpqj8 z7_LL{dLYKn2+rA1-05Z#UHmBcSHH4ZHn5OhDPd91fZihH0?V@@Dk8VC!w;XXB6~(W z`?WE1tIVNmzAh2zs3R5FmH_5@l+HU|`WhwD2glvDm%Bc{^VNV;nhE-?W7gC&TJ+JB z`j(-}0P&IbK+i@SP^f%m67qFqsVPz2KdJI~AVA);q08F1OHfI+YqR90`Xg~ga^VL1 z$Bhd&>Spd5r&F&uXW7fj;%B-f>P$f+)u7~QupzJs{M?>lvo-c=795Xa=xznA%gcl~ zzu*Bq>Z^=1;Y;<*{h$TtOu?4>k`Pn*JzNp-^#GNd2|9PRtl)x#B}*9MO>gM7wF($I zlQPOy?UV$YghIyAt@t@RXa391~m_(vonF`!Pwo z?g+jHf`aa@ke{_(s~?yqzTwSIx`dTxDjf71b|L!tYU_)V`R`(I+r0H-JASEFd1$wK zT~U`Gm?d?ZlrxQ$S5`lO4tyNgSiFZfd1y;r>x|a_;Zut! zdqEZf^BgTp6oSpg& zWWFAztUidB^r6=+#I669J8lyAnwbdb$uYS63XGnjY-<{aIm}|tVupFq*ooMJ#MU`^@2~u4(3HMu)C}d~JZDTuf@HkDe^Ug)j zb_spos_V{q68dyNU&kwJBXE+MaZP!}jZC>RnP#U?nN|LN!}eSey&`DnJO1JCE=_IU zngkZ`kZ~|??U#X7ejG8M>bIS z$v#alh%){ZwU<2LFU`}?haS|&BMGuaqkrFR6a#eS;47)ps*mm%Ml7^usY#X;Jx^_P zk3@c48d^fUU(HcSzsl@V3IGSsBJHiKl!PeMHc@Z1|lsP5}&l~ z9ll2#K$+70UM@~UzVeVj^ribCkBWzVa@@qFTeJ*sNtEkcP6CUk$!w7yWmhX*(KZQ8 zBML(N$}@>7T5?+dEqYPs%Z%dP2IxrF5OJ9yzi>9gT;}w){1^_d+nOKt4+eT3FNeIrZD67fHW3tA|g@$ z0;GCWK;6?e(%sZawE|w3X9W%_$mzLk(?_JNhC7<~Lghxx++IkNogJ}BO1?6?^m@RN zH!G7Ye(ywN2Ukve4^=s=9_g2Ie@bp%vj&r!1VBfs#+`^BaOUP#QFYk_J>9@QXVSp< zJ@q738}f(H#ym3E{1i zT|0IxMgUDAs_yWDwVB3$T_bS_H|&aFDdgaIlEL3>fnm)z(el|tLw+M%8e}*BqjCqmaY@Dc2wzBKuRg_(#S@dEJBb5zK3hbpe zR{_J)s}o~vidwidv$365v9A33o=P_5YaYCRxzMU$M$Nft!A(5qv4Z-v9h<_KhQQ`4NvX zr+q}5PLtBQ+9``GNoieY7v6pIykduwR_&Knocv6OaUQkDGb;YO7xgW5Rg{b^aO6dM z*UkPGn9hfGfX|xu#in?f<88n^0_`co?z6lpky0CNkiI3XL7iO#RF)ej-90DHy3M}P zMP8p#dOU04`&Rdp#)9*pz~ zP15YsgO$DUt=#JsJ5FVP5R2m_uX)J-#;xp@yN3_T%N?+5Zm~VekeY|hw8(O&Kaofo zp;OEl3(|%>|AdiuBU890s2vha$F}IYP+ig2DkD5jeCGJJ{|k2+50UT_({Ox*^?!W zd>iy;Kb+#q1#!Bw!=tGKu$5*7rd}^Vf2bGD8XJ!?zWz|@{Zo6jBgNI^s5#-Rv)!x@fdE$*|Y| zz?xQ}>Ejs4{FyCz5->}sIdD$hFiZ;uIYg_^efpl)ChNjep;0(KSN?9%uDa7jD>~&~ z&{I>xgrv7CbJGsU9IrIbP()%m4*g<&ON14}y$&BriczDQ?QI^()JrhkY#o&Jo4Vwt zSTX4vSsBypcwDKPRdel>-(#z~E3K6>p58{oTH%g7wF@U>$vV(G1j|9=(;@3Ci$>}G zCyLoD70IgFcrG8wG3d+nVO-ia-t=2m zYJVcxUCnGDo-;UPyd-99n$Fb#ws!`!#O&Uj7OGQB;8ed%pID~7=+-K$2DUaTYHZ5f zadBljoZpb2k~h92VQhUy;awf~klXW20H14C1VU4PE&F1|l|1|_3#Ruva%oGk*$`Kc zxM6K}$D2B7cwAtdX3Re)>-8k5DuaCS8`G7 zeAEi+xDBaezTsypqsO+h{FCzM#0|qBUlO!{Zs3R53hNu!MnH|A8y?!_7^HO!Hs4^RErVvqZ$0 zhFX+(4Y#Fhz|5WEZ$)3m#7j!Myh-6UV@-5vLLRP}ZSOI18az_~%h&%&zp}S%)C#|; zB_$GUbAB`VIbhWE)!!1+w6;skCN@jYB;CV%k#p>Il6JGVbVs;I0EW9VasiT|KS+A==zD$6c`xq2uFQkPxuA327jc@~l zt6nkVZppbX14vsDDPNcRC4A1!JRM^IOA53$W!awQOnxb-X6JmtEgklhGOAPU6r*vr z-j5)C615^#!afH~4{`um~&)~3GYs0yRtmc6C(FOzox?T976j~$ya z?Td8Qc5$6;51swmmNkjf8#5tQYaeGAzBUVG>jV&iQV7lHPHJ6jUw$k?o5n_q`gpJG z8mhHxgSy9UJO#3W%WAJu>D`hrAya=)^3Nqs6Ulo7mk3EvmuMrq2W)(ElHwLiZelc$ zbjA^i-BIr_y*Kbp1WvxS&3@MZjKjDQX-%(E5`d>9aIxG0jpo$n#{L|IQ(J>uq~Su9_%qI;9o0>}r5kBF&t%C;2D$3X%ks4j6RHM#c_y|) zvz&n~;x4Q~gRj?)6vvmJ9Lgy)OUVovw(rm~EGRE+15+hVEdcK{4R`5mU`Naue`S&- z=nESdv%ohoZKU7Z2+!7yP@9bU-yc}bu626ru1`U?K~9wjaaYu!NAPQcX|UF*9jX>U zOYzL1VR*Mn+n@3uS78!%o+{WPz0b2{gAp;BDK?)k#u9 z^!iTQk*9G-PE8RlWAanOg@qzC+f9*14QK2cs^0$eC(snRqUtkPU70*2ygz+PzbZu% zG)-UvZdoPsW_tb9FNZ%|pFd=du~f5Qr)>voW;qkKHjV;Eu{C*BL4LnJRb9oT)ler; ztsUj|{P|(2Yct@9LG3u2NoZr@jPhmMs6m&cwnQ14e#1JIhF$kcbFnopq7A<5ZNQ^N zUKWm*#Y3-nTcmUH#vV;ad5{vrqRVb^*&mUmKz>wUK${M z@VLM)nlai?R@Ky$Km8I8j`QAnDFN~}NnD*|CAM9ccpW*Z$E?&>9VM*m=E-p02>zw# zNR*Ch(Hr8&2-MKsIlWkV8$D@@n~i~+uClw9)a*;rNO&v2OsP=;5e+w-_#V~CX}I;U zqI+|d$Jk~mvf%q)Cm+ClzY?dP0PpxuX*YYJDG@zSotovQpJ1}LAh{G+m^LqM8a?u= zolE`pL8WO+mFiYS9R_co^i{f?#&FS?EM7U1nzOM2q>%(Yo+sKmDu`DiZ}3*a)dIo_rVd$%9aq0JyS`qg}#?i#vRJK@Rucfgz!r-#mSvM*87D-61lNw zOMpiSUtmTip|BI9o2?8*ZJwJ40Z1dt)EO204ejAibjtxd)BPmMLRO1R*~)%))$E@* zyRu*UA$YuGWz$TiF4imys9&%f_{TJEq;thys=RbYZI&`Iwp}jAC0Gk>*-nxTe(OW_ zR0Kon)HV3@{7%%^obVlQyMqg{gJ6gNg+mw-DzP1xo3i2dn+Mnt_VVY79#0=_OrJN`6NGI8*W|ZqYvkyFzGE)rtqD!(0`^I z_WjGBji}@B#{~oiA-lf#KDN(hkfAyv*5R#S14WK$2fCGrf= zty{2T?cry+P%{oM{daNy6BX|-o833euV;(ZW^H-gAOg(Jm<3Y#I!)XIR>?Pm?v5$a zd?w0WqMdY$K^}H(iX0B*ZOS|%gg9Jf#jwXA0A|uQuYPx3&{3W?ZC>&4dBvxoR1mu{L0q$r zULccKDGJ#fV{Nm8bbhPF4OS-)F(f>A8H(d^i}CM4|L667P+@G(&n<=~D_x?lYy7mt zGI;pU^)eUJEXzCI>Bm;9qiPU?_|ADC6vns?gDKYao`^>;7u3~OO2Jis+QSngSo;5Y zIPyXWB;x+gEu9(u}EQn)-@QvrRh~tQrM}C{#*qcbl0{Tqo6L zRe0Q_1U4S{aBt(;&9T19mu!<{d%&|y&}~5c+H7JspV0^~139~9n2!*D@6++@?L*(< z6+_l&YS(uT?nzP27WaJS)^uy{BlpAZc{1>y{ zH*1^!rl0aJ7Y;S&S4a-kiZ&3uav_m?Mw5cpCBL3{>7UJ3CgXiaj1sL zek^KE6puBNmej-gP)E{=g#`V&F?dLuJNuN6I;SaHWv!i{wFo)##$>iOxrh89x6aT< zD>};ZdJ9z>(QK-Uw#PN)-by?7oVkN<$9Eo<_)?c(8nyBZv-2>r>vk1!ni^SArmY7k znVrjOqaJ$P$t8{1@pXP&!Cp>}#9mY6p<~?`$<(j>Gmg)4zm<(}5*W!3z&*|y-{l3* z4uz)CkxoXCOPXd{p**tZVzpGSh+BCrWeg$yt=njan~r|y+e|8 zeJJ9&Fb`o8xId!#5K1m0_GGX8qskR|E(6-kdDVLv;p9=1Usi|)+3KTc1E~%Jz_1WpS+kyB%f#z5`n2t` zkX5R#*0H@@4kKS5?OgHBJRmDRbmCFEuQq$%l-shrH7#XAqT(aX^FtI&2~qb=q+ty5 z{L;{3CiA^#YP0%0TOz;`u6ZDmh7eNOVu{S(MZ|a+7;0af?dD_hkTqr#;I_1_7DTFt z!t|f@)72+bv_8{H95yZ#VnFG9{mq!2|LJ0=klk*4`7c8)h!>nY715)s!F_wkOVQw% zj_&$f!O-4x7uwnQm%f)Azeci8iMMt8Uan+AF+*6{WucuiDSzN%g{8nB- zAtjMvzU}BIFL@Z1@^uXyC?l3?8if8GZFoR?tNLY4h{@XpI;7EM9KNJmDSijIMyZ0B zxQfC^J?@sOkK+yUoCe%5QN@D`6(2?Kc>7&WBSob(ijEDQ`qCW!9F^=Hqpg z|2;1gbN09vt7;K5^$lYEx=9KZ!`Rk$DeJkeVd*-ZW`(w-nFF7XfMJOr7t&TI&vA*M z@=8LO>j-cQm-7#cz5L>XzWdbuH?&Cd%FE%kfkXB+Ca#=q<28IvPM^I#-+LvlajO_k zlUAEhjh^c+rv`@dcORG*?1oKut~|D8`4CBCVL*^#EY`uO3#rHAa(x%M-hbCxVrA(e zmE-ufe<5aiG(N$syZe833X(6i&qfRT@O$1Oy+~-`bx501iB7aM(i7sm&#ce)VO6L-U&FYMt$8Fs_d!e1VIO zTu)m2;%K7EqRm~CZw_ywaSV4)FM&rF?=h_bp)}3Jj-BMM~}A6xw0&ptz;vBdf6RsuOw26 z{n)#CRQy)eRqu$xi+M#2hRJS72wcBVS`U-pkAcD?+*>pH(l~Qq+8?dq!pG+nvuby?({X{z?4x9Up)$#a}@~gB_3Or!|+9 zR4QM6en&F7Z)P9%Ws^}}#m2LR1fQD;C4}ro{Fr59uwuz?-AI&HjOe^8=`j`ZynjQ}jNmi?#__6X%#|blZtLIUii^{I zi_)~U+v8L=Pp1FDueqW*&tDmEs#dj;!WZ0;w3r&z?#}N854a=JN`vq>U04d{jN}h( z+*Q3z%x|DK+S>0gJVO45-LQOHek#Hf{#{1hsXCxU|JV*U{$B8;WSX{G_23_NEsb9i`p;DU%C)`k zN=t$&QznjbuR>lF)nelgtrJ^(c=Wr0(0IcxlmwC-x#aAy+Jvo#%x9ZvPkMUl+@Ngbq?HWnj=Oz7g z)s(X{8Q(bBs)}A24mCy5u$Iemb@m$2OlsOpDGpN_u5yZb>vuEXv{fkbt8^5L6r{9mat%&Q%Oz&s71SS-a=WNzc zNrlovC(>@ArVYiCKWmWm*a%UJ)zu6YMpWF64)D-&5MLKL*xQ2dW*r(|5{}2X8qS`U*e(SHr%I;14{%;T<3K*ezUjA(^l1T{VSTBqKH8*?whke z>LPkB!J6~uA38q<)?8QC-oumg#Olt;5{V8z{QFQE)>>(fc(Z1thit?oMO0ZG^E-~L zg#I#{M@n=RM|vZBkG@l;&)z54MVH_NC+L!6l<&t}sHRRT9aRP^^JIZo#{)@559eBm z(H9;)x^gpC{{17Ip5TeUsrU8zmGbNTR}~n2hob-e7V#I{l zubJWMmu1l4==e^cXWsOwKbYNmo0YHj_PEtWD6zw^H`{=tW=|?+dddPE_d7MbR;b*M z3RZ_N_#hXp=~Vp|xALPAU0J^H8W#cQSsIlN>J(0R( zn$lXSTKC`Yhp|6+elN6clF;fjhPW&4UpL)mQA-RhdT3NXv-bq|M*{L;=#3H8wUSD8 zKd#7C#(df!QGCV~FEV%lO?!SVVTrq39y!wd`t&@3&MO!f^^Au!K4-J>GX`g7p|>L& zc2s`pHnCxbUPXGpgN;KwviwMYgyNCZKht{m3G*HcU+_i>D&5eQPZSUD=MIRwbUVJM zkkLD6ohM<*KE`RKY?*|)b6kkWjk-AR0!Y2FZP9eg#zH?c^RuHrJt0|t4r|_H6v~^| zdN0aSY_b?OG3;tJFiM~Vnvq~=aZF9W9CeYhjK0C8_w2_vT@y~mnYY{dW8+4O-llI- zUWt=DuzgP@g`tf?a01VW*6Hzrs8AWqJN{GmrEi0(xpzLpr1vM1+ht3HsH>$UzfwNH zIGe23>^GimnQ{L)DJ;Ro29q4=AfUs{o*CL{*zcV^J$n z`5MwcG(Vv=cXkP(X%}tU-UDnyCZ>uM97)#GoPG9>%7TwQW828!3lQYA-ZyB5Ml_z5&ify za%}8w%rs3l6n&~#$z>6y2{5bpPSp~Ld!~$s@sOe2_q(x@M<2f{ejZh9clWTUxy5gR zTn?WgaVeKCRgt$vT+7TMm`aZxt=MD;|;MDxWqi__~-T$Kk_>N15D% z6ygW?;X9C80St*TZvVZQs!MYAPeG~;wj_k%H16t#^}KrdP5OZMp6?4zFOzH}-e0%| z2+coJYyXB;rxQ%D!n+h&@$1F=-}?0y?Oj&Kp<|;z$xEhbs^@)4u0;(G*^}`%W)eIm zjcU;?ep=>yhkr?RdIQvmaD$Aj`P*-Uy)NfGk}h^loVBu`DpD4*U)0i@OHqNie}B3J z6N>&x`fl+B7v(2I82KzC9Isg}EVp7jC4?64XnmeWH_EJ^v^K=S)s*8>k%sSEbdcL3 z1IWTBQ$x6lwXs}k%FW{~QZ*yxg0Ly?7(}%ZCxKEhxS0-b zM?+oDog-eo$=csGe0raTbtaA}2XRam|vetrmJE5V(kyi0-5gy~j zkhiSCe4_9G<70x`)ujSWjSQ3IbhGIpE+$E@Z1MxeR)FPYd$&I?q(IFU5v!v z=N!ef9m5x{ASJ(i>6C``&^*`XbU$xWwhIZ_lb7JJG0nJ$FQP!-r7Je3&Q$KVUrc?g z>}ORiHu9xW>vQ7UWeci-^_Fo%)=?L#vFS&qM-r6{iX#@3X|-sKrJ8lKX;%y=aZG$M z(m(`h~A2miSvo#034@-6w)u(uBQp0ukF*MR%`8_YfKV>&J`q<5ff0@pp(B z!qJcR17pKW+-TNQmny~$KEbrTm^NGZ!aby57u}K)?1Q!(imgu&ZGM?t_m z%)0Z$eu3~#ByyOE?7q>M>pK;X?zUsJup1uwQrh_MkjxzJWtn01t@~j)K;FX_n2^Qo z?;;+N#3$}t;r`v>=QgS@W!8RI!v7V5WvFchuIIz#F;lFPR|TU)43%MMoGOL37~;LW zzaLBfda{Y57_0_J0^bLQmm5hQ2n7Pw(fDxX3-M{C8F%zMzy)RQ>@aW7WwE` zJldcQ=vCtp)^)vQ4IBX&PdDH+s@TdKOV}ianRpBFx^AC&g?8^UTG&=8f~qh3)K}Ai zvabpQ@03ezaUzCcA70b=)d-5Db_;mli+%R|{6xjBF{EY8*U^A#ztUTGB>hqd{UcHn zO$ZO18>b3!m`HFaI4R_93~T>&IyceriK&?VeL!EIgdL-rbCe!+byVA)B#%fit+qaA zM)`fFhbH}*`fNq_=-kFuC)k==J>vP8iE9e!cs}>6+|~0DmXyy@X+{yWYzEM>J(W9I zfgIk`b1&A9=ec1S59^Y&+~ee2Pl<>8>qdZ!J~*PIq0hztJxiI@zPhZ~93yBb^wnJ; z%yz%yu_5cwCUa`br}T7^q2^mzd(X>H3?pRwi}I>se@23}$?h<)+rV3!-F5!#Swy!N zqo3V&pj_DfftAO4GT&4$bvy{0fUwzTaLY3s1eGH=L#l!2iGK{-qGiBmo(f6O}A=*)1-gS8?w`q{|8@ zygv}eU3%cJqgQ{YT|y#%EVk#)gnLr@z{jT{bX|6cQ3Le_P>UMNW7f9ArcZOT9{XE@ z9|J|+^0kNRHnkP7tJT=n{eJ}qnbb3N!%)B?kDwa-^zYh8-Ja{g&bgr7TqM$kCKXVy?){WXVM8{R)OQUC zJwN6m0V(eyH%uRPmm%Rk%g8Q}&6{-{)Sh z;o*T4?53+VoTC9A8kOlAcf3uK=(?;?%5dDLRluj5_O?SR@ar4Ld;mfew_gc9n zsy>H64J*C1N765U>jn|3#fv*scERxP)aM+iC|a>nm)1K} z9Qe%qb-g7rKQ`N1CV5GXESBP1$Eyjj)2TKJd4=KnYv5E*F>MhE$~7Y6IS#U6gXe+Mb#~!GP@mR!~fvPQt=Nm@Q6?Jk;lWlEl!4)~s(y{&*1N5vs~-$yRcD zBcVbZ!On4nxDpp-roHGUM<&^LIJ{l7 zl8%Qu7I9;hx|*=Zk#&uMsSnyKaq*t-$-P2Iy^HaRHf{d(FT44Oc+2Z&o`S0At{krJkJCrz z#v?G`!m}<#2s#x@-^S*BK@7|Wp1TRh|4TGl)m6?sg*KTIKnwr-aN~L=o&bvcRm`J- zue06a8BMxpqt3S&vF2HuCK6o<^KvoM*WW?CFBLz$>(LlZqiw{=Rz5*vt1wq6o4Kq( zA$*#M*E}21)y$Ln?!=6@eNt2K{4zM=ZOy4t0^^MLDB}q}UJG@!-l|W}m-IcgOc3$X zX?GJ@v=KLVzvG>tp+ztNFXLFBLmtxJW~1_AK(9b)~1kAAW}IsLgyk`y1#m6((4`F|2sQkq6em>M^6pm_s# z8SYBhi}E+-D)-whGC9kY+6OwJLtO6kwvgw#H3nvno7sr7Ucjdap}+fAr0{zPqy9vn zJi&)fldf0d!_X5k*LR$Gb=8qBw5f)vgCNFum$e6v*}Jklf0PD1i8$tUo?wl~s%)^t zLJXRs<75(HI7cJfnpf3#a3yDyuxNf+vEz6%#}m9A-3Qkzb0^=90P8ha46gAVTjUtOH&`JFhm7K7v6Nm zq!S%dum&KGdzs&#u<^^jRd#Z~jg7kb_MpgdQM`f zYwQOT+&=P8JFcAhP_t;~`)BJfE${5NiUMocQyqloYO1^~MpyyNaT)&#a2yyasdzAm zm<*ENMy5namK@L<$zeaxUa@u0ZF)wWQ#?^jYTmZOl=+-aK+}+O1}s0-jJ$dbCH7RI z4gL=)^XLU6F?}?TZj~qFcC+?~W1Lt!HT>+w2i~C`knx*65+~M`LTXWwaGw~6#CJhT z?T6d%`;rYUTB9cb(sBP4FCgO=;R`ANn3#O+LW%9cz4Vc~a+Kd?c*OtgrDpadlKIlN zj+*SDkF(XGgRnU~Z*ok^3{s-^a(Xk1hkLw%-RhY4e?W7TWeX>%k!t=fbBBHcAd(1Mo zzPGQq>G{a0-QJny1+WTZQI0<~|92bVFQSS*;tb5qC;9c7>&TnoeVC^<#D7(A`-=6g zA8$eZ&>~E>3#>cUKh+mq#Hpov&+^GNOLbkOQ=O1=ga8DcAFxv+Nev`$ku)D++bJ`N zh@pe#7cg{Y&Sfwru_Y8!x{ z!}3>O3-d8q44>G(Gm!`jxniOWQQ*h80%O0NmhINzodGDt^D~J6cwFF2m+u3vX=1$A zEp*nmDj1EeHc-BCogD<_8_t`2l9m6u9pf*9RgdH|Q(tl=yEW9aBCD55HuOZUk0Ybv zK6Pe}D$u>Q{COfKdCR60`DbhQp~d3AINY0_yPQ%CRhgq3Mk^akuT10z&^Q@zQdWXy zGOxC6rRjhvbLH9IKUjSt47*R!^SXa>nrxNVLfM;cO>l4V6{iTnvj9=?;VEZun6Q}^ zYpBoJ9t=A`vx5>Hl2(3fC9X9RwOb*r@p|I_6TDPuNpDkAQl%O-aH~rplcYI)7uR(OqRlzHP)RPgYBI%v7AAT) zFl%EB?1h8AT%|A1)H#OlbuvObiq+>gdu9@D)!%EiLrH``KDnMFz=`|hWQSn?!UCvW z_c&m_)pU%%GSL)5ioR*jYI$tu77{4a6*nH@Dv!($o9IyVc6QkAJT8&=%%=|aC(6lJ z!b#stp_ulN7Mv(U*$*j^nft{1mLOCu&;pBD)%7}p%mob_6mD$bZe#ZXzc>dg#7Bjj zS@T%n;6<-kj|-8SPsr*aRgRHrk{SVO(NI5t=^uQ$E8DqXE?yZFC~U}$fxijN=v){N z9(z|}K~-(=@re7D+laLOGt00yt&onf(AA`qw+^I4@97yn=9th3aky8RKf9PyEL}iq z-n-&+Ye%ZY7yLA7BFU6Wl!&px-u7-k1>F9{vM@fyNX@`@9;4y~(PfwL37L7Zmg?5& zrs{5B1lh4bMaJ`%-6{AvJ48(i**|GO`(VE0Lp^OH+yo-z`mqZozgd>Dg*C`j9$)YL zG>_bdhGwhu+im3s_Or|MLYc`4`gU2-+tbIriwQhh{)a~D5S_`8f1y7MmL5_#gqeLt zg#>0gN}Im?np@I*t(pLa2oURlM;pzLVKNb?e1D}B3Jt=2@0o>QWRiSytT-8TUa8bw z$VnwxNu~gKFBCfoR?R8-XHdao}2~0|~^9B5u<~%Gz30*KB!j%{-!uMMzbV8sV0!jClNKLOc$09HVEVI^6 z!X!Vw1mouoRed->`L#Ojw;EC;n7dVKM5Xjw=~3%7M72R4O3rdEFLq>Wsbf}6s;?mC zgt&r}B{;BMyy%>;Hag5b=q1_{&87PqU%~Des=PMNzLv@!brW@qACz|t+4$c$UDLMS z%1%$CSpgqj8G$67rHdMy#A?nDf$zprO!+OWU)O#EOG2m{)7vITkeQ9HRXcCy>7?*6vA* zphXodjf&p3@7-f~jS-%Pe=IaR za+~C5W@!1PuMXF-I0)69nh5e&K*F-<`Q$|7q~_RdYh&Ar2^!Y0=u{8zs#CqIQ=>a}!uR|bTFYnYp^ z+()q3NBJ>S&Bx%AUc)k`Z2-QY2A-EQ8B&xXZ;6zGS_dU!(E3bd^6^I!Fd*-1r3#iz zUk#P&2Q~pe#?$0+RK>skx1{v@E-^>RV7qD|L!Bk>|C#qK5m8=iXEz@ne+azHZ}(t$ zBp5ixfmBd~kp&k?IjlM+(4aH!(Eq<&1#DkybCMrMW80?S3#`c9rnQgsn%erJ@$E!L zqF$!0^(epXb0MOK&fx{8G+_CXr1W}$FsJ0ftg6j&$!yAFuZSDD)NMhbWqft7d-we; zQ^BwSxm3U||J@JoEaqq%I|h6W4ZgOXA4K6?;7&aWM3xs7IZ1HuE*QE`u@R zbZIN;dkNT7DP`LigoyUBUQ;v2%wQ-MgiZFZ5V;l*TuTg25M5yPwtr zJ?&bMLV*CYE>xyh31R~0&cLld^_!N2wiI9hc;TLu!^g+v9?s@TWy~gswj>6OiMFbR zJ%N`4S#9HwpQTY6tt_nm)0Q1PCn)}!@ zDCx#XRbrbZS@IP``RiVq^EEm`LgGNICVbgdKDMuja795SXA|o`8r?-DhoD&!wiYpN zg^N(1)P4iI@sW(L0&TfKdxduC;~mDE#VNIb{6=P<`SGc zHD*^vfj4iJo2{y$Z5gXwsND25nuJoD*c>aCWUkX{LMU>r+B4AOxw8ZJO!}#Jp490*T1)d8*`+(W-#9 zm0isSfw8;xIT=ss)Q+LACTbPE-CrBT<^%Rnm+C`2&GhEH^i81T1%s2=illz^-!aOsZM4Vxnc;j)bPs7{;pa4Xj_lA6cNyT7q`i zgqFEYN@UyP>y~2xYd=HRgUU}|q^bFZ8q!u2Pge9ZseN9uPF+p^;=S{0$p`rcP7~VnyvVZu9LleE*o2^?NtsWP6Po(MOrV&3F ze}#Cxjuma!F}W4BSqh%m9zf4!Ks6b6dUJIR2Dr@>$&%Oo##GqXSOn1u#K4!+)*v{J z5wQf$qq${?XQ*VE67ob#^Da1u;_rdHUSp6=WII*+*L zaN9D$_b92Q4yM>Aap&GZCO<{a1CvrT*ye6%jv_zx&`?y@!SQDk@N0Bo!7P4vUqA%> z($NaBG5D>M`B zm-S=&YQV+YsndQ&plKhaOI@3WE6zF+j43fuIPZwI^m?!&MNPuX%>0MYGvIWtoM2py zuKzglZiya}4ux`%WE^zv09!0zw=ipuG^TXD0R2Akv%m9qvD#-7O1Iyn3?05u<0y_C zgiDVCd;iRskGibjH0`b}3-&URAd2|FgoDgD{?&w^R*4f;U#ZED>AIy+PqrqZ)6JKs zL+=s@5Z_t}W9&&exJu(~Z%{DV!3|gBN^bQ-(t&}CKV$?#x3J-Ao+Eho5aGoXXF6__ z#YYwZ|HZU9_!)~~iRIk+M+`;75V{)nN&d7gLAZ#lz3b)jdSV@pB41j(B~DJ3*7C_A z$Dy51ayByw5;*U`()I60rzusvF_2Lt^w3Br$OAzlo*7~CT%d?8Fw+zUhg1&70@N>y z>M$LkelzhOQPJrtG*8#8hAb3mlWAJecc_b*l-G7auR#q_=528LNc^2hZEPmU03v5_ z0ff&xpW{q-4mJ=jl6_j_OmGiVUIJ?7)e7f9F(^>cgP3K*`H6j{!GIgYRN@vs%Zdby zhC;D&dF_$r%R?U~3mG@IO`m=eP%q#Pb~t_K^xu!BH*|{DkpsJ;8Z2bJ8(+XO)Vl&3 z{3R50e)OkI#WOyz(uKmNSJQk$-o)oxaV4w!8UB~8s0ouJ;)xV${#L4V=Nx!$nUpzP z3dR*Daq}Ci+J~Qyl*Zzyv-S+jKb#e`c*ilj+=CR`3PHw7;hY&krt(+&?it|91_$^l z4TfsLwA(Ab2V|TBeXz=ZQ`yUJn37#i;qU5s4L8#^)1(cgFWT9`9~S?2D)-sCB?a=J zg!U7)Nmj$M_O!r1A|FQX=Zx^-sQ~mZ!hgjWO13+qnAkz>&*8$$( zjMIYcB%n^i?&3Ezqx3f~C7Ye|xe6DPD6iGCuW8Wstvx+fI?xMyy^m>2J{w*neA!(L zZ|Oz3Wd#a%%FeQBUHYSWCCa^Z3|lUqOPYt#RNQC6-!>ok?<-UgTSe2TvqaSLASV%b zn6>wZnt|1S*7=|2UAsNipQEeA8Cs@b?S=^)?P{E*toOSFSU_QC?Dl+_v2zitI`VpMb52xqT^~pV z20vXPwT;!HFLETH=uosC!nOv^$n461PWe{!G|DYHg_Jqn_rF!@!}&1iW3XiH>BsCv zQT0vj9U3Gp4sq}Udiblt(TlD=bkzLjM{~_|Jr|bb!?S@<;0+c+p9&O@s_e>amJJ{| zH_9iN=joq!Eij7byVlMBxA>u32!tR$Yws3N-X$w)85tnx`vVbo3a4}}*of1+Bzesp-}SvP^oY~Yu5F`qqmbKIoS)`UX*KChjy)`ttlwrUGEhw9!Tb!+>N7oK!n+-wp02g?* zrDM&`EhmLUlG&36t3b>A#XiY$m;elB?J)w+FRMr=NFk)&i6_(xge5J!teT;PUV-hO zxRP$@e@*TCw`EBq#)35uYE574t9Qz9vK#^S@0SMY!3O0SBa=1(f*O!!1=Ur8x-9|zf~ zxNMQKlMPPngXsXeXDwP`JXj+Xy@YszZ4{P0 zpdXYUlZJk((Y#t{C767ClK9fRB%Q9BH)yvaOUgR&Jml}uiAH~S1}x6|Z0;(Pc5X!A zAu9d1<(49F1I4WcjGyxtWdtiIn1uOu6v_6M)rYAkrz4o}<_2_G5s7wbZkrO{u4;gf zOkW(*Iz^D9_f``^U<881;53CKsrPGD#NBtD5>Q)O@SZ#O7CULeBpj|tL8KR)QJkIP z;0p{$1j|YCaxxA6VP3fjN(xI&qsg@$(E{QTtjbz3dy}9xPJMIRvl=nR z;feU;I~8UNl+b1VXDPiR3Ov3%#X8Ds)~v|H@TE=KGuCtjrxECD?AzMk^fJ?;q-crI zba0CdJnsCpXW(=R|HaSSj~IXGgsA>T^$f;xzse(7x0mTMIu(D#WJvmRq-@=hy2*WD@b?Y&>oe3YY`(w&eX}1 zXaEyJRMxJ^1HNUc;7QFtWiU*HiC4z~@3P**vLyxzhgZx!sQAFEl*#!g(Z`_gn9oSq z^PUzqP=5QGn)OMXz!ILsIzk1V#GPG}I7LFbw23N%G&5%g-zDJWvLybLB;0H7`@EO| zhpPxecR5kE8&zCz8rZIexuBUMegnE4H1k^s+#=Gau1dy<>7BAV&LzVaUM>5fDnfP|$@TnyQdb3MoPjWAD$D_{*}@UmXU*o(syL-UHOcr3kZInk zz5$oM3wZs+6xJstZpu|Y6u;)o;R_Z(>z>5aYfcYVMFa{fE3YJJ>TX_1rmOYGkPc0^ zt2_qFTA1z=(i`*tb-_aYfCa8oNcvlUOn|d8xXT2x&K^|irvh|2M0xEQTk){6`!D3= zi@$d+1~*)8i`FBw9CXdjYjZVA5ib0xTqohGiVb;HjGhc?=iEixRxHm|`9MnB=XuOD z^-;{A&zhO;Y|Rr&$p<`slQZQEVq|Ujgn;6Ns3t-``}s#UA)Zjc$%y#RUxxj$CAVkf zZ9&kW=jgP>D}MK}VPO~xRwPw&N8s&pd-xYIc7GEF(7QW-Z(^K;wSblWhP=V4%Nr^OpaLWxG9{WB^|5C_qHyCV&fMpqEZXR;_!O!EyQk;boD0B|4;=MHMG*D~>c14W-%|rjZET|F28dCwv`}=lt_9 zqTS@&gC_nA!fNCGZkWunZ{?Dn42T`>4l-9yNB!X8abpnJ;Pd|>2HRg9Z?$eyAkPy~ zQKU=FPn$L;bjc#Y>7KLpTo`@Ah^QH%QWn>6^1`&xEDze&Vf|5|I^QiUkb2B_ZL?vd zyqmUqIpF=q<-zaS{Rux*d16<%g0Cq2u!D6J;mM*%&$*vyt|M;7Y1Oy;kmTI{TtI+W zSoBUge&HVy?r$(Z2>lEMPBKHK@RjaR zQv%KU6Te4=p9;Db%74xHp+w9Be(?mQYxj#YfmIFd{jH+GRO~~~$038=ed2RsDL8i` z;_>Z#`gQ9{(~;>u5F|EzCIpm@d6M;HcP3=uBYu~M9&sVeLxM&>e8~FMA*=vx3>i<&?k(Y@C>0DgU4Qp_t?o&-r1ZnHZpXHL z(02YOsegDI5_fh_SZ0>VTmT}ThGK8^Cp^}P@-%tzn!W z4M*Vj9P~~l_iTs1j9WIkZ1C_>Y*0bJw>MBIoW&kn@LQBmse7sNyT-@1F(+1i2Q|Ttd3R4fSfo}I z4PM9`$yK`N1#+A5CgnvDIUIA;VJ!;A3rlLVk90owy-F{F~QOwa-wQF9=X zy@~UC#^JJ4$9Kuc7TMT>)l6<1a(>^HA5mGA#v>Lz)~)`BQC%5~;p4J%y#N{V)*I2j zuuA<|he8XygLiu6>Sh3yR3vSbtJA37q1nJNbMuifk>=A!&l36)`+up&l%mU^9;C(i zIZIC|sr}S7ijTJ~!cIET)~{@RFx^=1=DE!w|N2l;DjKr^@Mg8u$<7sGJs&x>TJB?$ z^D%L`+GnBTH)r0V)Ij*NIOdn<7N71$A$7iJ1Iwmm?)XBD|I|zjz7GBb(Ap<^XUSzZ zwvxzz_6Bzs9al%5>Pp>@{E*&$cy1>WzfH4a8`RD`HfZ&{vEcayz~$`EoJ~W;^XrCm z|GP}&z=F&@N3y*mEH-07(;+c@(X-3rbk`@SYB9Xx~=G z^3Cy5j*LEd$L>Wna5j>#VLGdaFO~5AJ{hEdzWMxR z@{2W3ZFz(K$TVaqQhiTR`EJL|zG(zQ!b=##SAbwkSHNM3t0o_3*UtC;iN6N6!B)x8 zT{&Q!>J1aHozM5bj^95uq0e_6#ecxrDKOJV9~MJ@z==NN(spr>vcB-O^q4AKeEdWJXTQtlotEp zwQ-Lw&w2|upfGj22eIH0y7r*Q|Hn769G)ybyHQDm6e&Qh)hD})d?B1k{P_Uh3s3u#*1@3ul zr45&{pN48^5!%M#c3NoeVAJ?crINiTPYi2a)&Ia{AJ6OG!1FGSw=Ui8@DNfv{_<*K zpAa8C#>gVY)8dt#*@J6Ya3qEj5fj`ly(bE)dR@btqN&fFLTRegag$k3OQLb(Hs*u? z>CxZjh&Ea(p22%a{q?cJRH5&?Srv(&8!_u7_~+)hx}_I8giE;uGnk(cT>IC(F?b)^ zUFGej=5eG@Dh+)kW~Q<1=r97bJUC}WMbPqOtLYk`C&>~Euo$v8!^XNz`U5h|dtK)i zZJ(IlS%J#=o55rDCJFt&L6U$Bc+3p&1r~5nig~!&?8_?n5)M4yC!&6B_!ZNysVdgr zv7)JW%%`>inhC%b-qnLQtaAmEunbR{QH|80rF^%})3e+%FOGNTK|funUw*NpsW(Z0 zd2AjM;-n_{f)H4-(}v(MCgsO$F1|bG=1Pltw_i-L5)B6yG@O%X$gF5(OyjiWCmIeQ=bDE537}WT~D-Pbkq~w^1c)_1t~U zZZ1qeM%kfoUL9@qhk^tSgJaamJpc&sbOGxynCmEAgHq02%CO7tP5ZxGG<8K|&*szm z>Dim4&9o+gY^E>v0mo^Ckep?e6W2Cgm>~>dD({Lz+Bc4E8RNHUI|m$NmR!K`1=6fN z6EI+%Jr}f)li+Q~lUfiR$+wDc?`P%TmZbX?ZCWT>GRq(huE4~ASC74#P$X#lp2>%l z{IXepHU6Pl+ajqPZ*1o@8?XMMS-Xly^HYh@z`rbHgDg1HNl^@r$+jV5+D7}AX@!>Y z_3@u>9cR?M50aK{8+%YLi*x4$+LBt8&iRpEU|*;+np{ zA$M2D*}J+Hf_B!QqT2{9mm8blEZb|U!zgfpE|hxsZmy8>fDMHYs-@p9kQ9OvO50}X z{b7$ZikL`MYz>ZHf3oM##^`A69umJ6Tu7LCZys z1Nn@AE9EMu+W`Q(sy?Vkz+3<0@7+^(nfO{UGcAWqcPR$Y8>}u11aOZGw{Ydel(zaG zSf=VQswdvNl-+gsOe(qiF1hO0-!-1FS>R2;&{$Jrb7+F(|GV*W#a)EMr|$L8HWgr) zb=Y8i*C1J@V?Su}-9*)HbK{dq0cu#ImIrR2=WwI0@%Orj@V}j4E_9#^TR-kF@A;P> zf|5_mXNKpaky@tK$IKBG2?E)T4(s84A zynR432Uj9b6X7dH2%rdMky*3mg{{DJ#UGNUd+r?ZiDG7V^LhF)K>Rltk4%#f?KU~a zg2Pz<9er6hHj6hC8gXY0yS+EcVrc*9x-v1+v~I{`haBP!DuP-gMt| zS<7E0rMkUQ<^ikb0O-F5t2?JdzV zO0T`{edNySGy5(pR$GvR7a{luMd$3Vl z=jW0}E|%^Nvu4_+4{AH#E!P=g%a1y9hiTSi*NO2H>u9qoMel?j&C*ZS9cC`=rvokf zQ*Uqx_SNG1AAaOhZf$f)KR$W!jJhlSZ~8^J9_mmT+0*3h{ld2Tk$=~QVfu*6MHWq0 zX7l}u2AvU$e}<+9ZH5XiVEbEsSJbwcmsbp%4(XoVn3PXzzk`2tz-Ib zmwWA-)Crl_>6)lu(YQ{Z5(#A~jKKf#bk0$gzhT$U=E=63Y}++q;^dla+qUhRY)tl~ z$+m4<@9Fov&(ptkTI;*cS@(UeeeM0(t!}F)t+9VuUoTl`lW~nHvU9Tszl4>r6=>k> z58uqN%jyU(+w8VY|8wEvX@$Tv)>Z*dBrBRN zA0Wq@+7=%34Q--ap?Cb(A*S8BTF9n9`7aZPYIurcGnHz9x0}jW=|Oeqt)2BYi~KYc zK=e@$7vr$_e7I8P|}sABIPD4sjWm(Xe;ZWW@M!ZiR2r$&{L;S0JkY+fb}s=bRZo8*yUR8xAt57>PDx zB*sjX-F}8=jRV(m_G?lHO#CH@X>`z6^0W=?K?^gQd(?zb#~Bk}p3oO*t`G`fPp10Q z7M5D_foZWAN*uiA^B_OBOUtnQ^p<7SOb0cZR{I z2W9u65UFn5hq&dyPF2Lt6M;rjVfoysA)h5k-zN|G8>9+(W|^-frP0KW63fsDH$Fc9 zG_;7CqPw1GN9Y7cs)}9ef0@fKrxfmLkqMS{=%)6(u*&~&cFMX7pCV;tD|0NR>65`< zNRrucjR^_Jd4ns2+J2?w7y{K~mnn*02dNzW-9Ac*YXjw7%?Ve@MOUpr{01;9dE_1X zw;dXYIXEia))e664tgS})J16;3b==LV3Pda>N}|WwEaz#UA&qC7|E34p_8*mF%3LT zj8Kbf+3&&c-#11qxqV(B;X|BJJ)aL^Fi@q3wzkr;ktTb)&t)4)|FRkUr?cSeQaRS= zxCj7LkmNiWkj>2wf2&|^!@K|o8U-Mj@%X?WTJrF#3jOV6mTlz!2tAfr{aOqge>@aG zMqHpJIFx9niDi%U>&d90fa!6Il}nTRDEucRoSMp@&u(Cq@fSEv1gO7Qs0XNEgH*$d zUA~hqjDmh-{3C1*NqyowfQW%U1v&;Ji8~w4K`k72RNy;m1GzKyRDrkaf85f;tiF5W z8w`1>>j8fcKez<;tbWsQaG0NiCv-}@jluJ(4j^Qd{E91Jo*J{7Dnk~^Zpz`>ljZKU zqE9(v=^onc(rdnX3Of$1AroFxLtdN#|La+edtaccFk__OWt0EEB&SF?tJ&=Ez@qdd zaU9==P}8H5yL@2fj$`Nbm)Z6|g+_A3Ct7BdE-?5mW*Yr}Go9Pyl6FunDUlnpQco*H z)SB|Y$|4q@y=*&xuG{~Ab0oiWT@7C1>C>3DqK|}E+EoIcBjzLQsIH*W)zLBHG-#mT z_-VV4a2a-Hmj>;=j0{*!Uv913PqdVWH?5_yTlNvx|KocQ_*v4W-=cq`x}NZF_lHwh zoC-u%;9LW)`8KO4?SaOvJwYmCbhUm5o0#djud*FQ(%6QT)nzXup+A{93Ic#d{FZ6$ zoO$BYrw;Q!vtI^Ni%p2*Z`L28Gtq)gJplrx(*ND$2`%SEiuzs9!_y0=@pVZSJbZ!AB6!(t5$R9KqJn1Cy@P zO>3KlJXE4GO7AN-WXCtbUfYPp;{PWW8VWSWW}efrG>Bi85xWoePDPFq(Gu?Oo|;rD z0n-GLE3dt6ur3cW@<5p%Xj1b48lToBA}c9wf#GLOCthr0y5s|F#Kh+00Bc5dYp;bF!gBY@8X7q_(^(-!Wkh~S^}GyC%~m)3~*^kI`x!9 z>7E3H*8)#z>HH~U+qg2=S+rG=f}^dLz|lZlW1idt7n2CBNsA2N-VmM(n3tdXGRguY z)~5Ti?CQe`K)%Wbn$S&3;4U>ocX>-XGRycK$QNyBHz%@ZmosC}P;FycM!P#+Bz;vw zGVts^g3yThV=K%&e+IkE06V`X3OI47#*}s<_z$D8wI0OvS*0T398&~GM%}Yy`bU_= zo5k>O8Ixeh&26pxD`B1xBl33=FUnY|0uA3ci1<(UuMjJ)TUi@ayr?qf2;VrO1UT*! zdnb=};uggrPq0sMed*}uyD)MarP3Ql|4SlTQY<5W4JjxTzIhJZ2QX03GLZf-Cj3uE zw|M1%qAuq#JNfdX(8cot*N7am4OSCMNuxUfffV7g-bEn{0s>7+gU6R-K>ze1JOr)Y zH2EXYl>9$JiXr(T6w3xugpcX;u714ykGNuC%-i1M!FX4xPI`-2iJlo&ZIw9>XgN?gSHUj>}i>3_Aj%{C7cN=Rd;JP&}j-m>z*jJN@R_^~;1(}o*)MN+{yAji63 zXqhkX2tCg0bgMODln(<9W?l?e@}ihcbxt=_=pa2~4@)`iQjMi3c$S>`+JeIfy|ZU$ zCeRcGOOFbXB-zWZz@1bLO$!saR8$u-vMwq{1)h;V!aKx{jhL@t;?}p-8WY54dUsb8 zAP>#s9$`Ao3Aq!et_wJb{KwnbMoxi97usV*@zSp5ctT@V`MU>*k#PqU-@bi$j6*rJupnSoRxnBhj~dP$7#1*MB0^(tiZ150H0p$ z?@>%P^&CU_-xh!(U-rlh8A% zoSrnC9Kc*$9eNcu0(kq;KK4?~w!Y<) zR%T4mlObAAP6Lyoj4(+)<rwZ-_ryj zhp#lCa`8*3d;#UYJPvhSqGR~#lL!1t9YF)%pjWvVxKzX`N!F~3f^^V1nt`@12ETeH zvG^ij2OE%i1Q3kOXM|e4#c;l_!}hKXUbJ_Y6@SGPk&Px-S80)&+Xxgona|jhRio=q zzO%{O;vW04*I03Cq8<=gGjkhFcVbg2bvkObX`P2F!~hmY!Kul+{?DpaaSp+JKk8IH-Iz0wiOVvgT~*K?t0;@b+O%9?A=;S1 z@e_=xf((5`gNVkMI$q=#>)*L}RjUpi3<9W>LyM!c-J58*bWxb*3~2^6=i*Xt2>+#@ zY$IPc2HkOox~gn_-30jRrr7m5y;nBdurkB_G_8$kW1nI*cZ82?+3_q&T-k9Ykd{lc zRw#C%b{~c936*Un-=GO35lz|&w?zm<*#)KVN#)}H=fU+~USyMIsA&5t)}UKipU_z6 zxANl0aK5V@p0x){S63Ytk*L9y*-*JHFXe{=)w-mX|NojvN6R6*TKon?3SyKUb)aHL41jN3`vmoG#|?5TduW){?b5vQ-g`fEuJ zRK65=vGBFZ9cJc7_B>vpSz63hZLOj(_-bX6NE~Z;&ZMX-e5Y?C9$n)4kNomL_IF)w zLM;Z|pCKG8f$Y`-H)@S8I*S@|R?(sCD7!ypd-s7CKznWoNR4ek@s(=PRT+R=x_7|v z!amP4u~-{7-NPf^{1|x0$4<)`Ij=az0TF1FPUd;gw`&o5z>+VCa4*-XaYww$xR~b5 zVhXml)A(Q7c4ctS+3~iuWqS*OXIe^`(LI;IPp%{|W&xyH3JiPg{#`rAJ9;CJcn#ba zQF?<&HzZhO>1!B-({oo$2BJ-xc|jWa6=uJ90y5!zu5q1IP~8|#jEhcG(V=Ye%FAF>41|q0+MMVqjO~RU@GFAg@gw!3W{UhatlARpZRbGU0K=t9VyL#&L|j z~WMt8g6 zbymXUCY>88C)H_RR21v%%*@PSaZyo}l#GnbNmASt-SK6=va<4Eadw)$&w?|z>mk4D z)%D%Xz-hS`WxsPqQQABZLoOW+9qw9$&1X!OyUV77oFW);vpReht%#~S0>ha`=QJXG zo%&Ng6&Fvj)o@{PHmBpgUS$yZBxMV*Z{3E3?|DPf%=a*u+ReCn%r5tfR~|e=YFmQh zW=Z%aB<=0T)H-3gIb}3n6C!1x6UGhPZ&e#3>6P9sJSvOLfX%L|vkI(>uAN5MK;B@O z>%Rt6+76TOxsw}HW)OTe(m96zAvqTU4Q&giO>W$E(Oqw*j!NVg;@oA2AY{0fwQu%? zul!31&hMMOety2(Jg+jQ#i5fFpSvy5sN{a!)ex*{C9r?#GpWhL6wm|KhBy5^u9d}f zy$->pzASdNj_{E-Gku&ow1m22iXmqt%q-O8{39&r6fao_fLnBcw7b{l&uNC z3<=Qxv^a(Tx)8AZCdNzHMmQ6DL;|V)x`4Un&U;On|($# zp-O$uTR}%WqQW$Kz2E-;Tc9t{ncWS^a(US(*k-w8^qzECY>$qPe+6+OU^btFScd^o zQzJFYkB7XES-iBmSyk%G&Zxio|Q1j)NX=j}VBJi1*bB@Ga;T2|z_4r(FI zq4n2AU^C)?$lQw>f{`+C);UWO_7QiC{}D(W1Dc!2zb}3{Uv& zcb?te8cxf;%#1yf|G~d-5x1|VTZ886Y-iYj$$s~QV#$;f?SOMn2QaXudAWh;VgdOt zAN>nEYj=NkzPrdze%q)T;MGzAW_aCX!?PTPs<8^cgKi#*-RiOVphdXG^-}OiIMT9e zPPV=OX>P!M= z)R#l>D2^g2&Vp%V-S*25z5SH=;k8}h&v0#9NV#@zecu~$%hviq9IVMez%tYR8G~B* zcz=`5m~nX+|5q3@{+j%xC4IJpGIFCOSM4jHadGw_-)&^o@-%W`u-MgoowtHrB^7fO z-}fxD7ybT_oW@V&Wvkc}Fz7|%E{G#HKV6odP*T&o*YWODUg`}t(Rr}C8ViHr+kOaH zQ^{u*S0TM&@ZZ3&@jf@VX?1S##P(+~2`t04LCWMd6zMqtpv#Q2y}@0mzuv2~Df^!)BNV>&CzlYbVH3WKDDt4h9l?-fbR@4kMum&rg*grXVjVfh zz@sY!d{aFk5ts7A2e>sX1`kDMAJGBUg8^e6t$HqhGrxIIPxp zCta0}7_a!aDa{drmz<|NPnM$81y$!akC|}^b^Vb4A|R4cIQ;Wz6&dp(c(Os7W`krS z+KcZqNk?)IP;t&0;aPmES^tt~oYhu0czA{Bjqbu3D|t}T4%Ns_>%Ybg)`xz+=4FvZ zfQJ}c_rxv}p|UU(nbY09a-TJ2V%Dc~XK5$s#Ij0C>Ir~1JxR6Ew0qk@o+S|dAQTu6 zdHbY{SY`y#v$d7qZa1$46nw997YX&6G?xt;AzgTj{j$io@c#a0n>DXiY4Vquv2yeK z>Mk3>0ZH&^@-Y18sS$I#B}u-m*sXb9`j9bwX0#1KiG3diW#a6|P+h?TB$vVEC3k2z z27&#hUe~)H75hlVf62b)SKqlumNi&nuln*>_b8K{6)7kcry!f1M#{g&H~qdZGQfDT zi$KoIS+$`OuLzQmFjdm<{U@0^!Y5rmB1y*1skxOCb3E2kM~UdgVGwIH zN8`RA+x;RdI8yWWsq9L)v$f+wDElX(o@GMj|3v@p1g#^O*W!u2n$5bP*m5z-CF{y; zD+*;){Af888VQNS`w@NO+w(&nNc#W%HQ&5Px;A2e zd_&18I58(=gk9cU(hoyglu?jk*E&k@1wpPNn_t{8YjHi5vx9z2H;z~CUfFhI5Pdoq%_wBOQn^vE==#}Bw^30J3|hv z1p8{jITbuRwP-UZ_9`?JKxA_bu8-$jwnCnr?(#<)#FLKz^&+=Ge&mVWZ}lFKX`X!f zl~(+RS9%+g!r@tPjU?o9UaYh$yS&D&gVZV3B+!XKS<0eq8Hz2xD;0Oq)-G)|7mosy zS0qt;yqrQa+>_8RLTa`Xw9hvD;I9cG+H(tM!?X4XmoitM*$p}&O4DJV5(m0zkaQ1= zG0Fcxq5WnDt~xWY3Gz?Wrq+%Q$R=yeFG@u*6J8dqu5S(J#H{TAzS_8SpyMNzb`gMQ z7}kNin!qbBrOu?GT@g1nytSe|2W4z)HghtI%Rr;G*BJxA)mzm3i5&(1BO<5HrHMpp zIWBk(8TN<_M`W_t1^IpS@|{bKBb*~+Y&?jWGLX<;ET;VTuEzf=2ADy(qQ?5yY86)? zN=OeX~&L*jL+mfjw$iql`JR^2uNyV{n2=TAMh(iCr zT=VuAoKQ<$Lpgj;0}<78q`Ybol6z{BZPBg6WbpN4r+^GtIab3>jFTbosXM=w%euXh z6xkXEMkYm(2G?XQQZT(oSniVdoB-Fs-R<~G75ZK+XhZ-1de>9`~3YZOkI(>lt`q99B*fkMoneJAu_ zNjcnR@2+RQH+Obwa!@5jFq>)eoPI6;^E!p%DlkcM;i@It8MP2n+6KbMc!06kW1^RZ z)S5i6#~^tR8P&Vev1cuFkwcUDSxWI>kh@qob|-qPKkrNpB0aYDj*)Umy9JeSn*hH9r| zS;~D3;OE{&fe;~*9@5)@!#&!pCdSxb~UUSNDUXm(TP1b)(9ldEUoRR)_n2CBql|3LR6 z#qOiGp0lR}V-;l8DYi2;*&kg6IQz5k7!Z?t?tpQ?P_DcfPikuzm3=LRJu9F1c`Lha zKx;6DfGZzCMReV1F%0aFFHQtI(vi601m?U-kE1JupnLE{j1&cPa;074ER7$DX5o{3ER>d{NY@U3AFvy)vNkchnC)!e{6W)yM|FaelSSQ3YuYn=e`l}qq@0#a*6 zrnTYzjdwb&Bjm^vj1%k4T;C~?Ue2zpjH%0sSy3Hm^&nCZSS2d|#137pB&{GraOsITZeBbc5C7vv5_?%_$3@dJz|T;a0Hh!F=M-Dos)O!I${|Pz7u@k&=2mfV~>jcJ#AC z%bd!KQYhnSMwGXjcm-lzg~5sV;T7m(>e=+5kE5FID)=%Hsk7<@?QtW-j>AMwb`dFL zZdEaMq*wuN_u~ctH`mnoKE{c^{Lo3>G;M8csLwhG9?ZG9jl++PcB$Y%n)K+;G-}Xi zAlI2|G+rBNLND?HTKLW@QA~BF*FY;~PjzwBoeyEfmypE&1zFQN%7qw6?T=o-sLLL% zmP#C+_1c&tWi{J28k#PQnJ<=0g*f~2bgUzh6J>RyuBQeb?HbO33h*FiH%9FSk0=zv z6ww)y$K{R!RqP?=#^5>ZUy)&MuNmS#MS;+bQm{3@^Ct>KK~HG_Q?Wi}es|_EMwDE> zRBf@~)0YFarq|2s5~EzY!!DRrypy2EWJ&L1du+2oHu-^>jlyVlv-Jys%Lwoi!j+9)odG`lYmq=WgA&Dv%5M1fBclEg$Mgh z-)vPoFoO_6_^%pr_PRKM!b{7;GTzJZTWIsaiR$PH%`|~BFkg=SDkI<~EI)*+`$SiS zv8WErVJ6n!_S~^Jil1%GPH9H+$suqyZt%cYUZU;arkzExrSkPb$Cid~%3IksFKF3k zYMw`_x`3q#P(xj=jG5Zv~lHa2=!2ipZQ~ygl*-P+#&?N*N@kx`Z!f!C+-EBOFm75V?+w4?ya zqg2t_qHuC-zd7@oF(OSrz$XXqpwtit@y-vA%y|tp#^7!YpK2%x!2V!#fkXWXt2$T~ zPn2%pC}LR}CZ5Ny)A%X!%cw;qZWVSLlt0uxZF_b>@q54@)6ze?!uJyPQTFpe4;1C` z=5uy7rzJm-Yt+SBEeVs?t+N98Bw!{_j@x3jRGSwR>`#R}zZd*z5WW|-j|;yK%6KV_ z$G4!iZ*uU!>##-NCmAiBb9MsU(2~f_qICt}+L*07(YmFEnzw`f$iD1VY^v_T_uH)skjh&0_!AT6ykxkn5CzLKo zTmVoe(ayoOT8tyeqL=#2yo+*LtklTvh+SI>znP|TENU~X7Gy=NO~5do#)BfRUHz1z zD?k?Nu+KB=2GO=fAHr=2jHl9!-Am|yuL`Y(xNR5r-17jwCOdMEsgE;)R4w6F&f;5= z_E06C_Bz3qMyCFyR-gBgX}uG-TM6C@o*=wp7tmnG3+UOql4es7HFiAD7>o6&P`lO zab{kMZz&ZwGx9Fg;>IzD@SDN`3X0^%ceSKlP4Y{&TRs`3-`7MIE z`yWZFtl)ayb*4WVhIJ{Cc&rd9fI@dal80NZ^Z5K$S4Cl$y#NcHXm*lzPg!vVDR*k_ z<=Fz85#C5P#mTy(@B_X5+y!LPRW;>v6yXD+HUI1{_!g}24@;pxWBZkR#tL2189bN8 zq0R(aqhb@FkN?EH&t2-c)v_MwWq^?sDVFE$*Els6TmLu6f=`UNcTN09a)lPPM6Z72 z$>x|=g1v6c_fXHJC}&-kY!y{#d0>-#zjKv=!cE-jyk_pHdfdAV{*x3DMMu8$1dGt9 zeU+ZXLcrT`!6zW@9?8-0hM8*9SYCM;nY~}D-Dw%-#x~;Pfp@usE~dj5o}w~r3cWjr zXu;WH9l#E~w>W_625+4C%ERiOjdrm>j@I$UL|4Eb`3fKRNJ#NQ^|I7Kj?`(%Uoz;Q zv4;b`Wu#7*Le(Si{VtRdeEG#jK|W_M2&bGh6&K|3k8Uf%8J0Lo3y~EO#?Xcf7FAY_ zv;-SYkE@SmGHmo2ZfNAk2cnhBUvAEH84J$<%GOa3Gp>4PnHh%KZdI5Mm_O>_fymzu zgTPcT^bq}Y-hUQ4X}~^ohoZD#Tcrl`aC0XoF{&osl`(@XI9YfD*zwLDA28p~U8cB& zv)*H~YT4uxjnhFKjkGd@yg*;D;Cs#WUlY0B&>5-L%4E7&K)c|~f8F37`I15aAImL- zm!F1QbyHon4+?FoX@TO=|6|YvqHnbK!P)+8{e){9T9swm2yAUVV-Jj|Gv!+3N}zUq zao~BRA7~n)b)SOiiu@Uizlrej2-EA2=yZW5SUaw!oE%=hCYT8_KGcLMy$t=*9fD%_ ziS#Ga=nZs)G?-CU`cVcg&&2pNPGD82ySxOY1J#LjfDr-6fi*2lV2$$2e%A_Y)B}C# zQVG`2^>)H+c?ajtnSXdF-@_o&|5dU;Wc>m1=|yss0o#^1p!b%8zA=l@It8PVG_^wJ z#q-1%V`ztX{~lPooaD2$?f3hNp*{jQ>I{fF?x zQOO>9Dvy1|LUQy%=#+~kSno|iBR5MylmVI>+_>WgfT9P4qymcpJbgu~P4{^f)cZVG zxAqtCT>Jent`XYQZd*m({>23s)wWjA;;frN@y%%M;$qj5h-3SJw*9jC6jAmrx{6?E zoj_@+avprvMboB1UG|gx#X!Rrbop-qdx)*q?-ITri5FNa(A}^qpscYd zp)S{ov&G$hKd_{QZ70nZ{9VY^7VA^gK?7JF$YPv}Gv#Dx8OiKv(9;PXWB~QFLG5Gq z1gF-8<}|_`A~Y*qMJI6<0?Qg?uqY$2Z}1U@-w*e57xQnw=}7 z!ICRc?u+h61fN(%TL}aAv?a_L!7NX~rb*hAXBHE}JDS%eW;eS90bNpy(@1}DPmWR* ziAQxH>Lo@*>sCAEjBk8{**4TK62T0xH>mt-TZ_AhF>rL+alNESJp?Do5N&{ zSAHzqo7hVNmF%L2znKayt@7QXVy8NH4kaq{<{gSy+-Is-`1sSR$O^tl}DMnWWk4)hnLWWh(xX^p&bN%P%is;T|_dm{YLv zW-@~xJK~k44w(Skmb;Ez|J`_H8OGwigkLIaY0YGehmcN(PXxKGr~MI6&Ns;7DA%_7k(h-r_htnb!Oqh zRNo84FBZ2N?kP8uQ-5hsgW(fUk?DIxn3}Mw+&vB5ryrU4n}$ek)n?!9l=%^kxiz^q zAo{v!cE0-#!)vaPuM%IaFYs)2n55nCY;#rmPygIer&7DNz^<0pWrK-Z#NEPWluKvC zH%bY#`z84)Q+*KpTWLk4iy2ne9{PR1Cv7t{!3{c!5mj(i=N~+yWnv2jWiPZruXi<- z!Pt%4wi^fb=gCbounQP#Vv16lS3bbDAmCY~xHoOp6LzS}6K5V7@#7Zc6#%8CC^!)%~-b_EyCc=hXRSvj*sr2KH)Fyv92iQbM2G0)OBt1tY(c6UXfQn+yLF0jCewXl5_eE)L1G^-F>Yqj@^Mz-*C-Q2xkCCKa*Jp@zVK`MVgaIP~2G~ zPEsxgJhqB3!fIP-VoPv{KjR|CoQpWCTw769oYN=Bztfc^5b0Y~QRy(A$p`zDMfJ0tra3!qQ1=Nw4OTX{%2#dd z2a0^|4$Q0?l+mM?6s>-2unXkzKyOp1$lo@h2AhtvX3bDpCGA#$PF2PsRXX?5OPmM( zjFSZDDf0;Zn4z$vamQO76%9*6vtd zbP(h=IsUa4Qnl)fg8D1L*1-pm#P7u#BTtBPapFQe44fzy3h)=W%^1Zx$<%C;bMabO zrc`@oL`}ul5JiiW;Ju#BbYXNAu*K_BqGm2DAQKzmhIF}wAq3tq!&?MUU;@#I3lY?Q z_RWYW8SxE5FR*nfO8axQY%zWatG`Gqv2nBJJsG0fSvAetHlUBiQ6EGSPRq7m6~P=d zeuq!lxic+;59mW1?N6C0~T!y}Ftw;vBg<#JMIZJYmL+b|sm+Rs0ldU^v+-a@T^X z)}`_{rAunUl>w5wWI(Z$k3G$NhBB>X--;xo1G+L7!xFbO3=eluDULN05ppv!zE_3> z*-d|^m^H|3N2@l6$l!a?r+`fCr6%)Fm06kaPPz{sAthor=3vz8W0XfG#oP)+< zdH}wjE$y5sG+Fi^JP8{)tOA2s;a9`D3Zl6F9XB`@^V~AONkBj}>8&@D!#cCb+&!h4 zFMSGoR{(w&av^b|Wpr?pBor0}V@Ud=JfIjk;NgU8l{9odvHz6;j>V^@ZYlwbkZc}pt@E=%*dfe0JMOk4dy`Z=XoUQG8P zpnYs6NM^4JSe~!=yp`u;!XDLZIDfLyJ6JuqqdGf6nGm1BI&#q?@i;OGJ}ml$0a$4W zU57>ij(r!lA$6lXaPx~jua8WbWb3Z={omv9$v<2ZK`mpE261$u96xaxe-MFQ60HBd zP`Iw`PtC_Cf8j0cRY$?HLQ9#2aP&o^_+blTd&z9*>3Fye((IfB=k@^?3B9!RQx>9l=PO5>1os^-$M)D&G+<=;EW9c|C+oA`HxpV_T_(i+y`JvO%X)>%>04mv%Uh@}J2u9n=c9{U+O?n;UZv0!Q!^u&Skh z3cq304H|S$i@u9tvizBGDjkJ|H5^%jEmW6Bug+Erc&fDXB+urY?cYGhWHAmr_JcGE zP<7VGOFB%2g?fr>@6$MC{1!-VBX3#G5g}x49HcVxG zHc(;2oH_8^1^vkq_?LLFN1q$~Vl9CGj5BhxE+Hpfl>4iddsvBx;{ z7!ejd%NbVMhGSJ6qC3&pqALm>e?bfp=AROhl6hW`rw9*-z{YXQfMdK#%=+rZo(=)= zvpYzro;L_whdl;pkhud12+tOl=KiO4mEg)#45r6ysy{C{;QB7~h&c5duppx|0lb4_ z{?Cg@==IfD!tbzk3na6Mewx;1QlXm!po(i$ZiPBs&)tS#u%A!{cRxUiH`NM;4KC^@cbGU-0K$a0^>Kj#KuyqVgG^xrBn) z8l>t+{BcLL3uvc=Sv?8C?ODY$QKs6@J2g6Q^(S9x(ig z@$FCNs05k5Ff=8LU27poiZKK{{xur@-ih%x-VNq(&3E)y0mEF>+Ddpd^T)sj5EFSg zC~W1uz`(2=VlPoR;VzSwr6(0W2_bh=O2AD~KS+cm^h=1>QE=cL{|RQ7L9U*&COpaoPVk&rmj&r>$P1TrvZQ8<3P zBs`TMyD?;a-);?0^?aOKZwQRzr@~#3Vj`R{Jhi>xhO7+*nC4vY2ivd#FG;WMz}c*M9c<)Hs0WO2!`IhyHgKgT0lOT??LIdriY0X<^jBZ8Y#cv62GWvCdr~2Bmmm70*#cM-4F~x7e7~X2 zPKTt4nbwV9_S##9dnjTcmf|x}S|WzEVWHcs!W0FXK+pI~Wc9BsRJO7e836aite_S* z?U2Pg_02uuU3g?ktUrZ5Jz&uVY~Z|bM#RY*Hqt@lg9E|7hqun#6+|!hxtAl~5vBO$ zpL(log<`X?cw~!$^5x1S&_~l-1(4}DwkW#rLw#JffI$PlzoMtDhDZJN-ueMTKO6yv z-a0G0r6_1lmm~_;<7?6a0oXmv1gm(BM{TX2r~_HOILC&GXgB|cf6^rz@LzYErr z?IolC@V06($c?sD(Q8c%lo>THk=t=@Gdz-u2`7oS1;NuL4vqgvUDIICs(}?bdCBrL z2=!$l84xEz$xsl#9}l~?fg0+`@tyI9XR@?ZKN<} zs&IMd~{4Nh2`@o4V61%VamNA!2Sp-!eH+| zo;abaUwhBA?FhJX>a;<6 za?o)S3t_Mm0a4p~K%j3NrwsYKErtTE%#Ziz9UeArili595m^1M8r`+4cu> z)iNN!uVoYzF*9xI3CazXB4#rT5x(+-79f?Za+Lsa5#S|7VY=FuxBF{J1#>>7uK)LV z8-N|1V~+9zfrQ*1QUSK7e(l4h#?qw>d7`DXYAWU(O5*LC1laHCZfpp4DpUZsQK}J` zV$SUHLen_CjlbxId&ZRlZ78bjs?-+S#rMFxeG7@1)+J%k93qC823sXl-({GgH`RhG zg>^`>iHKw&i#P2+5Xk%>F%}nYY7oSM^l6T7?^;Ok))z zA)}ih#$!lRgm1??&E6gwwu6#^6ZQ{*ur!a?Q6tElw})<4X9UmrI=|i0+D<#htcO3d!Oz2pOuOaPfV6WZ1HjfZlT5?2bLFAP?#j^Jht6rWG`$5F*6L#h{}n>Z=zvW$nsEH)-thNMKE`?L@B|>c zV5?`5h;B^uR)09!o7`^IvQw$noQ*1c^pS@Zq&dU^5=18*Nac*d7PZ zpYBvad#56ASb1-|9At&g?Hs#&9|L}bR_|H}4`>?>c%S3H(nXsHRM2@{@y0Mg=(A-L*Gpi*&vtq&XP* z!a_WjGr?Q1YDkN8EpESe77&w7m;@E?C3$S0c?S~&yBGX_HlOI865+)X z5B7)TBomTLu9)23(*DP&pvR)u{ZcSlVYbfGl_TMcQ!BL3*$hpe@02pOlSdLnb$?_O zxSkI+GwkTb>EhezLc&|+9LEG5{eMYdR395_o0cm$3p|Ze^bhz2V)hh0Gr+oSS`$9yMC(&J7`77K*W@&@>UL7y zminMh5LZ41!C$(Wzm%IiEk?#-py?_>2fjFvqxdu}a`nvQ&;8AA9p8M3Row^v|8#Td zd^kr8)M4QP3q)<_>Ae8sU()w>5CbxM4nHf@YHl4W-L>2#JBX1lVW>gaU zMkvTjOpFgP(NopfdSh!QBhk=ebiorjvdR2!5>Lj#JFq0>iw<7}J}(5-zkQyMHs^E- zzV4_{B3PmmOoR+g;Ai3Vib$%)T%bdCdOCWWEjy;L2?o64GGJ$Q(Y} zwCer5SF5JU)VWce#;e)mPjeJqXf-YV{hJ{B=FvwQ_>;{;{?5ODnFuteD+uzQwq>n# zr0UYW6cjaD%}-!14e2TW4b$-nQmPn|CHCG!0?&Wuz~YQ&Ra=HR?bu;s-j(Jxm^&vU zug&>kK)f}?ut(13s1r9@T&c)xs8Nk2p(7{+cCM3}2E+TEoC=WB#2@yXg-T|OOP_G8 zts@j-gLi@z)oW5L0WI9qPA~4?#;egloccwe=I05q|5FQ*JOn*|R<=~hA#R`|Zq5a9 zh};`)NH!{+|MQh=bWq9~iVG<}oK}Ebhq(9OBr2<51NeS&#mj%}fGbH~57NL0FJbbo z0#L($OJHdnn-rjLr+gB9U3AakQ5mRgH|yJmW3ZM68k6&YCBdc%sh&q2;BV-V;Apbx z2N6c^dukC)rSm?+vQ7FXW)X>5s=1B|@2HtgZ@ki6T+1OoUaL9K6qEEp;_C*42`D7P zxOJAJna)@I0SHU2V~QHSNw8uu^be4hN%$mC=iF$6?{rE5;6}boK)|b5hR|M^Z6LGP zK;hq_)U#mwZfmmMfczR9I1Sbj7}8LT=YVfA5|PsFUa+@a7?iz%)uHl`ldRJcC^+{` zjA4C``%=thr~mkwY^x!#bQcV%_0Q2+!w~4KkP@yiOTv^qQ+qmcD#(|ZymQO8JnN!y z#5}qcu^^N(H&voex_pSnemVv~5F!1vrPY6D4naAN`-!txOV!(RH%pjR*Ep@hH333mo{cG;~n*lJh02dGQ+k0 zgWkW0SWMaoC)+&9Ic!S=7BT()&=NItpRjVulTB5RgCi z$iv*fYeSROoG|vr)@|YDlV02<`01HTl%_R1l8o^cRzZk{bm_CW!S5iDl9Iul zfV;_yONRODq_-O!1TeuSj9D;a*HX+z^g46p0At?;iib&1;=pW^EWRb3`I zK(#NySb$E;h+q{NSW`*qTZ1$J%()A9Zu>!^A&`?=Hyl95{d44r=xxX9TZ>MWu00$^ zECvU@EmC3$w=PgYl`-?Wqw(Qb2;1BAR{~qYN@yf9S9C|3}wbN5#=>-NSeN1a@1CjtI>Jgo z(UX5#l!o{%3D=YoIYg4q3?`Wg!+0?Ga!#f1aI-OPOI{^%$fJ8uGO0!|-_pod0?@CX zx-K`Kbp;!KHsUBTeY9(d07#BA`-FUysEM=naq5%?q1xRSQ+U(096Zk{>lA$JsW@sx z&|vx{3={+Q44+8))7gw$^2=Q%N;*#Jfjxjv!Am_aMD+YbUVAHt%Q>6vv-3Vn@_G{C z2mZ1mWlj(sXX)l;!F*$<5>}rrnz2)I1bRzkIPEy%o^mh@PEef(Y}&pM(WPS}H&D>b ztjbdoY1>`6WG`J_XsZa1b!>qBTm(7EDMMHqbyg8mTOHe=Z-7>E=O;Bktttx}$nGfp zadHx9Ob=DV(^4L`t_rpx0_*zjo1aNypH7Bhf&iNb0(d^bUkQHh+QBxRgox$r5OH$N z0lru9Nc!o2->`q@^Y(p5)O+`=@*Ux@Mfp@lRXoGAbnZ_;a!WE37W*s#Kq_o28yIqk zG~GA70Vj0B!LT~GsTG9lC1Z(Cr`ZA0AjO`|6#_`ecQJ@l*J?D@%L4jqJD&uqzP*ED z^Y#H>65f4E2d(BLU!i#JczgEaCecvwv8;?uT4fN1jqgpWfv;!EA7S~>unKYnbs=V| zwNEiDcsRcB*=AQN9P~k-af$iaqI%mPbVsItBqt^zreG(VNF09qjw6|PqM^W?0&?XR9o-CR5Re&7iWIVzi&-*++Q)Rz_1|1@0eW0av_MnH@E0Ku5 zGo?Wq^jiY%0pBY@TB6E|ff$$J1NP~_NbB6&5sStW7w6Mtk)Ypf)x+OExSw1`J=adz zojg5ke_si%bIhtkleV4FfrgCqSULXalfhntuy;-zr1^7^AuHh`QDzK>fJB;gx806S z=o}Rpg_O%Gq7HDo@9ano#7aw5XrH4zp_!1drbA%kvWLL?{+LJV!dBU>3y25+OCRTT zni!_DtOwBS1$-Hywe7E2R^P%4Lm@4`AJ;?xyTFKYV)I6nm>j38__>-o3j4wX?b zg1VW~oU;!b^?aRP+-V;-NMbui4j^C~ezZseC%b!?a0QsxzQ>>CZIl`rr>eYopi(M; zST+sWX;%o_{s=sw>lw|tW8y^Axu&U^Jjz;)Y`a>Fa!Xdu}bx(1N0zd~{qU8cAfQwH9-FK^2jjUuKlnu^?c449?jIxMDfG7lkpg zdg|je^>jZo_Q4UA_u^2G4$o-706H*o@|puhM?{Mi>aHqAtOT1KV!+THUqoNX^lgO& zH}UrS5ag7wEhbM0OHxs{UP@z7rgrwVqn9Cs_p?<~?!YC(gupV5+p#CtrJ}c`8D9;P zf}DD7D@7Bwj*7XW7(rxHk#`86m%i@Kho7wZ?aYQ6DJUi+VeB0k6%>642-9|R;RnMj zY9bQ$D~+OdrtJPva``&o?dXWZaMpia)p0zs#7jY;UbiaIr`}Rnz8klc)qcEkErZ9} z94GO-QeEfe52nc=>{s!gz|@wK@AR1Bbp#l7%uIh_q*yIHf*c*(}&xZtvRsmp^ULQaE zRR<-pV*m`l(0fH&Iu@ZfbcfK2$84QUrwbo|p3q=nC`LzXf{3i7W76`k3LJ1?y&Wpo z14;q$)20wsSoD*#iBm=#h|?|^1W3Ojjh}$!Fmw#jIe!;BPWO|go2ZWUJg%cnDKBF5 zmbJ=0tq7Qogci_8bG2NaZLyR(2|S>Q>Vh5jt<4$`wl^<=JKbDP1R5u+dHe|QQ^>Tk zd&Ot%r%iR)9BDEabXD$loRO{3BmT4?d}`^YH}5LG*sb04K%bjA*w#!k~yG84}o1`+UV z>Na}-B|}Fwg0!<^DtKMc9uvp=ZiQ5IOj#H)ns2Z}tLd1;{AXZY&Z2-Hyc}d)e7iVz zy$Ebu)=v^h9&P~&pt73D1UUEDv28HYE>eNuLn7-c=g9yIH#0@PBAH1Nww>0t_hcrW z?m7OT)x^9sOrPe++vcH+HP+Pqevs4I$^)Fx3xgokV(rJa;#Kg-dv0@<-QRqS^?;*o z-?-hiJ)7|-yFRjaUG~09UqFg!N5i3gnicF+df1;}P{~BS*SLxxviI}ClYNATcQKo~ z#ej}q!Oz@plI|*5UX3o&c;Eavfgb;YUxXxnA{w+q|=`c7qis2%G0uB zqO*a%LXmKMhH^%$KK!C)8w_k`u{pDpHlv`%kZ-|YBn3?Kn zUzjKrD%wkU*c$H$(9B2QiMGaH-=uNcK^CcOQw0X zh{N{WD)K#lL4T-S*n8{zN!)I(_f+=nw{;wBuls(Lvy`vRtX6$35UBeb|kNvWEu zi|=^r8OY_;TnE?H_nMx+Phz_sAUHf(ugi4aT{m1PP@RV+C}-Q=o!lC~+HRJs6csvN z)~!T#?4)3GZg-uvGAgTuG>&YX9XwxW*7l~~kR}09vtmFRV3mIcob1zhvvx-%EJ%eRj-JHzh0k=J`%i+#th?juJ=(2Oi!!gVK5T{i{jB+vk zvieK0w`KXqktuNr7+Wi7iZ`?+L+81l;=Xs=U*Eqw;yOu&wRXFm<86A}nzByEA*;~oV;Fns0+B`AXJlClUOdt9IWD7Od~z zUZh}$p@m0V;ja+J#m}-4>yT7WaF(WmFIZQl6J5^`IiZC~TE{}puSVQ9C*h|v${$v|UlGMJ zv*Q;eG;mfFvw!SYk3}Y_sA=0RM|}L2x+I}y+4iPf`0+Mk!{3aGbvkR~Xko`5BvS|i zS6x%2!E;POQS(dR7F<8d#(l&j<-N1|+(M#|!kxFHJu{=3dEe!76~)yn%S^7K&&z5? zQ&z0JpAA#_p$n7<;{+!V|TXVv%3GR$ZnARRJ=q9 zX40mWahNCo8<@Xu4IO++DTx>-fZVEZtqj%7vR@Q1N(>iguL54axL4G=8yz&#vIkNe z`mC6QM?z20HjgPvIfYLWqRMSdft(J|+!k`G6K1r6VCg!W|_*j;P=Vvc^%lbsE zEp<8HV|O?i9e*B(O3wUt;Unou$~A*!C$xk7=Dq10u@s17n&rma6SO2ew|aA7 z{+7KJwfF?;piif+GZNQo<%-wZbXwB_2);Opv6`y735^&Bg+gOFifx4liSu8w_iLZW zdF(_Nr+3Hw?6NwR)#5X7h=ZIgy?0);t*U8{yPAPto$QLg-Or!&+C`yXDxw_}I>!o3 z1(F-@CoO&n-@ocTna5&}w=}U6wz{M}u5M!DrDFb!5VQL9RedwPZVBe(6C(MTujDpB*zm~zV1rG>0Zfw6vlowPQ&hSt1_-?_{pJ%hquV6hdfHt zR#Amr(e|^rur&XOa#vny`A0e`nh~-fK`Yk%cK6MchJm+b#?-|(I}h4tPIqO;bu|?j zYOg~_8z0k^1%$--t(4X5>hWMWNGO=!7iBkFRP~vbf20{56PF1|5>OzAOHH3~YcMzReE0#jWGsm_uZ)m^pTTq+Pj&A3`du5-@|$^j2QJ3z)#de_mh0#@o*BEt z^Ww^plB1O6mWP0W0>eFZPYawz<@h8F%>4r+m5RTO?augfV}~GTney|ne}#iIe&$E1bZG^ zLC@W04SE7TqrQFSl>Aim4A>WWY`UE4mYGJp=Gg+Kyx?Ad-GJRgbw-81c6$N50=?m$ zAzpc(<1R37P+zTWy^nrk0Ur+A${;(JYk=ObUtYm(2%n)YWFC`p9(cQ6w_lQ;@9qfC zc<)}Y+oP0Ui(cKI$nRwC2@hUt@98?HK)nc`t$$7(dtY>Yd#(dgyyV^LKSIs&c)kLs z1p2xtUyoi?9)WM~q}&7ow>%Gl$S+gRQ1{+9geyScOVTUvYuoG6{pP03leP|FUspKL z@-^+n`jz*N5D2{GsRwR*$KNr&TmuoGtIoSFIsx9&ul7LPN2q7(N8pbxAaLzD2}t*L zJ5_JZ1N*XOyJmntUQdC%K;SggHQ~PZ58e#m6!7}>00>+KK1=}#kGf7h0=$EO8NjNw zw|?AuKLPjOt}^!WcK&_CEAC6x1MsoywaXg_d<}b@1g-&fU)z9p({xu=`@EN323^m< zmbXKJ7htaE{DamLJ6&u zurY>Kp?Ib`@*5_~Y30>ni2l&^eKsd_oUB0T}z}|4*mUUZqK}s^tLY zYMV_(nhp+@9$gQWud{MDLLL|=yi)j2(cX`i2&fQ97(eN&k~SHa|3>Kl#z1CwhdB7| zdo~-|gv3^Q1&-~5VG4M8ZBXhBba!_T?sCw0;^LJ4DC5nT_eBFBLzH>!X6p5>5d^XD z--!R8_L5J@fb{% zR4}-y*;X$Q=~1QWnJybR7LC*5W$6$#2pRCdW6eock3g??LDaF*m~O-={=tNn*AQ9t z8#WASFNCElqRph{CuVbKWw{Fh6=BPd7BrA;v)1CfOs8ZD6xdlpRR5he`90(YM_9<< z28%9fY_L2jhPsHNo!0E~K1AE>#6=3-j5x?633Q1g(Y1nl*wKmS#e$2f$eTSCo}QeU zqyLqBHT{VF5mYnode*iW1v8HE8A85ryoBus{RAm)gsTd7DIL`K%F~^uY}C6%JYU_u zept}gC*q=fp5+%LhrB2${lEE)w$o52DTmgfb-z4F6Uc?z$9=mev5&crhwDPZko_*a z`0e3wAd&L_u>=g>>0`=J}o=qVBb9K9EGOUQa6hR^febFSWN zO%Bv&OoBE-!jj>Pm47Eq&P58wefOK5OE{>Qz=;5W zdpHfw<=a$rCEf9{FGS;3k5_O{4;;PK{8@jINs>bR!;Xf#^E`|Xzok~`M%+dt4! zg#Kgui7Z$YR3R83wk);1*)%e<=8oV0e-jk)(ri5y8$3l?NL_L^mBago3M1hw4$e83 zXeI*ce#X|A`_Iq+>DNDTv8ei7J8uvlvY~$C zL+Z4dcE4_JuQ7t&?-BY3Hv}e6F^>h+pkP_yrk_0m(kf6-plnul+Skhd7Ylj5DmjM( z>1bP#HbDrukNhgnIa`J;}f8ieGi^(O`G*UF>9FecCb9yH^ zO7$OD1c~k!IVbdNKr>GLof0z7=As}~SXX`SJOgO&e^RwyZQ-%HC7(3cbQ=F^%!B1Y z75cd@4;!_q_(wluaYkibbmDC`=)iA;Pz=3-$p0B>Sx$`f2X^;`qEk&O)NQ;9iFC=2 z*PDZT~38t~952s>)bT=kd87&H0rx#1Y)9sUD!lr17#f!QZm{^*OOPM0+H zd8ZeD>IveIjcVR%x-?fu58#=V(>@TP^DE4+0+DrLuB|PZ)xhqM^7!b?Mobtlxqoa~ zj7?K+opMqs6qP0Fc;kELB15q!x1go$mDz_lnDDDMDYC{OZLidmPM;GkDU@uucNUoai=&_I2{Ez z(XrqZX-p8AR^RWx0CJzOlZZZwnl{J3zB=HYejP9^JHfUcChQrJ8EfBa(JuRW+#@1e zwCok_52_}R_X~lhWpHkR@S5fx{+*6xBjK*pJx(^xc0SdJ6QL00`pX)=dN_5u){5Po zzExKW8HLaH@d|W)YSjM}=3hM}y%If*Uup0ns>i5btD*evf{uAV+k&CQNrICQb$fO| zw`r)W#xT(S&KpMsWR6Ju{;Gza>WZBt_HTMM!=RLEM6+B!isS9dQqOo8?|%GU&pjq( z(0))2uh18^3(f^tg-VlKUf6P25JcJl`%#(#aMAxDdeF8d@wmL<@h(sLDvjO^tlj9J z;>_RfF3wVdNKp5#64E` z#Kk#f@aOTwT%uQ^Eci`?ci^&rW^B`~Hq3c~+=)Zatjb8GjazDoCb|7FZNcv`8?G&- zp@B`7>1!qQ|5VC7qq;fyopj@!!u)F-!$hv9Na}Cqh4B&`KfRBCk>$vrQ;)(ItmtL- z*uKtTH~6=in)O27M!zI!76@W@q}!{#^zm--V3YuPOyOJe9aszGEqCRGze9BIJdzTr zD1a+d;N8q)3X9vy(a{15x{ZbRmq#(T#=(E7tJ}~IUI|CBr!r+@vYnSAB8?d5-)U$ShW}`0b{6<#L)XoP zgA)!H!gjZ^F!7h5fJv+LiRP(84ItkMZ`j?^Q;+X7mj+~&e~m!=lMXN;Fh@vv;!@uQ z8MvGfXJLEp3q?_@Id z+tf3CV`utnV5^8v8kz1*n6gR}#y0(>0$wHel(WluJ;J}oDr?iu5d>y7@2LsI6En*HXk z%?MEk6z`G-$=G*dE08U14SkgaKM>&|QW2I&=l~noe0o<%tNJzEW%vY>(fMCMvJbZ9fq-B;%Z2) zf0!PQYt!Pe%Tm8u5=)&oImwrdc+i;;AM-!8v)i2%rIW`8r70vtE+K(%cPjfuTk61* zqu&N{&H7JyB{6Lv3xKvyQ1f#?k+YkDWbIp`Y%P+T{so(M)b8?53aJV%GJ)qR!I5G) zgRgkvT<&Z#bE4Azmx2BiPZ#Hd=)dJceDgOF(IqM3BA@Z0fO(f1mqG|G$#*VZzYCJT zdF?Y44qOVM%Mi9gh!ENjN%i=va(1nsX!n7>{?aMDGvLZ9Y*3QE zbhol$RQ7z!$|oGKd&x!P5ST{qqk8)PKrz^~*o8EFTST0v;N6P_MsDuC|KtE@%oZ8q zFCtF@m5M8U8U2m~$@QnrT%E$v_SS?%a+jfpKD9VM{B@LBH>#t9$v;V78|m>g<{J(h z71%6pdjw}7R~i-gClc3Rj5Fv*#RvbPk_&?nKRmLw+; z37WC8I3PEK1C(8q1~N&PXdF0Hd~$Ni+)f6>RPbBjB*_9f zEiN-L+Y$xmpM-d%7V1!I98(2GzlUl>ZZnDHU5N1G?f!h@eTR9<x zeudKw1Qwe^uT!@iKXQ7B)8&uv~VM+yGRZSn-kagOf&;6Fb4ql)- zsp(OwD9~%j`S!-mY$yTVc#)dxABwoO2ph2(8f8ZK4ymVBCY(P1q(K46^*y`-NA%_% z7}T}Kup8&sB|8mJi*$Zo{(N!La|%csRKh_@T)+&8zDdzzC&PJBG=W>^=bdRQ+Ujo# zhT_y!GP=D+Z-x*oWwKQq*;kM>7~Z*eA7pcUVdW;(2oC5Q`?}Px1m|F87Ja!Ufv=W|Juy=OCld{r7;<6|912zs+i)72t`Ij~So>gpk zs@vd)tm$!VD>$X0zwcE!gpnDa~xJGAarW%vL@^H;#t3ZckNgvhsac9zVU>#WN|L4w?eZ zMaPBBmPCpNy;@UlUb<}YHRFQDeZrAGxXAc0`oL8&0mcy<(K)i@PRr-3&nNl?2qsTS z&43J8OML2nd*lyd&Ong4Yqjy^cvXnSgMh*zTKLg(i(5=W!&{RFTyY)&?jh`=jlE+( zJ6Ev8Z{3_d7n$+%Xu;YXz@*eb#^^2s4<4lZ7n+v>&ZM9Dc(t~_m5@6M@+-VTv{_A! zVxeQ6m(umBn1S=tvT(;~^x*d*SL&iy0*{_(oX-UK%y^WOegbZ(~cD@(LvT(#YCZRM@JJQE1o7sWP} znP?2em0yx^dkma343T*l& zHBhI8UzP0tG1(|#a<==>X4yERSV*-I^VDCND*2Y{zOgwgzVQX&h2#tZ7?%H^j&EU$ z{DjSab(e-k?8fXpStTwE(3CKt4uz_!c( z>#F><%|LQXRs;#jIM-+KtJzM1eSb}h9$FIUCB*Q5^3Mg*8;!ec!x$L*d7O!Z2k#vkV^w#&wyLsLp5nNu_uCo?;e zz)r?-Uw@7_+G)b(fVE^L_GVQCi(_5?8_9ndGHuJASUtBh8Ztm^Xe;&JC&wY}^Ep1p zAxumqQ*anXfKt{TY6u-iNG&S~*#`80wk1l_Kle2LPCj>o@VEp5F z92*Qs#Vhgr{lNX92magmUmLDvk5}%}A$U9x!Dc038CPe)IG1lxEiWNWSsYZWn zZk@4ti+#2YMFa`_C=?_M`rm1GWFY&`lTNJKB|BUYZ&76 zbE5pFedlw-xbsaGo9Yiv$M>f3IGq*ztY0wd#sTw{^N#o*v$>dZTB8Wun>x!q8(oaL z>zp#cBz6Rwg4hPTK@YL|R z1`^qkzQZ)5EPYLWiVSqBMKJ4v()iPjt?=c)XZ&Y|{YF-#UD;3MsOzK4q2D%J5}u^8 zvg4GfXN<`AGwf+Cb$nGwB|ZNqY`;y8Upoca4z`F`#vtVtj6=iha=87vn^Z9crgmTq z&0IQZK$qM8=;Ocsz<;G`c7=rI$lhx#>Pwqt5>_P(%ye(d?DYq)^qj%I?f)~;{yaeX zuefW3X4Cr_Vv$BNT`*F~Ox>v|tvMT`Mz)Xrtq*_ix99=@cx7q^{MuSCE1h9@Ah`!} zJL$V_!Qo`P9n@4oa^dVtK0&|aeRrU05>`wdHiiPv3|q*dYlbWxS4ldK_+&Ptx&r9( z3P=6K&4fGb>u6iAF3 zjf3cb`cgeoR=;&x@EG+jh?OuND#gb!KYR-%_xpT-%VhYwhTJfHkN!JSJ0j?a8QN~I z`m0Yxa1NgdH^83ocj@#iSg>*lz;eH52Ocds87umq(IhG+Zf%Qja7`VpJg3^l&{WMs z#cGmvW^O8qf<493jkmh8-3@t{qnLGe<0%QgYm}3)Jt++LKH%ib0$s$yBQnirzQQpW z(v+43nY&U~YZiIT%a>kL5K1byPUg2xbW3VNkZ)9@H~0VzVe8o?QFz8eJ?oKCbhRYt zY=}muEZ+z()$Qe|LYY*-96Gd=woqA_rJdbQqIKDf4BZQo_h3+a?tDEBb)wZxw@XGe zYpMeo{K-OJ=dmjdiZmeL6My;d!T9wTPMgHoIIE#~MGupjCK3wrmg-C{aNP^+qm0bY9#mc4t8t}${&e}g17+jN;=;sSOt#rxtip|uma2OdGsbk zXgRJp>--!VAQt?H)n;|K4H+Ec6f0NlaPP!DH*$S-^uwB53#&8Ht#xaolha^2%|k16 ztc%C`tGbU#B5$87x41;*tK3ntITpj7P>zJPaqrymvXG8<2^}>Y@iC&<5Zs-`x)67M{DYUzjwt=sU3m;A7X7Nj7W;i`pMG0gmrul0Y^rxkyW1`TmV7I6}(q z%2N)hn@J08%c_8)p;xwl^x!tM2c5?0sBEzIS*#oQ<*c@=yc@N@r{{5;Khr)=VkV|b zT)IJFjr`}dTw`in-US<4a~hh`Xqgz-fiKL$#K>wl^m(m_31hV3pj zCz>sB$KXGd3y5UM#Q&+Xl z=@C5{@6|2eQF3W7A)TAxitjrA-mP2b>x{IGH_RSbBN`re|u`adgD8@@$>sOt!4RKYK~NEZKy6q ztbfDE?8tp(NHOViDy@hU_mVS99T%5$$$aOJuzJ*aR@j#FL*TuLa3`>?wgSjtZo^LCh& z5(Ef21~@2-GbqD%BaZPFw7 zs^4 znr(?(60xxd1~T=E92kij?cT?y*4D-$Nq*Jo@1;$)a@gdO9iiC-j~X`7xGpCT7IIR# z=j_|heL-t?eZpg&QRQNlNLMNkug-RWCYeWwW@=;;QTHqXsB~u}#;VlASjDXD11gl! znFwOIq`;^3zg<_iTGhQWROO*Y`rng zg!=QQjTw$uiSA1yybY}y327AoY=D%9OBfNXDV?;zn<#Q@G!s-l?{4jtsTem-p)vET zt`-$=AFE#dO8r*ZE3Z8rdjABn3kpJq{?g;}?&G9i&Ws4nXKS|Eb*`w!ubZAz4SZ)4 zC?tAo{WDfK`5&83ujmIW3?%m9LlW$$!tt3~z|#h6G($Vtf;i#%RP3Me1IZW^HRj0> zh$d=A3Lt{;>=rz_nZbW|K4=Nz{$!Pn?-)kKgF|8%o#16h^I zOCGFaz0~RL5Uu<%)UQ`>+fa0!g;e(N0R=MZs4&Jlo!X_4asYW36J-8w->E#;#|o(L z(d5|##Y0mp&c`du=hwcdXDg~VYZCqoG(a3fl=XjT=bXh6*v zz=LXxB=`)6eYv4{*TT(N#sW$UC{`@oPIY`1y%kDV zVU)goSp2ZG4B|IEeEnLBaF~GTQAaN6ooNkjF$5#?GXX#PY(_Q}VZw*aR#)*uzp*2v z6B-B{h)OxH61(~6r9RV=N}2{C4IjbwSDZ2E+?~y~M+!nrarahtK@64~=mZyFK$d)& zGI2E^vgc7RRAWkylhRt^&N{~`o9B7y&WoI3nd6(;E~CTMdnQaxxoVN!+LxU1!GmiZ z6L7=i&>F{H$UWz8<*8;P2&`ic){~^k5}O`x(#1XI-qf7*XR10uHZEb^8vc!LX|;=t z)*Z{>&@FIwvtXsS0dAY|-DASS{2D*>&aYU&-lo0Vx99jIQEp#?&zUF3NR~!rn;57g z$DoX?Z`_$^>6^hF09kkHPLMM4vD7aDW2EK1hE>z7fK@t3Xq14J+g!M&{-(&)C&Ki* zP@Bm8iMMy^NV;i`Y8?cv?=IyNT$q=k2*7L0O2i;}R2|e`V877S+~@CsBdSS$p-9@; zFKOUg3LBoM_8)-ElUKhgiJ7I$&Hhrrch8>1*H82%GqytB$%r2nf*XU|1C2V5lM+D; zL1jGeQ}Hs#RpZPO*M#08cJ0S(iU`?xA|lm4!~0&Z5iMNmOHxF6NOg%qSfJ;0X``=1iYi%VKw@PsFFYq-fCry zJ7GhKMkB5@4|LACs1gVi&aXb_N>LLCvXT?LCi>+-Oa#$ZQ@aEiBDmV%UR|Ap*2+p$ z=hu^jUa$<8q%yMa5(0|r4E!sXHh~*Uo=?HrH=`a__2>wE?2TTKQA;kV?7Gcgt9}-L z@Ntl#J4o35X@=EX?2m%bNxZX#=wsK@v_|iWxm-(MYxzFbt`ue)N9E3&<(S?@wP|B& zQoQh;4giAp0_sASM5VKOhkd(6zkyN0%Mtp}2$+6+4@C)Jb9?*{TY{xJxU}lYsTZ>j zXCs?3Xtn`+(I$()W3AHu4NgB5ei##ABnw7Y-@hpM(nO}{Y{ir`xvD^r0~bH-jo1rY zqOtuEo^bm#oaF=&(|b;qjfsRzfKeA2X#p!-`vw3=tHriKVC48584c<4HGvlEE(1Wo zqC(gG9{bpSX-fp6chV7Gqbj+b(|z3>X!a-_>DlJSg^m6}1{X+me6AE>l$dt#TDnSi z>x9b?fiK83c+vRvUaI3uUSU774UBiQ|FGD#61%E>H8mN?4yAuvM?+93!Npetu5tIU z+jzI6VGmHNw^f6z^L5RXSLEa)a_FaY#0-43TDt|9z{vBk3?c*lIMagykSBHZc2^a{@Tk8d_&M& z&S2g7bKeZa#2riGx`$n#-YbcefR@dcuwGU4nu^GcS(c`-SA#)BQ~1N=R|o6mW40R> ztJy_Io}Uknog8j3=dMqfudu+lrU^WidaFeC5e!fHit_~5L02`NH3hX*v>eQzWu%Xh zzXR~>8+vDxJ>`0aL`H`c>NM)n_rQ{KmwbOC?8G7-_(Vz{4yUZZvYyHj)7nSdt?rv|)uvBy@rW+WBRT zGY9!j)QRjOf3XV>QxGGWA<7!4Fo*kb?a6X$Wles6VKIa72+b|?fY8F^=xT=tk$Crl z-Xu5zC6Ys*mX|mfY)5E9>1V3B&q5h7CLFL{qEY(0a~vsnm?P;p(Vuxq3Zj=e?`=sa zusdV7UoB7>pL9v#-*I46rML6Tu&kcXy3*=1{LW$U#gT7!?t`QtPZnP!&DeAN8WE|_ zE-5lT9yD1?-B=83QBEZtiA!W^@L+I6v{I~=vA4QPR0#4BJJw+8fy6I*iAnI&LZE#( zGw#=F*zipXT1RIlt3t$3o~m~V#1#?9INe0)?Hy)FVW7~&_mVhEyz??~eHgy5SwvcK za@9fm05J9-Z4AhMK`^r{uIPx142+_7jeqj4+-aiHxZHW~13~DGwV$c6VeUMZ`(FQa z_%z{jb!bp)m9C%kI_5F*0RkFYEf4+R8ww8}ns4q#Ky70LV$#zks8UhV z@#AvXKUboC=JcWQGU4XRf1wqpqf~Q_FsHAK<7BrmF4oPM-@U5teZ{N6TL2kh0x3o4 zv(4dR=`Iyqq7Ol>+E|1~jb-ZRsOk9P2*>9znY>G0{&7-KNw(ViouIyR*wMl&f#EG& zlBonAh1^K?=lq5wl^cp-9@$upEW0>TIb6+Qf%oVXbsUA_#QlUORHvHYSSQ!QDFICd zmJ@WADDBY{j9WXMp;L-KDN-7LCDY`u%t7?}!=x=|-{WfS-t42eBxzl##g<2jE{UaD98G zaJ(v|A1bS9cAae%r(Th{L1K`~uBiV~g}*v1scYIY7(EH-?`COJlNTz0a14O}D;m+D zgJ<9|>~*QJ4e+8mR8m(eeSuX23ZHoHJTSRmK|J|1d~90IZohr}iA!?TtZlE^v^NVT zwLh-`DCLs%s~}LFS;aq=`?3aT2s2sZ*{x``?FPrN-rf>RKg}<**z@OwMg1}rTt0r9 z`C(Sl5HSmI;~}{0dwr%OVjV%w-2ocS>7p23quCY1vRz_5E?5HJicj$4fcs7uvPm8) z(o`xUjn|4XQ2(wIX^kWK!@El0gLWQ_Jn{)(Oa0^01_|Fq_dRG%|fy#p;zAr{X z^1QbJIXc0vA#))FjSVVs((@2#5ju%q&xphaVH+eq#8=qf;%u?gE^_FqVm2^F@s`zt z0?Fk(O}k3&eyBv`|P>vX*>oOa3xd? z-{uO|undv7Xs?C1vz7^g7_seWPK}Ae{^VgS(r?HhB3A2y@Is87b{+=#gokb$fi~JZ zCXpJVb_Ozq1?&KkdTg#&Lt$ay`+7w#o|@h4OoTwMd%E^PZAD|PQ8(-mD%o=Va4`i~ zeiw`Pv7$zEea(R~uz&BfX%Mddvf6UTBnmDBFAf&P4YDa4d0YH5xGhKyle{r2ZEFPH zzV8!XI6y*}iTZ$W#tdj8y!B76L3OlKET9m$djM^(6XJ2)E?g?E-l9IrrM69Aa!bwN5@z5; zzFPp%k9`bIj%Xhg#yZtPGSM1!Utf6jJYm5RCW_Rn2UytEtaPm|!xyh&|8RerW8hM;bvwdk+q($2f-H?pM_FKc-*- z6k4C$O#^`wyxxo*Y(z%58JFg%kNnalcT2We z4f#{q>4D)LcBJ7EboU~Yr?mxx)8LZeXT)WKPvOv*tDw{K?gV2M3EmbDAk|FQ&EnG` zm$;sT^oOBeao{9$_=jNag-95EshLnr22Q>=3Dzz;>mi*|{zn4rd+vNk zYRrrXEyT@nsiv!(S4HKc2n|Mzj29W9f)I;z48Org>&YM3J@-Xtu%@(UjPSoG%Dd_vJe6n^aDnZ<^`;4B_>`w1Ob2&G&8;ebQg!9xQ-{1?Ep^8N{48TT?@5lLp%Fi(z_D3lgUd9!XLgL&ETC0?8T^K#PO$8b7+QKAqyVn_dEqWwrna}fMz z+DDu8jr`49zMD&WQ4S;sG?&e)u6WsXv1=pLIru|f?#vs^U!PuL?z^`oj^7E~tm@R2 zZEh<*|JZX0Hq_7KgB=NX*t&HB)mDX@vaAl90eF6w%e9CQSD;FwCB-f9SQr$Fr?}A}{X8TgV2Y+2g9uIqf+UXWmccgkQ zwlLvvcjA4s*da@SKGY9|NX4H4Uur~HNO#;<5gNxuS=(UQ99}MKC|7uJ9Aj(4Lwt!`iF~B9nk@ zr&c8n<#dza6pBW7W7N@jtHOkT&_nIZT zc}N=pNWg-d&&<=&Z3*h+rCr!p(|Ho&ESf}4=cU@X&@HU)QCbVrm_jB4tEt*?&-Kq@ zo>)9)(G?x%UkZ-b9u3`xn98OIh)&TDFRZNr@G*4LZ)xkJExOn+apa0+@)wgO0FlK$ zlR_P?Y}|;Jr~1KM`AFT&tNMjN17RIGFM&zUAWq}z+2KIPszrY_`a^HdvQTh9EGN2Z z>^~2>5Gb$6fRkQ_1E!zdG%f^Se*a|!d9H}m5Er98gfIV@7k&e~!?a>e;9XjU-8%kjT-u8&68qlqW0yaX_)?W=B7a2ce07d4GiwH`=Cu*N@NuiLwHk0 zx~haL@p~rm2_avc8sV2ag}??XC4*iES$j{mCy6;qUj_OYkgEZkeuBYkT+16tycxn!M%^5`4NheM_r$heP8P>|^GoPuf@ zu3rYRzs2OA8Pz}ebE(c5pE%Y!t%$}N62?}h(rpBpfR;=h*mf$1?Xx$t)T=We!kndxDl?4*Nm`W~m0=0{m5Yo6!@jp&j^|o;m=YOcNJ9gHZyE#2Nc)0 zWeNj~xOzcMyGb#~|uV z`Xp1$)3OGvZpv#gf3bD)w^&B^ZgLF>-w2&0Rl3Htj8T=y<~yb!m!fOIAmI*dD!f9k zG3cj@k3tEJ_8yR)E0Vygfnp|?O~8)e6eK%t$V&(um1lW%9cH7|j*}$A>XaguPdoWP z9yw^v&E|aj^91DGMN{rWVj{sWNwwl$PAq9frP`_7nqhzYFBe~9iy$$?|DBZWlS*^c zXF}r80N{|v;XKVNqd{@VZN$=;fF&NH|HXbo-ao(PT|-G-u*$bYb=aflcr}K*S#zlV zJwl1O6k@^KR(oy#d4bP7>QJv*%aD;k zw*gePJ%KH*-Dll$(oHusJr9mk7f|c&)K@_v+&#&aLBk_n{sf4%`ATt{A6?z2%|ynR z-zKl^TZS-HF?bR@y$*D53S~7Wa5tE(l!6c^ixj|4mhuC7ZwdbwVwS3PF3D$LSZ_~X)vuOYrGOGw7T)o7z9lt5;VNTJ*SYR62 zO`IzP82uBnLE5xPqV7`bd;+Bmm0_cUp37X*G*?lR+|(3Xpk6<^M0jw`Gu8!`1;92* zFHZh<<-u~64#DTEnN5$&EoG9FhV^cJRq17IT6A2f^hi(AxH(BKSm? z`}_nyBhB1nyncc{-n9OTyVQ*nLqWr`IJ9M#7yhTBkx@Nat1E26Q-?ccYb~8?3H6Tj z&KRQ}>gp*F5^BY`X;ICp;MT+H#UOp1=5x6#;RpdAALQx|mh4meQN!qI$x*S}g50en zlzE1+9X4=ZlMl~SNl>!DIp4ul>E*vd-in7LF&q-~Wz3)RhO8)O-^oU|16{(EiA0BT z3nvGFodQ+9;Nmx-jzPzY)WfnY=!8Z>pvsQE=8eI^Y30=qL-Y=a;w)nLLtsfLm)iFxid53&v?uwJ7v>XIX#JyTO?ehtHPqSjz556T`oV9u%Lv&?qE%BXF|&I?pBdYT ztz%Hbfoj@4rQ)4wfDzk61j1I#!UVMA^i?a@ zgCm@2{K`#*g8fu50EH1!`k8ySf4n!#>nLq)y&2Tp2BepmPB_u*CxmodR$gdY>qYW9 z!ATjvK?){iG7`-BGuz-M#G(jbF9$tIv5VMEvkYAaN9ZTVpdMlD_j8=edV5|EV$fP3_i`t_XW5ipzE9Jifwm9 zjZfP3sn7%PDt5tbm;E!2KUacVr)50En)~J<9N=SXb*ps{MQUi1(2!GdK9rG?B2U38 zEc^BPbT245qW}mTs-?)c%{I1U9v$BA_T!!VpI}1R~e)EndsMLnaMJ>+eS+ zDsE=I8;M~@R8p3z6{_a6jO@GXLvjESIFb+n2}M8wn^O5z@_no0*yXXF z_J2HW5(ACw;Qx>Wqzu!*zy6#2fpYZHCfOAgy7!1;$5|4ncYTrZ^*PK<++ZAOTZ%$BL6p&>GISa80dex;t8vwnQ>e;yTlT$oOobi7jc*77cR%8Ht$)iX zGrYLxTZ|szYIUsyfftmL#Oi}hMP{v&x>L_@h0Y(0)_3f^S+UgCjw`6={)in??EpEVz zz7lq|QFE|$?80nxj?n0P_C_n>hw^!YDgv3=DJ^^gA}|@KmyNinpNMt13q9i>Rm)pe zCgfLa-XWE|d6wxB_r{x_#biInjM^NEpfK@9$jma|8;aT>(X4p_1APgxVUpc$CpBT= zRQwwggAq!VH!{>fuM=ix(JuE&(QX`!W*tHLi%Y`iU$Iw}m>BYN%%+C=SA?c%_Ccs! zbTD|NJkDR1h@zLVeYsFO_Z&X>RUMsEsXPwN3u44|E5I0}t+6KXy)sSrahK;`Hz*wl z{y=3rC01Ee5>l|W%8UQ~R9wz~8qTqwB}y!K${c40B)Gi4Q0eGEf2(R3lI1W1P3{`K z+@TeJ8t(G&H+t+zbVW@{`G+zLzMH}aL2_DK9>ODN9KJ(83An?BSU$S*Xnr^9(;8SC zKu_elMgF+sRyo~6pO;3sA$?@{2SHyxd2tBA8^n^No8tPPs{+l(o_3KM44f|JT7%nC z_9ANG+WRB$I+$DTZLA)Iu0PB0$d(&+s7=RTzh7!_ORNorxuweLz*5|u6e{1W^s|zV zfou1HADEn`&wgn8C)u0^G-N(uHQ;zHsf2#`CZ{`?a|6ezU0AJ7nq5>$sV zO{Z(2i2U5(gsfU4FX)!!fAR37MApc#m z%D-53;oeqs2aEJXBrrBlc`Gt&lHpDuYtkz3j6LTCsWWo7ZNrp?|HIKOAKJ)!GIr5- zTVS+n{6|_?Ax1j}e^^Mam z(xqeQAJEK&SgxkC{N*yderlm98k@)6DBmudRs^oVurA7#E<)9Lmfy@(Zm7tbc|q@2 zfl>Wkgpc+l>ry+|E~$(VS*M?f>gfr&F6^D%IhBQ7%x?cI6icMY2W{!FGH5nIor^k_ z6>lYsM20Ww&{lIZX;-B{j;WOOUIF(X|J(ePbMGTnS5D$D0-uh{Iy-KYA|{C|qT1V^k)`;1LcI`baYg;ExL~geX%!b75s3#BUY!^_zn(3x zVW9XUs0|OA>q{f|yzR(A^0utQRwG{mTA!qTshde_cD_DYeO-PRJVFOWoG$E#1B3_b z#mRE&bKv12p3k1e zf&Pz4maBU`zK>t=RiULOeBX@U4}eWo@y*&FGe28!u;pY$)bD9JXegg&@sC{^nMI09 z`%qlv7TQ68Ny6ib;A?wFZn|&Pl&!mb^^5y$wC1nGZKfb+c*{V=)AV;#jDOb&JQL;I z2;X)6A@Quv9TAzoht^A&O-aLVN->8>{Rolkya76d#>KlDw&&e|?nr|94g5B^)8<31YL7_;?QjM{F z`%+}vhaw00U52aHMD?#!plGHm``El!g<|ZHES|S(wG*Krp}x&;8r3QI1ac6u-^4de z*nC$1U=RMDS$rg{gMb8F>zecT&QpWDa6V zvAC@tCuAL{umtbd?CtCL1GjL*9^>zKo_Z?Dm+G9vP@@zPEy5#QWmFe9fz3c{RJX4l zjHgxr1fHg9)$Uh692%6bm4$d}8We4zS+F|^dn*y->cj22Y1q5T9tjp`wYB|I3+{gT z!$h|4JQ*jhDC=3TE4h%jWKjZFl0EzN$ALY5^9%F>Ef?iNm8}kj-KDsQAp6D~_!hRS zSvt0KE~{NKWZx)5@F8MfY;IEudE6#L$5U zq@`LJ#veoO7qDxY9b$Av5*A@i`5MvJ=mkm1nuU0iZ8P2ADtxKk%_Y)cm}QPv9Z;Zs z^tXAcTLI#HaEjzRBUD~-iqAox{GjrOF;=0A(CWL@s~k=`t`9u4p^-Sj{;oytI=`Sb zk~j7txFpS4b8>526O4o;Q(M6+4st}?0O51glB%KAHq1>$u6y3YUE%`|J1T(hhT%FQ zCJq_^qL=xHeE#N9ec(K-Yg?n5dazP^1Ih~$U7&(dF0yt0?=$RPW>oOW&S8jR+)P|O zEn2FlnS#J_dG^ZbIOuaE>| zJy?)!+`cnl=CCn3`K-Po4jsKp&|p!K(oLGvqbm*}Y=Hf0&c$aijM>Tn1F@j|zB}BQ zOPcBvt%Tg8(YBRlf7;y*3D+2AB78sA95xPVu^0L9E&bWBon6UIl0WPlfm5TgfHPMu zm=s<2)eHA0%z#o!SFq0-A64q6hY2e_lrk zMtKS_d0H z);HK!Gh~E}av6NutbYAKtPYyS<;CfXZmp!|L)is#6u2e2Q+wzl5Zk#NdY?{w?zS2! zw_&sD;|>ONUh72(&xYH;iN9eSa(A*g|MJCmr#3vl{}jA)zp8guA9HOY`vW?tKRfTY zuRkxw`($A$2SE{&1V3X0Aix+I|H6JyM}j|spY7_t3bDrs*z=O45;z*gqgs=`6Ony> zzZmHxQZ~4|vDCC#YN<9xo>{$wp^em*LQV;Y>({QTXd|^V5S4SfR9n|?e}+=?$H+5z z>1io^>Go(9spBhR(L)j!F*%eBG9gB&_Y&(=bkkp$ zOQUHMvE+>KLxpCN`idANHtYOZAX%XkuFE%TGOCIooMB%NZZwj?Vqi_Ad4v}IV_z=Y+Ww+jZ><1pEcBr%agD`l zj1Vg^-2%o3Hm`ccqO33Efw8Oih&med=C68t2@?*X&FefkQ^EIQ#5_TOD$8r{`}bnq z(d8{F`LW2j2WS;d_d+Mkj&N-itm z52A%lM3FYyPoX3KEfKJhPqCD$Hx@NN|I)wqcT^AjG}!Mo2KjI>rvh0lJcr3{`#<8| z--*CkzV&=UStL@yrd5R81?n(xqS6Hb;Q4OFLeW5u?ELv_j#APAdHR$A>*F;upr^it z%=4!sO<^NN6qhrA6j)i#2G*oOIN2| zSj1X&wFAv;^*H0jx?M6$DMKyz7yV#M^lTkA3SFe?;n*d3}kxaV5yEpmZ-MrdIr4)63UZZpz7_A18 zcIc9;G`Tj;2NE%Znc~ea`IR1=$&r#Fvkc6Kx1Z4`8Kq+dW1qbDJ)wx-bC!d>BDteB zKq9Y^z}u3UBUwzc2GUzyUUrz;ugxwUeG?k9Ys?MsXTN%Urk?d*VIdko2^sTgH`>n{ zE9aBzsBSZ7(C$YqX4OQ>a((w!D=Y>Xwi~)F6acNnbSeo{`I~2Jqd}APOn+g1b}Z;$ ziMrKJiO)W-UY2Dkw=8X0y|MX47xQ-OJ z(7$tOrTE}jLhkPXp{e3Hh`8YRR&U)L|9-A<7}=pw$_^ibU~g)%P<=x8ML$djXCfSI ze5Nj9koB9}0|C^rA*750!ymC; z+}{fme)A(6!Ol_=o4N&|8mMfMts#PpJ+ax+W420#^b6Xq5-269z$%1`Og!a&O*~TKeWH)IXHYp1T0Nr zn-r1c6)CY&3;phSeqs_!kxY#` zIy6A7S;ud3LvwrVom^cL!f@)ZK!CDz!@xCD4$R*2QeYnaNpRLL#ws!b8H)1w78TXD z%jUfdR;N7lxM&nDnj+7bPY^f7l~o_G(b56qYgv6$G_CKU z9ouL|FSZA(E&VbZUkBiB2Ukwx-h5DIxJzc$GH;w`Jd&#XwGdN2+y|O=`2@_NhQ*ew z-gqk^rqu3@@cOP9(g0oc9$K;eys=pkf6X+Vvs}i;l@qQ|dyvpUNR!U5q>z_EUlJy1 z435<*B_fc^DpwhzlJQIE^)rARODcFwu`2&|k2;h@ zCd$D_yNBnNBMf$+nd>boJ5^x>isfaaV(HgTl`uZ#agn{!se_=Bf(?9Rs)en-nV^&R zx2h(b-(`9|7Lo(_j|2Kfn5HG7_zFGW-dLbtH2L)v(;BNaw~2<{W6HUXe>TBgAT%j| zC%^a+#CHW;Q$0uqAHsVdjJ;~kU)cQ00W>44cTZXVoWf8pwbkM9j#@A^8Ecib%~~$_ z^e;|2@P{!nHwxsr$(MzZ>mL*yrry64+1k>1K&-Lldpi9CCjqWWqHtI!pK^`bNE|q) zO%danvSQ;~~MSQb#tb^cwhA~WL7BDFuz;bRlX3OAu z?beOT&c-i}xf;U#Q2h*=J$ku}dYwDj^aI6fxp(GUAl!X~s$+9+kPE2Z5r!)eav>2L zuktQjF6xO8nj@O!SK5h_E+gA&BYD1$RFcE=o!qk6n}&wBy$yb^Ii?P#D1;QLrVzd( zKG^CXnyB;2CHw|%9nN00Jw}_Do8kZWAebvI*SBS$i0RZ)CZCfK5#TqnS%87B_NHd4 zAQzp|{C3DumaYHiPnKLs6;qan@{iL&aBSPE9oUzYTm6$7ONunhc~#;1@dCLVPe1MW zRyWB&u0c0ciZz>-A>wxZ0tL>Q&xk1v988a9JsZ6VApZBjlWvn0!sZ9!1J+s;a}U<< zn=fR^KXUYJ#_HMZ-S%2ft35?|rl!$Y2iGVW0dy3&sI*G$Ym`T^4zpc5sR1tc(! z4LooH9CYH}_5y_V-M?~5ww1tFXi3K-_dm=gT#F8;M*{5!D*rbLjcC~{lLG5H7=IJjG=HGN6OBl?!Ik^rgHwQE^c$+iwJH) zP<$hwMjBb(w6|PDOHvn5tTpDk;-t1G9{)=+biI7#=NdLQSa1kiJ;%|>xTkd1rRr+C z^#g4?qijF(8$5Hi8fB zKF$HyYjExukyJ)$jg$GHZb1qXhzOeKpV?T4-9Pq{q4J_?Lem6kLhz+K*t(qU;vS>j zJP>l5)RtO(1z6wg*So2;FlpyRqZ0Sie&wukE6qf05j71}+{KpiK|VWTAs#6m&0wy7 z2ClC6i(jxj71>*Zc}^N_4PXf;^c3m-!F-B)kEnhGjix{H9oSN(K_xB$_fk6EzvHO3 ztu1MHYwV&17NoRCJE`=yNx|3RZ;$At1!#+Xq78``3_FeKimCw4W^VqYlzJ8`KNjJE zAvf188QY|v5~6LO#Azt%tX=!oW1GDu_-`$~O*&@*K}LD()e}w8t6?KtBMDy1n1+k zd@l}bK}(*i;Sf0`3=^kd+=Ge zzu8R=hjI26);RK1KfH~0DEZ3Z*}7~QGA2P85-i8+cuZK<{Lg9nl-OTE?dhPncjF-N zPeDOkf31GZRqnH|2*AYI9qiT3A!6grtI|uR1(h>CzQjbC6{$b62iA?s==l`wTckyJ z{egVcrNZ%4eqOw4k?{&cr*65w<&u!Y{Uv`dlg2BJeZ%|@V-Q-p_%v!lgs6NVyc;bN z_=HTw{U!3*iI5lu3Vx6I=Eq*a_V${FH2$OiSYm_(&=OF_sZ?lfu-%2@AWv)bVRz~55 zhTNdQ)^u8b-eQZlh~3AS;BwDG=lE`QEf!1)#-PQK=b*VbB8H~9+`=Gk#Mtv~q}ASs z3Z~a$2fu670yPuw7x`(4G@rz;AbJeo&38G58D>lcRhk$XfBfPyDVmxIPswn~tbPod)=;63KXyE@!j_l~-_8E@WT;j-D+Q=eClt5+2mb(AB-ZHlKqAil@Q10Q@ zV4mJ*l@adbAFDJ|{)??07z6)tRA>uI6i_V!hjMYws^?Yu958 zJeAw)A`K6H*t2;iTR+bP;2M~uqRjp9mL8O-$z77|y!*SwkVIkIG_ju4S~W1#0GN&? z0iVIpN5ncPK!ys|1~ld}AjT&^2>@l$4i!X80`apl>{CKB@64u1D3Cx*03?}heYlX@A_fzj^hYxKm75_Ct1F9wdk z6!BdXBTzPlIlTY?lG{WB=V?X_D1hkpNIVJ3`{|* z;E1iT7PHC&0H}`f)}iUW90PLBn?g07&;;Bb4F-wu{5+lckW682UmKgY|G`>TI5Od` zhf$!enRtUWr4t7bhtUiPwEsh1l0P ziQi;(*F_;_U4J+K8kHZ5;tOQ|b}(0$RPKtb$eUl@ogJQYeXgThy*nRumYaMfdxqtD z!V~f)kdWzsl!#DrXuU%3lSq|vrOSTQHT9Y`4FRv5mB2*Gb(c+i$*Wc{w=M6Vhl#P2 z3X;f{IMK~iV|R1-s(grX$gC8n)wWVQee-mP(pHPK?eFLPbw%HVql`s$&#>u{)z=K^ z_yaT$cwc6WXWY!3V2xWx(nqN3yS*mOzYN037ev!T*xxzM6qD(>OVR!IA}ngcUce^f z?7jOd$8^`_=^CGz{%WPr0Wjt`AI0co!rTQ|4T1f(;6YZ_kW~+bMx!6Zcyi01(oZ@$ z#XfYrA+s-M6XU^sHEOM&!v&y4@XV8?(-kmu z;}R!IZUH*Yx~w|`$EN|u5^VcOD9)wnm(Lk|?u9v&egLg3T0-HAF=dXr8gg$HHElU| z3v3IW&M!lT0l6>OLes~|UoHkv{6Qqq)tA~;Up~XoqZOL}U#@2aEhC-45x7*y_=)A9 z*vI4Dj=h2AnO;2<|8<7hP>$LvF%Kt87jUd(Xs~b-`G3FdgWt3912`_93U7eNSjsfF zTvkJn0hWK$3?ADh3G)PPk!-1;KU)ZBRgB`ahe%pcVk3!7~HKxnQriczGwB+0u^@!;v_4Dk`)m4(AbWPZ<>{Zk6ft?* zR1dB@^Ev|BV&_Mb1}=$rUAhj>)*!Cpw^BvWr!Rfu*gN{)a@Y{Mr&+`cZE}ySj{P(< zMAMyK&2Dnw=qwl`nN`1^Yv_pbwD}|feZ9j&PiL684}>H-fvrXxzEn0x5t+D^#MffF ztx`x7kQ*BAo@lH&1HlTJz;^0@sO0kXD|!TMg>fvk>8RtMk-h?j;3J{^)k+dyrpE@- zJD+NapA#SD?1@k8BNctmQ9FpXIv+W;1yu>sQ8#fUsJ;E&+sO+E8kN3uK6kX9?0I8a z#e<;)b~l}hqX8kEAIxO<7t!UPRhnJxDC-yx3mCiJ;HJN6BOEez5^D6qfqM*J5L|8W zB$g8aql!=`x;6*!&esLJra{$Udf3JTH#mdnrbcJFk?e}x8!xq*{tV2Pow8^$f%`tx zymJbCVWUGr-VmE?;0hYB;{s#WV_yJ0p57GQNRYlxv3eMA53mPVl5-|k%peV%Mn^S} zz?q3nr<0R1P`jHVAm5ZZ&ZGXh0#nN6C8cm4ZL3VlT+_u_+)(kq36|~8+;cw#E`Z@r zYBs_19S>ojCpgtdO+l?N8Zxc>;|Y<*d8C0ld!@`sXlbo5&(NaD9C8TS#vv-Za;~$k z>BWBdL77sEJeo|dv&n(Kfi?;EF9YByTT}Wq4CTv7P|R>FzCjR0Nu!~`;67h9d(u>r zI@_8Ytq9zVn%^7c1pNTn)E8V|G0uJiT))S5pVURJPm$I)mzm8_GSGtj9m^)ph37lR zWAtCOly5;DsJ|cun+4Kj`*;kAVikUU9IHFmu^V!v_%2SZ6_DxL&U^xmT(u6V4H#Mv?0%_I%_ExkF0Y;az11Nz8xYs|P76q807Xl5{~ z5$(9tjlGt@eUQHo*OsHNvta_+Y~G-K&F_-j+%7zN&mDY~B_U3~UD^3P6@Hx&NONQ>4HQ$kE9fqH^D}9C~WLo9LZNKgZYvFO2W$2lF z9lPj$<|(OFu;I%r81N);Tx9Ru+LcPF`O;5_yR)j_VEwFxy#6c(+A|C9+}u#@V4V1f zZD>Y`CSFci<2%p^3VM@p>!^<+7G`W;M{_k5s{Y<;EY6k?8LiLmq8`?uD0qEV__G;q z8AcHwmu)Q7LpukzQr#0GEW-G}K+;(W(X*nLlNyyi07ilNO0u5tC#>eavaAQC_+>|tKeXO92mI_tMrbMD74pv#lO=9;UwPC4WZ}})Nd6kB2 zYZP^SvIbLMBu?f==7mAq;Y9>z_G_t=QKtTRDD{ZrF#+?cZ?B-ZSX>Ih8X3tQ{6XRenqG4Mawg%y#I;D&p1~GKJ zN-Y^-fSOF`XgaKReA67kJSrf zche})a98EAis?bam%Ro}rB{c6e?M`tg$ZLl@=TIN=6CP7yV#iF-J!;TNf>F3zXzw4 zRf@+203wlE3#^kr`_CLl-%l;I00!+OrV+lZMO)AX0~aJFp=P87pYpiTpkP{khCeBP zLPiG1(^W?mPaXEKKI};Oir>Dx3CXZ<+Mi(%7mb99ZW+I{dugqxPK)m47>sYl>eXgs z%;t!=c?lXN_Bh$UVzW(gXPs4~QoBw&W0U3!x(3${E<3&rXJtyB~ z4FT5p8uywYx75|`XKP0#NwTxdeuFiP1<+VP7mPm9IK{R%ms#J8JD!2+eu|2d66` z|0OtQE`?i@PV_jch$wbBuZp?P@~{A3A2(y%29xE3(-dtLv6vLK%oSJpw2dRWzAqi9 zxA8k$c#3GbhQbTs@iZG5EG0eh+>DtOq(EVUnCSkjO?jS|D2VCB33E&H$>$EjMKuhj zOqf60>H=Iv{Z&qXAtPJ|vIsQu=%GeUdjSSVv<)+{?9MLo)B*GeP9Fx(8%;&Ja!WQO zKm0h`dC;<=AowBJB<4)Wp)r8i9eXE02gyk)LNS4B+gbP&gakMmJl4Wg?KW&gKjJs5 z3yh@El(Fb6jji_4Lszuxo?0SB{Xm43Jho0GJ{X7rQZ3)tmLO3n}M8d#RV{{Zh+l zD&8-&f?4-9co<-Tb>#{o%NWm0$6t5H^Y5-h0#S@Yw>`7Q;Xa|+qRk@>GpmP+2?2E+ zg3N>fVe(ZnI8QC&dBtUNO9Tn50)w_pLz8V!hZ5u070`fkSP86GZt)#s(~I4F&7)V8 z&IFB9_jJ`?<9uvHH}Zk_`2gz`e+b`a;IWNAe3~>3rxUYnlGLJ+q#d7`%d3v(3jR+( zvw1uX<=EIjrt-5}-7!$UCS8n>2+tAnAhdf^p1;78kSR}9{xT}W}wAK-m?zDt?AgbJE-$64|B;+ebe0t!vTBB1`IZA%59Wm%w-z!I8{OXnV9N5@ovlqHXsQ(2Da5W-{uQ@ns+A zO@5{m3k5O=h(gIDpsO*_N@EZ5dgcyWUM6Vhu#Dy}O|d~tK=U*xiLS5oYVllq{qVJ9 z24Yv_$6;wSHHiyubzkb;x+U8Ha1gMJYIW@UX2G_*&QjmP`0VDAesZuqD)$)Kxgk&D zKO?3AzHN?L{Zn%Gd)Ztj=46B;0aXTl-hDB^54~zK(jA=tbA)Cj zE<1h>j)j5UE~G*r!<{{@CEk91Fjv;QMXG9_U=xw`n>8sG@=u$>dc@~1QF}T$XAeq& zot7s+lhz83ecd`4b9v5UA(%~o+ys^znsp5DZk_RX**+{6^miY?ymcfMm~mT%L_$^#XXF*hk?&iZ4=c z#Ml_eV~wg*@c~^CwFj5msQwXNh|%A0n3$wN&67KF{S1*8h0*=b5jBICDZSJ!4(x;w z3}A*MRp(x*f>yHj(u^TF1-kgK15<5!a|~gdNwhuzH|2$9#i*MFFCEHT7s1zNI5sO+ z_Egu%nfg-2qtc@*xo8SO008~8D{ezuQ6@&L=l3qX;Kbr`dZ25wkq$?Wd=`C`At;+k zJb%V#!HdxQ$$sMQxlkn&N)3sgO;31S+l-AD2){W2Ny!xPiHkN(LMzh49iBay6p6}e zBkUQ~Jl5yht`zl_){7dTnQw;;maQ#MWRg+)IeQ~Pz{ON(WRu7IMyqF)5n*|6p0+Jk zZ0S?bU*e~RqA>Tyt1&IFz{Gl*A<~&yS&_rn1i0Dl^TH1 zXsrnq+7qr2@cu$Ah{LYv2~O)W!ELY;&ZtsO;rG*9!+@!xi^s+Ptw3NqL^!SRXOO8C=86)YFtaax=_Cu8|qIAzcL&#Yh!IoJf6 zD#Yfbzl289H&jBihJ)~|828q^pCm;!cCn9}POKVB%x$B#&5sZTKp4M0nbMv=#nopv z>(R6)b^~*GaAE#Cs-$y12^%PpF96N~T;N#(+~e6RLbTWZ5tGumNvpq``=T`0s?-=c z#a3g_Fnqhw<7tfK1KbZl^tvvvhIaWTlv;n)GstUO-+R%jWf`u5S7x0KLlzwkxN?_K zTITl?gIro9M^#PP(A;iUey1zc3)@lg{QHIlb+d8s=V_JR+slGzDEB0g>Ttctn2?Z0Y?X~GI%-Yek?~w_Mg5W zP8jmyPP&_61Pv+eL^#guyYY5Bcc>z1SPS((B90R>aB(EI@%}tPKNQ79dhPU#>Ofw* zhz#%&PO6hemvV<|h~T%)^5uGW$uK~()>eLZwHJP|-sh~$3bTFjc3 zo6HI^P4#h)CK||UnB^r}lDFL^OlSD7#t$wsbIvA$@%V{9&t3$u$_4AY%eGRFGR8|N zV}7CAFD={~C^+QVbOZ*}R$CSOxIg2v1_$iX?;<@&g$I$2Q$*{RHT^#T=0F+0-&V27 zN*Xo)36i!~aaPl2i!@A83m~NOeSl8Pk)mlN2#2=Hm_F2ve$Y~ma2z9=c>~ed_)7AJ zJkYmcs)Nrhh&WUap-jKO4}|wPY^uwS>#{|T+Zj2l2?5;(0d$+SC*?KD)x_z2M8<~D zi!=kY3Bna|w7CNM6)5RFM9&-S{)DbiWT?yi6axKeS)dinOdm5lPB0+e{N6otGolPN zs@YY1fWUv0VRwZG3>3_g)M(|GJGIc~tr1uTU;qFHcktnz(;4nkClm*F9oum^A2q<< zPh-`V;`;r#QL@9WKadi4;SzLx`;M9q!+%Aq_5 z={@~9WQ||OF`W4oo9Z9V-i1*!XMBBRZ!(y5Y*zMSA*IB|_)r6i8tOWo;U4~7tXr@o zXT7bQ)v&Hf&=bso-H+3mxY;mGgGdUn@-8R`-gF56dSer&QmP?_jjrdx!QLi{%+l7s zE&w;+zpGg)7-)^rh-)k!)`h!y_G8RdbSjr&sud0rx6NEh{pgA~0VC^`vr%Io$76cAq_+kQsJaZ~af_%M}V* z7YB^~8Rzzp$!W?L2=QA7u68N^UT@_Jz55d%Y15gBr@gd^l{j#9D1_vaAZqBLeIZvs zsv$J?0qSUzBo5%NSXNOW5`K)mC_qkIg>y3_j%$4UvI- zP8J+!^V7ymsh{ptYM1{2SG7RfPQ~dQSUJ^8094YbtfL2iLRD2#5h?a>VEBE%Z}qUM zsr8`6_0m|^nNKbiLYZkN(BeT__y7PJ72&CB&X9{iIp$sy)c^qdvdwA-28&;!H(X=i zSr0r>HW9(>8~e#&y*tE%D~Zwabjw?Bt}lK3neR6IblY|ib$ZgmSC$`tFWH^)Y99p( z{P>p*$u;$UAi8}=&IHLZ{?6}SMT%5jK`e?c|NY&73(i$L8Nd7w)hqxH`hOwg%fxdR zYb+PnQlmDI)c2D(E?m_Y*(ZcWtFH32O+yaK6u~#Fd(Y7ncw@{KnJT(nB{nFPx=Rqq z1*OrhhETgnod^`t1i6hFdCTn|%^Tx5iKFPrjE};a_YKNNl$h zYeTTy5(fO61{Q&0^0jzZxRo+a7U&S9Ok5Of78~d)EIk`8#S}xR0=?TZRUw3UNOlfDitt#%B-h(40NN_=9~R{T#p9Z~4S>Cpn3X7KcR>9;sLq{@b`7B=n{t;LskDjDK{#GRn-9&fW$~prXpF)4&PCay>YPP zJGYU1PXqXSiXeGyH0dwsY%nmiP4jkp4;fC#RRfNEaj}SJsLGO1Y}zBc5w?-vf*uv80>oU5b2OWHNONw9y;0Wg`4<}=f5gS$H7gbYYWIv0_C>N{w{|P zLrXvkLkqx(=D+^kZ@&0n_E63{_2|ET*Fga(!Cci${PWv=B`<(Dn7Y*Vo_h@S-UzMZ zn?Rx_219HOe1Mg}>zi&0j{I7ujw{J2;6}ATExL{5K|-j(ROKOjF|7QAFi+Sr=8XpP zKL8@X@$mL|>-963NmRU2_r2f3vZRf}Hb13_@HA`jo+4QnUbsJ~&u=u}hO~AOj-R^K z5b4GL+eSQelud()ORicgZessNZ?n32?v{wcBc6++k=Ek!T%WaVugS?Yv7NFc!6*qx z$VF3x&c`4C0>%chHds>dlgjg~1w8Bq+=g!aNE{US;uM z6cr@PTZ(g|2zGrhl*LkOoppdLJ5*8X08>Vj0=bP5{^jA&V(;`E;{42+cjoR5v;!;g zx;udGlPr_hIc2c;4_$61`FA|u8{YKO;e&rs2YWOw3PXBiSX2Moi;qbiMXd#|>Nnfn zyN1)j$eAH*0L3l{p1Sl9Oht{vE(|PQG&RaTlIj0E zfD;>n`%mpL(wcj-buyNr?Xxc#(4ix#G*a=Vvx8j0nRn`e11qs1iwPCRI&0Z(h2ht- zuanrC>)H@mc}}8ai$u>M*s@4q^acxz4u)AMX_!vtv@%Wo9JefTC)Y>E0)X^Rv6ghW zUiF3kSp&r~=-AH$rXuQc6_Zk2bw*t|j zSVp2^aJ#!Yt9c>GiMqd^s5(e7=_}jGs&Jq$z`gm_1SCQ-xxYjh(~JD@s#S+L)HGCe zqKU89qMFSeg3=ovGn5aOk=pN#NPdjyAq!X*Kvtx>F{+G*z|`c$P++{?MoO4!uy22wr8BUy57Kt;kIt7@ z8`)zgV&lP$V}5x-jF3?jm!R~~+tK%*R(WAyc*)Ro$sr;EK?CyI zsAoRrql*ohn5Q!A`Tiq2lX+w$V7|yGuWAal-F91?_|C8CEo-%uW>@m_Iu5JQu2hgX89j z-^7!JW{Fp_veu<}GNsNbY%4&Y(|yUGREv(hh!sT=D4>Dn?(w3u@EaMaQg~QPj!AKv zKcu>HszJG1?Q8Mq38oMw{zS<#UgYLm&m{UB8JH2-;4O+GfvRh#tN;K2GEs7n5(GMF z#~>_kELY53zEkoL{_3Jn)n;r3s@Tci%x_-dybEJ*NY#K2Ln=!rI<=5mFQaQtI8~pW z7QL6<+t?o>TX`YN9w3To;RUEWdy5zb&+6ImW6I5 zrAPn(C%mE=0ay~JVwqX?(^Iy+fKYy&{34bo#|wp%k5B{m>Q$YDE*_y;}~4)h)1(Q z9?^cJNQ5BqJFb293QlCixOw-6s}*GR0B-VcRS|gKK8=LoVaAU=IXsYy-Wfo?(bozZ zH1&WNtN^EF^GP-c{LZ`$?-Q28KlL~>MexP_FWYya+?815MVq=xkuJ8{pqR!uOMEA2 zC3}@Gqq(^kB@3}!GDGyj{34Vb92)V(iA>jY=8;ulanJV2RUJJSTw z*oxhBphYhWyTPf!M#RDZ0f-2e-vg}erM&`y!q!jOe-Wp0q@5bc6PhVF3?V@Y;7+jt zCp#SkJdO(AJK5I*L#-(;AQ3BECBK=tSNQQIHqY%<#aOk9^mkx}LK{OCTO6&C;0r+= zm168m$)eK8kA+t*Z~y=Y7a;fS&E=>~v<;FDjhQuiLKm0`ETm`#(U{i z^3VySB6=shlBhS&x0(K$wFgF*5Be>eoF#o8N7P-j<}uHXi(E%wZV@Rk*=hr#%u9mv zK)>}v7xn!f+H^aMH`Scap=cgCr8YKe2Q_EDaoTG5qn6DWZI+q1=ocG^Wr!B}?s^o% z0*FtC%5*3Cj`BzeTHk^uLbu^vhHkgsR`yJmfCaGc6toLUQu|up%>m z5pYreR$)7}7Wu|(aN*^miWt$VjLbx}v|m%u4V^b6a?SE8jGo@s>X_R8d*(DSytvE& z_Ewe7uIqoW00XF29dN+db|wlaOKnC;WBz;0GaA@HgFw%>?dW~%Cf(8hj8-`j71HJh zua1Gs55fza_R!us+R0fk11s2$(%BrOh-`T%e};sl!#FH4(7*}h+Q;Q{DR>Gyissq4 zkWNmD5yW@^03NY+lHvU>PMUwJdGn48T=Au{iLEy8%C$(ev}rz-2lvSRg76@=Q)UMn z=%UzvQkn%NHU6x@HYr&O!M! z@$~DRE8?HKx3sR$q`c=p!A?T+=B%?gNUcFqeJ_PF1iCmDSRe?L5%IK{I3#h>@dkM8 zfeGax!vHbEaU7@KW|;C`GIVlJXAf^FFwO$@jWGIf=tk&}EVRe8cY9YJ2+HAR3pYgT{Yf(_z|fLpuG45-3~D9~*(q_mI1YKBvwK|09ii3p$w6^zp9QFHTe11= zJr%{fT9r@lI7}JxOI%{W9GS71DS3{RLV!61`F9K00$06&014%u+oMl=)_x7S8eBUF z>aItSjKDdv&zJ`=>>@@p2k)T}39JBqUQ5ekl#1(h(yq7P2h)gCLyBNXqYyQXFRcx1 zUv2g$<^UA!zIlBLo?ZUEhgZgl$QSxU*UH%4qKox(2|mDq3P-#)-tL?oi4dRm$ci zZ%LWzXh9;mGww^b>aGn&Y8KN^zOthKrZ15ecmPRDuxWvV`jyziRTW;m@DrVpUJV8$T2n7K$=(sJapSe?0|C>g2G@)q>8|T4(Pg_wslB< zp6(@bFw=Gex(h#r?5*Pw5(=k5qO|ZD<8}U=>8fJmJuNhQjYSsPR^J=WWVG?XCJ!O3f1fMPCB|JjMucSf#Z4y>lufV29z#zl0ewBqimuDz&qn&CIhHE zOjdeuNrQBtcAB)-5HKl{GOK0&_o|y7%4;%Xji%@Q_3ji=0U5EJ2=C_9Xy+NIk3t?I zsqifP2=HtfhNWt~cw1bx{Vv%f-+LD5afWPx$0I4Bmj$F3t@gFtM1g;rd`Or80Josn ziAP-Y5<6~r|2#cwjVcXxajUsfl>eI?X*&eTYEi4@p`?XODOIGdGr7*D#7Yq%qvUKY z1mn+!KvE@^LUs12Qy!Ygz$YBE7n)DA=!|*2)l2xGxWb&Irly6W#&+jT!4l#*(v49t zd1-3sv{DY3eW9!8eFw_cqc|{1E8uOSA@in}Wk($t4isuHagGAMm)dLW@o_C9DnAAu zW2C&T69ZQ<^Qhkx^-gk8K8>|sfMw#(A7^G!vXr5cr^7=(zu zH7n;3*xI2ANGiPE?pJ_1@#ZI-1mNCKX#B~T*UIy_(__2g)Efa1=B)y}vP-)&VY#Pj zJ)d$=Ox^QODjpv}!>F@-e)igbh;dFC*xO@;+O=;lC{p6_z%@;bN|sBrY$$7yGq5@y z8i;=BZ;7L`pI5KCL%G(~a&|Qe!U73C$pIlSyMzdc(9o1d@|j0qQyVx2T8>de7)Zg5 zzPAE02BBs7EZ9Sq3Up3G=PWe(`JjjTh1U5x;nzyUqb6c zLWyCoB$7V^GP~}*LYw|w~+hCIV{GW~B?=GS$XPgAgTiA8E26(-1P>o{0*c21t z<5~vbi=Hed_S{wIWAjqfQ-K+OqMCB(1ug*(s(ICjTSODTxtc&CFJ7$IAZB}diWMzL z55o!o3KJVM0ML}-_d-n<_v}9umylCyf)I_LPaVCkc~19_3uMs1FjuNB_5+Hj=B|DP zh7zQgCT~3hV6)D@wFHL)8x5}QN{b+%WatGU`Ki|IZ)`a&7l&BkPPvMM=SA7?(19zl zvx_33a)7D3x3sR$q`c=p!Am;vE*SY{v|-%A-VV@J$YoW;$Z-goHd>t}&A0^fUE_yF z3zMOC!4WV{6`w{6 zIAzq0QQb&yYO@#=4LOeLP=_C#>~hcx7vB`O=m**zk8Hnr7{u_(o24O-tH$9#W!m~Z zGmo}LBc&y8#hKsEUd?Furv;WKcAf2wnWpH&cz7j|$(!{k9pH1p0n~TZ0%*8_*Uxf! z;|Lh)p)Cl6o53Egj?|O(RFZ(JKTon>EC}PGMo;kHi*DjoJ5h&>#jN~>OTX?X4Q7_| z;k9aZ>3(fz3hRfsq5uK;BYWs0wo@ApJHG<#xDpvDHLiOlx5~Rm#sNy}7&K6AaZE^# z-48)#i4AmosWnW?IH^f?Sx`mzOs;SnW8`9C#n_WVhs9YCkpA5 zk|vvIn|ye8s4b4DV+lLZYu&k_UHDwubaznSb_s6MIFC^Q$WJ6igIfYdJvz-zH@05_ zT){8N@WKe<#Zk`&4xWPsE`{Ln?A&a>n7I^8X9~Uc#bQuKS5u{HXGJfU4pI0E@FYc* zqPZS%uzg?6gAa833G4s>162dU3TKG~u5By*Sn0pY#Y&M1bcRufSUiLsmr=JZ(Hq5O zo{Z9;&aYZL2G7_)CT@ote>f%X^}umFE@m{b^VUeqN)5HBJhJ~4@k!@R&nfID=3}Gg}Od$ADJYPO5d;Up@4sBSpM|s{+>0LtNMS z7N$l+MTPO&XpXyHE(!tD`!nrNah6lY$9d$$Q$DU3qn{uY%E^^oZbZ6H<+1NEumkUg z^{((k9|SR9^UvK-um%X04s=ToTDrpj``hS>X$RWB7joe7rJr@sLTXJ}hv>Jgu>-@* zKNDNQ?GN#6Akv{v$L!G%TH8aVzleY*ATBN`LRuj%Hb{Y5HHaRz%WV=3K zT>)l=iPBZC8-FdXZ%9bGPU#PL<0P9EGA0ZC3Bh>xQH#ChWC}Zvysm&hhBY!26EM$4 ztsUn#$Lmh?hJiaGnDgZr-F87sjaZuz2#0R_U2>@)O+W{LBQjcx2>||tPDoha5Y8#? ziQ&k^O9gQYmtvxMO*o0BP=XjN)+RrOSn!XbfUWM-tqlR`{}!k_f}7~7qdc%AAIY8;@B=O1KY zsdmKmgLH;}cv`u=OtB>@TgoLaO+lbn11-ccK14awAC`ZywHK7lEd7L?1&fY_} zM;592PPIYICbdM`Ogrs2m{q+!()7p)Mo9k-puF>L?>Qb=?|09&8Z<&bBEFn57zlJq z=)3>we`-~r!3Ke@F9|o!(17kI@jO-2jGe_+2acx+)Kx@Kk3I* zmc5S4V>7~syCcb_t)H#J^n?t%eSW$7XTE&B7bao@ue<>RPnG>`(8 zd)ujIWquS@*8`L|0wE_J_6%DE6pRBtldzVJ$1<6skq*~0lMfs<(AQrl4A;36^l1h} zVG8yE6=VR@Ih3_mTEZB=WGFvJqnwInc3N>$6<6)5mvwg575lp^K64r-*88UNBxOAu zAqY8xe#`*%#B`qfFki}`Xk1zRf^8CAV&c$T<9@PTCyzAWizP23rSwJo=;BQ>AqbyAh_%n!r8klk9$mT3ZQd$0N1k&Cep&%ITr1k@giS4GzQ`(06HKt)M=7AK@ zhz2X&%!s87NCHoDAteJPAf=VC-ZwHBr1b-Q69{77`z>j4YhS!LA*YBVyIuj{CF}@0 z9g&(QdSUD_r_NY<*=KuxQz=p9*I1$tC!RW*>wxlcKiA%{SogzHVq|HVkK%z)eePbt zl2=2moY+4Jv;GB~2HQDs6IMKcZMWt__f&oo)jcSaoiEVa8!9F2P=SbM0 zdZqIYJGgyN!soQ}O=doRIPs)03SQ%&7YY4xD@6m`wOIBEHYVS`(c9v43&>2tgl<4JVfZenSH z`&b`UH=-z*)MSF^^<j95Ky=anE77n zXhB8n-({>yG)$w1<6hFN{y;kXqES7F+gAq7??=w5gl#K;4QjZyJ{48w;lec7q?ml< zZ6T(U#!9hRn*;tM~D3YY=~Q#v>W_s315qna$;FZ%e zHl614N3k?K2J1ng1hWBD4;K@$2L-o<9-6IU%G4=i+I=<7rr{S{Iiqq(+Y-Qu-!eLl zOoZ~?bbc|TUst#)$KlpJhbN>uUUQ${(FBXv`ToMC77h^@E+{ixOUrMKeTHxGDQ46O zkkUwk-N(E3`U2C2Qqd030IJclQE!j1RTshpVjREt000hu8ZIEOJ7@^x>Mhx>ZY`PW@%PID5@{&3)xMVDN9uc2cBTDp?(he>Ul2*9NClP& zlYanTZrb zz6}pD4`z3YQDi`#mwDt~HBAc4&e0zq?k%)O2=jL<@-iNdDBM3F)11NPb*y+3bG2UN zrV@n(tEAHQ)_jx3{riSiTrnX5Q#@X)LZtBLQ=@WS)l#d#1_%QxSz^r>6kL+rlxL$W zL1<q$JQocBk9!>k;l;7hkB8lcsZE;*>P!Cyl(F7VwGv`j z3}p+Yd?az!`KQ0ibPGMA*Ns5A@{3}?s#Z2oBsW#XKrVbhwV3*&xf8Q0j?Not*awt- z*`a=Xk1c%RzGBF>LRYSJ>x=yy=k*=0Pp8!B6tDb%7f@5udUr=NHWEO2QOp52N)O%V zrK!*aeNNfb^v`<-eua|WU%MYSTs`I1WFwZ5z^f7INh~K@{M5e5ar>2)twnMh>Y?ZH*i0TiMzuOWu^Bif_WYAvOz>qe|91Jgktd(p+G#A z@+_(O5X1u3gpq!Rs1TjnJ?Y#ApIblrc_XuohOMT9WxD86kN95BBrDeBITlM#K@BSn z#i=8~9I<=9rKj}*X?NmEvTNIVd6E&~$@Ygfa80AZzSPzNg5kEOF(S0WbF%UGqwvjetR)bZ$U+EZPBM9|+*G(>RY*H(~5+>OxH z&5RTUsd1kFl=##?>z!Uw+*=sIXTD<-!9Tgq&;CC}>ri0e>!VOvu24b`SNI6}u<=Q2 zr#0AGsP&2Z$b-K0km(QxI=~YVpSRTYRL}@Pd3PADUZmuIb0duXdk-Q$MnF?)6Aow- zMsE17Wf(b5#^S>ts5W*wBFI-MZk&$LM-{FY^x*i3>`ov%glwG-Mpu`+unpyIE=MJo zp`n62v}1_pLs5dQPKe#?QQk=P<479T@vkFftHwM4Ngea$S<9#6I~mWM(Y{yZYFx>V zHXuS+bpEmOnc6%|6|vIW^1S!lBN~E@(qTD( zc=9!G_veK}aHKk;@{g0{fKk$(&*Lpk-Ob8vo7&(P2y+jd6$+Hv06xP}(l)I3&O1$C zEP2A~&u(Y5FP&$Us3TH?m0Li?u9-~~>a`=T4D=p?a0+C9u_50?6-u81kIEGrxN-Ue zcoRzETuc&$o3swQVin406X=Klhl}j(Xn)p7vpj?$GEZaZss}dcJY{qsRl*-9;fS`s zR@>mKpXDdnZT6HphhcApFEF~-m%pWJham;->`hXP-(I$UWIRV_xt}g{pBXpa?#-X= zYt#6anMN)CaVgYLD0j8Yo4X?0(7YJ);Mh1~w~DIHF77AoR6e4d3hVki1p7tDM@WjR zaN`T8VM0t}P)E%cZEyKfv)-i*WyhHwNdpOivxRyBOY{anOygS{BV%j4PzRV!Mc*|8 zofQIxfWl8)6AE$A!5`5P@*|94(9XBbDS+ew_t4N<#C;+`1c5frN+>mfRznx3bAB1AaG`Q#91^dYQQeA(| zbOy7Ka~NgD=q%?yB5e%wOy9@4W`l=1=;nJQcKaFQ>W6G?8`yj8d5&Qc)Y3$lCs;0~ zCc%jkNjea-Y`3bGMWeSn?leij81$#9V{KZF01b-pCTLcR8gFUlW-R`ZRkCR$u?A5Q zb!ZrGizj7w^Db#V0HJx zZ_1yTRO)fhR*}7No>tTp4b#G|Sd?E}=R1`C&uM3?I}pX@ES2u-yo($Nk;Dk&@(oh))S1}v}vueH54i02KQm^p+r zF41qit?L~ymgIh|`_JYBS1J2j;QS${_jUXrZn@Cfpusago#P0!oHV#gpkbPzq+qh* zg)vPP@wTl=plO@>fp3%od14IxC+)UHyvZ4YLC;1#ZsLEmZT}A<9Jci%pJK>PXh76K+dM`uS6>(%9w&_N)ojb9Qr3M|KJ)h53h zQ{$-Dq1?`yR?zBOVWv+t<%JOzl~pUATY3t2_HUB+3YTqjT(Awb1VcL)q-KPFe#m&j zco!|X1F6NuWH_L$wc{7vya+-zeLQydGffTRPhL!0PTx?3vIrT;LZtLPadIJH>}^75 zG&1+0*g^^z-*XKd5Lg6Rrm25}D)s!orb+ntvgG;qeB=;pJhhHn8nN$NGnzW zfTzt^Dt^fm!3Pb9fgH)R`RN@^oPdeg|NtWuoaSO^W zWy@74+`CdM1huf-hFKc)q{T{0;HjBX?FrR|H-!Sl9vv_UU!17X*kD%%(|Zm4 zbAq1hwUjsLCz`R*i9kez<|((8@+$kN_AmKEQzUvrW;@3yIvgBt zFQ{~7V!4R1eyOY&5N{lDo}Ax1I^XRN*<_R}+6N?bkM*z>!f5)E$7(NCvo-U`MI*@i zHLl#`7fW5E8@$I>RAH;PWu}fU|9p|bP-2oNP$pZY`VoCey3O?-)Q}4Eq^)MnTx+F# zplo*^mkM<51|`9LhaGIhMVsVgJgO$SGm`mBNJ^&5oz5qpV|kF=7ak15H_h55IyKsF zk?G-yfztNsAm~U9F#=9r3_4$n;*2;vw)qIgGf#yclmh@qGpU=Vv3|+O0773DyyMdF zw5|eYLan@~f+rRRHKc&tbZdlgm_1j~ii$T2n_l?3)iE^R5YN>MWRDH59t|9jUt&z8 zQt`6F7tTP-!!{}Sb!0xl9R5lJBL+t;jn`beOEa&OHWWjurNFr(-55 zFH#boYcq!SWGL&;Wb0$~3-FB{!+>rW`t%QhR_6)OT6Ekkoa%3!(9XxC?qip2=_?SN zu>6JZQb@Jq`)@0j{LTNCw}j9*knU1mT3e%ERMy^-#(3|tz>Wy2K!Wmok=~^Xbc$CV zKQZSC(mph4A!c#w*Be_470syLQfiMOr2nx~>K|{j3wwobjuFcCM1r28=7^q@gPYQX zc1&$})M?FdmqMb0@K+AyI7;1sdOAKU#bfa~Fn@!!dFeAKk1d$Q2Y^Xk|6d zi+e~oG~0)z3}aLb8l`wMAy4job2;JWHc+*bHHNRDl_>peG|mR$s%Ph#Ay$?&q8wI} zh!Z!x|AoNxO;0IEz{aj3!?)zu)cQj*b90UcKiDL7`37S`w`Dqk3e`g7F{(heOw>O2qSq&QqPjmnt?~36qa?F5JLEThMrn4i%5UktN^W=DehZfPzj_Slr}fxU_x| zjh-K47$0l9Dbhd!!B)Zz$I;`HM-|8<$85^0a&jGEA3#KMiI3|oOlAx3dpvrrXsEMr zhPcSx^!u3AQL_gML+3SgomO|TT2#TSUe8BcU7vKOl^3jhIi0gCVb^1#Y*snfEr z&g67>3?wVxE-@GjJ5A5DX*Tp3R5nCO!d{!ug(p$;X)guRTU6LgF%X@YEBt- zI)K<0FcDtx>*hN>ALF81;D;h?{eu6bfO@5l`y^DG-FdJS$aTTUa{wu4Pbi0JI(3#F z4nP;&%XOLJ3ksD8j1YH2X`6r^P6Wpl|mvs+irtLZTfMgsmd!@mL1R=TQc zmTxL-!*EYl(V=7aNHzP@XR{Ex#YK1BuvYN8oQB%5o<3Gm;2*@C%Z>%^)vYfiQh2-0 z0lSNpEg0Mm`1PZCvL;smFLvL7+*he-j+=et`V;Zi@zP5(e-Us{m#V9f#^HSlcTa^d zvbUP?{51oitLE5-1AHFEgWw3se7185!W+??DuAMoFqpvJHzxysE$Nk|&0(esr_%3o|Pw(ar7)Q(C5 z>blTq%D+|6&arojq*jeqoLgx_*#0F_rFEs{k&8Pe<55Bb;|%mUY=vYWkw?>+9YPDf zn=rt{O#M1_<8z{(>=bZtG+#cx3($1g2Yx+V>x)ysS_uIFQfaeO=&KO$KUi%<0vbbC z!E@AM%Sz?pXJIWNG=9xwRf_a-iBtlGi0$FVs5y}wo+Azkjx?T@m zsq)0##UngIR<(R3fRSv&bunnucT%VWhNgyW1PnZ8BHEODM{}H(WIc){lLcOU*;Jct76Hf9J>V7LLqcK3 z1%oR;R=g5+J*|pbO-o}3N)nmcXa;H!dbzaT)(%ZbT7&1YnicgWUnujMAw*M8Y)YCk z@#*HBHO|J~a%HV36Ewpjf70&F@)2pI?O%s9IH5#sMlWhY(e zrVFX5LrVZ}w@da2YL);Ztf19IYfR@)B3%S{ax=c?uO|&tb)MKRcZu@05n72|?hN)& zHN%2ML6ws^2>H%;*Bqk~i-Xq$(1)|sz=EI_A&S>CYTMc8+*iW`t4if7vTTddaE#S5 zGzHbPxKhF?P?KF7sU{q0IgfXV*-~M&G-8gIt|o*kkMGH%|qn1I=!bhTB{GJm# z%LparrZszMJ|eDBLe}l;%cv|Yd^|QO&}L#5!3Q9f9e&ZbG7(O5$*pgimZFbZj`x0X z#}1)D_(sXm?U)Szs)TSUZ$#dMXPaq}_4|?Lol^w8#*&f#MLPqhZtnNwb7C zEf9NYDA#*f5{_!!w=3)q#U&y1r4q1_3Ki@HKaFZoQOOVB{c`)~dz?0x94o)UJPZWSp*S~`x)|eBl)Zc=3!+)4$Dw-(c0Jf-b_FXtQDUpt z(>;yh$Bmdsc8J1FuKL$T)xDZJmd5GdD^$9(*ds&O%R+i_a}ScEq{? zsl8Ou(K0Cn?t~?&Sjc5&uY7)(xSA3bvfX@vi^HDS^e(7oPx)RL%3os_ro`l3AY#|A zce4L_-LLwWcSXMqT13kW&xB{KMraR~#C5p92N5q!D7Cx>*Bh@=?vX5%#sHd_#3>=F zf!tPcY1dbTzZ7b|N`+hbmVOXTLo0qnknl#Ba-Gz?&{t_4W@T12#9+17Pm%0pA0r7+ zv_Z?~mkQ$!Ehl3wKmh?0Tz>!G&pU@V^#LM|CsuhgzeMAnyV8;NSV;NN>3+aYR$nB5 zS<%S}>R;`>r{$w%Bqr2h+Htuydc;sIp{YJZUoc_I?#y+w2f>|ELGu0{G?5LD9bBLM zt~8Q|KcP{qL9|PFIqLQ9JqEV?YxUf^y5D`j8JdYh*Km)C1tA<{x+t^+O`B8W1TC*A z^?eA~sDPtSzB-sCR*mlG`zQD|RB)``qmnT!5wT?C3*8Nf2c4CwQ90?y z_Y2@|^97Kux6X+HF!+et*!jyFyAAhl+PVTM$7<27zNoBj%u^zmgN-3|<~(m_Q7V@h zyciYGlaah_(XsBrVSK&x>YS0+p2y=fhlm+GO`SbEth{Fk%hFQtz0DS**Nbf666j1r z3He8w=bs30Ar^+ino}71p4qxj;A^4U_o5%~<$nhP`$L?L1N$H%~Mti(Z8tQqVNBBG>5*r;*;=}!*w z-`($dFC8}@=y^&(ya>%UQ2`l+D@gR>n1@ED-{%zs2w?!>jpLjY_g$=KrQdKwjL=DR zv3Mb~&GgXLJ=5l4GoMbK{QOTk(%gid^dBo)jNrj30e_Zy5g*=EK8gi%2t$=I&bS3p zwgyX<@oOPA{s3n27#oTi)8P?8iy1D4CnOon(HP^i_C~JGJ(d=}mF=y@ z-i)XW!>gZ&;w@bDwrLxraaWaXrGgaM5P%*Esy)qb5f{!?m4>E^$M9aPLu%N|b$McY zUYADS>PK7^wps2p%#(csPAukPdf2O9c_Zkc_J|pb3P8@XTN@!1wmx}g>{R?0`za+C z7YK?8wd|P82;=hVv$g8WF16=&84GnnS)!p@e_4sz4=6l>BpS8Ye9HGfD~p01+XD;1P)K(@~&cKd3-@^QJI6S+xtTJ_|upLd1AtZ#XOjFqr061DqCn0 znVei8gpf7v7R2!a|3j~gnS*zqGljVV!LkH^xq_o;Cr^>k;xlSGUH`Rr(_?>vd6w%L zsC;PI7L&IX#kh_TH0V3^_LL4dFeO1TXQAofgQMc6_6hRpvlXcD6Qz_zL}hKH5)B!` z{l6-#2TjZdKb6VE>Fl20XIxW-sVvRt*oI4d$v)qkRTIAzlqZKQvzT7!E%WDT0w+#FRf@wu#M&R53 zTpH9w84aKwHGdgEJ@)(qq7>pN5mEP@5of44RvZ0PeovQ9k*ev%L-EdXneN;NxH=Pt zZ|Fygdu6m4dB_CfYzy!I##zHJL8}9R1squ|`9*gAW;)JzmLshHG}nIdU|saD#+;1B z@EQ9wf%A04B@gp|g6d;FS2rA+kBJW}<7nZC0N0SkYD+mni<4K>?68E000000jk23 zZZAtl@u+6nbVtC&893%__DvdTCU^=rP$r`0mA%m$0p{m<31gK#N3H4{5D#YP9Y_)U zasm9C2rd^DDD^!!l7IXSU;FFrGoew>gA?$4Kj-e4j>e(=KB64Ihr=*L2ml1JI|<6l zjFS~c>haLg^0K*=+}M-G1+SKxFCvK)Ro)Drtdp|;#P^ufZ0DfWQ#cI#0ZAg)Pge)c zC^GCgJD4wGV5$2+gKSn_Edw@YJV2iOZjn;Nn}2maX8|pGi`~I0goesNHL~5SXL;>h zx^A&zBr8)B)pO5-!W8}J&%#C?IajZ$BD5%BDJXA0F$Ar6Q)APY^Th9hry*HuH{vt% zEj5h}NnZpKO-IO58To?iixgGG`%GMxL%=QE0_pvB+gSm$_0Y1YTcUzENfj~pJsWOM zuacZ>1ZxEBWPI2$b=cJM?fDxnw5Xbjpe+%IchCi0HK7y1c(LSc^uKqD!77p?5j3h~ zBB{b>%@PRZDNukXF9+eOhUM5kAppo7A#Slwh&-Qv{`w^BEP^dY>mVDcPIz38SOJq; zmFw<&a6*3Ks-+fg03@g11!&Jn097r9--95Xh?KzyE0p!+wm2406}$%fB*mh01G&!-D?|Y zUgF|jKK#1B*fKC!jmM>Yq7eh3uOt{Dk!D&<4Zq5#nn@YEUD(9Rq0&QYCF0X-3DzOF z-)*mQE8rx^CYJni8UnC0cjT3NAH3!t6i6A39)uF5xbPOLK0P9)f@`Fj6wi=V6Ep+H zj;-ho|2gDuGf^HgLYHwX{@od~O%aGMU&k-$FNe_HA%m@nJx5SY7A4AFm6!+zk)8)c zXXn0+{MdT|`Wm=I2nypX%qI$0>E@1{uAQ-M@c|B9slgdmweFCHupxN-mMs#$Sctz3D|GW$`pM-Scd0ZDW_-qNv*k>Q!t$%x1nB9pi;g>;a;c_pTm

;V&-rBs(K8Jzrwd(aZ>1v*3mtC|Xcy!|$p{32Cqz%FwF!H` zw`$l3ZjKW58<>KopmLzxJA#tc5!Jp3%HfnbqTPfg0>vE2KqP#E^^7JE%>#+JNhfXp z{RxoJ=GtUvA)HvkL9S9|Z|9EAPH6RoQmjKJ@5{ZPMRTqK4B>Z51XI7^1}D&*>;lxl z000000000000000<3{vN>shO-s#mYNpIU&&;OUw7nTxS?5 z>>n4(g!>geOa~IuaEmH%A)1Zcmf@26Z2VG&48{*TzQ-}>^63VH%a6t@2T`fq;H;bb z&*y#JtyGlRdNEyO&lW+yKOO49To+RTdVZ2c7XM%(pGm&hYoM9`MKF8UAe1D(X8f?p zP?|AF_)RU?Lj0cvXTYLs?%`pjsAD^5R^Och`Zw_%AA>YGie_5kdCVPV!k(c|ZMK zT!u#1(xAGt!gaPMle8>??~hJW0Eq?kMQA8-D>qH~ByPt3O^=<1bGlsyUDI9N>{rLmT(tth*(OdI^ zGoeUP$R@=bA`O68ddbg`5>mCMoo|5$z|JEop!@^8Hdn^ie0A$&#(2&Eao42wivp$z zVW##BJ%4?*SVQeXo!Q-86mUtcF`#uGFh`osTz&=~C=L=LM3qJ6HCMvtCA9(hk@+QO z`tr4z&BmPibui5{l8PDDaCBRx5fPd%1E2nRYvouaUi0QWg!y0>L>iII=U>V{ulI0p zl8FtXh~M#r;L-g*ePNw47LrJVG;l;9JV=%#XDdO^&m@>QzblWTq8d;v`=~B(eqC`q z&6`PU`2Y&FC-Ey1i8(dJzOPCk!6sVH5(37?b?QwJ2aG|!2QA#I?2MAWic&>_OjE$|lq&yiVV3~&1S|-acJi|ojxQq(!69Vz$G6?* ze=eZfx5r3G)3l*ldG=3*SkGkJ(6kwA{k)Qp#Fdo;ru3V)dFj8j;~zIIl!gm+O1R3j z`Of61Dd{TEg@a$*-v=6CQ6v&VNZt@{IfGfUa4bh*&^rQZ?D_TnAn(3FLy_VAmbGX6 z`xOpUv-HTX1c-{e=Cyl6s)9@D6j#Wq2qu<#R;0`Km#knKC#ug!{|o=YU2BM+_FFf? zqEpbh6W%r8!&p)eGFdtl5o`10K57U4HCo^nCve?`P_)Y1j8GR?XEa$8IYf}J!8x9+ zR-#iMB+N&sds~QwWMtkO<;`?--K1cye~xJ}!vkqzZ(PkXdBBKoGENtr;bkGUu1h?% z7Q0pJjEAVIml%tBnOdBTBsMH_Wb^$jsa*f!Q#?t0O zPNZRH1#M%w{}Wz90Tc9TkbMWgQGhGdaz#W(mlKP3X8Q4G${t%Q+#GT6xAW9x*%X??pjuC=Kc7~n-BFauNbhbg3E-5J^h}qE%vR=4?t56TGY~ZH73QatcE@Arc zg3@C@M{^ z*N7adHOted#zTvz1pieXA~pa0-f$eRoh&2n;22yr9#ED4@yuNDu6v$0Omh%wp#Moktf#f^b)dhfnghM&S}N&7 z_>Y{CAjOiwQw3aG&D|2&X{t(JdxV8qTe6hzweimb)wrZ4wR<-d%e4k_Z+v*ocB!c` z#D|eAXyL(5vx6p}42{-P?~4aDW5sR&Pgv0B$b7{ zahsKHr%z?QNmbL3V$qHPLC|y|1A+dM(hbDt4<@#8t64J*Bm{pfmWc_?aBQT1mO!aN z>F zSe?~*U;Wq+>_Jcbc`*O2m#WwfuA-Sy_PCFKhtMl|YPi^5j*RJoNIsOEDxgt=vG561 zaCl1Za*L%QV%9|i7(~0-9HBiJw> zS{hT_I8W84EpE9^toe)`s~AKXMalEJWlh-Tr359CF+on_Jy&h2Rrn{C<)i7i)wyx% z`nM%)*y=GzER;W?xPSoBpVx75{ z&D~tiSS~!;vl|U6O80MnHqKw}hIn#l2}8npz1lD*dR0f*I+7GxO9C+Np058m)&6r~ ztIrWSF@~`+MvU7)YL(IYSvPzNbdcB;T%y@WypnsXb7b8OD`Rn>aboW=cpC4A_^MWR zxaXYY-su!R-_ph7yK4>cTFwWZ7L#B!bpQ)+g}c+AV8vR7?LBOF@Wc>ZCvZoNG(q9b z$(kOaw%vH*xAJvguk~cgQTO8p@!EyZ;=RnH&te^CVAox4;u0Im;&WZtCd4=r78dYQ zw32v0*_cQb=w4rW1^BHZGVE%P5#ns*TPin-83G#NKib1@S z(UDWME+I$B+K9N2?3xQP6Xh^dvao5KWus)n=RkOje~-CFy&FVaoAQI$$y&4tHo$cGH^K7F7ccJc)2euS$iTx+mUo3y+ep&Nrt>6ZO_~9 zpCADM5@I^{(KQMSgun2`U6}}}+ZCmlkvf>244IMWwtNOn5|hLEgW8pA$mu8_yzo@J z6x{~VM~bIPs4zN=CA-?xtZ^Q&O$RTu7eaB#Cz~Di(mzu%_)2wBm|Ehn^03&5X&BGg z$yt!=j|ae}JGSs^6Iz?#UKqSbIqkGbm>&3_>}csxtc_-F%4z8f!;18#Z-I^d9_8XM zNl&3o8_YnRph&)q5olJi;O>8TI+sEYhy})SCI1eWKY8a>G0V_NWXZjipnA(0Xj_l=z_r7D`o(&hr*Q2ECDtWX*QIGqL>z z0Fao+f=WU@uSV-=M7+=rcBb20oSyn|npr-f(~DMvOldT?uewPny(fqUhD+m#gUXjr59AU;(h8p%}`$inxMKN6&_g2dPpqcj-tGWo;s=jEBH~HM~Le%{bHT--# z2kVjhw!On$b;6~&>;OLgIO!pWm}|+YF}i$rK1T&F$$X}@Yz<&=cy`eYRJ8t2NTDds zRt+a1NZ968fS-w?b_;_sF106ju;*UH9#Zn?Bpa(vIMnH_q3%k`^Nt2)Txef`G20tm zhi~pWUT@&#)(B5^BnYWx7hlkAm3eQ{)2X6h=Iq;W(iG|dhnkmFLMjrVLTMllBv94> z6@x)Z9;RY6FfZ8{zgmZd#$5q%F-*D-;I!o76JIeyQuDkX7&#$DxF=#f{#xni>4Hf)4Xc4uL zpb^p#^Xt6Q!jt~R2>tba4Kw5YTbE(a&WKw=HB)zk z>$`T}&5H?&-|AturwNn z43}11@MHidlthe%-QY$yHA{U|hk|TkqEvVa9%-3~ibHS=!;z^*B?>Q(rXSU44}_y# zU+DApmx%AEqR^d0+W>&YV+lD4k)Mp`pLAAVl?9`cQ6EBC@OmVIbF&p ziDaHW=~@2*Pn9)MJ^ULukQ6xpaT_91W;V=@OVKwTH!ZA&laFt%;#Vn3K(xC`AFsqp z8G@-hIp5m5n<1F& z&_~28*7>I3R7f(FwzOvpW#Hec)R$91Bae>(k@4GMXq?QECc6kDZ-W04S-^Mm4yGiV z({_ul@ZZ>2FH5EFJCo{X4OO^XR-%BFg){UqXPz6DXW~V-6oddzS6vXlfuK!|wPGQY zm2Wc!>o)c*#IVYAGJbsk0H-4)$=yxsO8Z2n^zR1dInk$8qqtRTyOdDDb&6$AKL$CD zwC<+0FaiXrn3HM~kk(gJW2B+o=10_@rfC?lsmv(Mb~};%%H)dnhW*r0KZD8u@#YRn z)`c}4t7T4OFVIHQ)DvMk^6FJ-aL(fzS~*-g3_*vNnx#f*82-qt@jxX0Y3<3`QR|cC z3yXO+)0;*li@~7=Lv8=cEqYNfcx!F#p1-ljQ)wegKw0Yo&lfPu2IMb>3W|kWlx2;=jhZ)8N_9o|*FYVlY`B7fC5k7uFfR41@p#Cz zpL_0jZXQnktU~^?R!+ocq!*`$dRR+ALh`7S8rt9TDFRw7#efZ0xkCaHS4I?{%MQXN zhzqrAB}lB*oVvsm9J^CjeElHkgO!B^)pSz%F#0v2mk zkFW~|t7F`3rmEAA)B$ru z5l}_pd4R%1L~W03j^sXrY(|52;t#!Mm7a(Z!TWcB$^qZ`7|IWF<19d>#P54U2l49V z;Ole_-cH?Xb|(Ljho0Gw#kc8uM}COPIk4twcMqWKiIBX1xJ2b^{5g#z8c5JVepe1J z$?nB@DT=u?0SxA*HhR0fV>@9=(Y{o}4?&?@IH4rBHO}@pMKHyjEMOY^!n_y?q(Ud^ zm9|RxUbwA6Pq0WO?IZz5`g{Nn_$~RHGWhLwul)S8c{`+mr)^j>w<$RG3>XD%SxcjK zA_vIWitwKT1P~Ep1q%fQB5Oe^k20FYO-^o0j(D3NwQ^?VabSg)uuh9{U80dYb9|V#vuERbdAf@Id%(keuV@a#~qvvTB zK9eH(T0P%YZUWJIAu$-IZqh98$(BB7l_N;%8puE=DS0KysjI^0y977ppe$pp!9x%~in7CP1YqSMcs@ADKQ<)(V?? zQs4aA*XE+9Z1=eGe1M|vJ#0yKtxNdjllLedT|rkzk23ySAb_~w!S>zTU&f!(+3X<8 zIYyQLdUxB&LsdI7iO$Bn@8|`tob9S5Y=o-3OrqB4J)5 zkyl5oH$4eP=EpSepG70^m$f9ddI$=V-ek|J+j!t3*zEIv9;N|vjjY3EdaNtufk-r; zO@LlsFTuzJIuGt){zYyd)d9Ed-h05h%20{^MDS;m@7&D?)fDG>V+60A!WKrFj?{EL>Ug?BZP-0+jRsLxPnXjQ* zOw%wXNhu`Vq!znUXGOU24sb+*d?iR*ZDjzHwD6^F?BxlS=cP*|kz|<=5#EQwJRVl; zX4M~RTMbuqYwf)*wE0VWCcLCfpJ{epKYy7-z7Coi@Nl38-M7=Wtu0p7A;uW;^za3} z0VZtmgC562LTD>+L7i|&`WNIYB*n|F4_V7En2+@SN3YK|dq+PjkL_$TSN~|uknL_d zX;{J5CKAb@u*aqmH2(&3)zjbNFJ~Xhi;{wf%CC7F893$qMGC1VF9<-WgSs4Vv(nZ3>+A%hcPV^Z>r{Q_1Wv z713*ED4aL*PcZ7Gcy_t}$Ivd)(L|7K;R5d^d~uPM558R9QYH&IHaM9eyl1h0@ePIH z+IH}^oo$!Rf|6><3OkFFlbR(=+>%3OHIR z!mI(AT(?!iLXKmA8Q zYH)up)vWU8k20AM45>R#hrK@^3kl;DvjG6GUeu3d>|V&&8^>c0M?}_y4ldcV$3>wZ zThp3AczN!h1Nng$$(nAR=>q1qRo|QWZY)f}y$Zn@ec+EGzcYlpb}#q@XMX}Mm+}`p zI4|9PGUzb0g1EQ!PD^uw=wS9WNj}xLq(aGS@R!mV{V9DCH6MNoA^4`(N8!X$OIV}G zEpcCtJC%*-5rb-fVZLAZNQo`g(7^` zd)r@g)PU77{mlxb=DbUpluA!<#ctCu%l`e^yU22F3+k2?uAAlCC9j3r)T89ZrKr8O|G$#=TeNK$bDnEUBg8nQKAwHu?ir6 zrEvZtd0e^icf#*^n#KqBt6#RplK02H2d|04TDKt@?=k|BWg#0tdV7A_cv2v2$M6cl zYi2?obdOy=kszZwt);~<(Hl~QbYR7&L~&#}uD76DfP zt%NY*6SJuG7gg4W4>OEJn$ z<^;wY;c|b$;C|~*E$t$jWkGX31|VyRSO)d20@b#7fUFOo79Xx;tszVP@dBwT#;%#t zZlLG{`x8u0ryN6UiL>;9SHu^KPEs!YiA0ck#%!+-oDx9CbuliUOxcj_E6GwSVKzNs z?_Gma{O+P6t`w;LU^DT8dJX7*mJM@&qiC4On9X3F7neo z0}7gH#|@M1SfZnG;*kHE|Er)W77a5CqY1wiU9{dQ@XOYw12_w@GQQ&3G3hrQlKfc2 zw*CF4%G8!~nR0<%JFQLJ*Tzhuil{C7V8P~sboMcPvekbV?r(M z5GQDyieqxl)VwK^=pJ$;7}k`!AJ6DnF0RXTi1-%Ak2w#@_o=Ut!5&g<@OQZBAM15p z1=1yzzr9CJiZ*mZt6iSE76l^S*LaMO#VGS(TGSzZ(!O5wyw0BcZbs2CNKUsQoX!j4 zsttWKhCa2;mRtG%$#;MyC;BQ+g!N6|!awDP5HOIq!QU1>?MM1r$OazfgImPgchi1h zJa^iXAy+1-`lA>}i{N}^HRd!&|DpXy$sK6y9ae%FURd_?eA}{iWrzE3sTIk4+}qPWx9BHpZN7g-7g5XUpaarP;{^T}L% z()lcpSfUkl&d9XeGCB(fLGR37>ValRyfY-kD6AvKPbs_ydnlkamW^!>+Os^^&j{ee z!2GcR;BpmrUw~s%6{4Ia0s(B#Lc;v4H*ldZaCtchYeat)ISYQHWPl#s zc8Bi1W1hy)8{_P94zHfb^>n@84A6eS}w< z#Wa+JC{j?Y_0HU#ChC29d>eVMnX#b9ILqs9p{j?x-mf!N=O~Me%UW2KfjFkPa9dQz zhi#&p?=XF1t%yKA^}ptH1Ibm|st0nQGw4MdK9b)=6rLAqkn2`Mix2=FZI+TrUJ>$YD~Abh5p|IulZ0u5_cpxc%>yN~ zbEC)t(K@K&P0X-(Rqpq(?Hc{^<~csAVRbX(_NYARhnH3<*Mm(LNYIyFELMwo5kZ{L z?sj|8aMD2;@UHv%%i;aUwrJ-d$O88Q`#yD%`0l=_-x-zhP!=Z`V)QR6K|vDODNvJ25U`ue*^Sz|_&KCrtZ8Giq!%O+V$DHCDuZY9fnrWlce%dV-? zCG;;$Ih3Ml9-0K*BNDW>jr>$jOkDmU=!BS19I#)Hr9T5GQ~_#unOBap|){Uy=J0~7A<`)|`@B6S^U-K#8mIHoezxM*5Pt*_iO1FV|k%UyUINy$N z{&XWk@k@0t8-rwy+YLnGM1DaJw#L>DzXt@{P>;GZSV!{*%Z)E(`F1agj8}r1>GFyX zWGZ@1e0OMeQ7>5Pr)UR)UP#t8w&Lp_gH*9)AmJW5 z%NW2LnA9ykf9624o`E)+4<6HSPJ{T51@BC5kpun6K?+0>Iq6Fi9lDA?LDkUhAeFSg zna*EN!T%Ga1~=z48P(^qhEPTHy7bP6NdBe!@l|a%T+*Yj9DWUzi`8f6p`X$p9hH=0 zS0MI*hv{TSCxS=$f#KgQuDvR%fm2llDzjCl&;g?VR(>BM+8$Jg6fLJxk8X#ux@1g4iLi~Hk%>A|d z^g{u;Yzpz{^%T7WBqMr(d7bFZ=tC$uL~U~;NkD6%lEmY_ zu;VpxQ-x_rkI}Yp>?E$sU=$q$9s%S)r`26PxBLYq@)BkQ`lFC`we8%QyO zewcj)n#LM=3qIh+oqe3YQJikgiO9ev#v^B$YJq9Dk&IHr9DZV@9~+J06~5t7!M2km^J*Y)G97+}M>_ zYj8(`3ofM$pweWP{n9Uu0yE#>MjlfJ*vL$JUJwCZ5EZ#Mk@0o&&P#t_uN~4}>d$0r zFB(dIzUS>tbPuRawFKHHVugPmkd&6HbHecaeK^G|0HAwd5udg{+gd8!WcJwLlM3$I z-`1&;7ecfmAH{&ofcBE$zn?0ir&3ccNIt`7*o{BIGU1=i=PA<~@zT-VQza_ypcG0n zTEPy25q=IaeoFJ!(J=SVbgCEAR*re+Lf$oZFv^#elCJz5x7}z0V-MH)=_j$0>FsNe zR3;Wu=jbe^S4>t)Mwsz}jXI03M8G`;2EkLwhTWG?3;-jGSfMfBhd~k243c`#{7zP)qp6h z*BhI?B<9Wk;-MdBU>MU8V=a?Qla>;+!+HR(9)v1X7ye4;_TsiR)@}(90!e}&;++Ow zK;1>q$EhO}M9MCS>(=cb62cogS`p{I)M5(i!4(Q*jk=aHDf2_;&*PE@5z| zj~q2bJ6)FdSE;UFR@@QRRu4IHtRUuI8gOmQ*doo4+U)l!dxU?jnIf!#X5Iq{ed;;s z@K@~5wc5g?cS%k51+vn`4`44bujM1B^(B<=1#(N2fq6v1(vt_$5dbg&#uD)^Td~E4$vP#7jOXwLpF2wqG-)WEFd71AOJd*N=5p*V zxm?NbqPwZ&=3lJE036c?c2LMO8Fu;eX-tGK>39V*%v+22{Da}zm1TJ0*S+k>{Cc52 z2b%8Dk@NKf57$$06Mjy8RQ~S$^z-^J;xH7NE%lUU>H42m94=YY&07>rXWg$RP zkQbJm*F2h9#l)LsDVq@Y=A>{9KrtR+A!1C}F4=3@zOymHmdMRpEygmOQCIC3J2o6dVD7IJsW=w;mZ{?#hXP$nM-GP?An! zFCAX#MvMbBtub~nVtg3Ob2~a$^^-g-kf4vZD50o$NZ8u*L3!cuAGYRyOWfWvaRIv+ z1b7C%<ydH~1bV3rBN>Lh*B6RXr049iI<-%Hf6FlJQYpfW2?@S6nvMTOiGwc7e93 zal@_6Q-zLE>u6;xhY)iyr%rk18+>O5jy3&`^jryvNfx=T<~F!*_kUBgJPfAZSABRS zB4odN;C{=K?=S}9aEU{L0XJTo|9C)k2LXtrHIhYQivpGyg2c&$>Q02uQr*nDwtIoFq$m@Iwb76X6Lf>(4ps-y-MxO#;u2U7R_@ zXcZG0s}Vtol1pAux20Y;ameG?{gv+i8@I1SWYV6!==%_a#$HFqy^X46h#S<+X$T~K zUMrzElz2zdxC)p8^L3KB^fcE}xh;!G>;D}CfW*BVu|G-RbA7{|)_?W*)Ls7#mY^>z zH%hV(R-y_0L*p4)ynU75ta%8hC9=NjW>(v+fj7g1;|*on4J30#E~Qh$tTq>dhb+O~ zWdX{pGLdrAK@+P0`Pew57sMc}SUaj4eibJe=QklpD-H$e;MTnaQ}%cQr)4bJ;&92= z51S4n)TeWNS36UfGP_%W`sD5VDegS!CtjQIu0s;n%87$)aBfAj8e{7}pdtT#Xu_A) z0Vvj@Y_sEWImdvlO}V)}j-U`KLCa)q`F;!GXWpK8bwER0W|PF%AaS;FbH?OXv@V+3 z4kSY9p|ECW5-7JP5Dd=E_iyYiAckOp)^rU-FzDeAz&Se#n89ei>tUq=n7VPNgc$0qAR! zTQ4nX*Eo#MqcyakLRb5Q(>bq$pm$AXIMH)_+JPCdmgX#GD zeKUjNAw6@9@U~In0MhB;InujB9Zc0`8!$X-X?Eyqo-9$Kmx0daG|mwv`*jWV}fZ%SFtIwtTT6p>C@ z&P#S=MwMiw7KhjdRYIE9=&||fZd*bce2M*@Ta_Flup`OQ7vfgJI-0#GDD|~r7Sf#N z#rkA1&jMAN;^P;l$2I3KFjnH@Wp*e5bQ}HZGu+Sd#K>7h>MBk|p0O2~juyr@e8)ck zW{6U|yyitGszx#|Nurg4T)@4*=ZCu?dT!zm#koHU9x_@YomHp(i>qr{GU>=Ho*GMX zTaZ3}h&OfL7a###^>r@gSn9H3@7I+lCA860LX25}bf%$^K2;B}t2t#HX(Iccoqt@!qq}NIhGmhvyKtJ6Yewl1r#7&#^5Ah9l7pD4Q+{I3(~bfZ!JFuydhjFJxCb>(b3x)YS{MehR zx7bnH%J2Ds|Ics(&Qyz+Xr0;bOxx|w9Igr_vi}7i0F-L#z4jiVSKbAB0&-{}v*T?{ zU2Q!W@#4*p+CY_D;?N|4nTp)vH-ke^zE7j}&}_ox!S!(G)Fh45(lV8Tytmy;T?`#t z{6~H}AY_uz_kW>Ok9(_BoU;}6# z4D-u_60!w>{(9L)MyveN8!rl52aEAlY9Fy<#1eYML2!_PreGX0dGa#M!f*3VWwo}Z z6m6ehEBpH7L5Xaei7v?N(rk2!#Y1rh#K!pEbK^oMElL8=LI{_|tegiG4en1kX#^J~j0lbZKAwFk<_^A!)#tcSQN zaUtZ&qPt36#=-_ws()SrAc(IJmiv{)P%RUa?rkJsO0JAF`=-*x?6k81ljWmlC(bIV z4SxiBl0bxerBEb{``n@FJqs!-h|06{|E3UItGuQY(TuU~Z z@@H#@mHhu#!SB8|HF8>ZnRs+G&o47Htvn=~Gr1sNV2tFQF|@(o4WtSab6NZ;c1PzC zcAaSKz6JH@Wbu~)jT_whNh~WRV(yJuxx3}guF<(C;AQ?kphSpO`{DzsV}y)$fx^ zQzyovo^vOP-vfZid=w z%OxB3QHvaXn1ZSvQ{muqVl5Inz8hVxDZ`Ika*FMTJi4KzG95o^>M=%~zt@~fd>;YJ zQ_1y>V@(nPPu}GoV#ODNJ5oIt5rQnUNbhi=rFc0DL+s&K2bt4ky+A1j>2aeR9t*VN zXhZ9qM6j8m#|g^m$zLXJDNI7e{byysv>%{HI+C7Q8p`C#K0HfLAB(n8KOc0PLW-ch z9F^XsrsBnxN(!DzpA{*k$6fWo#Y7oLw#vs$pH2x~EkfhwPbmY45r=dWk4FQ0le+&u z(EvKXydKO|x5@w)mUrBPfPyT(!DK44Tlp9pdY~j)0%jiPXkeMn4F~14ASfT9;GQP{ zK~jx(Xa)p7bE=KWdogAk@(AzYYQ1siwxb4Hqc`@9L+UGr)8Y|-yjcV3_RG{`>Ne;o zp7%^Vw?unSWz&IQM2C53iL9oI{@GEeXPG&%MKrt}QT0f-Mdmk7HXhueRQ^N~jVeH34YaaA{X7qZMs?N73(rUdg~kbY5WF$f;I%7OwxcfBCn#SF(ty?;&f~ z&%GnVfyng;O(v#Z6wDbJULANl5yJ_BKW{~`cJ9J%L6g^=V3#Sd6fFq-)@sjoQ0ETB jSIP=TR`o_vh9Sgo*V)?tk5vB$@qlP3 diff --git a/images/build/start-building/supported-networks/algorand.webp b/images/build/start-building/supported-networks/algorand.webp deleted file mode 100644 index 0398c4b9665805cf2498243f6b540c4f317dd2fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12792 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�oAP7C%eZ$gN>=_tzeZV(7fOjXUJ6}6LgL}yY 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 QCt>+Az5gdg`7)pY0L|-%)c^nh diff --git a/images/build/start-building/supported-networks/arbitrum-sepolia.webp b/images/build/start-building/supported-networks/arbitrum-sepolia.webp deleted file mode 100644 index 2eabc070bd566b0217ee73708c89b4efdbe043d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39546 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 diff --git a/images/build/start-building/supported-networks/arbitrum.webp b/images/build/start-building/supported-networks/arbitrum.webp deleted file mode 100644 index 2eabc070bd566b0217ee73708c89b4efdbe043d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39546 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 diff --git a/images/build/start-building/supported-networks/aurora.webp b/images/build/start-building/supported-networks/aurora.webp deleted file mode 100644 index f52770de6b3bfa09adc4850221f0efc2557c0be1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94008 zcmeF2_cNS-^!9a@AXy2~+p19_7ST(z#S%nsAw(xpqIZJmtHr9(OO)unC!$3sh~5cS z?>sm8%rnnl@XYsz@6654u(M;sU*>>@hJM2Wkw@LQT1#i|z&=e^zhAyuQ+8n5CVzncr&<-d+M$vGM??AU zOCSTGoPSf2=v+wFL}|{zH-zmkJP!nEd@_WG6C|$7wvCo6Z(6#(%6`Klgh-mW`a|Sr zV(L}bG&*u56czoX2-$X&-*XZ`yhDE}= z+O}&>q-FWS%x|i?P64;z|Efc z%>i)Th+nVy++H_bHq<^#CBzU}{jcV&Ck*^ zVyN@#-BHh86R)h;O!x*{C)fS+ph5^cS6+=w_qs|wTkw&o>Qhe@P z!94UXUZ~XtD$tnK##{x%&gOjlQjO}^)U!4ICOyoS7%c_WqpAIt4JQE{?*KKcmyd)$ zP1KO>l(gPIv@0ahs3}Kw9ySN9Cz;bU#7$_tU4MVhCEISt!m2=4QjZb z&$}lw4z{=b`(Xn8#8WGxs_P&fYgR*IK95bih~uVY%>b+NkC9(h|6$@Tsf6oMd0^E* z@)L#~{EUTqwXgA0+#+1-*GcCP;cwNtd(LIQjAlxU%1EE2Me?nmlAHK+=-Q2iUDtb| zd*OdO7A}fWHp&_()4cT1%c3#rd;67X&Xr!?Wx#XJ@+;qj=kP0Y?$enq?J&}b?;D$E zD(v5Qix}l`!)euDVb;i7M>|0UGPrs_G@MD~&dYl#o?TZ2L_H3026xktO zLZi)imh~~OJDz=u)mVDi=>yS^0&``X{Z;2Qq9HPvgy#| zHg^sKk8pQ;1N^}NHm*@O>y%&`_{IIKG`;or-4%XgrJ!@$Ha&y&jlPZC>D8MEOwsg- z_QR=b4ZpO(bc&6NqhHcd`Ci_>G-0@$kwkhO{fIm)-rX?+Ue2m7YtWpk*{LS8 zby(_%gi-O4@nL=f5p=VFPn)hV^m5cukH6%`s`KZK*y40Va=iCzBv{Z7sqWVa1~DimYUq~QtJhseMnA?dr6Rl%bK}`m4IQs4y7YV0 z9o}~bNZ5@GiLWSp3ZUe0H+LS$7*3#~dV~W#F>r*xN69o*gyxrFU&tZ-c7iq2o!OME zNW3ae)y&wYj^3gT(%kgV^)Ps6S(Bb8WXUu1SGoVb0(1Bn4E*KAWjF7R+tGaa zBP213J;X^!sf9y~F#cfL15-lqjqEZjj!^Ru_cR^*k0EnPzf2^_+sSy05s%IIChZV> zooD4iXbO63&9re+e>m4;`K}DqLinh^W^_j2Xt86?y6dIecrvk@Y?z~G46dei#YqZ* zbLGabMA*L^$oqpH>Y_hoEkbpwiP2YyP*9tHnt+aEb&XgR3(4qL|}1Uf~&H$pg$KP*rh`f|Tk@!wiM3?JtChxEn#(rIN$k;>`IZ7R`y( zpOoE=K^obqD)%Ld`IF4D?rEKF1z>-D(ZgMd`-l?S^syZI;rw+fb(}#6y2jRxGoNwo zk4)URGvR?oR)p*mjlU#6|5hgEKnD%%f(j?uZvq?qB04uR z(07VIM%Vc36V7FsoN>bRH{mBcEhf9*Dua&p2yC|~jIbaf*UxGv4xZpxG&`Xj^EH)z zv-|lxzlQcOY_3QVq~?_?m~U}2kn&29f88C_QlBqGMOZi`l*HaRqcX5nFfH%&>kW=G zHobK|n0V9eiVkc>YldAlv-4C{d(^09Ymx!t{vPw?%t!OWQ1Hp-2N14-bk28w{F7f!89y?X+%okW;OF||S76nKOUZZw%zcaYORb~2YmE?S`Ysmx%=0

vlJx&rZ4 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 diff --git a/images/build/start-building/supported-networks/avalanche.webp b/images/build/start-building/supported-networks/avalanche.webp deleted file mode 100644 index 3e0b24ca2870491f31ded50486241011a1d33d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21046 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

dasyN9A6wb|o_ z0(VeumZeP?1n3+IF!@-1JDrTQ3&PLj5*gPs96ZTBZK0fV_D!p32oNZTb{`0HkaCAk*cOZj3Y^8+gfm~y5&yTC9#Cgf(a;m={gQ&}6*U!y1xDryiPje)vCJZbF%Tp^9n z?7R+k-YV^0r8YcVfoBCUeLi~7Za#8h7W)mJ{L@!^`8>74Xl_p`(DyvIi}Q^$i{^A=;WlO zC&SvspI6t;bCB!KH1NS**bTn-sLa1EQQ-5*a3NY}YrKb*yPX>J9cLGzVQ>S5!S&T$ z?0yqWPpr8gfXe%*2%o3~6?)_3MVjXpd*H*!9&(&$#%M}XtOMGsSD;>-Xi9Cb?`;VA z!Z6)O@NUhUq~;yi()JZ|({j3C21h|tlEk`A?C zoK3a%q}e)L4>=Ug6%6=p+4BV`~U|< zZG07gCOYvdohYBPXLe`<`Cy&N5&(*YikJ)u7(OLkBzH7Fo#1zKx;dBa+ac`Jeuqc&EN_gWc(9rKI$_-@{fci4@|b zz@bD2i@$a6>R}{p-RiQ4)(=FOn&QIbTXk(BqyPW}V$VW7z7>6Q7B)nAps z01DUHM04KQ!kI}qP#qOMF4)^-!wh4Hb!O6YU*02=tJt!ZR;Q?M(ZDY~dz|zKX?X&5 z2(*VsKRHq_QMz@2zKNT@Hz7)6Y?aa$CVfd5F_EO700Xum_fA|ghc32(tGJp_v5|7@ zGc6%d+GJwcNj>HZ%yJb~MS zU^bj5bl(xUT2YpXvXuwkQtoECwJMEUcab5sm;et1!%Ox=X??3e@1A;{jy{ z$$Yxc1I<29whS3maI>K5iAX2gX@CHVRT@OSH*2_WW@h6w;-sQso7E_*@4sQK%jwP5 z=O0S{S&={htO6%Q+S0$=91|l-KS5mr&6gi&vk8r~}{> z8K|3F2iO2Ykc%ZhVH#3vfeK7VYx;j11zuW~IxVvjD8c?I$^|lC!vTY|d{o+oI#ZY99--|nXSz1g3YYUm7q2h)kg?;8ubRjPG zHtYvzVl`J_rDh-;gq<5=4MaOmT|P+VhiH5swTt}frU5jS)LQDV!$-orxVI}HB{5A! zzeAn_SpXD4N0k5euC3|0WZR1w12p12QSPz^eS#@F((Oj*S1Wk*h4SnoEey5mFwqT{ zU7F!|004<}lYg$NVD&)LhAoM1$}V_*$~F~84PNg$b|;_8@TfC#&8nN{JUiZ)i^|Ar zcYF6PLmhD=iU9gRX*4hf69%wv1E4{CLOU~HdTHL0ezjlzE$Y{X5n4UknDYL!^R?4<8s%%XfKl8709jyr2=PXrI>}4@ za$pN0JRZ{|WT+p|6O4UJ96;lpFQ~jjOirE)`HlU9n&C_|_>XX>39n~58z&2?K=Wle z`U&TN{+5qkJWK!rt|R~7uX;d&9!_T8szM=E_(|-eVN`FT;rb7aiKYbvddYM1QIT3&d6_rjS7!k zx$re_u;52esWNr*nFZ~Ld&DuNm>F${Tf2Msn-dE05M#97^8kF1X806(E-(wyJVA~$ z72O=X@X+kU`v%>bIYv3yS>ONw2z-X~HfP-L>I7vS7zYPP?o`;IwE|8l$_IHAY#JB1 zN+0WgdxG%1@iH%UfRSWE-8c?>EU$g^o7FZwm-fgYmMewFQi)p1(EW}zHCAZ{kiymuwh{l1io0>UFjTHFu7Yag{pBhJ4GBRVY=se5; z497{%z5%--yVMJc{B^WWDnXZ0PmDW=_LOh{0002q`t_`ylD2Ae0NU=c_F=Fyi(pXA zYcQVGiz9oz-EUxMgl7^atFgr(On0}egxNp6WT`#s?T#nHvI8`<116?5E@7RB4Ofsx zyV$mwSw*zbAG&nQF&2jpKwM5!|2i;>Di}OurA{!$?l_Xxmfy1a0Tw{|UWf>mQxNt> lDTx diff --git a/images/build/start-building/supported-networks/base.webp b/images/build/start-building/supported-networks/base.webp deleted file mode 100644 index 293085dcbe2c34c4bfc480880c0eb724dfb49b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22936 zcma&M1yGz@vjsZ11$X!0?(Po3-6gm?1P|^I+#Q0uySuvt*Wm8+$T{af_rJI5)q7Jj zQ#0S!TYB~C)qD1AB`I<7SWN&xT})U(O@UJb761SseY_6A{yc?b6(pbV005B75E~## z@f(oOv@RWK06)AI+Xd~~>L(1>1d2pz|TiYER zr!E=yF01Z;1;StTvJO>cU)rid>Fjyc0cVXZdIO6IbZ4s!5n_iote4ZqdiRDZuvb|z zSp!+I+MmO#Ba_wPO9?@t8>RU$GMr(@j(G_-Is$^hdhC4Kw*9NCAC`RQ7(;>kXP15N z&W8ST@2Ru=h?`@Z9+MWj8s=~Fr(d2Pb+ekxvN6r zIAr{+R(r8&A?#Q*cuzmsQO|As1y;(_ONFj;|KXtAO1M-nbEZ4SkW1^;SzU6O=O%qc zGtsw9>>;SWqp3RRyVOcLgEU(F!@K;%>++9^_w_bm*v(Yssln7zxz5jIj=lZVvOmq| zrHC`-KT(ZF3%A)h!BCy8UMoVA*0O27%SxUWkKwGiD~!y*2zw6s>Ib}mcXp{_Dy=u{ zZ&+s(4`zf2=TS_S4mu0-b5Rz&yl3^i7Co;^2#*S+DJL#Gx`m^o0H=%nb&4*B*MzSH zQWP_K%;kX2Fc3$t9btpo!kyd{3EQa*B9GD|gaojKj|S2XSxR;l%9Ij^3@$5S6=!<6 zl!(4ZTV%Q3Rj@%G#wG~#O71%%xtxTN48uaB46^93tY3vR&lL~VlNAao*%~+{`nh#W z<~M9ogBK47b9El-jj$SDuZKEE$Pam^RPN!GkD__`A9 zlcR?%#QbrzL0l7ws(j}{fZX7oDtG2Nw7AEijmrl<6o`t*VUE%fhf^*PRBr zh^-~jTMz+Jlkh4y3zM+oo~5c}JlK+V(iQ9sICe z*nybqP}8n;@%X%aUiXDrE@Bp9cY$KLKy%nG;OQNOb_A9X<@8~hMv3+{$)KC#M6$Ya zBmhF-n~bM-8QkY`i4nRN-kwlQE;6;~iU9N>(_}UBNoZ5A(v*TyZ<*>{T($z0^x^ei=+!u8t7v*+J;aa>Qhrd$9l}i5IDYoVx%vAOU5R;~Dz6hx!*Om7`{Zsp1I9 z+;Erxp`qkN!Kz=Vw9l?`$8(Qi2D33Zl39%-0dmEn(wT^J5cyxesqc85qm*l1(Afk- z+g2bZuqp-^%EvOTs`S)SjAGgp8LT?l#EYeqF5i2lt6XW5U_DH^hV3-TR-Y%jS{Uh* zr#wivkzKuLR$s8WQhj{KdZcax|MUHl&Gp#uwI-K^3c1emf!C3 zl4yr4dM@PyH5rF6dagOR%9lubZV$C9?ZDRvt!ucCz2q;9e(K3!L;@}3;8bsm4Bmhk zwX*(D5H|vNCUMqXu=ickb>jID03Wk35*P4k9_<{QDR6N93R9133TULrDJzFpH#n^I zgKG90aHPp<)@*3XQ&YoUM{&QM7KMo13gqhMUZY#o?#GrwXnB#~1T74b2UULRFrCG__rk0X=(Pa* z*2+tYM1{X5`_WsV(09HF&6&Pv`|X=fl*6OguM8Ea%JoF-jTX_aNr9vcfsQXDf-+O2 zReREp+p{t18eW02GK8d6h=H;nrkA^da@-{qQ9sCSA#pgS{=@>wq>)uA08AkiQBB$0 zHYcvp4nRM?u8=ig0&pzC9XEwzak(a@VL@^u_zgsh>K^xeZQ@>6TjZuZ9Vv*!D zRE1GqLTeMCGa}M}H@}u1!}O#1d+>u{F!+AQzR-9&pJ4o z%wS4!koTrENUe;QUUM{a`W+T7#nK`6DsP1Dz>hl5 zzq#g5s%6h=Hm}$^6?kt1AeLTi}3{WhOp{iH~Rf@smu6?q0BA0>9Knb*uc7NLM&kre1zY9feZ5C zXvg7(Jx+|WZSdRv3aLICCUQIwNv8$4`XoXV8!0O9gu9{vGSCN4`$&MX0mEA90~#s7 zLHmNv%5BF|Itd!RhP%MeyK1Yj4H|2OJ!dJZWh*%_i%eA!iY$i`%RA^7aBe)iA-Mab zJPU_AW)3n=`f0!cHMNo_vY^cGpef1(irt1O zRvI+@&T)_lHKQM`4_a2V_}fZkUb^4mL!=QQzYRy|C}<81R-bcVnh7+>1M*2yA9O2p z=(#y~I-_MK2%3YDiYM^}F1;Z4=^Fo5y6;i21lNSf1{awWQ(a$~ToB zp*6=h=?d0RX_2KS-|dPopB}Eg%SVUMMDMP_2C|OMYX$BIe^*XA+%T0NelomIeI%t1 zee^#60~>WmuXfc@0^DD{lO(rLgXo<6NR3LM2Q# zIMHxZU0xKe)sw!uOh0RG#SQfT$< z77Xa6y_PKKhZ(0$;`Qpo1ETfvLm!D|wyC%8_HEe_63sGGLBv#gOItnx#a?7;Twm#3Nt69}z~bi8+JpenH*nYsM`oG}d7b zf{C3{L)*Vr7iw`trhKrJNw8YQ-Y5B%r_|i2Hkf_dGQ4T zyMRCrqm7RX7L>^eAGbeN<~zCxZ7yK@mAXPL%{P>8&)}o@T%nFHuKDYW8VPHcP@@&P zVUA-MdF$<(lpHp^qfze|`@#2OEx-5_&hx)eF4aJcviX4RTdIq;%!(<{`!bF`DN_&f zk+*(#0HS2}HKU4tW3q*s;f{QXGKU$YBTEZ+Kn?92Y!(vDHqhb7L%>=}JA#ia6H&q0 z4Mz#1>2#3L_402)EROmS}E99s4)>6H_Ez?<(|H_BeTYG zSdGaTkci12$I)qX?s6*K3KFN8FOIFqQ| zNGSXfYi+$)FJ5b^iF(jqQy*KN3&z17;s)KEi8K8FU{HIA1Vr^nPooGhT>DzcjO zRT}30)2hFI`mjj;Wm$HyN>7zzmhjaPxaW=GMtFIKmf2VDO0HNU0&4yP}c8-jV8 zDO_D{3P9=i91pI@Rzq~wM)E^Q)P1L@V|2**A|`hh6|XNHn%QROPPWw0<>xB%7R9a~ zk4xBQZcg&l@TcnDA~a#r4rgS?(}eXj2_Tk|}?CIrjF_7Yu?%aYv8)vr!S zJdVlQarWuhu1e#Zrn&05zv%IRRs?&>Q{k80?)(yYskX%Qa9}8Z?oYoiB35-ou*(yO zvxN6>p(wEYt^599f7003W={V_j)DPk=;z5VaWjPzaE~{ngp=RiPjigaY*i04*;sdQ z*alFMmS4f|aiLu%rl8G1g`-GBXbX3Llr=L=t9d;$V4J9Wd5%%O+U3v5g(yywIpc@~ zYibRBR(IIVkz20M`cx0b-oS*?1#S}lz=HA&nVL7Oa8tCUB+YM}o9$o$gKf=8zrc>e z9V-28#9lzSuyPR99{0z)3l^exjMQc<$f1mQK>@G0s0@+?KenTb;4BR`s!dORl*zQs zWl5N#h1twev#H80434*8Fupx%#QPlw{WC@cWSsw@XMiYTZ)9W<@r*n3Ey+*L1f}U^ zb0&ld((hGU!o+6S`S}f$_3@v&f}@2zRd@5{ux_EAx}ULbOBr%9q3ctpdrS5SO$o?usF_`eOCH40~c?)-jlJY{>GOIK4|!;q^xT$k=;$+GwJLfahk-1;*i zu0PLqXE1yIWcHqu)$f#i^#{INnuGpWMEc}t&dKY}Pz=&9tWSGJBkn&``Z;D)+Og&N zxy?vc$quenSwGo8#!n&0cBef8HpTd=54^9p8}lWd<`2e7AZFX8I=xXRU#0jvOHseh zj=pfG#W1ss93J{cGKG0~5yB6o_?Up!>58W~A+QMAk;>9AhooPTC&?PIQM4AQGQzP! z=@!LXjC){e+a59^-f}fMQ=nR`#n3|8md~*0ei# z3!ZgwNnA9cr!w;p+@&!=>fR~LkptT}ts)CP&+TWEto)i?3Feueampcwp%!h=#0}>{S z>iGj&%x7Gv)jL}BH{$RalG~P|ramM}k;KXuoPMa^P7k7``Gvzm$cIne#KYW%Um5yC z&1?O7%#e0WV$pL(r5-QqK{fkguC_&L!^fr#i8Tjf>z3`Ahq)E@&4w=vcr{0Cho=+E z_d#`1@*GR%xDnCtAi#*n7v8Ofg843&!v|%F``4|EoFsko0}1;&{LJn|;#Y^R zx$O@tSWR7!h#q)V{GY9Ddj}enG!SY^C?k-_)j@R_@thqL+;JWw9gk#~c^w z$f$46vFDG5?Eb^S*ny=arxvla1=1m3k99~MO<)cm-g&k`yuZifb(3<7Bmzd*p)E{R zEG?~5MAHV9#C7$g@#K9qY{*i%33mv)!^pU})4Bm;A#J$}iZi%_JACadM zGm!Bac!N`rKg#h2COSzyxU!Pv$Wys8f5?&l{5f%8e8bivq{WJvUKV#c@3UtJXG11n z1IM`xiaVlUg8CJ3ev-^??Xy#<8J*O@qHljOfq3kCg?F;dMyXJ3 zlNV@At5Wcu-3$xfi3xFh57)zG@tcPv0u*o{lN~&c)|GZwF5;9drXeiDB2rwbB{_nI ztBYvmRgGERb1`er=@CELnIXW$xrNimITvl@*b8W%ztJM4235H)R#q3+-Y9n7 znqB0STTejNmd?K=^sq_xq`Qp*)vAzW;$B(tYNoCizxxi?Jf#CAbt6B=8N(88;#nu! z`C~b7&+~Xr=g`X|{><>V`{YF~*=7SJX4eeGvgByjUEmt8rF?DYj)$I85%0*$sjq!n zLoV4(10_YWLv(%Io}Ew3(7J{2b=NRIf>Sl;&u%}$r!iSyrN9gRZ94hZckF1OKVqWjFUIexe|t zRH_>75T(o})nJ-_vV%1l22x<~d*CVp&Mr0${z>r={kfb-sZnl+Yao$BYCm{#t|gG4 zA_2{AcZ_#ONkplOm__%s=Sc*KYP;2}rSGS`(m-^H%494%u^*aaqPLf!Jh{?XBY%uX zZ+?|^K?Ypq0rc}lev`ZZZk z#CGv`Td5@zc}?*(+sw6F?9B+X+bxk~iHP%5=IWvb&Y)z5>EtDjx! zYuK5FJl7VclUn%}7hqQmS|`km!7@Mc17ASiWC%lwW<}&)(5~8aNryjCL)@XUrE`xvSwf3dGVX&7B{nA>9 z&8WHsa$uxW2FwZNM+2K?CjEs@P3CLpTqpBMYsQP439?bsJpyhSF(5uz7D(N`m5t{VX(3gV~Zw(*(M{0_zEox=E(Q@1$G{~flP2p1U%2Gg!V~KUn zZ!tFXD|@S}bdm0kaY7O%v$-HaVJyjn9$yeLvGtN3o$jt2Y7ci(O8X0~FGM1a$!4}%EIp~CwB7Ds@{IrS10P!EuTtq=8DHyE2DI{$ha8bjl~b6*_;sKU7s-@ zFNpuUcI`xbGc7TMUh@UXOvd24c%KrFOt%@X11 zf`#V6c{k?-r^W;LOzKvkRg-YmM~c^f4utVu2@WxkUqX#OgU1;lsP@ol*@Kz^KYEEk6Jpb(c z%iqK)x!(7@xB)LP?w*=Z_U)w-yA73R|83MYU`%)-gqA16Iw>B34u8Fzh`3n)_+BKL zz}>`@;7lK7p)w&#pXY}kuSK9O1l|<+Hc8z|q*GhXr zCV<_oBKobUYQtCLf$llV*C%zc$#_ENV=rxhg!>`Ao%Vj-25inQJ6xB&#qO|m01v$9 zK0r0SbIoi%BV{6F7p3Eid?Zgjm+9n#_b(fzhMdeCE{U2_im~QveJngxg<&{_I~hTUu|EFl+zSU$PtdgX>AYBnQqrceW$tr0)qVV zsF;2Nf&zRxLzjp>Rnu_q!H@D&4^`*c_1RtTiHvq;o%wJ1FPjgWr`Ziz{>zkm0wX|5 zU-7rhC$25CSm4r)-z9JyIPdHIn*9{?R{Uo6AaAeV*EI*M2Ex4nZ$Vx;o}gY3FE@99 zru;+#-QU38D~_O^^&jM4x{kWGd@q0%ce-!BZwwFeo4`2zS>Gk#98mMGhQQaRcRMTn z$B$pm53eBa_ul|OZXg4Y;|922^^OSCzxV9|iug8VzX>b>hk+lDQ~9T=hc2MNao373 z@Cg7MH~|3;&4WDvfl$4^O2B5I-JA8R`b*5_=5|-pv-}df$pPLg@#}?d_RPbNZn&$9 zqwJ%H%x@I!p2%oZ>fxE-%rc;SRC?N3N7ev5G00_K!G=#^_ zk93d1GwwIvDY+?epsbMPuT%kmjRwkV@y?AUB%8IHgXiJ)I1te>Q3hY?NWzJ0Srrcm zAm>LaTFokQ(#PJ#;onGLUEy%3jp|*l8o|=~55B?2h?y5~Ysl*xB)p18GwrY{c(0ZT zE_{71%p(0`%Q+P4kKf+tBR)y;5|euT`;;X1*pSaVP_c^5qB0xp(FkT* z{gQmR&!0x0i7RHiJ5;>`mGEgPs;WcHcL_)((8<*VfGq2Ojo}dUF)8t!7;-~t zy9V*0y!t=Jp&ypw=QNTUWg!XmkHtHze_MVyJy^uY<@f$qPk%gc(Beb&$Qd}OV4K^? z4xJg~{i|OkbTg6P(ucWr2Y)>IXq$+mb+l8uto$+l-@g1~NubLa)_?Nj_uufih-H@0 zT?YOin~(NhepyU99r#q)2W|g0wm?%08^Lb%i)po}vd*0B zIU(Ux4nB$BA5p@Cg*$`es9!s z(>yFO&y8eS9999>X+zr2P}F@JdJl~YCjOWE(XOt2Uno?vbw36UWp*t28Qt0HrQo3f z%Fk>(WznSn=Xzv0IrTP4i5Wv35<#H(E@cpHBAblwM{`*CkX&|!pjEKxDBMA~_tpEi zLl8jp-+{swIfjBeZk6Pbz$g4L#Ze;-FO}PSX$Z@Afl6dv?VlN>j7No=Br{>^=>HG! z(LLih?4OUz#o{LLjC*~f2(=sC{64UkFz)-(>m-L7q)WI(p)* zEUiM*2l-A`Wj|>@<-4I57@v1)S;eE-3N3s=Bm5upeD^SkUUIud@6kzBi^?p2UIEIe zHP==Hs_#OgiXUuLp;L)NS&;oyPVk9G{*2|9+gRH$B}^9mLiHaJLu%T-P*nP5q7ce{T)_suG8?9%nSXZmpQQcU z?qmFm=(yiqN8;g7-|a^R7&$nLcqzTdR|X@czEJ&@NB_)|R08k$jAeR!x2iHFI|P*Q z*ItPya-M_nj2(yP@s<3)A^bDjR<|xb03sbDQL*jwZN2^C=V)pN1q{27`28EVKU#y^ z+TNA)?dU1r9oaqzh_O*8fmJGa()H49>Ggs2KW_h(YSCp-gK$P4m%0Q?G|S{vJF%AK zxNp?b{`bJDHO%X;@8&y={8*4q*fx9HRwk$-uaz`LfJ_r=)2<9@LF<}Awpa19r1 zs*xQk+xqX@`hpBczdi;lIArhtKN0zR5=b}aAEJQt5)VQ8-;?@Rw%j!jK3wMr3jSB^ z{u>87INnhoQt=aByQ22L4Mev+OTbO){o5QTIR4+K^`BY0FKLzhftB<7lFQ)^s~zA& zBvhm8+q3>RjvsX6UJeV9{VBYUby=tzg~K_3Hq(hmyHM2nzXL-E)(t245oeBZyN}#k za^oZUr-J+s;-g3DIa?L)f#&(IL?1vy-zf~+#QaPCf8)aOdkeKv^KNci569L?KHT~H z4mI^z%YO>ef4VEDJBEhEc|JZ48sg0CeDzXsxtoJlIc;vYM^-2M!!cVF(Fl3plam{r}X+{74t!1+fOz zsWwyztjmP&27k2gL%!Ie(!mIcQ;28Zc$j^_}?Z-Hh_vC*sVm>$?>dpHtIfh*0VC&z6{OB%f z4K!v?ec)fKDBON&*)%iWm#DbE)_H#mw8-=u{;SXCf3JbK55gRPSFE#PTPuGm|KC}p zqNmgF!GQnL^(8T!dxOQ*9iP7k9WYEw3Ys5Mh?4qmqmOk~_&)JRcih^A)u1~mAL8iu zj!>+s+kN}5X#OWj@tqafKRGad*BR0tGS@dTT6*}yus?AXKLP;Wd%u3-<4k*kWMyRC zCLNM~1&QhF=eH>BJX zE?TkNzTD{4p7qWMEBWdhK7bz8m!lH$amT>9Y`ogVrF(U>fS)~k+vd~c+g;7mQEE|d zD7djxKu<^yyxeTNuUl+Q#AA1t^8U)PM#eo$3=6Ai34QC$7W|We23w@jN>vI3tV?ue zXshJ$B3qWJ$6{_$4~#ddH=e?rE;zrWm>RnysPph%CleH+MO!8VW2B%yzgeaS<*zKjq1D|3+@H|Dh~fzb|Rav_9JIi^{2L4kw|Hu z7w6X8<(hj;?~_@K3IlXu89Y^%vdEK_ZciH7T0Szg76&IkEAca1Lzh7dPFWc9Ml+nU4QIK^i>eYFjp`v4A<6iL z{>0%-Z@Yczes)p8gdLrT_xm`j3y|JZiS-oH;4of-FVDwErvWhIT&sli4hd|LSd1hd zVFn|Ice-$OQ?HaDG(DZrb2)G;WZyl1?uts+6LjwUqMfS=Sbg91q+G)VUsf=$@Z{C~ zSdW$iKnVo6!h_-wgL})HqH{wuL`~w+BC`aIUuqO^tLX1!#%@FT(@tc7Ag!b(AVxGI z#)C~-5c?P%UM87yX8|4D-B~!8>b((;hon9$%AtxgK(H_kFF#~=FUUjuV4c<+?T7P%w~ydn_IBCx#hN!!D#+eRZV%gI77$$m5|78 z(6V3tntsktR0t*V39-%6z||&ijj+;3n;i^t)Ff(Bno&B>#}S_5 zH3&}^e_mGls-U2*63-)m(~=WL`wRU{84D|UDR0n!t7BZlwWSV+gbzx5awkKSntsIa?W3I>G;>K zDOg9&YC&-Iz|R68xdn7!zjw}W8Q_Tm*{=BRU49E@C{G~~YUBB?_QUVEi-+8IXMpT6 zBUR51dZ|kt7^RZ?&`r|IX)ckHd(J{ww5=gKvvM0IuBASGLx@51tnUC>e6`O0tO?uw z@?%ewj|T&%VH^Nr9M&`VU4`+7@bm=xDfz5M1o$+cKS62f*HX?EYjWnYBR0IsZ?abu zB5#7&w(fwf%dn2J$9{PbH7M3%zI#P;m3e>*H%yvlwa$qArj$;c3ZbGsstY7cIsxuv zqMdjb$)d1Kn~YyIuj1TzH$WIGV-p=!PFg2gC6%q4cMgmcI2%^{>n7w_)*Nf{HUcFw zLlG5`!%g+DGn^RV`w*_A2a=&L%3F9!iKrnuPXEb3YY6EzhWCDkIcfJni&Tf=1o$w9 z$xID4LG$!XC4)>?JB6{WSN^?WivgzP4_#Vs;tQG7jmmGB5C8xRlq(`3j7hTfgO1}K zp2HCT>nQ2!rl4{fs3>_uhppUx zmct69YO3u}xCue&c$4t}Ga?W66(-W?T}RnZ#F9o?cv0;X^YiJ2y_Bf;jKl<>BOrf1u(ysub|cI9IMn;UvLS?R72+o1S?~ zwLuWKCyR1cn}|2^$a#kpF~jN|L8Va=J#`FbqaMh+negbZ^QMtXV4+P9zPexh9Bl(&T-1m9){ z^6>cEf0W*Y{LtyM$yLGBBDqrE#y-Ci`xP~|Qws0PJv^ww#!rfhyMh6o+A=W=?bAjq zi;V1nCk*dOIe4IT{X!zOeB1B-PHGR=$26ufpdaD-UxI6_>>S2}a5T1)U_^EWHDUfBE}YOF$V< zn~7s_jxE1zDGD0L9j=fqZC5c0cM3>jePgR^-;X;z$5@3$tsz(grLwwQN`TuRZFD=q zkGv{druo9GzFwe0W=jD4YV^t6z@pbWGI>Z4n)EC2(`f%e8cZyuT2~r;1L4&(#Ia|5 zN$s1RbDF3o6Tmnv)pJRsPe#75m)P6y8=jxfXoUh->70jfF#$c%uVgysrkHG$*p(>k zR?qqD-G_KkPjgtUgnPswBwYPX-&6t{wuZp-_ix6^OQpxSorw6HCK((nD1>mXUJE*O zH|?2+uw}m9G|}yQ>+&r6>!BoZ$v=u5mq_xolNX!2_K!GwC{aFzPUi89`7UKdT*pE zUl6rH3%rtv*y+B`I+W8IM}Q4xl%d0ytYP0hssvAyBTB53{3)5*o^SKzS&9cy9iIkU zmgXQO@~$A>-ig;^)*V9PsAlu^TWe$vGELTdDm5G){rhIzS}diuf1y>F?{z5lCLe`_ zU|SSv6X~*Xrd#r*RTI|e&zED{7+0uSk77*5a-8T`B5$($Cd?GMNV8uGZ0*ffDo!ls zptis&9{%cBmKb8_5N>>vpr11aAc+kmK*uN%3?&O2-pG^XME+Dr6AkyUH2LS@1ZWPB<;jr0b)gub$H z$roTgRP6&Bvn}owNvX_2+^ep?Hgkve>%Mj7Z;Bg9uyq3fTCI?u*73iQ2kQYxEJ+wx zf)3^sy(&Ka#DLIPt6v!#68af%c9KhO+>y;K#L+|_+*s&Q-v`(GEGDU~M$;r^Z%eyP zq@t1py3VX3zl0iYxR;;_)RzmMTn9bsHiMpzreyWL1dQ^P}ds1 zpm!^sH}c$?hbLp-cCqWOp@U$NAw4v@*t;X-BG=g}7JVlPmcB<&td`HCG5#EAkbn?& z_DH1T_lQcLf^JtIHM>bT(3^N7zg3lkQ>~z;5!f<`MJxDOC?^?L*OcYhpnpfjQl^-R z3AR=WcQZe?y5OCW%Q+*)!G%lV26-Q{`>w+N&`lIlZyE!#e+9`fe7B$9j<=B4&#iO# zdo!@9oZR(y{X*&hWkTY+Jia*%b3kEyj{%|C z?0v#S)rW5L6DP_kg-3Cdei?vaVFj*5xD9-xS4DsBLgnNHN~x3syXkyGe}D&}1>aI} ziZE7MNYFXWiVS|?udmK`eo6?pa3!MzU5Jm3hmS`P!p5CmA;oQSAT#$sxUa}Xnr%s5 zP}|mr^Vw0%te<922hv$f9SA=|T#*uCp zdoLF526QdHHwV>nrsyX@oa7=46h$|q>`;Iiz=5Z3Iw!cWn8lrpN64Q*6<)aIwx?tN zPQkrHpQ3{*;JS-KNl0L~+|$)~hX`z#@Ajn$SIDDKi(z-j4g_eVvv;RqT zb{)7K|NI4m!Nj1K4!l_36L@WfHPv_7`K#h;0L`~sY^{p(w*3Y zCT1r=*sIQTi{{D_+gqvAY(B+Qy&yU@$9Y#lOZXnAQ=)|ON;j`yQE+2!!_N2{zTX`H zE`)glVoueA3cl>+Sh?3{^es5zbv_Kw$&4k{IWJtI1;Q7*wOdw4d*@V1QX;`K7$MZ{ z5G23j{reD3<->yNrw$gG9m^iPiEB`$lZRj7bFg5&N*%Sh-mrz(*~AMcexMCpVNS%#x%yk|;~Hp3WH<^{WcDt-V2yW&2P#ZhasIF+Q~1~_?($eaT2F;|PN z4SRA{V%)|{p=U#fiONoeRcNHga^En=x)BRM_e2d>Bp;;lWCe(>#wIX)Wt}~B4A%oZy+Vx>MVMd z^GNl@C^ys1r1W9tEGf&KvPT|n%sKVh^wcxtO*LVrscvL1SgMUp>ratSE0JX(tEprt z;JnE<@KYfS`2(90N`*R!DzDyUt)&{%Yw$z{Oy`rtbzoU#Kv_ ztv!i1oR-gS_o=pcK;B>I$hca=V7p5XBkquK7mI>LN-QiI%DD8a?kK{6 z$z8UznY=4XU-gbxS>aW~T|rr}gUJ8^^)veH>Jxt5y*P`+_==Zi$E9C-io?u1ht~4M3BAk02KmpC-?y|SH3m1ifMcU%AW&|1>E=1(AgvxLcfCt zr5+dml+1Oys7zwPQ!oMrFputzTlSFUUTdr{8q~N3M@|4&vEfn?<+p(Y(r8fqt!7>6z1u?oRGOWLB&Z>c(9kW+v=zW1?bOo4%4Vw zYZ`Q^F;g-d4@SVwDnoN)2AMOi+ZKBD5l6Y9S1*y6QoYfEBiSV>@nlLcqDZ3nu``>- zz5EHfKZdWjH+PJxdo&6c zM2lQ&%wXxZ2jnDce9)u5OweLu$FH-q{91lXGlYHsMH02k5{yBvHFF8SYa}peTye#o zxudMk?-fReL)z^LE;vuKQS{8T0>MR@o2SghlT|^~{y(vHZhzY|XiXGTBz)`ZAZ;Fb zMuuqKtds5T7wv}`rZ8;}(N%>KE@Qye@<}352tuuyGZBW&?kmXHvGj-O=cTn#0-aA$0!o#Rg1JmlB{cx)2TL0oqCp!5D@#4|pUuFpLetZFir>f4=( zGPy!M_ESC5C7(z%;Wg*YaUY_ZD#9%m0DU%qXZ8*|$KTPg0k8j6AuqaIYquJx3E}hR zgk5j0N;b<`5?3@Ss&FJf7`ND-n{}zx*oR5#u8L;aIGqq!W_<1&g5yxtb4U(^CuQTL4N zz=vE^!q?AK3rT6>`1}>#4I{@Q zLcn0$krI#qP4k`VmbP%8pru{#Z2x@wd8X9FCKYVurOL%?9@7j~NQJ52RftwyR36QQ z3v6}OR@xxq0?8>{3*RK5a?LZE*f&n}pujl=$q<3w^mFDK-^@ZX2}JH$#?ZvB6^O`k zHL2=P;gcmBuoo}?t6xZ6sp61oy}T@kN46J>XO(`uug}k(EVJWra^1x~6K}b$q78=4 z?|M{In3P3!>$3tDtMF!Q=Z{pnzkf8o0SPZ=;bEB?)8aQKw?57k+ymQ5iW+HeBI{Jw zRKX6`vR{i^5rrdNOBkPDbd`o@sZMKfjsi(353Gq%kUoyPht`nqvAkTSH5Xmy)Y{;f zJSDYO-rZa(=-E3ft|9WgNNZ)AE-3xApCU2Ex?i$_UFZI>op{KT^)8~$CCgL?f}RlX zRca0~`*xy9&MOV;A2y6S47IoVO`u6vb%)os&m-;m4&A`$SBaX1EHaXR6XwwHV-mi~@qvji6EuZ5*W=15{83nzS!(NKRV)w1l!|N{Fb8cDIE9I4s zySwd31)rH~6;`iT(P?&GkdjfY3ch=DRr`KiIwT;$K)!gh47=r(tlEYr?-IgP=<_q5 z9mKPzJcqXRcgJ{S`T2qjx!OlYiZOB%OBPR%&o!6lUt@hQI=+HSJtCiM`1sO)?0n(M z58^f9S!Bc;GCbXzE_jsHL7e;;9+9KDor~aLpR@@D{aH@r8GK}}_Dn)!6U#_IdbHV5 zFkOKRAzd=n4GztEVDvaJE?`g1cU3Ibpb{1%f&*mDnQ_tqxlVQoEA3@u(HL;L$#!yV)Q zC9hLU6-eA_PB%`A5=mbTu`?FsUC88MCPa395hRz>J>^j;D+oZ8ToN+|b;&q@d>EE$ zoBZY`;yv%n8ES+79J(Wd5BcVu+0aNRYn6)51SqYVJBtuBt-irrN$I_BpLs_8Rp=PL z5HyPqF3^(94IPV~JD$}98H+9*11J#fB&=K@2=Ja{GhyJfpQ_^MZjW+E8xkK`_whPB z3kI`7S17cteD(vNQ9R4;cla>6DYZ(8yKnvo8j?PZfR=IyU%u^FwC{$An*_4}+w;hx za3U-Mmz+n5$H7(bBP4Qn4-7g9z*FpFh8QX613sG8Dtj+CyQ4k(%cv)btfLyUW1TmT zl^+xcNVU0CSZOUb{C~VDD5#RE1O%dZu*SRHR(BG(AeB1YddWkT5EW3p+tx|qb!<`q zTsSRcU3U|@Av(ADD{c+bD9vN%I+%m4M(A^@0RUu|(FNX5nVa$+yU}Xza?-(QEzewR znSP#_iU0suCSOYRou1}AR|ZiD9N=T44WR2(;gWuuk-!ZoCbES8_2a1r_BX}xVhPlY z)FBDT&u;=xo5!C!6wuc#*c=4XZ`tbR8wrihGZWcBN>?8+t6og+ONd`MTf28`YcYaX zqhoqVOOOv01@?lJ#jk6;8DD?TY1{TwY=0l53f1WBP9Kv7N&-z6790U3r>`&&JC94Hr9V)KPBfFNm;SP>YGW_dfh4@MYY=ym2h)$ zuq5WQKReRo4rV&aldjw#z98qre3=xPL}Ax!UH7txn8*Zsp164b(2C?W$SXn8fNIhW zyv9@A1AX!bQA9BZeu&4P2V3@I-XWdXv+6E?i}6gdZ5(I24Os*^C&Wac?u#w=dc9UA zcRjGig}gb=KDzcN#giely|~MXOCv6#%>C-K2Kc=-*VYZZ1Vvr8lh5*F(>kGx^a+ex zClLe)f@tG8Izv>3so#+!7V30Pob%*wN0{YQl``y{-KkZy7a;-1+1#0Hskj+`$`Si= zj=l%_Pb5RXfdi!baQkg>0}&ABRk zKS}39^uX{4xs#PVVZvqC4bLvYBVH*!+;-%22t6_t`78F>oj#MP!MA7!7^ys|)R|A^ z!9aiiP@u=f9lfl5so@35K?Hf7m=Ie=NF$7p(+fYyD{oeHcll;|=bv(diq5ZN7J~>| zqS&AF$0%W^mujkHzF(#(fB|aD=raP^A!4-uTuO??Zb)e*pxJQk!Q|Y&mr^n z9nDn;8h*mnlQu=l;Ah1UJywOS|KJ2_yp&TDqTueFSFx(c4=b*JV;D9OT<`YH;dYF6 z0a(;=aB|4*lU|ea^nGb}WUS!2CXKH1gO*^Wa#ZoZXhhf8geDOni!DK!0OIbna@wUL zY1zu8>B{#E#>3w1G5`Rk8a958^5x~Tao>lj{>A9}LrH)M&@+7dMP;|pq8F1ePYp&q-Lz&PrY%GYabq#W4N@yagOKge-mm=|xq)Re5i0z~kG*G*Eit0!s}( zLa&_t21HVt^*_%+>h+RVhF7Go(LFWDCI{LGLW`zLOAK8HGL9+)w>X3_>Qo}e)T|0J zTwt`63H3xjtm^Y6^}IR@ItKs%K7o#)x%L7fa40>}3uWMX*dqE*OR&-wfoR~;_V?Fp zwHuwRR-*vcjf~GMQ8JL>RzI{DnM!2f1>h!2rWKx8GOL&E`K7IVS_uZ;@O1XD?qVcy z3Gm$dFITdEqfXVtS+{D-aDxE5Pn2 zu5W_3VCmv#;E%i)<39@fRH>N;+4p$|QCtL_!1N(*fB;wzvEip{8*%}xyHe*xYC zjvGQ3R965k_7AGi5;%MtgF#anV8@y5CvT#ix$zC8s3Z~GxfO8ygGfCjeeQ%X8PaSM z&Jn#9tv78tomFpftVRP*-R^$re`{FhsnM4W`^C$MZlu|-4wKD?&c54EVooT=0060k z=!9JUN2de%AnHH4r&F~eGS-zV|B-Et=j$IG)V+*Z;WaqM$1kn%e=)*+C+xLS1sBV- z5Nx5w8VfI8dh4k=%y4IDSX8;L77fcglLIt2F#{$C4`MZA!4^9uBw%rVU=^CXR_jgX z3(nUvrbhsM2XV3aiMj!xU?bQ?yI|Hd!6Eg%Z#n|qcn?mlwSctZ$-AtsVIsYZ0pYEv z&0G}Nj?B0?S$@V_D|O@al&=(~8-=qsw^d>o0#M_!1lRhtBu0ZgMzYZY!QLp7?zm*tQ+%|#$q9uUt<{P<6k713|huu zkoZw&K&YVP(!H4=07rpeU#3@@ljkzJ($P8F61H!F5VAsdkvc`MPHm{T|A}+RobF+>N8s4@uRLS`62H z>4x*C0{tkL-=bb0Lnn}>Zn)ZSqt~CgFwqb3QODFg>v@=(8DkGA7HUavV(%$-17BZo zXdl{&$Bmo z%~YgTb-+lsIN%3^Ir2|bE>eyP97liy9*dFbGAz;9dvE96XV{5ff42}9l?QJ#Ohi8h zp|tu{{nGFEUPbld{3|pQDGw_FM6Bk%-iAoXaLX|`kDVjrPhu2zJ+zNV-}ShQy0Ik; z*#hr7*LedzV}s&JJK@mEuWiXjnmAl9FS?#>RO|H|DSWu~arxaPm?+Larao5l17 zNGT|rzDEZn&pheF(5pKyl{bZIw2V3#;4H*%ep;GQk93##fdFf@gH!;mv(7)t{0$qK z`rEtk)D)aK29Qry{AT{AdIfY4K;V%FP9h=&MMDZf0t(#Fq>-*U%T^wA$#eCqkK`vt z>c*wmLXU_MRj=STT;I9b!ogL%x7_9nW zHK%EEdmBndly6931GfDM*SFh!g$YvR2EJetj7ez;;}iO`dHCYNP#T}HOX-fDZ}HlB zZoJ4M`y>2jIyIvy1Rxqf3>FOg^%Wq%qM~5$+oy7)9K{2ONLPxL@SB8;UiWF&+clmfyfD|+%+ID zS2w<^?=}6WA3fhG6yB2lH@gy~x*jr~yX6cuSHW$&>OvKE<~CEXqCFlyYM@J=-R!5w zA7zeN9ao6Y9vnmL2m=<`F+<619#hLXiiiDmWAuPR8Jv3j>F|Hgf+TxZ1;co3etgLL zWO~c)Qq=N@VcNvR(b|Q74XfZey&JjbTV<=~WDgq(LVY3uH!jDeEIlHm`5qfS*0ghk z8ZHOnoR)2zz`i{Ie-yakSXiuTcc2|XMTJ`ZKS2agSdz;;bfVvgCZiah_5wF!D?0#T ziTu~^XtHrSnCcU!!JSx>xeb+4)Quga$p%5YgF(E1o0)}#&VxHd6Krc^OnsO)j3M7f ziNOz`tD(Jg^phM`No3awBQCk5z$@q?AGf}oeHQy$oPS9gWoz<^oGiKY2gpT zJ~dGD(xMk>MH8M!_3R={3=p&%*3aK-J<1widPdW3&7EJ=(l7XGkAnxR?piC=Z_WfI zHrGBP{*YgO+&hpge~|}X)%X17u=BI-eaHeduI`-oTL6ubxSJ;xsFrNS?}tkuB2Rj} zjiXLi$7XMNgOY%6d~M(X(p=&5cwDfy++wUAoJj$kI)EFC67x`pA0FesdxVk;2KExu zq0PR-RsACLxTPUjG17&J2VN>_xz|$pon-5W{8Z7Qb!`A=5>op3ijP*X0NQDl3bg+2+)u)_ zzb{Uh+`hg{E&w+vf;Mje0YpI+d0#Z#p|M8tnz1)*5>z^0hT2dKtUosr{htap+`j#Y z2Dx9a(o0wX>=0(GM~%oe5LmjxWh1*OD%PEfIHXpHSO3 zSIYZyNsp@TWstp#J=kPf0Tr{BPhUFK@bsYkX)gl)j9n$ab%``cnRHP3xRJp&txiI(3^@UD0s6f619^ zW0(-wzz&1&k@OtssZ#Hy(vE=&M%3%STN&ab9Kq09*Bw;O*J_^ip0d$P(DX5ZV70?$it{i;gOzjZqBbLHs%jA48Y?0J zHRl3`0^uW2{Tpo~RrV!!!~OS&rw=_AgMj`UKqTsiWQx&ZoRZfu>t=i_zY9_|)iY11FUe4x}aU`n;U#D*PdRCS0rVhmi!l&QE+Ew3s zrp^;e;9nuCx+A|wRe|sF8hrlpKOxnr-=tSs3VnJsZ{JvtZTP55&ESG_2v7*+^34>2 z{^ih4d`-?G7vIy@+t2Omvi~+$01bt*z0$>|v{ArF%S!W18DBvL_Y`yvlEHy0*i*8+ zeP|1ZbAVCYt1?ll%n5&jkXpy)HbpIcV>HJ^2aJMQTk4)w5IXPxbv?9?NZ<9ii@LCz z&r=om{3Pwipmnr{&%nzRWCpk~37;t8(#Qyqvkqf*hMDl}{Hf$LV!TI~_2=G$`;>yW zjr4h%O%0q5+G@qH2cG!0hhGRlCBdK$lxZ6@nL~S+FsG3Dfd4Rzg63kovMB=q@X^$= zaXO9rOJVvW$$d_?ED)UBg8%?FACv>Cwl0e{CO<_wz??xrmLyK zZ_I^btz_nQr;?Xg7E+??f%&bJ3a!OmLXaE-m0B4#$fUc@$ z-Lm{_Ji)zx@T6*_e8XQqLD*#_ujBdNF-}PcXXmvodxIu3d%JpuTvN7z1EhK6Dm(z} ztf_&VRFogGrOLxb9X6Mh70e)wKIhTv&<)}zm^mUA4!!MOyy$%!0eMuhaOdq0d%wYV zuy*f^sv8!700xbYJ*h>AJBNCwJ}>LcW?vy~R+Z2XBge<$ck}`0xHFRsXXOMyiPqIQ zh^CnYE+??f%uoP#iWc0|N5Tm>A-3GWODf&_*y>my$#)~NQ(|yrA?^qxEAmIlU9qLm zMsW|LB@XYL(ypRQg5wZZ>GC6r<>ejV00)=)v)(K-W=cF^t9#R{%&2wQbfVi{OQk)z zd3Kg1gKNZ3YFfquJ_ui!Ks&p+RJ2Rc!DqjlqQJ(FX8c=XXX}UplO{kBu37EJPE8b_ zb`q-=;9^U2y}Yp0W^!41@$PL?$J8RB5R>zJ<8MS4A|x)L1pxtyq>uh#2fzr_iQn+? z@yJ4MPux$Sg<_BDp^E8fgo6$^01G`Rw%3xwJ~7>%j_!DOT4xE{(I2=`_KmQfWX^=1O{sv@_ge3oK)YLUS1VGLQUYMI@h;(=9AFMVJ+0;0ED=b+95DGE z$MZhdUn|?4I2Y+ey8{7Ph^fw7)GKfEunB!0y#B4eqF8Ys^!4j7gX^|~@rYVC=csI)SY%~`+fB-E^0zn30StgI%LLQb$Nf}B7gEss8+qCJn z9kV#rEP!`!-<>=A-p@;B)=u8AJFw3QZ_FnuSXL}TluI&nk{xIr7Zs9HUm-eC8f5|t z4*{9pNeHW+*Utq-=rG9S+foyTC2+MUD0O4`5CAo_?~)Mdkr*_+aZxJ(kbE_^ib{4Q zccsrY$_rITMpA21R%l0`VJ|-X3z3ZyXNlhtuhCrr%H{w705a6x2dW%~@g>sUFBF#u zvxS2Fi>Nm9FSq!d)LlxU0ccOc#G1%O>k9(?%9L7sxg1xMRQw1Nj`vtN67E|5xY8rI znTUhrIp)F}bQ?=bDV$9GT^g7{DK3a`wAcd#GfYWlLROBtui)=(%K$DSbTmPacE6#ZFyAWkcNV4sDFa* z%zBT@wYCkV{{R`KO9^|Ug*DQ1sPM*p%NgD%hDc_dMPLHOt&c+Ic(xI4fB*q(hyVG` zG)!sdVn+0I>!rM2DCF~YFa>v{?8nz%&M7!5+c(Uk%4swS$|6dxd!+3A4avt>uYTVWYG&;xFfnh;e`d^QO!s^WjAWAJqj1SC8Uo6Z<9|o*lZop-?b+& z!w&qweF7zAzT$zh96DjIa;W!^O`jTr&(gftFVEC)Hk5G?=4U`diJ}<@dl?b^T9H4S mbvQERo}fH}OfQ`!GL{LcWq})zs7;n3tc%J*7Zd;h0000k^qC_7 diff --git a/images/build/start-building/supported-networks/base_sepolia.webp b/images/build/start-building/supported-networks/base_sepolia.webp deleted file mode 100644 index 293085dcbe2c34c4bfc480880c0eb724dfb49b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22936 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 diff --git a/images/build/start-building/supported-networks/berachain.webp b/images/build/start-building/supported-networks/berachain.webp deleted file mode 100644 index 6e1c998342d6585d48cde2bff1cc4370165f3479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26012 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 diff --git a/images/build/start-building/supported-networks/blast.webp b/images/build/start-building/supported-networks/blast.webp deleted file mode 100644 index d81f8cb9a7b8018a069d3bbebdc8f1001ad94c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21678 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 XG!^%j%7=$RMhnV??k9`>meBtJRp5Z; diff --git a/images/build/start-building/supported-networks/bsc.webp b/images/build/start-building/supported-networks/bsc.webp deleted file mode 100644 index 9f2b5ac5311e274bd624bb46d3bfc50f6e96d06d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27782 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%0A7t# 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 OklJ`B%t>>A0002sF`>%< diff --git a/images/build/start-building/supported-networks/dymension.webp b/images/build/start-building/supported-networks/dymension.webp deleted file mode 100644 index a9d0dfdcf3b23f853a94be45656bb012136ec8bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26716 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 diff --git a/images/build/start-building/supported-networks/ethereum.webp b/images/build/start-building/supported-networks/ethereum.webp deleted file mode 100644 index 0359c519dfa70210638db6a820b7d687739e2068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16102 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 POEfPkL>3AF{B8R`I-}ud diff --git a/images/build/start-building/supported-networks/evmos.webp b/images/build/start-building/supported-networks/evmos.webp deleted file mode 100644 index 8bbfb15e5ef5db0c50df99a58b816c26850f527e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25054 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 QO{Db69`}do00000073!bYybcN diff --git a/images/build/start-building/supported-networks/fantom.webp b/images/build/start-building/supported-networks/fantom.webp deleted file mode 100644 index ddf76ea1ad63749bc9ab72be844f301d08a33f14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25070 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 xY{mj7%oPH|a|C6GZJZh&gOG$ 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 POEfPkL>3AF{B8R`I-}ud diff --git a/images/build/start-building/supported-networks/injective.webp b/images/build/start-building/supported-networks/injective.webp deleted file mode 100644 index 0f3dab44a1adeed89f14b0d4e8ff3b494a70cde6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28070 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 b0000000000000000000000000000009fs`h diff --git a/images/build/start-building/supported-networks/klaytn.webp b/images/build/start-building/supported-networks/klaytn.webp deleted file mode 100644 index a50b0f76cbd952e4eab90428a4bb7a7239369394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1874 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 DD~v$4 diff --git a/images/build/start-building/supported-networks/mantle.webp b/images/build/start-building/supported-networks/mantle.webp deleted file mode 100644 index ebd81ce324721cfa3f06f5c07e533c67140a369b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23502 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 diff --git a/images/build/start-building/supported-networks/neutron.webp b/images/build/start-building/supported-networks/neutron.webp deleted file mode 100644 index 9a4c9a7a28ded3e01d23bc0712b810922859c5f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9632 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 diff --git a/images/build/start-building/supported-networks/oasis.webp b/images/build/start-building/supported-networks/oasis.webp deleted file mode 100644 index b8ef9173dd5bc487ba7d8ffa34041296e94e9498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41292 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 diff --git a/images/build/start-building/supported-networks/optimism.webp b/images/build/start-building/supported-networks/optimism.webp deleted file mode 100644 index e0cd056dafa31fe7055b28b2c3bab113e0ea6203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21094 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 diff --git a/images/build/start-building/supported-networks/optimism_sepolia.webp b/images/build/start-building/supported-networks/optimism_sepolia.webp deleted file mode 100644 index e0cd056dafa31fe7055b28b2c3bab113e0ea6203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21094 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 diff --git a/images/build/start-building/supported-networks/osmosis.webp b/images/build/start-building/supported-networks/osmosis.webp deleted file mode 100644 index ccfa2c87dba80d6464c9dee9b4ade896e00238e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50464 zcmV(`K-0fcNk&E(#Q*?TMM6+kP&il$0000G0002z0|4g(06|PpNCa*G009|?ZQDo^ zobkT)_FwQOnYpKci2hFimf8TA|3oCf3TF`sCTt723v_Hrrz8Pj6%m<-Uggfh#TYv3 zN9TExy)o2yEXH|~5S)38m?c3Nl8{w9e;Q{=v* zt%w#DhLZSSl0T+TIl(f0&IQROR|6zh$PJL38)*TOGh+rMTcd7(WXJYg+wTuJZ*Uy9 zZ6rxj{$bZWGrRAIm;hG&UjYuNmjDbN5{(Eshs?zh!bXWa;s%}YL^-n~&qHUY1mh{BkD7~ca z?>PLw?vYxuWNBwxTSr@q(L_Q?k|`JRX4)Pb9T};ZA_1^jx@prnYnPzKWsV&?IyW^G z)Y5Y4rI(${S7>_guARFMlmk{)-hA^0j|3O@@7(qDK07G&|HgN8dn`Qj?DnUgEC!yO z`wy?E4f)w;pLp~cGr;8K|Jqqgk(he$o_j}wNw$84)?QQ&-ucjDX3)su|6W|9@frKe zA07=7XBZ!RcP&S1^6o#}R}Ki-{F9oG*!b;%pm+L_x7J1MrvC8VT>&3mzp0-XzWCE$ zPX>6L|J}NZWbwhD-);tU{N20iE~0}!`R>^uE{xACs>jIMk9_?u7PQ^Q`&QjX_{fjH zKNX}A{!Kl{IsKb&?hDL_{HosLz5Q!<24h5jFMy~&|DS)dgD>=-iXrwV|NjTMpzDXe zBa8$X`}Q}2Ej}lbB*^?zM}Woa)(IsMk{|k1cTmN79~VtJB;NV&!PH3S4+WGIiQ7Kh z7C?pYQ!%AR(}zFS5;XD8!b*?k556xNC~?vC0!xy%_uN7Qr22Q?5?iV)|A(srBfccO zbh+T)&JBjRWUC0@Q}L1BAm~x|ZwfJSv^Tsr68P{jQ6^8~t*;1p=y{hw-wOTF^??rm zEz~r+{O!pAr}5}Df^BH$9XHdUhOY@Xoff=jO)$gD3;`$Awl_tB7``gzYJ;!e8ocmI zQ76~>_p}Esd_vgiMX$X+SV8CyrgXn)QINtX1^+m}HNgoRyM+Hib%Dvuk4T_hj#mXE zw7yybN!M~qUl77O<&bz6zdHDUzDE{EL)Uc#9b6)j1l$&I@OGJem(?o+jhgo1o1}8; zbM@)~gPSCiiYs1D0}I|Hn`De$)gDj~y;4G7FMe(?fs`tx_gj39vJQcPQVPFn!LHd&UUO9FsDnJvrYZC~yCBhT9B z@hd_;KQg@tz9!}C6JILRG+xo?=d(_eY9hBT_VHOI+oL8QKX~ch=hDuN`SnQn2zqIA zP!3tNz~3kM4qnbX)!0fO9!=5@mgwsY-Y7geP~%ITu-%!!|?N`CC}p9fzk zDGJsB-P-x%;xZwCeD@fAC=~t*!A?C>e`3 z8?E64NmabxH&or6VTKUGrb!{6HmAy&TyZ8pJ)IHMf$=w#1#@=;PiI$GZ&zn)s&#(K z3)$uAsp+|?sqxX#q0uo*9D{M9DrWLfqfN)6MN1a;boO?4*4P7CqhmuOWBqexsP5Zz z_##mjvumU=Mq9jM(UQe;%j)3Cthq&}`_CLdUAL9uzO69#t{z|wE~yRcmoHzwE?$2p zqGwLbn}hkfqx{(~smsS;J>IAiUAKPY`qj(B^?u#y)Y1Jf?LU~UryPn#TQ?EuEwu9f92Md>e9OY_J;2S;rt6Px@ehLPf?$J zX2*-gnx*h>|4Wp`Ja?*rqxXU>mu?etf|*C2+Wz8!n&f>iCkkVJ*O>j3w((_`U95|~ zHKk{te0+~xV}DKiFGOj~?0tU*M{Un z58dxsEt15qROz1^KRnRraLy~Q-6F^IEpC6{{@q^ikN-xL$^5vH!MNzwTjZL~qxb*e zfg)cnQL5A3V-Ghfv|WAUt7V+pxkv82bBJHvgcnW)S^MhZF6Xi008fq}++^P&8`+X;B#!cVv zCJJWQcN>X0Z>Y=$g_yCOf!O$y3y7MTozFK0tbXfTR3tNw{^nOlT3&^Y1f=x^e8c zicjK}x1LjP|6FHmCYLLf2-U)&h+#zZ7@gBFCy3H{cZAr4Ffup4+7!$j%b6w9CPpX{ zjVC)&b@mMH1Hbx9u7c#p|2;~S&V0pGc=T)DdTpIV&>k7iWKB&EClg6S)2K#qDj8G* zvuxY4Eh{ry$d^N*SWEkYI@#bexBv1XJNe;HB$V%+w(9;1%Wivn9XvWQIF_+>qot`; z*WAh!ZZNPYW|@{{7P8s29ZR-$_0U>Rzq1Fnwh{F+Uo9y)k(=I8+qH0}&W`0tqP;bw z>A+2&v)8{nf@0 zuAy8mm!>B2MoaI?Si{o&M_#pCfPULM^&0&I#r_$sxihsv1CAWRc5J}8%T${ z*K{`y9R7hK)AKj)t+fyCJd|x&(0abBTUM#Vxgc>eRZhVL4u#`o;bRtyx&Eo9WgDZ7 zLHALn!d(90i)!it#{)y51q(M)_hX03&b=T(8Awr6Geft3dsUbovb$F=XaN2b!Tsv{ z-j>(@eGSE7{J>0V{kA@sBv##dx4)n+B?#7XS5?gCPG?hVS1Nw@Pl`+PZGXSGW|keA zX<4?B0ybWU?U}dVbdTteQ8`x_8gE{@nW{S7UkTV%TDn?;Zl;WR za@;^L+3D-vV|1<@%5-8xmvYlb!{@J2=1;&C`M~X(clf z8Lg(~zP$V7GiRojT@+U0w}D=xlrBE#vF;;BQ>!m`*#N1V3LcyDoHU`G2;19fHCj)J zHxOOI5UNX=!Lwag$Nf{siFbY2<2lFLR$by;9gcxI_~ys|>bBY)%R7qkuTjBmV>u&Qkiu{&oKf;_HqOIL5lE268L;3j@dR)|{? zF5u$g?fDlMFK+MUdKq)E5FoX3XZoi$pF`EPyI%b;-ubUywiLNtJLgj5`M7hj!n`_Q zcy;ya_TKH4#1^v1MdZ9%pkBOq@y^@N?<~IJSnvZVqBwipy0lMKxq&Jk^mU)}PI7sB zcKxNW0)gUmfVNeznzy#{t=sE8$ViZS5QFpTYY!ZF=e>8{d+(ih?yBP6xXQ{+9B#Wh zp``Slr*>TORS(~5w0G$_up%fHrgGTAea7!6y=pmj=BeflSG#OV zj5-xGe2yPrZZp%<>0GhQ+&A00_XBDYQQ!DKb4rXzG#b%RFyaDOmpy$VbY+uDqP<+r zGV5)h@ak&7ORF!XZrhY|=Uy%_>aNdKGqXy$^h_pSw463rW$#+1FvM&)tGIA98Vh@8 zt4)4v;DY4}*yLz{BCH|F^0wk{>?wkZ|bd;Y--vDPD{i;U_`#%pVjUdAd*3)`NruBLI?s@*y^w~PU{M#fh{xB-PB1#z)tQ@9GebvNdWZYdoL zTh)m3yzsUE^wz5!9%h*fNvjxRfGvno#O|2dmSuvsxtcnz7{amUJr{rB=H@V;A;j2Z ze_7=^CGyz%We={BK9#xf@~SPR;xTioQwH2nF=r08Y1yD6Lg3DsgU(oUv+jjugtml^ zmHjMk{4#f;_LG@Q^~z18V$QrT#MT4tEX#QgtF2_DPO+kd5ib7XEzKOBu7l}H&?Cw= zvRHZO`xfOb)Os*}UZqqv=Yo)mxr8v>7VprpD*p^yMAVjqA=^kumbq~-AvDpNq|TA$ zK&6R=&f03mBE^Be`=i`lJjO1q+=%AqR4Cx{-BC`XbKyF-LW14;{LqqD6gt50C}Cd3d2avnm(4#XTY3AAIfRKSR3@ai@z$0c zhW4$8!dX^8C|9Jf{l#xh*+7L1r=lFEssvM$FNb_nh^xwp$G2QNf6&jIkNK%a3Aj+1 z-L9@)QDQkzn^S?}^NJFPz_H`LHFajxbg>>iZEmw3CXf>rR>a^!6GuY3?!E5A%A9K#j6djo9-jYS5*9f%Zg7m#-U7j zbw%N(QqVqnedM8>DZz2$SYdD|@1~zaWSB+5x&kq+8qmwva88BU!$Ni z1ox`}McaBx>K#vYUB~65j^fbS3?j9`S}YQ!J`0^U#<{*`b;lJ^Lfr4fRlUTRQTP@` zSJL<4v>INLQ*AyaJ%!x3(&(94V1yVd4tm&E;rt7@{>XzBKVlPC>u}wV0yhPEb(QHH zhZ#x)sszc`_3+%kKG69JMi_&RA+{)bMbx>ekgDr` zUg1GxdnB$r-apHLu|SA1vrK6iRtUCU!Sz3h?Y~ANPDKTCa)w*SudZm)R1QD9B9^8# z$_+SEHNr2#cDA50oKXhoM{eb)G5gR(*H+)A2j0bFfX#psX3sz8_wh5lY9x)-&)ih7 zQchu>ls&Bqbo`WSV^qoOEXDvUJo3M(G23y?Kl*SX)d~nj2aKJ~a2+#qh!Q~#zy4OY?#vh@0w@*53{wvF$sdj9dz|iDemy0yS1(cMs?UJe1NQ4T z`5dW&5H<;%OdLy}nRbl@GEOX4@*8OXImZj7#p`qevy?LEdd}=xC`72L-_)K8^f|8x zKqxx__S8Tm3<4g5l48uX_sE_t{2G!qcW%|Fi)9W~@8FejFx$?v8Sa%S0a4<>s!An0 zp*!lw$2?c^5th8;-Tdm^(GE)HETqiPpes4EYpW1>R>Kn+Fjs*kElwet8B{qdtHcHW zr{qrL>rrk;TPLCOko=abC$>Oo6~b1PM(Z$NYN5aP;??!XMV-ZMt{kBZsPWQkepil;>c*huKi>ld^ zh;2wAD1~_eFT?pW^*DuVcF%oQl)kIUBhvo3s~>Uu$1LkKhw}oEb?rFKDe6Ca_ZyE; z#tlFi;Zfq)rC5ZUW%6(0=5``!Zv8kXdHK<0lvG0@OWiu#eXS;F9bNlRD^ghxN%1L` zE5rD+Xi@`0K*x6ZvefyFoT2}GJ|}&LJ41v(a1y~Y90{C6#LAJC2Ox|`Sz|_`Fh@WY z<-EihIxJ;ky#6MFb^FUw)vKt}NBYwG**nJct4C73p2J0irK=!t7J~F=O$?R+(%~wy zQ?|7Et(;#!-N#AZ*weRAr>0>EL5@2kDDUXnfBKQAL$~B2gpVl>OuEX&s3^<($9^H@ z$Ktv;$$KVs1L10SK6#Lha|Tw1^2eqJ3$E#eiKCg5GdraGhl5)9s59@nCQcaK3Tv43 zrtq9DA}Y%1RU{b4xD^K{7{~N0NZHkQWc=-B2|nu1?zxc?;$#_WoO(2c)+Y~9V!fWi z1P@}#5dPTA*&@djDoNPY^n=ocE)MaL_h{dB&elzO^2e!89-h_k@=)bW#wF#5-2-2TD-CyLEP>kgz>#8i>>1Z#fSFi4V zEd^TUx|9Z5ujaJl30y?fwjLf)HOk7l% zqnd&xNvtnQ_FF5XT*Qs6c%!on+eT~{^qfu}`V$!k2{@(PB3KwmV-zwMHRZA#`JrV0 zs|26%Q;VErz}uE1NJSmI|1=MnbuMdkuGL8g zstHMm?3m|&5y5z=Wk>(7q*^V9PnE<4n%l}}d9gh{$%}|CB)$^3#fLeInjJDZBxa?MvMD(} zEYUHI&+Yo*9zxx$2sZM5j#ee9BGqDi88||W6bI7iY^WAu$*sFrqSX`hCO&oVQm!>` z?7A#3&eOj(=r?>NaElLf@Mn*W;^NGh9D~pPlRT}FBpfgcN!OaRHmix9?MKl?gcc5k zLqykXlax!PqFrOoGiM8MwaiUMQC|GBM3;uR-0?{1#0^fCHti?!IEe@~Hznioh}%h8 zF?Y`L&ak6Upah%{7k}lUDX2o`F1Tzc@eUHB?WtDS z3PGc7JuA<9*_G!mj#UT;#{sAbx~fc#SRhplBGQyoH}m)MTpH(M+p5=Y*VT{J$@cq% zFCtpHJJ45Z!X2wGxqN*J9#amHbY5+;gGGogm|okG5$`7|VJ0ir;~EO#O#OrMj>aj+ z7xu(>-Gc2s@3QqtSaE_aQvjwsH0!E|LG{~Z`S5KbODGqzNe7iRV(Ae5;#7Ikp5;A! z&-HpP*xILoQvwxf=H`!0j94zR;HhMrvf;VkDg;&`0#M1(e#~4{Fc^B@+A#kJ#8+Ot zCWI(X7`K%md$!0c6D2b`Ce3+NC<+ z5}gCHEd&51OlalFv5&}x4)3Lhmu-wWranXhk4!2J%wn?CQKoInfp29cNiol3JV783 zDwK<8n5Rw_+yYLQ7j;gGo~PX;U8frAge(h|MR7PyW#Q zFp;Ira@c(Sd@B{+_TRqK?Nag3#+r=G6%h_e=E8D=Wu$DnKhFJ@eH&4RrPiIVg;`rv zMZw80D&iYz^g_c`Ny0eAo>UVn4P-FVoUZww`WKJALzdQ_z$+{Lshp6tShedA~Hv}0wwG76Pr*LBe# znUalF|4_}pK>yN^_laqbj7w!DB4p=>h&;_K2dhcr(%bPWpsla{__kc4amog=2-Cwh z59xHu+w^CjmZ+W1dAPmGv1p*3@N4TK6+5@qLJH>wr14&e@(-o@j>dcezilwYzCtz4 zqB@D3dm-kD^YUPx$C^jyyV-yG43VjsnL-Prh!v=w4*?_<eh#Z3#HI%QYX-D5oEH5rokSc7X78LpMG7k8&ml>eyuOp>vqT_ zJg;snA<=EMu|iCbG9vEF#yfxX7x{kGIDQSWBvJqzuO0T(QzG>&uZ?8P4vV@5{p26N zN91dcpjRZlELck?Z%W}M_4Sua;@mTgG)G~u%wrUq-mEuXc-48jC!D_X4k`Z`-JufN zYM625G;8XtEv)lvM1Faw$U$4z+oOLXr1grcuG+-+j3oceqjygdDVs6;4f~Qp+xGT) z`?T|gwX!=OF5vI{LesZj&R>}L>s)r7f6nI3>qA^VUwikC$M(tl1&p)kT|kkjv!QG2 zE~4jZAS!~`XbxS$1A0CzS6{xHcyRs__4>^l`W7!-7y(K=bK=CY-Mhz$#Le^|dYz|4 zp@)5;x+AfwR`j#+EV3Tg+oKm9|C?oIT#AsYHlVu}_H`PqMsqk3Es%V{9G@5;A09G^ z>`mby+7hPF)>u)8QC%Odoo?1`b%f=u=WqHOqEhAX6VHQZwD8%T67H zTgSJ;T`I*MtC6tAvbv1ystA85{KRw8Xh&jFEfm~O2|y%6<&0DyFIT=l#io*Nc%VlaMcKW?H4ejnnVpABi%7 zeoI|*RuG2-@-)e|x}~|@^A&I-+GJm#zGS zM_Z(h3H5lBZ4{y8h4N!%=0l=fwYUlRow_XFQPU^|Ds6j$6h>X z$qD}`{=j8xGU^(`p>U&)?oEPsFhbY1yJQeRgl2dSyHkzmAH&+TP`C1DakSNWtX&t7 zM+k*#8=9fkL73+YcPLT_yRom}AC~VS!3ppw0YEDWk9S^9-;{964tEuXrog@#)=^}t zZnyHMj@O#%oYoL*^|V?D1u7lh9C1zjN*OiN-JwK0Ru=USKAV#j>av8^dzv_%uE^&N z>K$3NjBXB5YzgEkC(0_skwNS}rK}={1Ur1sE2($mg z>6ehQx}?`=z^VF8vhHd1+&zfNtfxqE)XVN31;Ty`DXVi#x~Ke2l4+1!qV8!yxi9^+ z;tFhTXx??%7ZivmP2~P$RQ`tqd-fkn<8@C`M-(cg#06(?*#fLCL-&e@707mt;8caV zgf72Bf<2EIt^Z=S;)I2_dy352x;9*fQX0}!b(;PZDa!zSf|h!eH_-GJCG~F-^J&V@ zJsGnE%Q@0F#ewkx;i?P=bLOOTS$}{n* zCCF>dme3Cg4so)RcZh|sBUDyxkWp*ev6l)X+<9DeZ12~Qsxp#06*%3Y3nS)~k9)G_ z8-Os^ysiiwyJ|#v^N8yF)(>#1mJEvPkl;D>AL@!G$`X#smP%~1j=b}yg_W{)&c|`0 zn$8I9kl>J~{^k9P3IL5(0=^nhT{qgk8fPix9Kgho+OQ7!KO`W}z>2fHf%AXEuPC6H zTnxP&xTGZuu=RK%nlcWJAK_Fj12~f8slY+%U<&}dIzf`-*Ar}N*0o|Rop+;*d=e+B z?`*wpdYkU|4ICv06986qvc-!6tI-C^*c@@xHz&?rMN|=8p7$!;!;t-=s)Ym3=QFTt zhgfS79jlBd}SAzJq`;K7E2 zimRtr^E@wf@ATR`sN5EKjwsR@19f`;@`$S2zgq(VH~PX)#Q=@$RjRBMn~I4 zPHxb^maCgVm09v-oT!i`$o=yEj?$84&ejD$4v<8YtLplf7&x^lS+LkuiL1H@7dKBU zjJ!K#pvnGYJgv5EUU0n!&2lv#>@p?QJIDh|WNzMxc zO8EI1KyDLAm7z^xg40W*JW#WmIoi02oC-i`3G0Yf{ZAH(l?g$4_$7@+u_FJ(uTW$r zh5OLtBhRY}n_gYhzx7ddY2cEwqWU|t>YLnEC{l3vrG?0hpiLTV4>qJIxpo&Idi zZEw%7e?OTc1Q_3+3Qu`Vtj;3bv{C9YNl4v^=9Jl#tSO z&%~TeuV&__D!NG{gkqFwXg5E}stHT~7T4gUDgL{7r@AyKA>pJ0e5wUP_VD zBG_l(Z8iBUL5iEVc2F%&@k>)^K`Pg~=Nu&3BsUN5L8{8@T5#Gp%sTR-itsnMSGXOn zuk96%ddd+^p%H1i&Ka%D8&7>vuHux0HyKDMy8Bg8J!tzEfql_C)H_<2BuZ>Vnyhn% zT@r-qA}F=II#ytFBNW00{2TS)t0+wyMwQGLG$u{6x`vIqr+w~0)r_xd!)8tln+#7J zR}Hpq#?XF9Cgnq`{;@$nF}_2mz9+{^gu=3@M}$^rV^bKLSLj(kPz(&*<8d~t(_^5e`?U52sOQFvQ)Q}hN#Crs%C9f3TFv^)(>n|ApGALO)W1;p}c_7*3*z^ z>4H!;T)#u7Hsfo21Qv$SCLNm7l+&kQP5em}_!#bE_{`cY59%GQO0XXhnsl83yG~)p z9U@OTY8{676CfZum%?I79h4Z@S-+iB1G?Xdns;2)P7Mm0NSsiv*MQIFoRWZ|Q!+pL zAsdykrkPM=Egj@6>-)-6122ADyyXS#a!OH8f(HMU=5@+p&k~I?6tE=GjT%;F5?dQ@ zuM*V2TZj5{7KQpRAE0&04T(iHgCat1v@RK#g(Vn;{wIp4c%9JRK5V9jBFH#=O97xL zKO0_By;B3ZT{Jn)usVbta!WdzD01ZkSpS_iacmwZkhA*ll|Q&wtdEMOyzsa4S^7yT zr&2<$9s}v0sg6A*wd?vJF9nfUN0He|6WCwK$(|&tY1xUfdMhtlr&vYoM}lTwS~Keo z>!4H8QE1vi@n|z8va}PMf1xn)!PuY6o=@OD;ZW614N^HZAe7J49Y=DGF{fMwQ$+HR zjRi3_83Y;UBr+}TI4yUUyavMyA5*_m1275owLF`tGcrec=O<(u3Yj@j7Y&_DkTIqj zau)lBvb@I4Y^~|?q*V$h>L=06!vuG8w9eRL@k(516t*^0c%g8Wlte0 zhKD{Rs#Ak5b1Op(v+gahNOJ@5FjMb$8&W=Zm&~xDcAI+C8Kz0F6lx@tBPB` zx$4)2)S-!#aw$Nb{SvDi*o$UW)SW{z>IL>_Yd$?lXhR4tm(R`nZ^I&f2>XzK3Wx1r;vCXs+xR&hII*;JSTnO2(psSjGT!bMt$$uhvax_ z0Id>%9cF-nG##!FH`$$xLl!C^sD1*(3xc&2BG5q!-b>-Ta^@c}k}epjzw)CCxwI?w z(sdxja%Y5uLUn-o*h>~h6{{{kKm`f&ZU*R#Iid1P&;iB~R%`)a+aF4+X>(rnr5nAO4eF(Bi zJ3_S9+4X!5EDYnHVM`RoGjFM@hJ`&ysWekSp~-mA`x*o*_X+E`0IG;lQh~1Vc|)ph ztRBAjfB!Qx2>-k~!n|Bb0UGoTA?)ggY@6!liX+4z77gnetVnuYCoZW32M zFtC6st)9*Rok7<}u{ktpqj<$tvgI=fMS8zXuKGcJVo=a1vIH;T7=%^%tJThae&-A{ zMxb&9GvX+u2KGagG_AsBjXjNv(-$Pms*4a@GANv@e$c<4KuYI9o3)`Vgj7+qYx7rk z?9T8w)PQv85{2k*tYBiHf-3Upa>Ef>NNMo2MVb4HtIxzQQMGzsu&Do0kHhtXuKx_i|-m#G{E@JC2_ zaN1)g4^~#m;W`Q&sfigBlPBE^(7CEFzXx+&?0VTRKYzaf%9C9afr`vi`FN?NA+dv1 zv|{DuNc!jyzv6)6M?9VZYloW#ZGEWH8A5h@^8g}JpQTc)QGY3d3=`Wu`+6M|}c zm|UA1pv9(oFk8|mq(|Fp;OGOwEl;38*RW?m44thxggJzv{l(hbT0_WEXli^cH!rmY zI>PkzD^Y2j+db&<99IqPi}7+7K8oPw7s!qeA{1SAQl#a{&_EX;^x=9u!5ij4aQ7#g zo07>8$ZaN_p31=eG9FpyDzIr=Ggj;IJ+^nNCIyI~>+p(G3o#!8@{f`u@=nC?jO^VP zcO!79K?m9v2ZvPqExq-ZI;T#T)vF;%Lwn8y%!i9ZX`UN_b8t!Ohh{e z)eE*Gc>PMb@wW&?R~(b4`@RIPB83ovGmqoB?K5`~HR6}KC|Ivnf~w zEkPu@X-q9Rj@X}mOloK!Mr;AYvU4BXkS$-K1q9@(F|9_WDvL+ZA_-maI3hx~b;^ueFv|~1B2`a-@2cW7nft|D;yNL`vPbOLbwcJNUqmF|M84V?l~#c zU)Dr8nnMRXSr;ix#6%gNhpF~{IPHHU<6)W!+ILZe(>2(N7RP63M z_KXUD*c9O`+D7DXwU0N;Qj{X4l_9or*Sq#U%bS%G6vP;-h&@VShmnT!vU6lxH|OML zdAf(@a`3V+WgdqzaZa-_L^W$fm8|lhI_Tn)UaXCvAZKuxWat3nAt2HgdXkZg_EN7R4r|1yt1d`y-P8_CI7-iy@{6ok_Nm3{3mNi^UjB4l%=NXipXbr!T4p+VgSkdZmgJg#88#4?Oj zykcPfz^mO;`&sTe3%VjxaB>FT=oTYt_+ECtYdp~E^ zQ|t+B=24>cJ_;xKW+78@Ry3ta+I?L`sv%y^AjeU%L(rb<#qdBhN4elg7H19<3^lhx zQX4D7b-iCIG$Fq5eR894-Fy6I`FN%nB+^de{eqf|C$AlWP&aq$>NN^z7F}V^;v*1R zj2N7=RgQm-?Lb^e?xBERoJoNc>L4KJA;l#R!;5b#S%{WjWWnFS$*-5Gdnia40(6K`K~Bt#3pJi_PobLL1J)eTc`ef( zF@?(M2nm+im(%Vk0(e?(=`(QN6qCf0u!zPwcD2aQeO<2A5Si2APQnFV&Jk0OCn=fm z=qw`*Nc!kAQYV>&D0NlWb_`C-&5|3EPT>?HduHjG3L&vtf*WVIoLGMKefV1PPHs)kay-c%XxSbMA7T%Ru)_Z3+sOdh1No%9>ONw)#VGFt!0h2jVE@zd39W((VU3%{3zhYZ_cVGSPP@di&*QlnK-y+NNYai>4e zw}i7K&P7V5L@8EvbI-8E9KQqchqGTPf%){K5 zAL1DI`tQYaQAs|K<928!!cg(*7CF z94hf~8^KVQ*iSRO_SPJn)ODigO^8#oRrS8{_a%gLt%F3`iCOeaTxxvZ*mwijV{v8T zG}^D>@gB`LbAgXQblE<{Q?b%w=XJ6?Zh!=@1q33Er1*3_^;GL9ciu7wc~aatFPOm- zI`@p!X{Ozjfg;kf7tW1Iv9lrt#}NCyJ8w}|@aiDYef$s|-{|!M5P1vtpW*nN{ENkk z2ysr1*kBW%Vl6TFy~p@XV&~29Y@A&quj7WWv;}n@8zM+ zs(Z8-uh+0-UreJ@2$Cd_5Ys(K>4a+SPa`I!#GoeA;|2(u=G2@oh%$POOWbgpy_xkI zTCE%N8h@OE}@1qs$&bx+>F6 zD1q4JNhf8dEnlI-N$;PmnPmg$3MB zz~wSHZm8guKupe&##3pd&o31(;b?n%bE4`Dy_B7rn6$X23A_~O_IttApcmiA(7ct!{;M2=RQ>esv zDJghf6B5V^Oq3E=Fy1f*Vm)WaC#AA7-qB_J*FkxK07cApVjq5|;ojYd##%+pO$gs9 zk-85{dqO}?dQNkDhaP7`Q=64qw|TI2Fz}dB+sUFUX0T&)Zt@6XQYw_i?ml6vh6Fh> zZNYR8yX8nPxAAHKS;YuGU0BT~gu|faVgxO?nZdc<5HHb75OwOs>RvT@i?I-r<0x@% z2Qm9d<(8x^x;zACopDJFR(pv84uj4Qx+*0j6o(fb0@HS(L|*fBuuD~{;egC3y=yz3 z+RQ6dZhHHP+VBb~4uy!Ah0CVZVw(3O2I9hlgvyA%BuSXUkO;>^L9&C`n=JiuhL5_e z0~kbsU~r5qzx45}T#*+DOhh>!BNVARX~KE6c)1QvpG-pVya`Bxv-9}uK>v1mbjA;rmFIaH;WH*ppTCZ|CoX*j-n69G#CDi0Ec ztNmmFCrE~a@}^yg{jxNsN2y?n506k`N+8o59hCrr-EzveB(;uoEnub3YBPx-f}w62 zO2vq~PFJDHoNyO-aDLMzix9F9h*5`pBS{=&Z!zQL9K>FWK-Q$5@FKOURtANLNOzzk z5bGTWb9Gd#G;abkwMa~bif0mdb&%%cGgvZOjzQUV)Uz31H9eMbwRTU=2c?l zYB1JfLZm+#;Rq-_uB@2zW|Q8LqB2Q`!1O?Jfj}f>R>Ny0m<35=#|Y6n;m^>lTqaW1 zAS&TC6C&qH(=Uc1f70DF|s51*^#5BM|BBhogxT{c`wgo_Yz9tKcrYonNWXLu#-XX*VARSe3$ni~-D+H;j*Yga_1@8}mLSt4S&fnlLqGmpV zXyel(Ps!^87Q`ZO$dPl5W65jvA2_uqu#j~_gHWw?*?(;G84e%rG~2_jJEeR;BpQ`O z_?bLIhzm@xQisOCP2CAEJ&umc<<)d6oG%H20$KN=>-7qb*axaN?P8-7AwGHz3LSoV zQ+|rUj?fG&AB>HgK1wYy+b&^9;lV66C<{&g*viZw7ANe3A>)yau?B^1f=rYvxqyBg zkOOgaaABt0acR-z3C?NmR4r%=1ultL5%qm=g1CU7zC0)-=-3H~cvk`=xr&U#fbOwy z8+`8smWsuOFQM9T{zo8HHAwH9sW}%u_5o%rvJ!8v;~L}#_KlY)GEHyEsWhEg%v7^v zoX}ze9TnPI9Wv~mODmEOF^sYFz)zAAA{Gtkn>tF>)8LYxsGgzzJZ8({SFJIs&Zx$8 zuE!H$U=aJFgDu8VtHA(D=9mYu27_KAS+DTVoDNwcqa*m^U2|sQX$qn&M^GZL+@&2R zJm4}rr5H<$!4V9zLGv!-W4>9y)+pV$0|da>arOKaYc*0ugTTdbxYlrENKsMr3{n(w z?(Ns6_MRtScN zv_qMI9wBQSv3NpEnq~n6_U1o^5Sl+b?C_+qFspcQT5;vstO)!%L4BpIf{X#L%*r!x zfUD=_0;_NAl=GnpgJvS#L4=_} zYgTW3MwP&X@uN1JJOaR?}u?!^Nzw zASu?9s?CBARS5(Y>A}pt)4E4|d1N(2pr4S4UflFvYv~|nwo8bJ?iZjiw|WU|J7>Vl zkZ++S8{{dVyn8u}&r6iGm)IpF=NL!dojOL0$ByC#uI;%iSGLTz{0T_}>Ueh(`nsB< zNdl^ex7PA3ux4{WjfpxSy?KO(^@V_jL#X?O=fM>}C;+_xRrLD-v=4LL=P6Koe_RY0 zm5u?!bb>&GNMthkq#yKGRJQ`-J6OPIBD3@`Y74$Iv1fiQ$%(i3*jl14Kh?k{rjHQa zD#}-}NQ-jNIpLc#4z-DG+?RE!SMw7ypW^4B2TW@m){BxcZB^(4l zwx5QC??rU5QxiWM?4vq{b7xy9kBZ7|jGZfo(YBV0&Vy7MC91u;6(XPpR#0ehsd=`5 ze8-KzB_e8pn)Ni*lHg=ZC8xz#TW}IWnLgz|m^)$rI)AU~)GN0rB;hKM8sb#Pjb}n@VROn(EG*kfE@}aO1F&mLS zc%BgMogr;t%epR{9vq`HtArsF5>D7?g_`5vry5Xb-6`fGlEVZ+V4%ws>=^=sD z$Sn+tF&GjcN*FXGd6gFGA-Dwv4iu)>Xa+N@Hh=UKEfuHOx0)|BVCGD2vj!4QR- zeF=z}t&Rcqu^9sxp$J~w?`RW+!P=2XP;nxI2iSchL>+}_fh}>)c=>=19LwU{)d=Pc2za6XF^JHCJqZq^ zqLMG!N(Gup?2TyEz&lO$*GWep+-e1JFg-{y9UFm{lxS~d8emF%bSq8*K{_HG5ujfl z2uKoQKL&^&rzsNQDQCggX^d{L_PiHz;4aP)h7OZ@p?qC_01@aV6tOFw!E$i4iFxvN`I}q1?UdOh5R<9dD=V(cSb4?5 zl$hvL97zzwsGtuC&{ibq3|im&6>}wqQJObp+N1#%>Y;F>5ElnvR+pp(hSnmZ{(eyx z9wk2ARVpctH4ibC*z@c)BqILNvE`V{p8paJofU|-_z^P#)b-HOEDw}xgXmZE@yNAi z2{;{Gq!}aFLY4IygqTZ+(V)ft6>%y{nKGT{#8Z&7s_261!s)MqeU46Zb;u{od_myY zeG08g249g``^eC4X%9n*8ZKhYl~~Zobm7t!Xg?|s4^lx%)^OdEY!{x}UnGi0@l*a} z<4HIOQ;ughnzL9WKw>-U5N#$aqY$7jQos~#*>w=q7@YVssF#CbZG1N(jJ=tNWL{#Z zOrb(sL<5KzH&l#B#%tA=9y#M7KPXY`ETKyb%`hpPA z@kc&5!@r);IQj7f>KSecQ47LuKM^r;i&qh&I?eRdxeMNJT>A|c?=kXxK z&piAKmATkKm1hhb4e1o422bc8DkCXpWaLq+oU(SH02CEth)a`aEjbxz_QlS4;10P( znWoD&%;9U4WKvby5)8DcP($`_J4~&Np%xYv$l4y0flO0o|5h{7sih70j&Ja`V8cJ7 z12+2OFHg}klt|E^Ekz<>vT?Jfy6PW!OgdIOMiYWOw>M2kq8H16*r&8MuDk#))7sODTSY=2B#_gRvG?3~@c zno^n7RE|kT-(((?8BG(Sy@alaA{PE^reaQ*+Yb#SJlbo6!ipUt64`^1mXAr@QkT3~ z{RqNHQ-j7?R6;}y;^#|7@pNQT#Kd0{jHkw~@2;Cu9u@2}Mu{6LN}5qIn*!07|Y7YcF==I6QE$CpS`g&Eb3c6r36STDkrZLUVux_Vdepc_Uc9af8x@}UH?NFly_&vpvR!a2m>UsZ??9R42f za2S&u{&%lZ{ZLZnvdJPrl z&jM#p=cyxRHm&-+gBO&P$P!a93(PPc9+U1c4tl^z0w-rDrI*PejmJcT#hkhgt4um$ zn+!Q@SR+`tEf9wlgQKytg~Ood#&$w-yeK?Hgm#JHNg$%2aG`<*F>EAdPG%Jydrn`B zDng+B^nM}s?T{1G-x$Ayn1v*m65-fcoqQH1vtyatOZjbcD|Fp4!trHPMsLb1ci2$yH49k$}MW zBLQEqo*gt;2W^;YsmC0RnzFy^-8*1YDcTIIc9qp)yufABDGLiCkO`+fpZi0X=Cb7_ zjm*|)%H^$Qx+9xo(BU4KO-voZ@>=c%K^)0`fDVrCFgu9xSFVYk6s2;!r?5W1Y2NfS zrC8lg+2TI3XSBX=+o9Xrf3y3X@E~C;sUAg2Ca~JEYCrHw+p*hjZx^%o9oQ$FQL^-1 zp0ufgKl_4)UAKhyI29g%MQDz=PZPMemdw*SJUayV>p=znZw~^1e zD0=-BP-%k&kg>A0@S`_Y&f%aH0@36r5A~?jMljg7CQh056hT5i!dJ8wRH=pskukBY z=^Umta;t&BjSUxFfMz2oT!IX`np=}&gwq0si)dsD3!ZkxByxj6!f>f($r&P?T@(D% zA3BZe>Rs9<5E=NG@~{hlWa*YOa0}mxn1poTk_7@eETI+)sA?(dAs>SR1S-K2R25yG zJ|st}5kLa_f| zxzRo#6bV?*Dmv182%d<+X`l4lB7zBh2Ehk?!JNYEMMwe!C=y~xvOuXgEI|tdZlskE z;bHKTT)QMR?e4w=4La-Yqcac+MPrBuO&vHjuP(3=bdtdk1_P_$PbCvL@`cGc$RhIL zH9;`cUoI5`)!vx5sc5#zv z-ti!mayE_L#et!y?(kpr9kB$ZzFe?9lF^9{4oqS;f=saA7}W+QK}byDfIB6?#ulk* z2^eE3e^v#>H5Lm;4HZF*bPT|-dCzqY2N5D1n{X^ts>|tUXUKrg@k+0hvVuPcnlUGF^erp&shIAAUAez>5CIlcV2p}plnFV{R{oEZCjbw#H zQ-Pr=SOi@U5=eoT5(Js_jX}z8AwoC`@<9kZYE7Abo=l+tCMpIT2Qj{f!x=fw1dFDb zgbM#tP||N(syz}n2jvtorOA;KT5g5_2)fluAADACydMeyio$oI%LQ*k%SR73cJ8%Y3sPEraT$bo(c6tVFn zXAGB;)dz#%NJjyNF#t8YJh~U=nFxBOd})grL1O=bXD3m95}J;fEMVi2J&ZL3bp?+tEi1xG3{v=lfT!+B7L zNDJ>fLxxR3!{D!C=NM%X`4;F&frHjhoST7*wH60UCk*1Zm`Q~eIPb~by*zoPGWYHp%dN05}%zpsu;4ptR zRqtXqj*j9&a#(Fqgi=B5D!1n>)*rac3@@1{J(%Y`Gr%PT~+ou?hTr~o}_z|r9_X}xbcH;zUW zUOapTMc?_h*ojWnNWf|&t~EEFE|{w^$);cYHgBP;`*c&UbPyG)*}C2dhVK5Gb&ayr?J*G_4#0;oIanyi;#8QIU z2cD5u0xy{V&FcNNN0(bFL$v88GF)_Qkd7f*rWel)X(dh(SvBzp(Xi}9*q|uckJnB0 z)J`<61L~HSr9WH-3}R+lBPM4HDj$tp{wO$%9+E9kiDvLhGY2IPteNERj4^WrN;VPI zMwU>O%FK6!`Q$aelG-CM8tH*GqpYf=f#6tvIZt@DINOQM4+&LrlMB+cd3{*8%9T_o z^8(`bZ7tLFXBtfGF86I^lKfTKr+a(Dy_ z*~FLk5zflANb9K!KO)_8=FM2q44*8uu=%1T2e~1jkyf|N6+m(P%WbN2PWcJzWMBF! zJQRoNHA!F}yYL1Kg$cxcrz_ySImd+W;}DsO1i6thDx)}jUoYvZe7*^pLxv{g3B8cq z=Eh!-neU_Ju0sIPmu7MXBoNs|!ChEUnLRo)w|pPIAO6!^IpxKIQMtNNTEyC>pwBmb z6@xC-uA&j+1+mGSG~d6K2xofPs+k*DJBpH1cE}j$B>BB$CiY z@7vMT)ZIoWjZ5}<@Mpi=F8_dL;`5N9r@A&{i3#L!+3yBVjIWDozSC%9RGsitbNB)4 zy$`kB6@CQZ}5bL@7 zdA|G}T}!n{ZweC}!iVR6`7?b2yRC9x+nRAxIW+$TKW;=me)c~K{@zVGjK^Qd4~rcR zepG&9cp@M+ubYHjaMVyZz_;v**J%P;-!O6;4f&VrwGD-;P-g6XugHl2?lP}8^ic+B z$cty>qXeQCA*KR*&kky(zSnI+vr&Z$fJ0F2vw_4Rqc%x!FB^oyREq~X(t+l1uUB!j zC!L&e*=iVt59vt~*ZKrF@Nc_2xR%V}%;A}?4tZoryC-QgSF1*L>Ohq6D^0r>z7ETi zFWXZSOy`GQs5%zMbe1JA&!4U%Zc7QBtyYd7J~9Ug^Sf8f4x-XhUk?dfDXei`T8v%# zkvWu~AaX@J{$Y$zHE!H3Skri!JdAI`AqN$g(*B&F1`?2C#3_E^5+TjceVQEm=Kh?a zs%NeJCG12x>OKMqA2`XH_}-%suA2jPLoM8ts8^hq>EM$&j*G^%{q1ScPd`cl(%0i` zCh`fPPIi*y3w~xqK(ycEtQ*>5T*8|z5hmCd47umJJRT4&>ER?7hw`%o`B`tE!lK#R znDDbF%6H>CKf(N7CHk(*%V;$1NTD-@u{DAeDab3DP@>)Y^re=9k#f5C@>GUAU@}54 zW?-|$s=OTy9tx49eoVrfE2iQg4wmW1Nj+kVE(q+?pEdgOwhX^=81u&r{capHO3Iw@ zgg1W?DHtQH5xmD(VaIH7YU_hskq{ou$7>!EteZ~E9naI#d7bDgD{9I-KfE}%WqG{$ zD1_G*edVvfmb=|vgsA1WK0PX0SNO!$35c>>D$Cn);|T5NPrqC0JPg$=I80ox(q;mF?@gpYigNB#1{yCEOjfwsY%euzQeDVUs-3;q*Me7C?(b!jey zC0B_X>3+V%(H0SRDe^odbpsO!KA{q^kdxK6X@|ZCN8RhcI39}*o%a1{M3C>uKQ{>r zQ|UG@BPSFJCE^bJpNhe2E^bh2CSb6L$NjPDva$(%scg5F6qN%KJrWZNBibHsLs zI^-~W;U$v9^FbrD90<|pHgRqb)zS#IjC7?lIfFlK*WYNRDZYx5%Maci5y{#Nu2k+G zw*O4&K&tHnTg{C9NhYM8n}1fW0A|=w2mR6xkvXkU?~q*FjD|Fsv-E!?r|LIE2wNd; zLHm-g!n~J^DKS~IuMHfj3ZIUnjajuvs=PZChTxKaX`uITf=|pDY(dR`jWfAF-oX%3 z(%%+;6s7{ds=HJR^4ivI>UKa63bE&Ekj8pw8+DYSSl~~zyRzxTbME}rM-SRZh=zu& za?o_gnm>z>6j%D8&_|fd1^(y7o@6p>#gK*dwMaPWin>I`rvGR8JB9i58g{ZeyUTZ$ za0?z3S8dWNgE;1=)b2_)V^&kxHz!};C%i=H8*7ELiR8%~coqZAgCKYtFj`0`*UFZ! z#5~DP@SF?LmGiWBcesNKbC`dM8{6+%bilu)e6?dm$6KN$vA2pbWe1mjCko$_k6<9n zMb^A$UoM1%eb_|m-93c;BA&1`voGej7buiq(L8+u`LE^O!4+fC~B;fj8T zc95?aqJ3Px($<^hisik*y-7UK_Wc%I3s+roF~vf!>Srg5JERKmXn()X685ckdA()c zMC^rq#boQR&qhlt8nqam)<#eWM(Xs#s$$b0h`9rxF?O#UlwClMPRykejPXS*t!{rx zZUwVh5R2KpQA_oOO)$o|zs4qce^wYs?x{ST7@PeiEpNFF7Y{q$9CRWCr-3~-z#lFK822d!9uM<|S_%;t6 z?YwU-%DQ}nH0O;|HD-#2tecWdW$>>quG%W|QQ#l2X2kg|OljeXE2Sd%%$*-cOsX;3Ag&77A(HN&*%wy{7=<{LeX6qJqO6+ z(wO3Ax4(J$(5^aPg=FFspXWi7=Ya{odKmYo13)}*^z0nIdf(MYfKCX+)` zUkXKKLjL)rfqH?+x4?drqYa0m{l)rb7+1|Vtd!ltZ*>f=y5Zkg^;7x5g*J?#w&Aj- zldifHip7q-j37={&`~?oa(+Faub%0h@~07M{A|v=Qa6VuDB+>#drVzJGtDSUjOK`P zx8bSe;`PJ1*0F7G_P@?3#gx4uqqv*SlgsP>L}o#}+Y)-H1KK|zi};>)W4wA%_+OSg zJi$yS!BZ&K>CML$t)8Q+O^&r3pnS_D-aV=v)`ZlXR|c0wno@v$NhezT1}dk*y<5Wh zlZ&GnuKZzVI=)`(%b`km{{2c&?wIDIUC8wOh;mXk^i8}KsqAwB4kZf2X-#$Ztm$n9 z33bm_I==mD!m-M%pKqtT*t*ewMx%CeX_QE$yeE%0utlD)R>Pvc&yfAq)6EA_Zs{RB zl{(&gdZ<#0{DWJY#1Q9Nxj|=pIgqBl*e{pVTzy~VQ(^4xm8+yG=xV_c`Ej8wp zR6>*RyjN3d)Ut$jr_6%$w-+fBb248>X+ZO$UCFV(YHN27LzpsaHc3x5C2BFpmzT~K z(}Pn@rv&fc&P5|wSYkq9{GVzT5PMwQprwwGQ$%+rF90Bbs`Ow57 z^nnDDAC~Z{?p7{2b+fAKR*KOVX0t3;+=6PH%Jh_4NsY@QeR0mED7O-SvkPM@^t&+z zr;TnStyD%^btCzA*>SkwgoZ9Uwb7NHP-Evu!*t*HI)=K)gRF*7PrmMAam?#R6ISG< zcSmIQ>ha79g$W$}aM~hiKJ|?Rpm(cRozn3w*~RCp(CA7Nrwc68kPqFvQB6%w{8DJc zfr%}%qICa>f$I@$FH~*B(o%KacNy1`xKD?;Wku{#s!nBr=GI1>9_j}r&4c2w73tJp zQ$~C{mY`mm+KP_ffVu%M3KkZ+)WlU@Nv&|a5U+9v7UI6N=UIEy4V^Yy=2fQJ!{=7l zimNpC!r*#v?~HBdU&$pemA^owU68|eh+(XAM}pYWth<4+y=~3|7UVtiLFozR0^E z*Mn!6r7*wnw=3`YN$lq+^hdEnmJ zik8b%pDV>OW7U^yH@)jnNWXF{85gjWPpV~wvC5((#PDKeh}iX=h%91S-s(>aB66&(w6_xtk~!oQNn9wdu~|=6FH}p65T3xkOmV!PptPucy%E9;?t}HY-WVHQ>Z3aL#Vlap!`ah{R)Lb z>|+ybR$=)LDb0#!>^Yy&N5e;dd=G696WxkrsUnj%0forq8w_sN9>dP`Y~Jp2n?&z` zA20o~Ok-&x!#5$U&9w58d~)YdooVaxgrEa=*KgYOhaCM#8NTh7^WdP_s9~5jg3r3H z=HtLOO{`_LZ)X_#o(s!1Bxb5S8Xe0Oiq=Pt!YOvX&L}0iT_lh7u*6traEe9lv8gs$ zXYef61EHqIS&==L7&Zly^%X?%hP0nR8FrbpSdy=IHN~=KtmRITebqsA2W#vWa=QuJ z68pqijBz`lHo{Ww*`!9P7^WUKl6N)Z@&}t#NFQSxJIUsp@4+PuPs-#SKY-#iy8%y{ zFqae07|vH@@{~`{PQ+e6D~7y`V&fCXW;4QXzG5z-G!M;2%Ar%adwQeHr1Ia zpuob4gvL>aC`H`PyO;Gk)`a|GpOMrzU$>*kv^y!iK4h^Zm>R>ByK|Wr z_{z|Px?g|3u*{$`a^ohKVU6KV9Ybkz9t$p+V?hr0IFmla?$31V$=p~-8Id@!j0$hh zeQ1+q4N!H`YKP?ETFq!xdzj>)53CIZvoGUa7`GMOOece_;&e-Lz|ORaI4R5jB{^Uv z=6>_{ZfMxnE-Jep*;|s>I?5aRL(B}DxlHSYa+6sEOQ$(`$18Ol9jn3nvH9Z|&HYGn zzZfwDl&ho9q7k@d$kd^)sT~xuSy>?$Dh=t2B#%oJ%W&8w))9H5`?^gA z#@U{STBC0Y%j7X>+=@r6LNE(6E|jy)%^_bl%dFYQ7ZQIYZ*%A{xOGu@@i4DA)}{I@ zuWwrMaBJAf5dm^;%E3^uc)7%YZCrPsqLEUzoylk#G7c-;r9lZGd$ar@r`1I+B@0~- z+6~I<;2*J1XiYrMK}F)r3>z7q*jB|n*N3Y-QrIreH}&Y^VKUn$Ku?unsk@&fBFyvgXj!1m-|#rkuvOH{PW|gM}7ItgX9e6e(A?mP3-j_#F>$xKBj#4 zJh$*L-U0Vq?FyIlAZcRhx2c>T)sp+v84JA=H>qpPr5BH`HO&)gcT2C~Gf2IE8o)Vc z7P-QtsN#56e<$4wH(e9^g>d?c$JI|-yk}Hyb_E13VoeMAzmo3DW4uq7bNscDi>rDZ zb?{&|&ke>W`U>T|9bla1(oQl?V`4_x?(;Uk9rz~f3G;k$>)#Oc8B{uGoF&^9dj6gM zf@^m7q#V)~JX%rPvxl)ca+mKP@Ir8WyQA41+By=R`gF2tknxV;xo?UM9DX1202(m`!|g`qf)#l0*rLiH7n+xr1^s~qFIQvaHNG2$iW zR3+KrKL-V`ck)QM-7BE6JeK4L3s z!u2}>0p7|WPz=KJ88AM}34o$5AQ|hNsz;&LM~5kp6;op zd``ay2|efxJ|JNG7zrA;BU(w==8^VvrBWuZKh-_(i!L-EgmG_;$!i0su|yv6Tr z%bpYD!Cofh?`P+UfrA9*TQ*_NY2>nWj|}9QPwLyY$+hqAJsgU?Lhy)Wp;XW*Q&Ev$;H?HCDGPfCy5Gr1%^8Eem({7mwuGn1`kr2NGEIDcCljMaKWeFTC~B z?RRCKd|#rct&E$OWof}=Cgs)LTvK{~zk}{iWd6?oOnZiJ*A^C|A`-2sT)PT6S#R^d zgt@((jQsu*tOFZ_Z&(IN#SWEhEdWD$+OA(6++oJWf0L*J8=Q$DS2mP1EHBSOYgN2n z+PU}K2hK`+_G_;vJA}`mmF;x7nwC!vovO^T@Ywy1khc)Be|bs6;%vZ+YZ=JhKpYP1pmE9)iO?D74(_17>_5-xe9iHL=qbVtorTE(w(9(TVJ zl3RY+hv9gAo#4ygGATuo6=ZmmHtROlb-!0*J|4ga=~>ZzcOM(Gc*yYCh;KbKQ2g#+ zla|qH$A)e5UbdA7>X#&7KQG7!{aOF++)l@7 z^=z}L7VKG&)GQ&ZRi@BmR%+0SU(8)!6MWS~_8jM`FL?nP$Q@TA#)b&BlpUxsMU!&R zYu%GmiTiy>@1JCu`oAxux+3zjr8c_~qx|fWno40wvrLsPs~plgFK+st%=hDx^3iv` z)!tcEly5X?er1|-*_u6p-6_WSq5T_7v_EHBwDjN|QEt6YkVo>{2-W-iooeKYZOmn^ zWoka2r6^tJNtvE$!z7+0VT4`3p7&tA;e+!fd~JdiQ`A?75fV$n6>mL{LNl|*&vFAM#pXIE(p9}&$GT9Ok%-wN!ofASIM)BNMvyM z91Oz1EXi7(4yW6qA?bZrLC>4Xv#(_F_}D~(nHGAz7L&RCo}W|Fv_4J~8w>Z8KR-Xq z$s`IajJAH~Zt?2!URExvM3>{!vas@UGO@5R@o?pk|0yr5RQbE9Qay(hN#0Lecr1~V z;1HzJL2X*Snacbs)XBq(KY#J?u&C23fn_fY@N+sG!Ic^Sz^olmE+Ew@@F_5#EnB(- ze{W48=`zQ}4Q!;j-G`b7ymdGqqpL7=-Uhn>FJaKg!@Wli0$W-u?e0#Pe+-@gegJ-{ zzm1~VE5OIa_xD)q!pIGNs6Vfmvh=sYm;P%$Ttn^^|B&Cq`|eGzpWoX1^G13PK8<($ zoc@%5!YBR3%9nX{{xW_uKR|B-ehXd~Uo+2$-{72hKxgWjuJEHH4>`+x-@9twYO;x=; zTX)tpRrS|xicjWmEcLUm0{LYf`=^>E+yl9 zzjp|(scc;R*>_h@?(Mp0m;A#;!TUv+O#aVDs0`EbV8WQ(Kf>Hx%0Gtd%uiOMQ#Mv; z2Btz<*h5TVmQ{ksEK~+qQwi?0P#LC7C3w<8WtdK*cg5@3!cG5>Wvm1SltY%#V3a{l z`##)!BxC9)ss5i|*QD~M3BEB~zF{<2G5gKY@n_#14oO;k^$eg@qo4kOhH?gW+^oZ3 zC!ig-yUVvU@a@x=`+u89WtcUd@MAm5)<#CSdqX`a_tyY;WFCNRO>XPcushJr6GG^G z6lqdS#@cq~4NE^qkJINf+yqti`{fQ<)A;}BRyhF0Y3uH7O5$r8Hq%wx)*^|wJJ+78 zKXW}kaD=OyZOsl#S6ReE>K2-FTz zZ)S)(E(=Gg9ItuWpXjjz5=7C$=?rXxXUOYy;?$l&Z=^!@Z5z@xI=>MNM?*P0=8*k~ zIuLbp9E-F3FO&W~HY7CHsc_VjhUpw6qnYd1rircSirq3uX%R8nC{N6N&20YcmgP~# z&e=OE79Gzm>ZiN*&um}A)omPQ7I=Q&X&n1xr|rA{HC9wTf5j?XZ9thC@heg9xF~ z`H^J^W)dq-mRex08VGOIpS`sMTe3;Af_D5Z-7Kxvp_ zJ60)(sIM_|3v?P#MRl?HII z$5r00!{wg?^7^V%mVj5qh0N3rdhom6_Ua3rOM>c)3_Rg4(3!RS&Xdhaal zmlZ9f>HepsI0f-Bf(5DYfHh0z8-_@mZexJ?6oX4}v8^PO-C$T|sHjdafO|GIMS@#p zgywC*2$zyY5GEa$33;jFU^QgEv!y&sosztoJB_dJe>&%YoafEL+>?~Bcitj(!nk?x zHm|MY7VI}$SS=aM7LR$iDav{T} z44=-F-79OFN|sFw^a+sK^y(*==#;1t773fKOX?G6MU9YCi*E7d4mLL@s4!1^cb1av zTPj_ppsD_ioa#`YYveD-HB(i8-%?!4;JU`Idp)@J1qwQyGj_!j6S{@6k?zcZIt5gQ zNkC1#GK9yigh7VVZbi_-l6{WSG}sin0-L;l#|X)1=lxwD( z_OVWs<`L6IrEC|E**i@|)?~<;_QdA}1_?t*F<4TJw!?2Z@>O4H>A-*gV=%7kp$l%t zhPQ9);OsBK`A)FFnWVC3jwSF*&Z)#RzqbM+iLA}h_1W|j^ihe^8j$(3d?%N8u#?Ml zO5V|`9RC%JtSDG4n|d0rBn3rigqkpl!kar=b!0%ELyihm&>YF<(d1k-65dgghkqgKGq^|QSfOp zCMS8%T@vO7}0h%sx4Qx=QG1n5D zKM5rITyBwN2IBBf_?svj2~dGw&646rD(*Abfdu^g)3;fOi9pBGV3Mnph=Aw7ocEp`5202)|f_7;l@|IggI^CU@X#|M*Oqizlrd2>lxJ?E>?1WL!2^OweFWv+ShXSRQX6R_Kvm*GU zsj8nx8Cb9iDNfsyJ8>BJN^vbrP{!fvJ{xnX#m? z6ui+RD*=<|fAh60EOIBvQZ=|o-UmErOYB8wIXd}nO;8DTjbVWT8bwL}3j0o*19->Q zWaQ+pcBh5HrR3*cK!xmZLOvy32R_SX!hgvsp)V57x%W56oT;`-u@G%gcN-GEFifW5 z?oF+V_cwmVXS~KLoc;w#n&=|_Icbuxm6hy!&(0P|cMXXJIw-sFpRSDoboOIL7!UE|xdBn0KiAU4J;rla>~B&0!3l z_`BZOT2KOks6bz-iz*=x{81y|4+c?+suj95B806kB<>-@1WG9wIu0tLgXL;#t;abj z0SC1+vjMX)3v)(&OP3${HgKUm;`^un@fxiD9!|nP0tY4*@6O-9oi7taFtHR~>%ie; z<{A)Pic4-IwT4{2&plnoGCS{E6(;d^NPLsuFcLIJFoFmsmco1OI)44+xuIKe)qMRS z5khNAnk|%5z6$c7p#8~0`K&M8E?($CXM($0Ciq;?otuQn!^w-jmjXGX<=7o* zpB*Tw1W&T65~6^0AOKV%Xt<+->esIrtN5juxdWXE?rx2sw-_RlXAFlg0+;9B-#>6; zArS-HJnottO5S$dpdYe-?}(yGa3>pVDfPfrx+u8qwnNT7$_f{Ks&1q0jiByxg8ot? zHt_}fEgMY6C3VO_tVd!Zz9W7SSwEW`s20ZHANYsX>bU))Nq3xA7U5L+K02;IPGteL z!%eKsieGrO+=p=GiPR%tgJO2=)N|m8fq13Ee8OK(g&0@ZbYhMyk(%`jX7B08do28p zORdMn76M#I8wkps41A0sSP=6N|3`Nj_`R0Wf9;3M3RJ;#AT~%Hr~$Bhc^%;y?2-_s zsj5F698zG-bi+H+G`0OmnL5%ED<&kPXewUr{l|h^>x1aO2oYwq=R?~bNNvAAuMZom zy8}fY@|@BY5^L-KDlavuM%3|u*Pz7EZ?{0>m#fyGsz(p3MfI4&`=Ji* zFzmo5DfxNakZ7**BQ|CgRx1D)%R?0bK_e%grF4(Q&IDIyO#_9>KN?jMxPgJjA3vTC zzTy)V7b>bz=dou_(4aeW8N-F-+%Ceok-pu5|iONT~Yu^n#|(YVcZPf&6Ne>j-zAR~uoK_&aL} zN$R%{SPGV`jUV`+s=eih`<5S6FhnNa$#O#w=L@9}l=EK zfr$=I%CCiY5=C#0qn^e+a3XgLWT%~(EX*8{8Flp~1g+Oc|4@}->61MB3R}QMSzy+2 zct23ZG~`(koW`N&)2G#1NC*OcYBK*fyxVeE<_6{(DSop7!CWi-rEaiX;*HJxb?LSf zo}1fnZC#s#f1uN>r1phR6|&aWG8^Du&bQM`m~w5+M4SL_<_LJm^x~Z-C34WaR?qsR z{9WtmQ6k`oQ?#)UUk|{3=H6mBmBDVVOzAmXCB7dHN9{367hyv(TzgtFuHKl(o@Pkd zu?bQAQ<5sh1A#=HUcC3BL=Jj*n)aIT8p!gbiVMQJF-j*BphB;{_&%%ZFPhF!9SXB^ zJ&VD%u;cdJlqqtgngGzVjM2iQS^d|J^prWX>WN+Q{h5m`~qx^#6%dG^gAX{jo z_xkoeP|dGj)}u)o-X!;bpFAQDmr?#;fWjN(5|S1w!z{C6S9%NUtyW&Z{UsdeJ41!4 zd+_EPDk_5SV{Mi2t`&{ZTVR=F?gk1&5InW86>E^_85h~p^~EWS8Rv{SVl)Y0CweR= zD{|_Wsfx%;{5RM7IANQC6wex5mnihz&n*=>hx;N>CvmX;JEJ^EB;5rbkn&3FhU@*- ztGJra#vd$b=xZx0iH7|Ql^HmX9B)Qj;RE;W%G{#pnJ@1;=0&tLwNXdEg8DD^$*gfF zHErUmS=WqhEAtW8i=IM%VFef!$g7r;gQ%#1n4r4(w>A>2U^3S4#Z5L)~skGz>MBJFS zyaTN;H=x*&VBYzVFaa%;tNh+{y*!Avos|U_Sz8>+f3-8+^_cr$%2p9f1i4ZjnT(?; z|JAu-=Jh39(10{s)d)|lpAjG`#AyocE{IxeLc3`nV){5Zqr?ViD!_SwBzq5F)GY2z$*0_#&oS6KDpAG@f-C!iih%6R7)g^|CRuZ!`6%XLeHIl z6l*-wWMYVz^<%l*gH{ji?Uhrw8i|}s)s@|VnLRrbeq5pq#3DI6<%9r1L*UftTSgFJ zb1skTtsI!_lfa>WkENy(JZYh*J_(!~0*bK9jRAa@Ms2x(mL!6?o{WhhtF1s6;NHAiUOz$(`x^t2-u6=jq4S>Zno;7b4`-^BcV zx2)G#*;nF0@xNZ$BmLP06VF=tc+Rp*U1h1b^O-rh(t1LDdBq0gwI^fOm8}~)7_!r2 zwFPzh7-fHh=AH2mKFIdt_x{{WRZE z@40eRC(?eW5=Te7)d1#=vY2B14^82}BqF$bO%#U7pc_FuhTf1{H5|=pmj8I+kNQy5 z2k`Zl0r1ZS=yK`_^#1^QK!v{mL~QnH*8SUYwyf&%9LQBXENlvm@NWuhphK_;C1 z2Jf6=@CBe=flip;^&8zRC7-?E=fiM%i9km9m@YhyAC-r=tYb!jViswi_2g!pTb$cQ zj(?dmLF7IF00000003Q324`BVyVZvtKY^3Hc%VFJ>{>5pzW zlq)Ar4&j#bsT41f?VkuK)bd>?UryftydUs(6EMhq?WN=MHgceSNENVN8?ktQ%p{q= zBTImVaTrV((J|(l7tyl>dj=TM%2ivF4z!Y(BXH|_xSSN_B1p9xL9J^Auo5-xWuJ?_ zK_+UNecr(i&+Fa)dEv+Jl*3@3vQaybGkALLuzsQd00000005r7hC3U&z~*@s9lu^V zU}JSe0S5IpvL`jHOQVbZRxT^!lErO}m$GR{L@_|cp|oPdmESE?kP#P_ArR@&2jpiE z7ex(ZBCC)yr<5)Wl4G?=f1Zj~U;$jua8^PyFO_?eQcZvG^6OnDdv(|9OfnvC!cOJDci+%g3J?GQ00000 zKWV>9$!p-TZmkwn;W|NVp5RZN0-I?SIePYI!bJG9qn(uz^e-TsbnlifCwGYd?pE-gZ?x@C+3^y(8YZeiFs#1k!uVCc8ci#% z=9EKPQR*oPv`nFY1zfHZU_e<8oK<`(nJUPN#<`y`0!9R^;MvW{aVSN725UhbWsWBR z0000000l&Gp@Z$&%j&x+j2?3O5_dDsUgEx6nD|)gsAF~14oQE5!wRa92LqaKLtZzA zLr#yUHX)+&@8pV!$tQ>^GAI*KlBRg@!GRUIz3jSE8X~AqRFyR_RPxmn3U?f$)Ez>y z(mtf9+b6}9G-#ta!01NAbZ3J;QRPb0YRYs zEb1J}pxAxkA~lBHFnU1l4INqbExhbPZKC4*0}%G^Bp zIm=^*J)opz!H5y|JBSKNWb%-^_Dd>U z?m@g$zmHU?P?|c7%sURhds3NQDXY)xlz`3|qjW(AwuJ~lrK}DuTq4vuop?;u;(nGf z0AK|3cXv%A_JH;gU6KwbeK4AV>!wO*6N~2M+|cUP1r9bKS(;JDbZ9P;0Rm#FHB^hu zB1iH5_0%O!^b$uPcz?ZaBTTJZ`dDWzb}fp2KDplizzu5S6)28O$~@>P2B)_(Z0cY< z6kEboYL#pFfvT92ccLY>~h=f(QET9wx-989d3c&>|?voD5kKMWGIqhW{f3^J+T`;g% z!Is!J3Gs|Z=mP(&B5I`VN0bC3I-f~pviSi$<^VU?qc3u0IT^ngvSLgiKsa%+?y{ZV z0zRkcO&icugtfagdqUH?cn7nNMqd4L8TMbSZY;-ak6-_sn>{a{;+R*Xx)M^z-~GOV#sXDT3IZ7kO{T`000+I#@m_r zfbU*tE0E*Yl4)1sqFMO7#=t*7@^KhUt<3_>N4^h|a57tW>JNHl*-(QlM8*LJVzB!m zyrwL2O|w|2IAig%-@pI>iyQu%zl;od>*ZMhQs^BlY?x^tC?oPoey~0@>yg^aKN$xIkGZ*M4BBUn9uI=LAf1#`BrS&iBiQb>aDeQMY3h_t5h4&K?9T-Z z00HjhIWb-+0)Kf%Vq0fWgQil#4|I!lshf-i@|s8irK_p$VET2!O--^R-(^6eMLobWE6C>s|v1lO0-}Q38?ht z$7{sVmS40#|2Qv88cKV}%~fY+C107V7(b%l1)vc}kdSbX(C=)pR|8`LEdoSY_k>=D zveoJpDGU+f<`MN7z-wQ7f9g1o42BJO#R65;xfAH78@;B9Nx^7&(g6>yzAWFA8YffWfPhFrVY&x zmn>RiYz*$JTf2h%m>4?ZmkW2hIob;D7p0FK4L(u4g?RXo;zx}$e%rh~76A0b0iqx~ zQVTI`*1@bOL`W$}ayBFFN|_~n#sIfGI+HW6tnQ_V?)WhFms&#y=#W?brvF; zRb=o?F;F(zFWNI_RF9UY9jD^YC`W_IZc}2i1LLRZJ;D%Q5Z7981s%Z{7`B!W+c6Mb zrgyz5{NVn7Kv_yM5_AibNoTh;_Wqo05HhWPbGkcyI7ukJd-D)2xgI-V&*1y{sMGxg z3x^dq#c5p>T2KVS^hj9(VXIfM8j~|JK>uE+VCC~;OE>{7=08iB`Am=+FidEKdQ#uH zHuS<=z)_$;;f1#@952RYF&9pl7?#&d936?baFICQ>-rn+epO>CK{-hX+V&5x-r1B> zRnc7bYel{YvwmK-chi(>@788+CPgj9^4DLQlQ1RgErj1tapp-~KS-#8zfDVj&F0_d zOGmtI(FrRNj9KA|=?Z0aDQhjjpS>$O|l^NVJXBdeG`-OZKPToKsw+rKlm;eDc zZ$#vo`;p_sWp(*yJD~I70_rehyK>@Bz5?2K2R_QL2kmtFCYwuJ({mlVI^qoZjK z*h$*$x!;f$S4yJGN@p4)_4JmV%@Y+u)3?e`Z6KOuX0DaXJaZw>Dzt|^MWgMISLD>{ zDtfJB2IRaNWbs6`(f4qy#xhdC_DGDw2oY4y&ha>oqMNORO+mZmL(gD5yGbL7zhN zvg(z}{kWPUgMnnM>6nL#-c~N{lp3kehu;JbXZ2FA!W@9{u{gmklix+}c63ABVO5+` zvs8sm!e_j5HO==;WLT%G4LeM`BSv+EW}!RlOh(P)u2Qlc7vGmzLmB$lf>yWxC=olr z`fl?4&wN7oZ7*QwlZ}{C8D@l@6+*eiTsNO%1-j2vF#p6gUKAuY*&vDth_jt3<=zwOiy~vtMS5B22np4g#0#F1k)(;6xJn+=9tW zjl=FJVm(5W0IO!QhyVawLn7xey_7Or9Wsl2o9NVi_ZeYJ+2#l9296C{@&oXy-0MjasCofZmB^#0J0kCMEM8XeRK`rBq>J zcy7(+P1%9QbQ{Vc;G?O3qm3}L=$?B^5M~r1M@iJ3HeWmc|Z?lywEft6QCF z;?S==`zGWDce`_rU#GlO;Ei9)F`fs}Ri1SUd4$|_LKUS1!ztvV`8>Z62~7H#nDTES znQzqkxa4Nk`f+l&kay{}h!QO_+FhWvnh>7$(S&0pETkraFSjpVdvkSlezx^)-Z#N2 z9NE(jPVRt}>l3c#A!*N|2ulBm;(Q7Pwm_$@6}UqB=A@lfpa2AHndr0PE+6J^auUHH zp}U1GV=O`VyZX5HuhQ~cDG_gzb1f;ZT}b}Kp}j?2Uw71Hnm*SFEkEG7yzI>+0Q529 z0|OKZW~>I$E=nGj8JG{^pV)Rr*^L`EHpa$^Wto!F>wAuD`47|T7oI6FK;ur->;1)) z(7(@@B>)-A#8X%f=ZT;?Rn1NWXTY#s-r9)MhkJ1@%T!o$kOcS0a2YT37f1ml+vLaG zk<=$Ylfhdotx8H%9YnuxfAvt46YNOjy4D-SU`m_W-~fXR0(4wk2w(wb0;KYF+9Iz-R(K&8Y0g5>n`as6V(%zLUsQoVI@8k1Q{28`NjU8;)HA z(PdhG|Jm5K=gPg`pvGB3MOZ@ zoy6NyDcY_=+6Xu>opJQb92^LG-gmsHuOn(%?M*GO`Qh!%W53qcCqfJnVtrAYPAe|* z*PyfJOH~JNXmsRnU*-@erZ{&&>ECNvf#zpz-1pe~ULu|V0Zj2&JG?C(Dl|eC5T))t z8H#g6D@Ck&h#<q5v!*xWPzB@71!BG7*Lb(I_jR;ZdzRrLiG=iDnU0>dXK((+32)xzuZETshD5O zbtsHZR)Db*;V8RMTa5XISvGHj9y6STP_!yNy0fH|7T|kY5L#JE#737Qx_#;{{PJvB zv8>|qrpm2_AFQ{HrbJl&S&{;b!$o8?{-RCWyg-rR^xXkg)jJkE#0|su{yE|Bl=?_~ zfi?skb}g78RT5^xj9p{fdaul1V3#q_hVXIhekz%f{)EEv3)RT>#@Bnz?0u5RuH^dk z0)e{?vR!XSHGP+_(^Dl;;MyKjZM%eA;FsQYrJjV}!9ZiikRHb3{BpyS(#gG(Y-Ktm zu#q&=67lOJE+xx2mp$Yb2#0S{?^9Z$OA@CIZYnM`#7GfiDy#}IrXL+7= zr{v%Hs7IFK9|#$EwJIZq;nFc6od%QRo*_>9++B24F_iL>q&)$2WD}3XG(e9O4JPZW zr~m@t!uP_OrelSIi_k;Cc^bkq5W6eq$}RB|+F3wlFUhxrY+(!A?P3wyb+_5SL~d9Q z<*||H5BqNqKONUK@r(5MVw?hKyFap#fN|;LB*oRh@jKZp;cg53Xd&eN8PBOuWDL zX@7R^2)DUj5zw_QgZojJExf|XiBG@r{vz+sLg<+T2*A|v3FM!qn zV70&o6O58D6=(6TJPKT?J?A|W!ioWI>;u$OH^YAyiJWMtaJvXEP zeMb8F{!eQkp3%%*WA^oK9*W8AdAY){&GmHPo%3}Zq+kWpY#>%W$N@2q{mXMsgHeKO z(+(W3!HK!wap-Qo_fyRs`=$!73j}OW57BSn_uL=3Mdm72&A{qCdr6)bLfaHq9O!Ec zsjI4I#lnsN1kCuf-~ji>Do(U%WdW4GCf*UTnVWJmBX5M}>2z$Z08z(^FtX}!TzD7_ zKqpq7b~oku0<0*vOAp?HU_YqjK(RM=<@KnUP=YlQ@jFhIQaDw5_Bc?aM`-*je9P&d zQ;RET^tyY3MBPcUEgS~0OVV{VA?PBRh%Sp>4`dfcOvd5PS zf#RbSO(BA`{kLSKX{H^{waa|B@`?fZZ}QU>7LU&W?djtc<{IRkZ5}ax-?}De`5`0} z<&dH0jRj9`ZnN^yCKLXAJoUClN2aYWgXt3w89jblz1DhN51-dk&WzWd><>T(I*3bq zpU0IP?}?StK+TdH_sWt>)}V2dHpMB_OT!k|#jMr~XTDZ?dur}z$~*S!5G}&&gs|us z>l6SD>M53Cs02*&?@(RHntYHYGqzO!$J>fL)QyGLDy+m*GQhb5sC6k1LUrv}!TWy+ zE{Mx^db;S;+eB(7_wC)FUX&ss3S-tWG@YmvVL-q*Bi&jKS&Sk*b$AXApqCj!L8G*& z;?DU+VJ&f@Vs)m!v@&>{;T4jxdVyHJ=c#~S8vyFuru!C-xl1zZyr=WDPW8E94W&bj z`>~56&+9)IJ71_A3}+oF=D-2w&asX%8-_MY8LYY|W%-|4p}i}lo1 zn|4el;_?hyOHQD^d;F`MT=HI#KRYKDU9QJu@;5VPDceOJ=@DlFqy3 z#PZA^zhAE0pS?tFIfRsldjTQ5>60e7$U?8$RTLC)K-DM7NCcIHP%2fS;(H_9BCWRL z-RhmG7QSaqb26q>nyWxocyr#0Xw`AsUf@bQ4DBRfYNXX+P|oAhy|Hzh?Vy(J;un0Q zdnL$(#YA6?z8TjD*uNRwhSffbDTeFwYPWAUBCTH&HS_-QItADXd4HLvlkD1;fB;-O z;58t$Dl%3(2nG^e&1MeqM8o^b(Y^P|ZTagvcli>GQ^n?)nkt@#h(f$O_`9w=4rOxW-=~6BX*bfmLFx z7e^16@BGX@FpXQ_QKk&jjn}{Waj{g_jp`%wIZZ&LustN3^|(|+f4r+&1}w-VAe@;r z#zk7zgbeixm2$^!b%F3!EBEU$Fg$Recl;v(O+Nix?&=l+!ETaG_yIbX($r=fY~@e@ zn-7LV6aB#W_A)6PW+NA>ll{9G3E|UA9+xnNblOnaG6Kl3bJH8NY2>ssS6Ko={IO6@ z?+sN{UwQ5*;w6<<(SPHtQ?ZMQgZZg>S=EUAx5lDab6eN}xV*b#TkqbI?~f=j?A$&k zasHQ**O}w5RCz7{%3S2k7s6GMOIRFd)P^izSv?kH8>ReK6SA@5ZjI#(IEX#Y=(q?Z zPOQ+coidDu&iPz5rpT|53o8!g!UFx#y94XuQOW2Whg|UWOE4D5npCx%;yW9%pdCqU zy}0tn$=dDS6GzoRXCZFN50VJ)fC>hqjbgTpFb`)3fX*2S!R_xf-t46ClQ@??fw zGa2u}tE?Yrq$88Km8~*S$p8QinNs38Bf;wXF;lP$g6GScE1zHysI}ADM*A6V`#D2=yGS z*qpY<=X?iIPR(uG-zR<09M`JwUMbd3a!m0oy2B&a6#T4RhtGE9q ztr|H4_gI-cWlsJdkr}hHSVhbUkgnGJ%0NCa?BA8n?8}%j>zV3w>MBc%Ol1$4T49)> z)|*?N0hoqlBZ4zv01-2x_Z*llcybyaD49e=W`5*H%!3ZEI82ME(z-x92&^3+67~>x z6fGw7eSKSx$8|XUW|f=Q@#MvHXIRCRF>OH4$F^-6@OL(JG3ZxB#B3}EwZC?ju$sKf z{N^^%CZ>{663aS@`bRGb7iG2X(=LKynwY|J}~2qk5-4e11v&4 zPTvc$9L6rE|1DU;h5!TRYV-))pB`>`ntaTOcfU)?XqV9Lg}S7hhCj)Lk_;V$WZQY- zJ>PD!R)5dh#!gj{jmFw@s&$(2awJ*r3zHOkW|RS>3xnhn!VHOBYyz|vvStTE4*5Y5 z_1Uj3fmm0^gs8y^cbkC2NYu!pqc!yr!dm+p;71k=rOWJPY*}|RKhl-9#|@Yp%@_r#YNwBG01{-lW2UP@ zrOCO5MNC7o9#nwUHP$cJYjLj*If7DlO+zg)Tur>G&N8JZi3mWg*}-F1f~2>GWbQsY z{HFQbbwzd-_jw(A+5kqLO003RLY>FyLE6xl1cTK$?DIwDhPAb5302wd2}0;Jqkzs7 zKc4&JjGczUa3?b|t>TQOKO{Ni0Tq(j!D8yfxht;|%%Gv^S|h-Jn@VnN?mNi8OGOwk zx!Uw;b~8N$85#EbZw&DkUIjv+W?ugH>h5iMp5{0J=w}w%yB2gZNeg{Ng!NazRcn9% zP213)nqNBYU}ZF?s7$5W0HLo1Z$#_Q!f}R`6^G(L6I3%od-2gB1-7J~hHDw}GZg(e z!L@BQYz$?j*7$9lEokhh7grZwRukm)(MRb6i^oGk%YzJawIC_4p^7nWfB3$A5`!w&?y@&Bu;ohG8-k}pVrM&$31MWw^9d5 z>ga8Z^8F$wNUIm54H&fEU$`88e#fj#GlNa;8^>(#Vx>KLboc*im%2#oc3+eaLahSE z^@tT$){gq+b1HxfDU`@mnR{W%hiNs@kRLp@u6+|ZLWyPf$o%d{Xh4%C0dN5{Ahn7m znSz!#$dS~~oXxZ!H$L2qlUBWuBbBneEwO$9cMM-}0kK+tt8s3Uo{o4o51h0&2_(u* z>Q0RJ-Y0O$<1$fEA~TecI}BS)X4paYie^8BPn}paa$K#R!xKGQJXaqiN>XT!<$O!BEF)EXO^WrE zsr+7w>P8lq7tzFGV&~$fm!9AN&UgGICb?_qSdwLVe~E za@N21!^>A7{368J7If*~hKKNZ8POS{ED1xb#Fvg$GwDV+ec5G>Dh>0Dhl#vZr~nNV z)#@SR)%HN#Ws2GtYfXYOB*O%%FsizwBaUE$!tZvFq$SDebs{7a2#ji8#h*EWIs+G4 zQS9rD7>IZ|alhOI{TzEb%iVj?0yFACPsP+{r>2F(GKPwx7a{mF#hNp?&d!#z%+1fb z$DSYe+K;=mSGZG4wn}a2sW`Za)H**^5d-K20hjM*dMm1ne)={9n>RRw&$jy8PAvGasoRbMsobV&YTq5Mau97*-9@+RXd zFr(I`#`7vE>OrfP&$}}+wdKc|4LKw-NAXA#Uo=j?yW+&p?x*8>8W~fy+O)*E(Q~>O zmwYBtiJMwxUu<(MhAKOk3`?d^@!$XnK5Ay200C0Z*zBrLsC}39#un;(C~-*WJFL=B zYr(cS4>O6-`#=Ctk=-yFCUQubKQ}}#Y3;7+2{qMuEd!XjvGdOr37KIDNd@<@ycocY zUFbYAub}DXr@xiNnu4z+lw)Ui%d|*l)FoQTHxdM4?dKw1`-11VJnSjk9E#Z)BJe z;XB#nPfBky z>)K<#M1X!6jfvmKErJ??jI@rXf*BW{v`|TZ!vgovpTeWvApbZ*pUz(_NH|s0<;!4n zFheDpaV+eX#_buUcAwOEbhj!BM2go7qbjx59~`rx7G#wLN}Ce!I@ zo#`q)m7)phK$O*`%KFTPW2$AYHT&C(HXHSDpytUvy$}IcYZ^A#!)+pV*=t|vHvf-R zQ+mrWh_+g8iU%*~S&4UW>QK2TopDBS-C2UupyXTN_b`?EB2R~v!dg`njus{8JAS^C z&u*9+D!&3>I@6sRn&W5mc%06HAtlVH;@XZRUY)8)t>T&ThvZs z_zK7>G9{6oJ5cTW_0z*K*DV6jY-WY~T?~*3HUK556yBn8Qw)0hro^iVevJ>6nPGwg z>eDvt4*hyf3tv93IQIUzdcUFtI3`t5YY4K@-B5Jl4t3t`LT>{X3wp5JBMrtCfIge? zJXzny;Q>87oDrf;q{(fBdBDzd-;t`Ub^B)>8z5 zw^%Rqa2OnzmqFjCc(gNiFDbwdYyqsIfGD?ASF#)iB_*n+vAs#{eJZh!yDMZgm*na? z-`*c#^TJjnE9JjdX7?sZy<(n-k$YGJ=NSHy;=#*pk6V{tZ_ugq z4B%QE4guLE39{o%_d}@T90bq`Zt7nE^LNecVO&~3iP^oJw|>g2L88ELQ}yMM zo;3Z(-8u1{OAz-;NX$wDOhgP6985@4yVs05MV7}8vsnzFYfmM(lHI!SnRQG$xJZ&q zmzNNAUl}u5x!tFMKjMDYWVvX%0jW+)D-j|{9p-9M**4F*=)79~fi`}};vcfH5$9BE zGlCQ9cn5vKifQHsh3_!=zeh3xz$a(2@0pRiCOrpIo5zb^UYd8X2Xe`6-|^;;jWRI@c2*_bvcXUc?rjx z95K_8jb!+ENZ6;Yr1Z=71}EVq$x++O+gf>2nm)+;tF)MG8r(8Ek|ZsB4A@n5aW zIkAoGokdW-_p#`%kMFlnFFW&A7>t}_7@LJLRzh>rTSpd)%VX_%mEKj;O}jMUpB{`) zG*Mf(E!@kuLbIbKy+{yTQ*zGR?AJbRsX6#ClUPxb6f!1zPLyrbe3c^g(L z23nn;cD(5daM%RvbwXOV=PNt-QAooK7MP>~AnI35)@~MmIvHWMut`&BI)^GzS@xKM zj1>Hw@n2*!LM_w@7Pp&9-kHOsZEnP(<+RzmT~<@fQ;e{n0(21T1mG9BPCzR}O(&?P z!M1Yii5b?}Gq`R8yW53XjdIPe{D4dMlxcfANd&?A0o3ym7~!JYy&YPKwnfr zkB@ZxkfM74v;ihs4#3Up`cr9n04m3@9h>$CmfB?Zc>MG&w8*r@k(;yueiq6~y9u@j z1P*rg?@3HIxe9tjap$EdV3TN>(cFp5+i+u^qpYQ+gMg**q#7R7D~}V`m8cSnkAPM2)A3 zR?uiPKIM{+9*;pdQsX18{!*lJri9lIF+?NyJhj_Q z55trZRp?UI2`oJ*egxQTsh))M6krt}_#-DRstqnQROy(Pql)LoZ4&%3h?WjB0?*b% z37G%o!del)F_8t4su>0YxfV)klUp! zjYmpjcL5q^9>53llHzdyi%^{e5zpxO_qpETmjH3up#(Boy1cHXgRF>kmPk>WHASQS z>j8eG9_~*$=wy1`Rn)W|*Q>KPEwii4f1M~sgQNh#OJ^}G9bu#Y%OekUI>RrV^!1_T zN0CM)EqRoy4rXJm$KaJ51s3Fv<6?ycF8@Bh1`nJzM(AQZYat!ISonX%4Xp+yk0n;% z>)+td87nR*KG)KkZ7&kxr85tlx^#-+kpV-ndk*d2;!D8^)bc=Y$r~za13Yb+ZoWu|O{Ho#? z0P3YZv%0wBM}P9+b!9Q_%RGRNm1iXVf`#E}n~GRa69OO~__x2d>V_IF(9$;!5Z;zq zB2#hk6bw7yx`e%{mI)2D#XGyLtG_(jbL5hX!X{2iMz<*S`aWK1)+C!DYQM>Vt~sg4 zpKAfnnGg)JJd$#@1RPHxsS=N7-PfYsthcjW2(WtT-BzbgI;(nvE zQ9@>1@^C|1t{s>eZ^_OW~11UF*dCf}U z$4R|sg^tZ?%8dl#!Jy>PAf}LaZurTQ+IjQ(FR*0;NV->wPAstU#`@`!^Gj!&Oe)ZK ze{*B6@}aMRG!xT6Z?uDAE2I1@1J$j3%hzMi=i z8WCopj+)rza;<8XdBqX{LEZO1+7e}#jo^-Z=Z7AzQq>aMKu@pVR?qYKCOhf>9aP_C zFw=<`lSaHQzd&TQ%*~&iwh_ZKsXxA?@-^Zb#nj6c2(AJZZa7HCymd%8`ueZ?zrt&= zJCn_3Rc#sGX^2w$Oc?%mT+&vxS_=yjt5CozRVE!WCoc#bHVT%oxdc|eKZtqtsC6@U z9huK)85 z79V%3#e9dxSiRn>5TPO$x}Sd=xs|S2s-RL2U>$-12_qe^opLzFzT*o{`p^zK6g75pMP< z>CwPAWWjari4+RilnG-qun=fy;Hm(+IVt-;V~{#d_zsj=6@FGz{7qZBx^(x6yxYcSer8E zi=0Zkh2|dbBQsJumLQV#-Nl_H)0;rKFa@%1r*INmit<=cDEL?}vx*C6O)N8p!X?{e ztDMXUyU_8C&w@1ZpW!=oLfL!FaKO*5z~-^fn(4_0=kj+Z-+IXxQjDL`8xaKV=suMmxvnhk^N#MqzTchFTvCEl9iVpxEmLx1haAJUGeodjI|FyAj0)sak(Ul~v>Cys8B{xJ29YeUB2G2XQPxbSs;s zV&6;83Pj?j1g5O@iK>XHo!OA&a$v1c11dH}2R-*|O(ptunD;$~NYNk&bEF=?zuZtN zj`$*OFxr;ISds8>l%~zc0RxpL{{eZ(S-&+fPk?H3Pbr~DP2==s*a!1fm+d`rl9c5) zZUvN1Xn>wXNoEGaG9z7fuYSq*`{%~NxVyi9@{haFJ(8s}`n~gHH_Xs!v@Gy@JMH=`;oBc%hSfodmMqe?^55M6>))gDv z)s_yBq+*}acCOs-3G`&=XI4GOZLL@#wDbqq4NNZ`;GuwI-Q0|fU?S4jQwwNkuFyG8 zBlacJbu(002d}TLOHNxDH@LiH=Ya&B`7Mbi;DQ6|T7~Wz0TN!ST(-wPI0uX?yT@UV z!xmI3J=?8;OB;>UhJgiGAk^3Eflv)?qBPsYGm-dUR(YV~FB;z%2N2_SE;EO6;AZ__ z1M?UfALoLcJ$?W(E9TG=!u=^MXQ}jkD_@0+?${Bf>znXiK6mOF<8CCPEW#j~NF$Mu zRds+=BN|;g;Wg|b-aCG*=(KOTa5sx=8Y%m4xJf=OdLa?s%dvv3sDQn7 zcLjBnsIWdvJ%nx~JP9EBgq$@goC8Mts+ZZMO?= ziy_>YgcMkLm?|_!(yk2$nvitbP=nSI?BVtJMvB5y)F$FGgQvm`&+r`Zy3|;yVa!1a zL?RFIHk^0`5CQq1P5KJo>1utbYX8uQ&4!D>V?($DZ^-PUBf6N91Sg*3q)&Vp zs#&+nwk>XPdmJjuE+rpfC!150h-sTvL>o(^H^aM_@{;x!?+_yJg?sGMb4-~>_x+1b zncJX^ILkme<#IVHc)ASPZ#cIr8rYTK@tYIRgc$KXg%&Cv1 zo9^iZT*kW>X1?w!N4mavp!3{BHOJH6Y+*EHcr8}b86y3QaJi>A z{!!7$2YrWAnEzzrVxl4^UKGKA?)%DN_Ea#2OA8pim8nd`00JXV%lClycrbA@2z;kO zPpU831%z&Zj|BR&wUuQ!;$0#;*@0Vjaq7MWfR@9&ux{ zv`*!RxF7iDY!smDNI%KKHQ20@35~K@k3@jxQp~I&2{;0*?*JJ zFP^hT@rxa~*f~PNNzg7!l28|{$USfVk#*xtC;NWNU`aqru}SPp2lgdinJ>M{<3@08qBX{S69GM)2~H;)`heU5SosjBoD)s=mtxBW`K(F;!(8SbBwGS$+aD#Tg0}T{f>XqlMw#x7~02)P{F8^-F5Er>XoXgVK2jpsDN-~ga`rQV40SHeERD~OL-qk!4JMVML1F0(+%L9 zr!A8`lIu%J-Y=8;d}zAxm;^zQUOoT-37{Ip-;LxCyF%=74dio{WrZtXQoXG<2o>d@ zRv*(|)5j$?FPP-&z?Mdwlw*s#-0dO*=`Ej5Ipwspx5*gj^EsKFOjP6jI4*CKvC3v0 zJqeUk^CcNN>;K2-umKC*}NeJ;i-LsSdi?w<`1u@!7f9qb*wIAH6qO%YvrJP(5 z0EJUi{k>%>D1L8PJ6p#M7frH*@`0$~SWKWW@E>64{QHAmts^{uS|v&A1}hx|j|6)T zd%OuQ_*y;?FlnlW$$|X(l3PHkulj*sElZ3=iLSJLgl(z|M0N5$FX(hr5AMz88^X0R zx>T9z{S#Xx!#p>#=Cayi-80mQ0e#u_=HeqjiBry8qopB3L??X(#$33T;7HEU%7rua zq-A2{w&`%UgS}qNB(8R1Y*4v)84fQ0(-sGd zeOofoNyoc_BgW-)*0rJ#v4g(-8jR)f4NgHV)_|P-AQF5n?ZFk#rj#nwQ8B8ht@_}M zMh)1+{f@n*0I3%RjV*2e`~U-;P!llaF0kUgr!5=>0WbuBT~sVWnW+olwFQX4TpeUf zakQCl2TDa+NKl)gqk@!+VuQ_1w}h5y1n*FdICHvNP#oBUI!|$50K=9rb1s>&GnpT5p@J;ln)kLZlPQl|yF;>EJ*O}vu4wSZshMm;9|A`L3 z*L{ApfA6~ZoZ${_fanLUiZB`{o*9^#8}q^5FUR4BlW@$Th75y?*?uYtVdIP}UqALZ}Y|6ATYF0e>@fa$D;JYo^f2;bbCz?FInjZ zE68dHdgbXM*&PCtAj9DdE8+?-V=KBpC+}oE5!Q6ZSaq{SvJ*@{^Hw3I`RlvLlECvy z?kLCpVQXjL-e8D9DNWFT*qUSvf(clj1@0L6q5&azT%-^}%T=Uq|J|(GYcWl7)+K|3 zJRV`|d8@0}JciQyuUU#^um*o^{A}({$E6TS@u`Hdqta3+cTwW)at?dIfB*mh1efe` z)&HAk_XJ(trNj>2!oHhuT2wRQU0=!0KQU)by*k+X@)k}c7jpT|b|%N$BH?mR`o+sp zI6Q_*CRjw(RHVkXL=Z@c2y1`2?#Q2!I$-Qi&{YzadQ=k=oHW2X=+E+#><$5aUNu~ zP7t^d&z5x)3|;;n7>SZ7xLC z5&wfbhdKD|Yo6aj&M};H!Y#ucH7MOF2sECID|Y`}Pr$sfntP@8r1i42hy7f$tZW&t zTPxhmwavDPHxDf5%pvRaNN)S2B35}njcl1xb)u*7Yq{2XOK^RL<0_T!YXfiYJx1-o;RaIuw`ThG>56)u==m{hot#|DCRx< zHB8gNRwVpcEv$G@iJn~HP`jMf_utI_19iBZ!!slrXe8{(RK7%DV`#Y`!W4e{uD5Oz zf&TVs2w~+_6bJH5_c%E437CQ)xs=8y#o;xd-+|ho4g%ORr*FN~>HbpnwL7I2dpZ90 zyg;2<5ETYTEoNSdt;-jBbIOE-0G)#`Aw^HU(& zw`lifBYXGfGkT|7GsW{xJw`k915cE{ZVRkZeBJvgD@pqNt+X>|w+0+pE!!DyiT24+uHakF-1Sne4FL)dMN?3CY%XAtJy~F^RxU7 z>H3JN?AET=r)_bOp6M`LU-Kz-v@TnfX(mtDOsF!J%fkRt+eR0^&aL4bsX6vNdeHUe z&Idz4vAe{@LzsC(@gSR%JM8h(S%1~N60S?Y-}MTNH0N`kmB2Q)B*uW)UF zQ)KAcDvsa)0001#HUIL-ny!`bD=o1T#Wb16sp-?k<1ABVgcr`x97}{d`@a`v+EJpz zjYA{I^3qPtS|xIQ@h02(V=q~GgvedyUy8edM{m77t*P2)IoQoM+~C{&KNvPzCMs*H z`h{T}Q~eJW(eOB3F6`p^MZ-{Ks5ZEEq8N2Pg0&O;2|-cFTve9IxQBL1vO(~32@>@MM!WGK=J($gjNW`SRlizh&XU4nLlN2x@`CdHy>iZ(Se& z000001oL{esebZz*BPDNd;3h#4*&$u{9UKmt*YbVJ}`QRxC+&E0l@c9o9|&a!Vl$I z$*>t2Ri0=sALW4Z1uAn{^Q<2XlO8SJS@RNw`QB<{VcOzRpXltE*joBqh6`Xp%1>*R zu9Z7%xY$F+vYM?3U+s{*=l06E%MhwO8WQE>y(9@VVnK956~3*Zq!jI%k-4kC26S zEHWEB@Y1+4QL({2yR;339I+^%{5r+|ZiQqs#JVZ6^fi^r19wN{&hwf8V`1ByvYq?G7=rjwj;T=I$%K}M=> zt+&{pFw?~C1QiRYTE7foVI@XN8gevc>cjfRE=vwCZs>oD^Zc3Y$m99gs&Nig7fp-K zQH0gPk3IkZ0000061Ce)(d01k_<6-T389C^{)9j={#Me$8BOY;G*H}0000001H$lftoSmx?6#?I^S^rzF?z6c8wm33z83gDrY+3w M5&!@I000000PcJj-~a#s diff --git a/images/build/start-building/supported-networks/polygon.webp b/images/build/start-building/supported-networks/polygon.webp deleted file mode 100644 index dea7b6a3b52b68a341d28e2217f5efd7e6e7aa0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22628 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 z 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 z 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 diff --git a/images/build/start-building/supported-networks/pythnet.webp b/images/build/start-building/supported-networks/pythnet.webp deleted file mode 100644 index 221f32c03cc63f552936abcb77dfc8cc1ab9856d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18712 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 OKgXZI?!BY;pZ^CB=}mnA diff --git a/images/build/start-building/supported-networks/scroll.webp b/images/build/start-building/supported-networks/scroll.webp deleted file mode 100644 index 404337f7fc5c0e478c286dd52a667f43e7bb559a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13578 zcmb`tbzB=;7d9H)-Q5Z$xJz*;?oiyllu{^eMT-?J1PJc#?k>fOyB7#vEJ*Q>o}TmC zcklh{&To=gd-k50CC_^H+LLI=%gDg;0suPFl4{y&0=lRG008^>vkUiomrzoZ^TY%I zV95LJmj$LCEndzaa?>*SKRStv0efkCA3D$*uV1_5=({QZShAjuep5Z&V88tLE+mgd z`rL%_ZEl~>Y#_Z!FR9;=>4R6RvtO>GD2Lvg3*|2~*c(_aHy9E8zQ#AqUUb!a{5B|6 z+pbPqh!%F`(fw}yr(fgK>K~zdU$1K4Kbb5#t@Z5JWhj-{)~3}?duwAwx?rooA0UJ$yqcrng$MOzHFT1&?=Zx;6Y4WF*(&rmdkpWiT8 zB^Oz3uhV19)i?EH8nAY1XDr5Kv$vHOG*^SVxs+Q8BVd2s?19P%gm>Ivzx?<$+uX!- zG7y6}Y(Ae&i>?JZRRs;o=;COfQ@X7Om@hWdQ;_ir9*QrL^Ur1m4L_Ml!#tGmU0dp1 zRU$EOC^5s$}f9|E`<6%#Obut>UBpgg5MDLsY?A zN+Fvk6oI?C7)KEoLdG~E9)sd>fIjtYdgxAP0>ipN5AYo z2Z<`KNyc-r&{(^W07*Z#>ihAWg+>U2R)PTjy)2M-UVPFdTuJ^U=TuBOzXpZzv2?Pi z6Akj@iCZp1pc^gPp`(UG`9d{1vk2a(Ic$0``kf=to`IwYi4Kmj7E8+vsl~%s+{h!5 zr6Wd-gj6pa_ZDXMhg^zfgv=+8pchtUML5pbdDVDYo2FhaoN6y0Riaf8nfm+0&0YA_ zSmz3*b>J>H4K*$})i{mwUYo%2=FVnfK48p55e#v3i9>!}<>sUZEPcG7%Lzf7-5QgX zLP0wC7K#%S$bwQt6Cnz#(Vz9@J@I1@OA%cr=ACh+y1Xym)k$t5Il*yEZb};2&bQo* z72-8Ak}sQby5oo9(w;PFNYdE_ZIok~*(Ggc19WOS1;HoDMJx|hM(Y!Vq!sZmv*Nr1 z6h1IBH4_$XPc77~kiBt2QX6uWpideufKcYdkp(HRMQDz+OVc-ECm32~o|mHDya;Z~ zQN8gDzE=zu)-2SV8C0phmS}RrNI`plU%|vPQ;hPl9|OW=OLnNL71S6Zm8Z>{Rho%)e)Z z^n=bl!G&s~;y^J;Pt447Gld)0VKOF2Dli6B?J--!7jzEBhMWK)q0cAO9~(4$W6z7I zA(hOKJC5 zciju`NDSKnA?s!xxKM6zp+<&0@FeoabhOdj7Xb=@1Sgz}f}g(Jz>Z#9_>w^JM?Vcm zFhSZmo)Dln;FCUK80ZLiy;qn5iVaa$@Z=mdFny%mSvM7hg#y9j13oxAr5x-2H+-Y+ z7QO(e1^A`8FDcX+oY^f*0)-!qvG65^!huf)eBgEzIWoW8aE$u(+Id&380GLlWw0^J5(0NWKbpWh}392hsl?ldGLI< z@LHka2lEaJs2Hb1fG681gmA}>^9cY|0Lxmdv3=v93iG5JwSWVSn2q}Nx6$ly?t?}M zN7wuAgiIwnI)o6lfaEuodr)sznBCkdvOjC;zC$2Te99 z&dTs+^4@!kQ8akQq(w0Qw-v=aL(v{#)mIQM7$_5XL}s+roHALd*~i~=&Hyx`3f@)B zHViR)d=u-G{KYez8p4GE<)Rt3dbMLE1sZuVnyFN1h-j8^O$j-N+gYsCWOFd3^aMNE z1~r#;wfV$4kwkhnD1t_u!QN!RBqoVrE9@P;aZR?L97&#FqBiB`wgAsQ#9_$L9cUyK zEc-soFvCl{xh<@DbU^qU$#A}JtkVr8w5S}UIB5VTnbW* z3I!=9J)1)Px>@){la0!hZQYcu)09n$<61_Y?d$Ws_7FgdGnT{jPPC9sj6B0OF(Am;Vlwl(y`3noK53B9t8Ky7~u4k2@9CiW&=$6Wh=T(>x##i6joR% z!4~Iiiv8Tz%9vE-PWgK{#q)3p(rsD@mO9%R9FS<=DaZ*}6YKO9bC)sc2u>k_AOZ z$Q>8j^dAV|puBH@L`2^?T+zHNe}xH+RF_Sg3u_@v7))uIF4 zxf31o3Km+I20APRuZI;FdYg5iIkQIJWP;bD^9+~GJ4m2vl*5th<)9jgXct-2tch=22@SxscJIc{J3sJad zGScLnzXvz=-?NYMoBP5*(MNfyb}%^n@StYk%AR|H9ez$M(~2`NQGXlh&QDH10;mHA zRp5=wsLpRCD8MKE_t-n%IQ?!re`XXnzkGMxk&>g~wTcqPk0>N&;>fi9 z&<5KV4|FE&KF_-6%|~cwrW+?ju5C(G7KQTpp(A%J?u4oxv8Rr!RGbqx!tjczeWWeNYzg@N&V!kPGpx`BrHFOuHo-|M^FMADbU9{ShK=5RH?N zEb~8!otg%^U9BR5CxpyaRfU_y*J_TVyF&C%mad%HMPvQ!TbVh`t7EM?uYSPmnJ%sd z5R~4!JuIXWSr!}3BUqQ&&bnTbOwXV1H$OPrgn>g>u1*JZ!L$SHM&yJFg!_5t-rQf`%H%l zZYwjZumDy_s#n8g0e*?9{6CyC&}qf=9hLYtCYme|R}ekw6k2X7VA&o9y&P_<<@-pN zqed}(^nZmwNWc4Qw(1_6Z_IMKc@Ko@as8}aA_DpwWHy=Ae)SA6Nkw3pTLcJPSwv94 zvmAb}nvd$L)5A2dYr>kB`wDIFqDTJK&_kj4DHdIz(Y7VMLjkF6dA?CYk#b|LGLol+ z@$>{4FNy^N{V0lSVsNUf=WG0Ts1DF{a}YRiQ~ILn<2KK99X_l~bcPL>3JS-3cZ{PL z!v(|b&4R0-qX8=xgCj2s=bzj9YI~BwVPjug+ssl4&`@zJh2PHyH!$`%fo(zvKZlv& z5MrYV#fMKZ#*y=M6$4; zRdrrp5WsoslPPtRcNUQ8Y!jPspfQ)#vFwJ-m@>>Qztxh_HRB*lJ>f5or|vtOcm8H3!p(A1$N#lju9TMxKTlf^bHsV%OZ^zkOem zFfB>cC1U5wnI}Mi@_L>)vzeJ09^k+;*bmSUA@t`K3wF=23LIvKdGN7Pfx8w%Ga4cg z=c8=Y>dRZy* zV-QJ`{c-6QM!KzwMOCx>q(*Fw)H)SpMiXMs0&n3lpz2Z1|x>Z}n zgyW%|8^3fdXSZn4?&?_Vm;1?To7?&J-1fu0U(A_9SFuZGK?ZnS zyy|Hr=>c|cL<{JC{1mn)LR>{gsmg&FBx)+W_`vRj_vp$l*UM3W-^ zVtIbyPwkJg^SMv#7rtIkGEY)RH22WE^?aMBrw@J&VowiKVpe`nVbTcegYKDcZ|a@H zix}A+rP}Ufzn7*dOGvn%Q|vB@+8b`#k}KCc7+ZSog8BG27S@9-d@-Va{XdCR`f_GB zfp?Ckp`KSUsXBatg+EQT<7}g3*2rYNi=&#mDpyFq&b8kACW#3COCrU$A=&Z1Mnm+o zL#j%E*(Z&-!G!*#;ww#7KkrfRZxp|*wZwY+e`(hBV)QYbMe}x3-vJ?aXLgJs({8Bg zq!*JzvX!PxXuQs6skv_kpU979?bBb~GsqE0rFKwXk)GdH@o_DI4yG-=T7;Ttr5 zrf`@tZBgo$?DPE0KjWxNhze{FkzJyhW)RgZxfQdzP0Muz zQvSyv8ilq%yu5;}u&Ji`6&{{Xb-Cg#({ipeM99tp9RCfXe-zXeY2d@W`yepTVHsM! zKuC>PKq`-(YntsLDp*=##g(j7pa}#G|ED07?|JXC_8#LW)jvx40embPi0+gCdt+9m z-7E295e_MS^V_Z!PgMEiD(;B6w5AJZW5SAWZxGblxt}%3M|cO|cj;0F2Ks|OzbWDz z_Ifu>#rLJ^A!iCM5Z*c@2LITTm%8sge@F+ zt6F%^M}`s7`!7K~x9AZkIn_aH1oEyKu@5S~`3~hA_XgF#ko$9#Rg2@Vy8B1z;y1P+ z*t_#6E`JkW^#b{4PylseC0#%>IB|P0$^A=eCkQ)DGCLAwB5S`v|L^#pW_@-rf7jd_ zH#P*n{aqv5T2^+D$uIr&|HQ!ykVf_!QE#q7J_I=~uUD#gE%w^}XZF5Bx%d-MH^J{p zpILDW+fKG$z02HHXZR{*@uK*@9schSq#Jsp2{YOLQ5Ns1^MfF)6yy2c9e4XAqBZTd zD0$s`f|6Z4H8rFAP|ve3?oEqC6uhEQEdk%u@SdN~)3!MIs~^^Ffrk)Q6^1Y~b0GFV zAk?&|U8vOI0)Sm;|DBxVA^~4|EWV~t+egIyatlO%wr3Lh?)m1bZVyNL&70???+wTe zhx98x@nXCJ-UF#S97$b=ltRPu1SuugUgnd6pi|C=JRvf3V0mEW){js4bO{9$!Iaw^Y5lJ8`;YE_9OM5dJkRE|Gd_mtreja_(d!K| zRIlEkr^fpgS-iLA2n!reuqTeOgsEGFM!AZ`p76ab&>H`nd_Rkr%-~C)tg`>|L%&*c z;7|R&1NCgLmZtrx0_!f6ejc(@9OsNU9#7@>y)^c{Di7x08g3rP{L;-V5{dc;Q^m}b zGx6_s78(Sap&UU(&_)OTq;YBR@#5_B+axI+BElHKJ{6uobe7g{cn#y13WPu|8GX4 z_LoR&`8`AZw&suHcZLkNFWGDq2t8?yc$2&T7@>0@()H^PQh(1&e}MSn`nt!`uWn|P z{OJ!WX!Y~QG)(&c^qnOP)E=O{GD^x16s*iav;jZne_t-Z~?F7B>Y9s3^M|^zvZmG(MRSwnD)n5dqU~8kJv;u%|ice6-YG z>Yr~L^4PZj+vC?a;|YDP+0;YGvQaCn*8VG@1!I2-ig&0evGx0C8X8VsHS;BZl^C~H zk%-&J2WY+KW#tmy`>_D47wD%f9EtxBVhUV|x1+9;P=6F{#$VOJCFO?q8MQB^p!kDp zpmMZ|)SHe5x9#F)Nvm0}>bt-BL(S+m&?NAY@m(ZOp@8L?P#Wm3l3-e#dd!e%?j1qY z_p}JL;h%l(5=pcxSYiLr*%ki!i}cU$DOJPul?s024^>&Za5v5pxU2i*7`27Ii&9H6 z%@C%|`{|!j=`4=3B4B9%ck|tt+h08HxP_^pE=Rxf5Y?od%?DPsbz!Y-LyhoRq&;qj z^r3^e{ErWcf&WbAPT^;M!mm|q;xwO8dOLvKn^3cD$Me*aJ6!R;EU(S+7etrUPT}78 z4=bt}78j`YXZmYd)BZIn&qn>&95$Z%tK@pmnPq}-YKVOzFk-ld{|}~O^$pyHzXA3@ z*UyDslj3me?5vuB&Z}q7FX|!9`gKx_r;%668lC@>MNNR{iLkIC^KY~x3eUOK^=ZiU z)#^QU6=Bg$y?%Z<66m{cgFT+~qJOZ&U$t7rN1i*(pr-Y+?mc&Uk>5eqHwM=S4DwnO zetc`q@ILNQDyuz#iSE_rwi>M2>vPCoV+=QqsA*~D(Ew%7uVur{jB5VmL`$B{;Bd@$ zGb%dw21CsKg-}!!O7XeUlem$G$c|KU-16m1M7n0Mw&Fiozw!woyQH&hAdjk1M&4}c zp5V&+Pc>C6s+CHJIXed3{YH8BDYjCsx^;to^3^jA0=Q4J3}B*AmJd4D8}mR`j%nnebq;jd1V+7s&#ZdfNFP1P-wu5aZ`C&e*C7h&Anb@*dxqV?qACJz=q z{2A27kv;k@A_BM~U0&x7-*F8phixqCHz#Ntbhkqg+J06o$C@C*NK=4HvECXH&+=)3 zR0QqmdKKHc_|d!%%Gfs1o9IhNa0cjX4m30NYc_vN3O%vHwqW(ZA z%Yt^ld%hf2r<-=xjq-SaXFX{dK{oi8&{JGLb957CBv&3vRB5_=QL{c-S4@q-iU2Y` zQnxh|brszG{1V_ETlNe@QBurgOlS)wOp|ZHkewv2W(yoDbkx{Yz?{%+V1p)}lw&p|K-Znc))RyLJ4tAsV&4y&d znK8o=<$FzpBak7CxRJlPA+wgJMC|k2I`iJtOMgG4Dm(4{RPTR_9#rj!3@)}DP^_+i zt(G5FPm#+yk8r_db&hE^;c{aow0k*g7l>qg(OTC%llDRkyL}mUX$3y;SAK$-w#(;y z339>r1=Du(KTIgh$9FcE;Fq0=2nx|5 zn5>%1ISDDzpHrm=3#@`{bLB(~1+cy~$sKFOUwPp7Wf^pJ0m!1Pl^9RMgIp7e)+W%; zMbNAtGs4B53Ux!8VHn>8dKJ}b&}q5%*`*d->PA1si%p5xdN*p1xglEjuRKVdgkI32 z7_LJ}Gcr$zNv$%c-Ew7H-z>Gn!IG7eQ?x-u`toMsn*bQRQlk$x&KAw^cO~KoEw?lX zXcbA9)L|Z1>==-o)QdD(+$l_j?w8>tBg#eopIUnBgmDJF-8iLJ93KqU`T9nK=9}+d z>&rpB$;Au00D%5w9?pZ4+i5Qh#jeRJ5vrvljVr*8M08vW{-Mo^M`sCj#4ct^W-n8GqV+3}=NK_A5hx23y;{gFR zIU4J0LpRj?la_r@T;+!tyKnt-8RsKGdDg18iT$zGzdo$<%G4VDTws{3HK)G8AtVTE zzV7QUlt^|r_T(*&5RgpXj6tOg=aN(sbr6~MS#i7>Q_=|j&Lied!X(@(RfbZ?C+k50=WyFO(vj5o-Ej=MB zG81({+(yk7t*#v}D{*_M$?cM34o|3fg3X)A&nWzdvS=fOw1oSq4e9A|*2`&m(fqJ} zl}QO{`mf$HOB>T5jUh3NRlpBxky$S_#x+2R=YbN1JX4FtO{g2r1Mtdb4+ol(iQf*m zI@m9RttU(qnUIu!O=0eQZ+xosY=bogpaa+TEH}hfw?Db!aMRo$4ltwGav<^a^fn}J ze>|mj{lIa?C_YMHx|kz@x&n^|n<>C>YFsEunqz**So8)@8)`Yc0;c zM7_yeY9zMuBFp)@_*uFQk{qmL7dl{`b5Tugj$LdC%D#6HP90RS@cqk}@T6K9{|ALn z&HOmR+`gr6k0_r7KKGDInqktgZ>Jb=Q5!*Y6}lBOX70UbycNBJdx{^$BVY%p zy~Fks;a`eA9nlY&H=HYRMEJx^w29HSw`u=0_TFkID70dJ=y$sYB5F!pkJv zi6rars3~5$gJkf1Xnwc?^tBUv1cwHvpty#5T`KP7mNhUb+5h>!H7(T+XKAQ8Wr3lo zU4~CdjI3FA>9erux|gZd3h%BiSD1XQ;d#5LnR&27SM?iUM!G&;a*D%p1}8vN8u)pB z1iq4?s1~k6U)e15jgu3)q`{x;m!tI11?*?UlZL#M(j6{a{?X0b*9Bu#1+Plc-nuXT zUUOh@s)?4|N$Smwu2$XL1H(j7IRXHEmD4Ltp{_^AaW4yoxVwKu#(}6uU`H+P6^U<^ zOxWIsqhLSWJx{-|c(s!!RD#C<_3%$+x8{CgJ?c+H82LR;S_q6M=rqdogzAAdvQH|+ zESD$W{X9gfjij?CZBIW=*HA$|kriE3OIR zA~H_lW<{hglJDz!^8qo%Kn;U}NwQGsI@N!!?A0w~P5&hI7qclv?_1|KOQlc@^49|O zNIz=vHr^B56~gzTmil{hhmzQ~O?h0FWOp;8P7q7ebSpdAv3LihFm-RyPl!=VOm6v+ z&drCawp0Yh`6H98FyT$JG=4%`nSg8+PKLvirziEqY>f zfO2@c&bB5yeO1tt%icIF#Ut1B%eKKY-~EU67Najg_H}9bBnX)a>NCwgn#I9CRo>e% z`I_FT>B8<0Ce+1R1W03NOGaDV-(7lPpeQ>TwPtR<(rT9!A@U4k7$-Mu&*s=0Zc1-x zYfBqtYKJg&wL1W{5e_{Ss@M&NwHebA@~}hrKI@S>-o9v&GvdN3IvU2#89R+3Q^Fza zi@1xFXCn$8;9m_M62rXg+VbO`qGd~cGq1#}@>JMSCG_gPG7;AwaH8Nbg?Re3xm#ix zJo&ENglTL$j3{!fclDe2#{hb`+M+g=!&;*ESH+tFjVmyy_og4bqWnoZ_h~)x>e;#0 zIRu*S^tE#HfYYGcf%(IY=@OL)-Nj=_MtD-hQ18@v^g}}HFF053HwYFn?ta;e_y9U0 zhnqL-PZj*3XDXKmoxjZJT@H7>L&Pxwq_%KGEKcGs)VNp47!4ECn^ItdmfjKYBuKe3 zYfa^# zQp9J%@f^fw_nFmNdG#Ce#Vqty{1?|r-Q<}x&5AF5V|knDF4{~OUhMFKZK3&XNk8pk zQoj8ZaNt+wwAKo9HHP|;86uowTqi7cPJad2e5x9XVhLn*{LTRYz{yht`nE9N^W)Tlq@!v$;v*OU-BQPnN@!|nE%4AmX{(4tAAql1uOm9a{6J4Vlr^} zTN^=rRa6|-LIM9&Zc7@DcYs4cPUeU2hl9i%aEI^XM}~Uf|6h+=+lrGGa4TP5^O74R zrmN94wo?WZ`QDWu(~)2Pcs({dSERVK-=Xh=WfJxu(%8sE}5(LG^~C)Y-DKd|L^(tYLld9A=)!?6d&F zCO}+qNC6~eSru602R&WhDm!A#V~KUn1rk!YMt5RBhCtz{%|mt0tf zg+KVE&XZ+?%)Imhl5&a+P>#g}-sZ2uY#)r4Wt79*Vf>70p=FQyl)Z+uVm8Pr~0vq*0=*PqW)tGorE{f-;(KtB{DTty<$u25`AB1 zJQ-_DM2>PdOwn4hjG4tAK_R_RPH~!UqPv-85P~?^HJ+NU>T^hlyA}Uw46m7yBeOvg z8vs8qKl0jxY;i)t3a&Y%HVzSqa|6u#A~*k-#0ozf*}%DaXKLvqI>W(_6F^86_q-@p zB|&nV(dQVqJ1)Hq&7cwO7E6g8#dh{wa^NTHea=HOD$b{4WUwQ`MXG6yzww}8{=5hJ zdx|Kr1Cg8#;fqhBW#3kYNB@1u{48)Znf0?io_ZXBsTrggf*h?1U80Ocvn%}OA)TwA z9R8rrl0P6H+U;uy(^_?&tQzZ4+)W4mIOI3nMbForPR%}iKE3fu4pXZr^7FR{3gBb}qSX#x zjYvq?BKy#DPwUaU{G%PQ{LR+a9@GVZzGZ~2$gEdMRMxnL!7w~WIsUQEmEfEKx`K_Q zs-G~IYGTd7tJ9G_Rxal)Z4(gfXLR%=ey9fSfX0)-CV*MIXTmr#c6I@); zqD(q>rckDdH@PK}ya6H$*BTiOQ_*{68DQ=W+18xCp!t^1n^xp%_M<*X4SGFx8?WC6 zUtAAm$zv7mfdD@UkrHD%cjOT6oD8#4==Ld z%;+(*xSYq|@A@>pJ0d}XxMr%laPZs${CA|T-qz*Y{ZMa;(99I`qzPDM2I}nWpL!?d z6dY(aYpRd3c{9-xXOeVvu#Mfiq=a5F^RXjEeE6cBr-f5Mx#mVarbIhOD=yb1L%QqC z{5l$i2LV~f+MqwpsmHp76x(ofv!xc>opC*W&RLIdXcFTkC#K?fE*`p!Gr6;869R-J zQKI@>y)-`LF^es<$_dr)I}v8h|`6xL())3h$RW`%)P#{8e&&` zqaDiSe&0tbsqc%Mq*>Sbnrf+P(VXE!xBr?-1f?m4{nkdz*U&KlvXoS=O8>&i&R>F>-g>AcbtIb&hL3{|yOq7uF-f+bgsZ);R>K7uSzS8>qd ziBb0k9lwflFnslIRnR>RSQQHG%sPcRAmVbc{f?+eTtO57FLFVE{j~~q+mZ;Ah$V2E z1*JRL)Em;nEt6(EEPP>d%Rh#)vuj?H7UBARf2k4c!xukb4(ruYpgIz0`L1Z-exq5{ zd+Csex;GRJ{j2eLh^L;{IpL9kV9$QiCNzqSdk-XH$olcFT=ii!?c~y;cmg2yBc0Em zE#jLnypB%JbfiY0;0ptIAscph_WT3&U_-Br7%x)NTQmoJj{Kf>(?ti0fcw&WJQu4#?@9vjp8 zct%Bul5ZWXVg}M~uw^mc1$uZpCHYtJY_0)dBN=I5WW2B_#|k&Ha&qaHaIMdsh9vWT z>kk%RcA&yEdhe2|!f#ocr%zQga!+lVJ8t7HGtyzzeBdwfDk-{m`r|I5_ROr;0Q*XP z{ShsS>d~DAth5Q1I33okAF=uH@!R<0_DElujCyo(xky^_8*wrW1+d+9*p|vp$^Cv) zJgm9S+>y9M`fd&g0#YdWabuyZLLbwd{d%uO_silrtIX8{;)e)y*i!%*sNw1b4#L$0 z4V6Cs<2#9rP`sErg{;{QMX(Q#wL&t*5!Pvz%~hCDL8*}in5bE6xbOse6~Eo+Oj4k! z-&X>`sNlFjwQRkfN777HK^M}mrOr#BsN1eSLH>*e?_SyUI_U6lm7<~am^qCq0l-SM!nKJ5yU=Mo{9IHL4s3wm}m zMsDso?FrXcu`JFAy?W_oWaR-C=j`sm{d{Qfq zFe%MvOOB67=za(2RYNdQ5O>36HM{uZL}}Jw#AUuHsi4Uh>+lL*68i)(Z}5TR8&kC? zyKjcYDu&@vQ!6amL*~4$eiDmDMx`uml?Ra-0Pn$0H;Z_|7~uB{8*D*jXm7S0zj6lZ zB`b=F8*RpZ4K6;`#Xc+C8x$*;13AF*25}NoMHj#|P$_&Ob?a4@y24EI2g#Xfecaem z(0K`aT`MJD%ode+#37dcK`hja^u|~v0jpLM)Kawm~ zW&cMmxb3|tBWGpg_0r}H|GuwY3VuCJNCo#y!=INHmU)bsWlc86Xr3k;;_I;;5a1#r+q3~$h=mPz=K&Ut5YpNJ6CQlXvapwh_1k@VS5$jF&m7Ne(?G|>({SxKxx0K|rj`cG*0On|N!t!=Ig zOF6cZgNyoNr+qP}nwrzEcPCDt>>ex@?Bp@v>enAZc1dKZx zLppLY!)JX3yM2m-gwp@H=wmy`>}a#wVH_;rvGbDA1^B(Kd&LM{s=?RKTka3unX)FW z0X8O!RzD>VVd%wv>1ANm+*+Y%gl4?%)6vz{^*T49jW>Ioay{1mO6z8}PQuX<9b$WI zn@Ge@$T|Q4nNyqqST*N9dPlOVoT;c)YFWw-PY1GFYweM!Ip2Exgr4o%^vb%$7a|*& zD})3e2rLYQ6c3YEYAu`L3dJ>Z%=Oq59tI$;eYSque6D?bHjSHo78YadQ&XO_ep-L7 zd^EkAz0N-5o%5~v{lEF)BU`cK@8_PW8z*z=$){))zoK>^_19I|D*!Mk|$8x z^0wl4SNFKBgYxOA)LPI)v{70YT?%awEwKTdW;5LQ)! zEyLV9h|qQWLLyXIR6+aq>Y~|Tg2lAbnA3#_7#4VYi^JV20d15`0Q>3y z!~6{3SADN61Kc|tROO&IN0;kPmJ8_R?WPn%%(Iu!KxCraQ!hiRj0L0C>UQS8F4i!b z`0KR^cQXrux5JrQt7REe5!PSXwyXgHSobAW9wKVWg5~1 z#n;8A1YM{VQG)>a>V!Co@DorDEOCch}7fb1Ap4bYIV7W2>gm&ntTG>`B%%Q(Cw zgGP|ISkOT-w@4;cd&;MPf^>>(ry#pF62>=yPtetF$;L6xV}Qp{9h59cjq#-r) zCJRP%JZ2F}Kjwh+2%|RKK^%+Zs4H2pH-REDuF5*)FYx7Eu???Ga5k5QYIB4sThS7P zp23N%<>=~kS=F*RUj7-7wh zgP&dtq>k&{67?Qr9SOuDe*^*!ThvoO-1gu;8xW@+>{K+R=B1(d`PGm^ORXF4{ay!d zxc7hae8&+Xj8{PrEw%35qJgTf(G%Y+7Rzyw7$N+aVmF&!>i3>SUxWY2q6RidLM?EU zl2Zpch^R-#F^578`i^8mcsp~UMjI?(X_gvVP9zUrXk+RBaQ&g?*3a3+!N)E)t%-+e zr3g$d*J%X?d+%`r&L%lc8~>q+%ORp)ziP22TA@J$@RYwe?K@9}jCLC*Usfvm?N5Ih zBhyC%BIH|0Dm*Pq1$jvN{XA%VgYkIXLF~Xh;#Xj2aq{D<-yef@8Jr$*7>E`^9^x%H zo+}jC_k!tYx-eqW( z>@RGl23f{y5RRYl%>;9mB4mk11>WbQF26Wnn_{iDhos7L@z>Dz9Pn9%MQnO>%0eZ0 zB92Me+UQv^F6;vn%opx=7EhHuLzgfS|kC=Vzl?_JfXOEs`JoW{E&R7B}bJFkoj!nuT; z6RIYMFQHBI!+qoQHOa&`WJA(1ZS%%2)#CJ&9vpw642qA6PtDJFjt z4W-TxQ1igoofLTI2)KUD7oLeV8DcFiTXOB|SRn z`;Meu1)dG7c$`>lcUlHQ^UEH~IMzDx-cL6hcFM3te$5g!4zWpM^^@`&9;T>d0owwF zE|MxAY3&t39&$7Sb-}_iIX>_MJB0_s=cL5IvM`Z%3yY9%7U{=DF8b8BKl&b365WF| z^odia3>4sDuN~B!$&CW&67N5D7yZ+^)ZvD~=ys8Gela#&+YK!Q6|g9PBs+(z+25Cu zKKT&=3+G}~0a45m;5W2bCGPKi5`r*xzbOK>)I3~8)<`A#JmrP>mutd~6mk8+!!Jmo zIJx`~fY!HvAi~>_o8CdwIJem~G8zX~Xu%vCJ!Y!f>x&1$P!aHFsG`8`Eo0*WnIuAk zuPo&ER{91#I`9ii*TF?XGF!zM7(K{9bNkRESCb zRtpWzlP4#ffzZf^UU6@aE(Pv&^euHrfX{toVU4|q--8_c$}%RTejX8j2X!mna?3U( zD99)b1lIK1AWb%|qOCq&Fetd{=i)AnbFdg|Oqm5lH^wy~r8YQ)OF-&XWGM)h`=b*B zK4Y_I*=_d{3jTnz$hY1{R3L*Ad!Cr>SlH+-DGA}FG!Xxtkyonhq>%B1T#Sw&XhKIn z+di$+a++?ziasfYtAr?Jps8EAEz4VB^itso+s$%d^8=183NiFj(U)3YN|4m&FgwMV zCdM5jXp%;+NFYs*PaIm_vB7cowpBX8B+Rt)nh&-6vx7VnCAes$iF!RDn^f zGJd`Acga?ZuuuMEV0`DAHB@ndotinysG3`5spoy2Q2(B9w`^7PKC$%^oVF=V|6fa@N=Z{$Qqq9e%GJ*X~6F1#E?ClN*(Id^SfgluP#~W<;&Ij@!BMUCfJUM0#j!gI^K3!(^Q}N}$ z&bB;0=I(degN-S=-`<2`W@$YPa`Q?`u(0BL`j%&Ec>IS?{qxw^z#0WetSrN)g9+6C z$W$j*N(m@Nu$*JPFszWvzb(6tg=g?+m9&4~I$kHjOBDEF#z_@yl97L3*F;%VYyqe_ zn=ndngulP5XCB@bSeXs^%7tkj79Tj+j9mY++gPSn8ceu0jjq6g*1r?aR6;um*zQ3U zp*=+YO`lcYooN9WpJ+H{2k5gq38}#P8=)i4N_?*!572B33!yqW0DsnvYKAV-Rfhy5 zuft>sbUD7CnM2$H-#~aExqrZ8!j<-Q6tGLfF*zV(E$i<^F=iXjK|R;Pkr6YUr4bOp zCZlAVF#Nt*@1J*CLJ=pw`?H<@D=^IMtPK7~qgc^8lf(T%PE*=*dDvLTIdn>KTC5Iu znONz%(MqvmoCzFk^=`RMXzHWj#LJV)!)Q*R?y~7Q`bQbK?k#R7!*qq|y;yipQ#DP< z&S9nyrWkv7J4j01F|Y_{Im^}nIi&^AgtaN*D@G39ugDUaKY>GP%BEwlkErCM+P0EI zuBQD+-li%wv^tnl89bkW6u68tp|;0RsIt;eBA^LAT!$UlH_Qa#8CkFj`#ddRm4}!m z5d!qSTS%{?eO?ybmco9^D}{uY{SiJ~lHP}_qN_acBa10;%!cfnn?rN^j-A+nnFymd zvlwC;Hq?v~YLDx4$$csIRUI7ib_aP;=Z@MITMEBCv!wlHa40eT$eZY_3UGr->h?I4 z^l;^F}jr*cOhU z<%F)6_Zm*Y=?W(r)b?ei(1n9Zs0KB!oy{Vb+qrW(&Jm=x-u;kcGXfsaYvpp2NQWc6G7sNCAEalQ6%lKk`!8 z27}AfplZlpW!jw2yNu@IaCJSU8v%TPQ6%yyD>a-7Zu^kafhjzqmL&3Zx`9qW6~}`( zba#dez|1leE>W8!n z2Ktd=f!P$0E88j5eS{NRUm?xzE+kM}nuLTxURkHQ?~40MWT_yV=P?n6bK-U*a3?n_ zP$m8mY^?HUw^Ve^;(1@O06WXUxCJ~5VQ2l4DCrqgfDWI?_1JaI?8Wyg{?*Ww0%Fb; zV6l5kWP`?0{5zrv4Yae>F8ykKDR>Pks(SIs7c3y|s!O;G)x^Iq ze52y7bl&$*dAEoTuc6%Fi51_PzmLMTw_h!VjLc$H;*Fm$Y9oW#?r0#|EntXD597xsCzKGF(pA3q(#%2GKA9nw^6<^XVXNQ~+_Cf#cO=*#UEh4%E2^r8gwVVy&T* zka14(+B&b+@m%@OguhJw=66V%v;ATIbF3!~;Q286+kQ*VI0Pt0(@qiu#mdwYbCawt zC(88RmJE370tfpcP2#jE#@D7j@vC!TXVDLfn8+$J$)j!{MC{7V*s;vWrzYxrSb+iq z=HXyx>h2{i$%&ddM+1@gl2};SCQD{dKhfKV^BmGE1G_1hfRx}`jN`2@AOK327Tfth z;++j?1YzWAN=UcYeD(q#Q>@>ZSKW1V#X-c%Y&4&&eHhZlyL$?g-rt0g!)bC21{i#4 z+B&ou=BFUsD51Vmrx5VQlrgLt?92P@vXFm`3meT+Pr_J7Ku)YhO<{ZJK?XX{ZG7(> z%m%OPv9NzJ6C3s6x!9pa*lIbe(BJNH8fqUwg1D8~xy_9R8aJnvYXFBltR)KGuDy_7 zn;HvcltW^tCW_pzaySu)j)IvKpvv67nLnGCBaiCd^k@pmj(OQtj8?rw15wa7rkjR* z)cI9oY5w??UNF^%xp2ms%9;hCA8|P~l=W`9GLQvmpXg}=DIDf6CnXGD_9#F>I<|J% zo96`g>Ly_nfM(eUM$YXVuvV&LHy;@&8vWHGqD8Z#p6P5sz5W!uBb3N#Y)@}yMD+~m zv8C;TqhP9hYwRD>#E!JU6A3{tWppGk4oLaViX=xsX{k9x+N#;uzv;mSuSSD#Ngm}NQu{|rtqL~Y9ycdkhbz1?w0SpWP=j-;MGZcCL6c9Am&J7p)o*c{t%w&JC+ zy|Ibq|7eDKKlj5}c7j`Dds6ebcMU3%nt(Bz#fk`~`mA7Sl0aTbe!%}_MjHJ$cik#| z>(j4L4huuk#|wG%@b%K%+eykl4#7;{zu7ec8U8o%N7)*SgS zYk2Q$HASWGWTuZpaK-^+Jqz0B^p@DojJ@GPWMBTAUYhw%243a3=GH1hjmgliDy_ zg!q;E46JZ2gZV`|>~S0r3`8`&X@ud69!A6tx6bl

TNRqpoLQO@u+9TpX+X-@7f=KlJMo6w*TMqmthaVh+7fJ zolObQe1oH~ecasAzXx#wR7qz9sQQ^iiP)w4(xsVz9Uh5i1aPjdAoV{IKADLXN3x&l z$s&R5Ih99te`}Dl3y2Bl0e*cO!v!WOqk)R9Hj&KwB~Gxd1rr3|+2;uCpTI9|Xv0v1 zlCFu72;8{OA^c*elA4dCX23_DR}#QEI|3K6W7;`|FVQeR4Iu_O_}-8Ze7oa>su?j^ z?#qK1WJbr$gRgE}TFf`&4m2jw07TP657xcSjmq3!jyjNLmUW=io&g-zv8s6iGa)tK z(=O9LmMsZn>4ESUDn~KpR|Yr-3e@95{DW>2H4SNqRR)+IZL|FaEQkTZ7dqcoxW^{H z*K-kMP=x;(kq7^pXzh``Ct_#Zs~yY*Ss~IQXS2c`AhVa1oVm6#0Hx1GAP3qT*H4gFhXE*vZNr=H5R)!lje||hY+FAoh9;s zt8?E*?AAGyFVC>3kI`a@`>zW#^6_8F$Hv9#dGxTUpD2Zi`OlV;6di&RwYvcec{D;` zJ*Vn`{DWYLvDi7>E00zdMMR9lH696n+9VrsevsSkS-%J46xcz|>CH zn95n9(7Kn!Ks+24!RXL*_~B9rq0p8_OkY#Wq~XrM)PV9Q%ktmJpiKEzb|^!yES=!7 z9d0aOc5qz!*3(G=9HM*uhu+4e{qM=3UwH;bbuFJAclmNFlWHj~0k?j(kD7j>U_G#% z6X7diqR{wyfPgWZa_gh~knLM*vtr2X9Kx?TTO~I8yvS7of;6hLop68{h5Sz=f*8Q8 zt8rmIGa8uZgXs5*$l`5Uvy|O|x$wQ5l8X z-pQmerDO0#BNe8qf~qfnz@a0R3zC186%0}svj*U>^)ipZ zK}B41Zn2d!|KJ^JUVSHCX1P1Ng8&38DmC+h2SX@tD}!vvnj)V1<}kr$G*&EWzglS& z)-ABWo?Ghqqwi3|8rA)TZj3UtQOE+@Jdt}b^Ojes2yiHzRuP1*r;VK4$PrcP0Y`?` z>Fz$rP+uj0$&f~LD8LMhe2J^ztKN*)yNL&nU}|rqlZ_Ds2QpX@_1DMt2L0*LC|pT_ zUV6A%%;lZ)`~q3g@V+E1CudGlr)GkFwg?g~Jve#9l{P(O)MHr^j0AHnF%-L>FBWP0 z?+Gw>TW{n5kwDr%`ZhJN$ZdLwU#kn=ea~>CK;%m^xYtXlaGehiSv@`a$X`ssBv~R` z`O0bE!g=uU9&Ka3PPh!xfZUG030$AdN4UoqQ6jf#(c$4|Cfma4kjn`D*D|Sge<*wl zUmv}^oy3GGZ-qr#66N`#?G}r<0rQt!u>^A~0P%1Q*j@25;n+|4U=#fjLi=j@-YN&t z_r6wtBA^CwD1phB&eVoGFi}9PtW5mdams;y|l^$Px)J{(`wHKKgUV-m{88Z4MJz3XA6@e!zz zP#e8UzY`NX8)uLs7;9x|=&WNR*cVeoKZQF9JI^q&qGuB5x1XA<4Cj7R==FcCs(}VQ z-XMcd(X$_t-9{t>zu)#Z=eJ1A_?FbPLlM+~n8Gt? z>~jI|I4@O@za3o+#Abvz5o0H3dhB)CS0z0lZVLFp+z81UXAVs&WMWYn| z7R7H5NrkB%fYnb1GC)|Oo zUHj~Qb2qC5%Y9bt8-r^Gr+p-YIR+d4Orm9f)k#+pDNZ@xX{S*!PT_7-F1KKBz*xt! zgIH-ufKa|by49byq#wZnO63B|oIL>$?^l^L47O2izgUia&aZPA;6*WK z>Lqj$;O12|?urHhuK*ErYtcGNb)m23JFmAgR7@CNyRPnZpG^Y={CI>@bMRTkX%ESV znd4_!J$r!&AqxXEs7SS>BKMsH9yb+e?t|%Nq| zHbBqp(vzx{!T!z~AaE$szs3dav;c<>5mMF)`-w`v7SNIDCYKe5;EG=OH-ZA%=M&-ef_!oWO18hBp{3o zq+2(dHTqIH98jhL0^Z&p;P2{jk>(3#&RLTQhHQCyWxkg8l1nlx! zPPN&C7C2z=%>QXvP9_Tz4qgTZ2rDcj`1Y`5!kT}8%Qn;uL5Pj3isbAk?Ht&umevjK zTU&!b%@AO3uPK4p(bn0|EylxHO_qNE_@=+jFXJ2JwkGHI_#FWYe)K3QIc?oVJrVTt zjpbL53tlnT?+YpR00dg0(^AZ`m{SHK`Ybj^C)Nubsu+5r1D+OtNUr z1PS@3*J>gx7=OQ-?ftp9#TV2K5e37?=7OJ`^rD}Rp!5?iPv9oVlnd>iplIB0+f{K+ zh9w`weoF4A?5jj4Hqe50x-Ac%5So9OXy)^~G$kOIkK*LuEng9+NIP4Rda?kMza~fW zE~#@7^Z}y__2vMT5^~PAH1>K=^cMicDvuf83nLPQXQM1KAnEoGh}da7@y7#8an57i zvv-<(zC#|ipzIho`{$7XdtSH87EX=lukkfAGYq~OsiT+HUs`0KuBwuAGsj8pfuo<- z+-e(Lkv0r-37zg4>Qg$9M(yoR_Ly zRD5-rirDPDopB=Q{VwwFg#0`Wt?;YfABya>SdEPG*vmB z6+jRnDIi1hpB7!Hfy05{I(nz{T5D5l@yCrz-=!?% zg=0b;{@|+gg(fA5ECgOs-BE0)ZjO`_1zw za6;FEmt~1Uz8Mt(8xJT{M4jBVe}R~5pHYWEzMp>>v)WM!DZc9sa8caF-PXaVe?STD zojk-oDKs@uXqh#KNeR(*+`&4EJ47RLE3*G)Rh!2*8^AICVfJsA&TiDjMWDsp?n?ww z|5SzEXE(qNa#JmFzS^0+Y!Yz3L$;ael>gLlQ5~fIekq(CjtN2wmv4k@$ht6>D%duk z^U>vs5L@4RDl)xEA)FK*W?$DGL(o(~q}rxcfV~4`TX`WoVf$9=C1ct0jl`=LB7@0b z%zcp{qbrI-jWO(=3{PS&3dktY=2JQ);K{b@dnMM8ey|WeJ~ERDNbFjV27R9Jv`nJy_oi*8EC*X?-$?vUR6ZJe~5jh_dJ`=diZ20?eO>^(W9) zM;YyTBB_wia&%h0*!5%+sCh~;+IcpUz}Sy8O~k%n?fOKr#e)taQmc`iI`n-zqOiNB zV2^IZB0Jnccn)QlE6MTNY1#wqCqm+=kP_@}y-uBQqPr1yLgK8D8f@>5fx{Hof=p1s zX4#A}n90fkH5}_V5+TS8-SAC^a2|HI%7JAZYu2oS1c4-&aeJn-D)24a_IX@aMAkNc zX^dH#U-^Z`3m#|rswPCMWzts;KFV;pBwE40BVvD{B|H-oRDruC)MRA{=xQKgj}g7q zCl~1nxoS;FYbz-Wlf!DUjp+)<#xxBsC`d42HI!Fl55tqB9cmDj<#UQ6q-X%0*{THP zo{#&bYak?}6q?jPAI4P<%qETDRNGf%BHHZN12FGYg3881fmI7rHDisZ%x6`K^h6#o z4TH1P$+%e+Ger1(sxXHUC@`#|X@l6icWq*+5~Z;)uS&M@3#DklJmqRKX2m0{^rzD478T*5 zgHD!eZWFD+H(uk5quY!RGTBs_Jh$$9vfBf=FUCiid=;QKiOGoAR~yvFagDiNzL%Jn zC6PEv%O_b%2l4z^lP5E$C97*tK(`bQlNLLYB5RMeZi$XK)+r_m-wjOGKyEgrjQM&i{(KiLv}Fxqv`Ic2Pt9Y#);#@X1jf zOZ!|Upbjcy5=4Z_u!`_`=R&0bPj<$zkak2I}Sa;~`$~ zdbwIKYG5@hvg-A0X`=#POBs2X@;Vj&apNDXpz~M7cc$gw>$S>rih{j{{%=$!sr=vb zd6j@>$jqATeFU%h@`>#^)cRo+e@^so@?{i2E&_7<_9rieF7*8;DuhD|sOL_i!oIoEEu7}_Z|hBl;*4LzKK-yutqVdPs3q3&k7s`|_pVb$L4^_&V|@p@ zK?LovYpKMW0654p^N2qzoK%%r zT6hC<5%KH3x;z_jFRL=rY7Z%6pS=q9B9iDmU`~hf-7MTwD8#R#*SeH3gPM{&*pCuH z2P|TlpDW;&-=!r4(>gd(a9mAW1=w?~pw#}cqILVFg*K>C@KV8|=2WE*`VX|PhDp&W zill%E(VLKgdW-Gtjl9;^X3i=XojX0kk7z7dp?mL;Ou7WuM>(?A2;p-itv5?8wfAso{;^vB~*kFYk3cNliTbT?g z{8v$vah8_qt{)*cgZ|*6;_luaU(%t6Z_3vQjRTuKbMT@=Zb3=SYwlg2GelcSO?8fp z?snr0?6&?KYRA}@q=ESj7mNA)#Vzg8&Hw8*&X2p5l>axoJO8;M^ipmS_-h|5;co&U zpg9lV9AN5WP*wo14SR+JDG6}_aceuGKU{=`?VESTP7j2c_Ex1{-N!s{!UlqF%-Y4} ztuEw)$r*;fSmUF5KSY4_B%kIYsK25=zO3KTQ|~LyZ<5!vHv*}?&(F{Ir;pRGkI!qG z*I`6QzQHJGv87IuQyrxH+VGcUVIQkP-j;a+&EvS5|Nk8bx!#C_ru)Bn*TkPAT^uLl zvUy0<_J51Rk_mzrUv>~%5aD;>QO!*6xU0gA{~b9e%w5DO$sZe7f0qAmfyB?N$Log1 z;i>eUHzT;%3wv}JdTrl%U$_6b;Pi9D3nOw)R{?GpNXsp^@_UaR--Jx3HsmpjYdp0Uay?i&!4^&+<21gA8J<%T{#Ui!n`)}-N_Y-YWJ^l#a zd0$Jcz*9`uUgeihXtS`y$0k7u&6-7YkW@u*fcr17HX&;X737BMRFsWH)+-*XcL183 z3zeVx^sMGmEU62yqe)GD-+WQE{wJ(EA{9}{oK050@~5?=ZVgoT0^TN?=()>aA7e{Q&OXDlXm{pvWhFp85B>o#M=6?qFSe^-XL^?@M zo}yJ`9V#K6W6gp1Vt9G;XkON*Po z$SM+By=on&Qdyi7fspX=A8r*p78t_(`;skuo z3btRQXR=ez7a1~5xa^bo+eQBkEFqCZjJt4UtOoINiFA^*As)58|Axf(Z^<-+1lVyp z21frxEyo1VDtUYAo)4o~vXsfL*<==I6aTR?=dT6CwSUFl37wLOW_h4QKt}N&DkE$5 zN#$@=_8x`tidG7az2xWiNKIvlHPlR*D5~sD@<#d3;7Ua(3{#~j_b4;|JwDE%1nS+u z<LD9{8RvZS1hx)}V=Cyo{#&g6CT!ZH{si*&mlPYVf0MN0j&r-r~qGdK`Gf4Ll#c_x6DMrZ^c=N)O?dgdcV?1Zto71bNHJGd;ws@yk8hpW4B<`jB!h? z)i4;#1j04n=et3sl=8*TSW~kcCG37 z)-g;u5&J`i_3|I0Pdwa<@m7YyjwmkD<1fq6k%y(Hl+*PuPjp~dd_B!Fiy=(TW)qy@ zfrZ%*^PY$Pjv6f>xI&ZFXt^&2MSyH0;D*TOe@H_7tB$-SkT-w>q-azxN$1!WZdezY z<(_#y%lC#E+QN$ZV?q0tI@RHZ!0$50m8LZ{Q)F#ooKw<*tXqA_{5JMNo zA$6L^5cCOUE(jt=NA7<_MM@Y4@phrgj)dypdJ9LHouYL1B#GBe*XCr#r(-b)$Ti3#vt>ma~UQk zhkrtsKqLP`Z=U0fL(r%0U-jT;jB=vXsY^rhV*TP)+`k75e^I*U=AZI5zAF7^A=v03 zy*gX=ZQ1{in%tg3@3L9Spds=vtS`*D@jPe!i)??d-z=hLeuo&1Z5RJe?TMMr*L~Ih z80-tw>4L<0cOc!%;gPKW7_lQRdxMpCQ1HJRgc9se zg7VKsqKP$quu;%YD-LwyZ`L|uWp%smWByaYzbk_w5Fvtw-4`(iHiWFVAA`nevN zi;tW9wEYi(Tk0hKJuc`W?JSp#e3rWa6K>COwF!VMD+HJkUg}Bmb)S1aiJmI{CG{y0 zlw!=(^dQ~KHIeIWZnJ$&}Fqy5E^nRhtkl4T36BsyQ+59(v(cR-r)up zknX=ie*W*yCFIBK!Ue@927*+86){Qx5Bo=_f#2-U_;m|QO9$KkcI0niKcSSvZp3{= zW%(11)VLKog57~_R@PUg>CR^@*hR{51x zvu5-c`TtG4e<|6C*xjvZ7tUA#of~DEh%ols|KXg!jEJXPdD|Lf0wQQ-3$GL zx&Pli;0pxw@wo&9G$j7@l-oaFi0lY3)p>U7K#lc9o}#r zf^?A-I&$u|fkaIfBw?tZJ<1#vWtb6nE`vZ7)l_iiNqZ;lcQmK2>?EWe`1;oYC%8}j z4Fg743Gv5gjdpqP-GI6hOr}?Kfe;bTjft{tWUglVxu#5gy`yED{06fA0ySFNTcv5w`#fG({Fg`oxhlx zcaMI-7GxFFJ^@ouGbM&`$JAg(1(q6lomu$<3Wlvd%$ z#?hUc6~szl_xc^{{e5s=9iQSyNM>e?(xs{>WvHtx;D91B;L^wQc*!jemBJ~wo6as> zT#(+7VsH-hYgsJkByyUU?Zi0#l_Tc6hzI@cb9~+jB)6dcDY6OJ0&?16A?cf}zSniY z*KUPyoK9jQC8BIKaG*AfG3BuVh40x!A!NlO>_0;>dPFv$ETbfD zNKUUUhbAJ_df<6)(5QWCVoPGSs$<`U@e_E4#EKW-Ao<&txorpwU!Ne-FnTJmCF5!Z z{19~14}tu8HZOvqy#G9O6(q|xcM4#%N##b+ujD#y2N%l>nl+VsV?PH9^oa*w50x<&=2cKHPgEhLrfLC&6^s)4$00S%7sx_MUkqmQ3CQcDxm|0Mk=exb>Y9Rsscc9xZcBv(twEGPq=}z5D8Apu z5AL2;ua%%L5aA;GD*a9}32=d*0BU1S+Pu|el$wB65=`&;k>u-uS*_sy>}|gA-96A@ z8X4p&SyE4sGTcmw?Nw_|YFNJAt!h4QR4J!AO}tHTWV~gdMS2C2(aBA#p8=~-Cic&J zLjz69=$?DOtg6PJ!^^4oUkl1O11l?}zpAt-P+@bx6`A+d0&+ZB)}{(gK_zP1?4(1- z@0~38hq4spz|ptGYQ;O_oPkjiW&7@rtoH4>z=zy5_*>uBwlj_7{v63iO6z$9O=ZzM zM|-$`ma{rnm}YFQ0;>V*Bqu^GBZl{S?k$!It^Kr~c(-sbZJ5rRq2S*seRk#hcqdJ2QkY7N;}oq0Z%a0fwK@-NgyrRb zR|q$DwyMl-XDw0@HZ970FSG~m!fzi?#69iD(j|{%48IBtJ9)XW&Gg-cww7;>I_E68 zQL_fP(y-Sx6zll|_n0AX`uWAfF-RbmlMcvk2S1Pqz?nJ52ro?f z69K}iTA49Ej2g$-KwL(%w?nBvf~bM&LAsaMa}tDud;I7^(LqAZdt`hb>;p#%^DyW# zxmxPun@$Ne2I`|j4PB9H3Q*6x96e%QVq;lTI}q0!z2X~Gob@XO!lZjKxp{?ZTl<+j zAG9p~2*U(|iyw21(=%-BizG1K<0Lluj#MisE2xTaC)ULPK;lY|7$*7mkn zOWTWA9ZbL=-S%x^l1fp28S?9*BJw6*If(@BldvrK>4-2Gg)e3;s(IiGWEts|d}D z>%mcGK22K?QrhVTfmSHt)}$OU=u@maG7z{6&E5}XduCarJ zy0fkBXG!D$Z*7X?>PYKy{1dma2b_O@2JY(uWJcp!7NS^>FDgyO3}=+8M8x^yz61z)??e zQYZ%HEK;2|AoUr^im-?z_R=}VAMX7J2oGrAu=weP41nC2deVS+R;eUIn@ON%q%W(0 z1gGrdr<_ZEX$3ZSr+ZFymcxlAbAtrdK+fE5%p{;s*CmGM_1KdE9 zT@LOrB9xf&c6)n+G=s`dGuN8U@gJVz?^<-g8S1<(zWdOk*Rp%qB3 zAKAuyEm^j7qOa-Ibh3VnN37qF#f7UUX@^-ELL$_lC7xjOvN&NN0MY9fO8p!At|si%yLrUu6li9s zMhSG3F-<1^6ioHc9hcIC_*RyXWNWhT-rDat&9T~F39e6lEZ_TQaH)?xdni72*eW+^ z;qh{!+Y%tBO>S#cFyakLl$^q-tm~#JFYIT}^&g3?KkI!;y|)WRr@KVx)J4D8 z9@{gSCFTu>S*jPebJ@zQ!V9qf z{(wUMnHyKQ4XCO5$Spj8aSO{Ko`I=Iro;n(yYnCUNTt=ce70IM(Q>VWk1L4uycr{5 zU3p)|QY)^AS0P{UmqO(#TQ!k--n{@J_>s%vmfZ>9epF?^^heWYW*e?0FjQ0fH`(cbtdNwrmW55k+ z7t)<0czyrK8_te}&I}zP$?F!;i~XDc8;SDrRM{a1aRLEWxFQpPka`3PePHVaFNZ2t zNWeP?55;d|yaXB{Yx%*YSBY<{q%Rh%91BMHz{X(e$KA|_BWpK0pRngc1PH%OwW*&} z9KIGMu7}gZ!$?GnxjD!|Bn06s;XPCgwKkU(M)V%`wr|Y^`Iu0F7MeQk;wRs5zLSNhmhX) z6^%qWCLLOivrFCmiUNTn^DW7)2u~a95g5kyN+tus{^7^1&)tH<19pJBihBb~=@?3H z;$by%RS$M4lc;V2)@YuS6*4<@Z+3%YWeZloU1Fx2JdbJiTNs9_)-JqH63N@%uVSQ- zKh2)Dt9mz(W68>d6YuIjFJ*XBP!gSTyPBR18TK0;(jZZb8f^q#ujjd}5~0AlS@i01 zBz)dSNYeQ|U_dF;7*)`%0)!$a27N*(gEeXVx20FxZXjpdD93D(UmC1I7BC?aSXBbT z-1NLUza9bx{_JhKIrHJV^TPc3Yt;>f_UF(}PN|&_h^&bK=NbgrD4K51*iwEYKMv=9 z88YKK4PK4?Wq?y*Tq7rKgg7p+cqyNVS*Oc64~JA>?&|_XZf~3#q5w8USUBAYHpCodEK%$39NZQ-gpJ+ z&_EiS4Jk8m#Y59pX&^h6kjX4IM<+a0{k@TYy!#-ERCL|Zs(6Em+}xf(^*2FtCt_h3 zuOAKvw+A4Ja(>Cef?S)41e0+_;Qn`Tm=kE{>?f$ogGNWuQ>rI|vVYQwpNZA}v5IQLNT zCo~{Wrdt|!Vi1>7df8e>C!ED|h8vj(sp!5};*@-6qsaEp1IG0!DRau7@%z_R4@Q+) ziJMNI`Itz6aPL;6SZ5d=H*U!}B3cxHpl?KbzTjdH2Ab3Gbed56ZyQz2VQ=G{ezL_K zEq_;4dj(khcICSth`?h&Y2qJtf|?Gl5C8xXGZOTMa^H&TNAGE)jO-E zt#dwlwO~YnE8;bg#T3L$I13Zq4{|&O2{-1U56j)|GnzAfR!(OU+|7dl!x!(8?fj6B-yXKQZ{sB{5^u2y*wf zUZ8cb-pX7S2su!Ia{nTJj+F&Y)9qizsmIws3*YC*6D{L5g~$+L@O4lldjL$+*Mhpv z6FY}L9$xz`hT%uWp3Y$b1_rdjh>|b@aW>#WGa`={KIxf6ey7PCnjUwH{avK%Y*z+(DGd< z>Nm|QmE*XvVE$V8;hZwe;tB{lN3c@6cI)_MBD)rdt*Ru_hwH26Fg#XNe`=Z)H7zN@ zkpU-OW8v3;{@wP1VKtBgz{Fj)O*`!4k8SmbD4{^!EksYCA=xedugL5}94>Xad-q+y z3Jmq>^q_Jir>;%kUEz<$3sx(`$<{>WA$s1i(tFUVm<9~~&OPpPj&Rol^D?Qa)C}EQ zHK|pSR@W*{`8IXo^)ZSAiu2C-OOF`=8ViLS-8>RcA1nG56N-SX(HH}Rx=o_XtUvhUNqbywq20dvB@2UaQru_viuC?UZ2Dd!< zcMS{0Y8KCFv`tcV6`?KmFlnwKsi?D=Pl@C7-iKD(m7d`M(q@1sSL{;xsPni*HuQUX z%N`G~mQxuyb9Xo{nq8z*OUGI=vKly@`6v7J2m}*GijoRg(BSq{;*b<@CT>04)8K0@ qd9D-M1K-`Gu@gUB`^J$}GroUuEua7Z0000000000000000001fM(dIQ diff --git a/images/build/start-building/supported-networks/sei.webp b/images/build/start-building/supported-networks/sei.webp deleted file mode 100644 index 3486da4427a134ff00b64930c47ac854a61064dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20830 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

(8mbBv5c9P6|7cca)K)VY&aVt)pH-PH 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 JtG`7+{s;T=cvb)a diff --git a/images/build/start-building/supported-networks/seievm.webp b/images/build/start-building/supported-networks/seievm.webp deleted file mode 100644 index 3486da4427a134ff00b64930c47ac854a61064dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20830 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
(8mbBv5c9P6|7cca)K)VY&aVt)pH-PH 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 JtG`7+{s;T=cvb)a diff --git a/images/build/start-building/supported-networks/sepolia.webp b/images/build/start-building/supported-networks/sepolia.webp deleted file mode 100644 index 0359c519dfa70210638db6a820b7d687739e2068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16102 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 POEfPkL>3AF{B8R`I-}ud diff --git a/images/build/start-building/supported-networks/snaxchain.webp b/images/build/start-building/supported-networks/snaxchain.webp deleted file mode 100644 index 10998a89892548fe29bce886aba072a320e57c02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3278 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 QuAf*j&gUfc68NC~UqErjEdT%j diff --git a/images/build/start-building/supported-networks/stargaze.webp b/images/build/start-building/supported-networks/stargaze.webp deleted file mode 100644 index c2693e0de643d46370763d621ea2b31faac2fa61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24220 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 diff --git a/images/build/start-building/supported-networks/terra.webp b/images/build/start-building/supported-networks/terra.webp deleted file mode 100644 index 1669de331bf429f874e50aa428a34b5125849a24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25056 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 diff --git a/images/build/start-building/supported-networks/terra2.webp b/images/build/start-building/supported-networks/terra2.webp deleted file mode 100644 index 2ed01b2b99a5eb67a66982652b3c6732a6d26292..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26906 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 diff --git a/images/build/start-building/supported-networks/xpla.webp b/images/build/start-building/supported-networks/xpla.webp deleted file mode 100644 index 49195eb96525bb99ae04855d519cc052225b6c5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25182 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 TSMo#T;3K?=xzJ-!00000pHaN8 diff --git a/images/learn/fundamentals/architecture/architecture-1.webp b/images/learn/infrastructure/architecture/architecture-1.webp similarity index 100% rename from images/learn/fundamentals/architecture/architecture-1.webp rename to images/learn/infrastructure/architecture/architecture-1.webp diff --git a/images/learn/fundamentals/introduction/introduction-1.webp b/images/learn/introduction/introduction-1.webp similarity index 100% rename from images/learn/fundamentals/introduction/introduction-1.webp rename to images/learn/introduction/introduction-1.webp diff --git a/images/learn/messaging/gateway/gateway-diagram.webp b/images/learn/messaging/gateway/gateway-diagram.webp deleted file mode 100644 index 583d74f8852ad9272c1f133bbe12a597a5580139..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2565314 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 z�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 qe5$cgXaPP-(W|UGA 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

H}n8?&bcXW+BhxZm;B1rp0e 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�XKREn=c}`>od?x6>d}Fy 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

hbxHv&&*3-4TF`6;Iwss_Cv2$yWd5=TvmN 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%0A}Zt<4-8kGZ#P9(zJ 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 z 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

CadWsD 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

i$PSf@lM+W2E6B?E!u|SGz4F-{vfju^jDe~ z5_b1i+O?GAgg`CV`zR0Q@F`SMLmM-2`0#$(#eE{3?)HwJ)S0}J za!M<~p5q)>!+s{iwa}o2`7h4z#f98y&7Ms3%H#rzot&mVz52-|Dv$MqvE3R6vpB$# zi?*Q=Q9O%%6LR%X$6KHe(dXXdf(uKAr|{nJFEV;^nYsqrWDf5OP(vL%{e_B@*_TlM zp|nODq)}(ehy#phkMn|-ebaHpz&5wf*&-Up?GoOKRgG_0j zl=dLfp)#c7`%fcJ4pLsB2>b&yxt_QHaLTyS@_VJpE~Yo&sxiXC z249IxR!tWPH5TD*o}stj52ZbB4O2%oDQH;vhlINtw#EM}mrc59LQEMZ47F{-Vwg{( z7YWCsIET|-7SHev3_WAWMSdud6MtMdO3jw?MZvX}`$Ft-O32V+q%Pu!KXW|#|ETtq z-kdNukM^dSkU`nhAkety~Wg zHI{`GgV!s+Ycv3|0aQgXl0A$#k^G3wtgD^Q&jlBb!gXnr4?5Lil-#t|t@UL8p$Y36 zyp?fue4XSkMoM0Xa;V(9QT${Rv(5_D+3prii(m9SvFydD1`cg?9vML-{}5Kyly5z2 zSv!iA0_Zg}(i#C9S$8oVv}v8O@BOCmD{AtJL=`1)^o^DRm*r@u9m-t#@9BT3UnLX0 z5Aac8W0E*X$Bz9r+&-pB@j~cWHE5$S=dyWRQ=VkM_~F*K)i>XTqu^OFyZC|OZ3p_X z(Oxi0bwf92^g)W#WOC-({s&pWpVs>9b`Z%a0Yl3lRvvUoGirOp4(((%81uUk#ed=s z4qlSh;#;Xu&zvXv=l!v=q2B^$O3@7TaF^?gg{J{gIW(C`(;=RRf`3~enzXzf4^Mkm za*?vs(%QO#t>v%Uga(lQeZq=bY0mI54reAejW|(P6kn0+r-UVg6*d1IB!Eoff`)|6 zsf=|?_A=?o!guO*O469%AE6wrcJd;Wv(r^kIq)g9Rr^JZgB$id-m*tK?JbqKN~+C! zmv9XjifHCc-rF~K>(H#X8B}*Jb5_c{Z^!~D7>;+^7DWXhM`c#SgL^Ym-||FqG~5mj?n^_KOY+4hGh#9QXCHA(7Oeo zv3+jHGpl0~OTfHnZ;9H%Nj9|Yv z5@f#ZAo_8cRP{-c;C!+&wo@}hSv*Z6K!QHGjzB6Gy%=Ga&R__@R30>+O5JX;h*`jX zP-M}5l6$9;K}DCHR(-ga9_bLyZ!h4+$IF!@?Y>eN!{Nm#bfSpWme{V^d9*6o&P?^f z(u4|Ekhke=bvgZrBz;DuD396|PdDq-Jg>H*V|#0UnBe!gOv!Go=-Q@ZL zVo6iu&zg71ObsC>%vrV-NmP98F;|~E-%8wPE?GyBT6)mAuFW8xpHeeY=2|KD!DD>m z5dV>Kv+kTNLU$*r`ny>R`mA&{Gf7T2y|=vWh8_O4-?da^FGqAUO1{TA{FgruH;jRM?H zHlW;Pk#>g{Mxfp{#h9p48%A+eB6Ws4MDe2sqXOnoi6~xigs#5sm_a}As?2Vq%%JIYQNN$FWdsT9O!{jVJ0=PWNi z`Kk>9l84(>Wd%OK0m9ndN>gbh5n7>{TF^^#j_sYA;mRs5!dw7TEM$$NUZT}Oa}m{L zeoOK>hf7)$N0pl^p!&_TCS8Np4_#|wfzMJyh73V;HZ74Z8$o(|>Yd65#v~;>_V~HX ze~nQV(FJzu;-5!Gb|lv2gxz=-oYYscpez-zM@fMbjuvjr4`rE*klh zNq+LuQ3LGbpDmP1ZvltMZ;S}lrbca*2x&L#vA6gd474c4)-A?GnD|#9a^+_MA6?Q7 z^C{J3TNEiW@6x~)Ol4U!qYDBMho8;EAGW#De6>S0l99`w?tKZsjB9>PY%UZ4ko`(? zgK1QJWq@ji3^3CqmK8`YSboNl=~Ncngj9sHY}KA>L>+)%iD%g3kc|;@i$aJ~i3_`f zA@kZ|2=qgV_mwrZdxDoRyT;NV1_JUk9l%{!U$Z!A>ccw5mUx|}Yrvd9m{45JA+P(9 zLaFO@p&fl0v34&K;|3j6{kJ^Ii+Teq;=AiVH&?nqZS_K9~p0J%j zLN7|2gIFyjcAfHNO}+>Kp_M;xww4B=0!TMKgQV(w@`I|>K3h(Frb35~J= zQ>h9#--$d2F7$=sC{p(~!$6I&`HNA_Zz0pyN2Cxpo@qCC5o<6_pM#SUp>w8y^Wn3udF1g^1G%)FhC86n5~JV=GlY zY*=s`jw`edqPcXy8(s^L!gi?ye#_%wE2b$fF}QqCIHOpb;hF*Wo zP~3W)k&d$$Mk#_CYr;Y(ew9k4V%c){bHflBzv`E;N{ewD)KG7{I{g7Z(}qT(zZQ{D zm@{TFyPgn@Pn-*@R(gqr)l4|vJ%v)9zaq`YQClkA^k&&|S_2z(AR_58U@(Cyg3=jf z!Zti%E6+$*p_#ZZUQlJj<_mPAytG=XB{<$F8D-klpy$Qr9S%J~*n|6cxYp=lX8ZHtcVpkVz8IDT9{GrHSw7~zGHjn=)n{bhOnc%oGgq-h zeOkJDpm2btmLI_oGD+lN7=~K)Jhf|UdW8K@)-cB?Eu{xJBH-YRwoiRqhf}WlC1=rM z3Et{)?u2GEIdkpznevz5e(dmcDT604+aNrmCzV^!C@02w$5F{$&3 zxSM#VrZBo|M-i7U>Ckhsi%Lz}SNzwSLl0tGGsn2>cyK2~MDKrCDv{%ptEi@uM6!ionpz^b?MLPM>=c!A+fF!YXXb5o{p*Uk+Ulr!M$kK> zhAhs~@-PmHTAN1IYV)io?yvu;q}7Jc6v75OS2>9wtv-;bm8$^B@PHjWWz%$Xtr9aA z6O`Ya*x;jh(=ZY;|9xZ({IJ$MR<{?Pm5Yf3Iv5k6y0^knDACZrjLIRfhJ!sWLU(-y zzVHb;0XcQVr2xK+_PFkV>KZRBV4Bco3=ZB@+!Hc+3>`o!d4?&yGS1uofTrBG|OpHXO zXrou#_N{a3TdOzD%tlC?qOmC7Yg1x!OPS_W&$~foP6uU(Sm~exLDmS1_Z&{^j5BT0 zykqW+r()q6YR+grCAld!m-UxF*bBSW9r^r{fAeV8X3ZrgJbV@2KCWVZ5JlsVKF_H9 zA!gjzx-?~gmi8e^{+26YjO#YGD{pG9ubJI7mrB$hhoEGnX(N&JE4dC#Mj6A#;u9nl z_xnkIz5wJC3$d0$EOde8eWVhbFxC#50RWVhe zfh0jO>!P>Gg#l&q&)}8}t%bwj3Dw1!5&DiI@A{!M!w!AMF7o(tE$=wenv@CLe4H>0!9#C6kAfX&fHt=P}_XFoqh7#M8Rg#iD>klD-T zNI9#OG8OKZaKhMt3blTG*vrZiVw9`YyVjo(her{n%1y&Vhh)$og&r|>Y&{&iLJKwG z@Oa7|1&}j7LDff>=KMx0se&fSa4TzAal_grb<=WO?LMuk@g7NT#n}El9WezS=Q9#H zmv1Ox$GN25#1rF{8lYK-Gg;h0$er0@CpI*}o;eFvF~!2VTf!VlK%_|j6=h%N>EmPl zxJXwR$x3kN74ua3qB3YHx?GWz1j0~{z||cX>UdaA-QNCM2DuC6=Z^M)CG->&$wXT* ztdt9j478fh%PW!TXWf_w8NPewyt{EzX;&F?b&hpZ1!bcaXe9MOfi)T*Mv8Z`qtYWP z>}XlHXfSfW$ei4W(c&ugYcnambGV4HA&p|-y?|*$=cQxuQX)qnm=r~w)qy`8r~qS2 zTjl6K7R6fnQTi~LjI}k80_n3Yu&Tn0FhBD3NU3pa<50f60C1dTG%!nxq{hK>D zw)9(bpri=A=t$U8zJ%sQ$%-?4KO00xL7Ipbkz1K6RWcefe?R>+ekx-V1Zll~7F|#1 z_G(j z)$|c2>AtLtJs6FMk5ahvKdukk z0dg^Hf*6pPYb!k&2IbZW(&Gz;2g!$?WY=bJ#1t@t#4DXR0xlAsOqf1Lhk9uQeld-G@@P)sdcBphH!Dpp!P90@A7Hb{o{6e00ofCi z`|3t664+2t5=oZlOh4xAYR?~8(cl5T{&Qh+`74y;qnctYtfiQYpJxIDHeaX z@nZez+}_x4JzgCK#x|d3t4JSYOL;q%&i5LuS@p9$?ARY=1PGA* zeN8IF7O_4hj!S3h!a^P?{Sk7VTtmgP#?vv`b$jj-h(=tE`ckvt8K5?=kIK$Y>3J?mJeqcVUjeBNx z|M^23f<2Wn6)uiSm-Ss6w$57pa3EdBg+|AwQ%e@$oAzpM!Kcj+7ZEU5`MhWL_d;cw zg_}+Y5KLxV0ZJ+zHLIM1qOd^_ArDFydu~2l-$yGpK|ZSCv#Lw&o99X_<76oskAH=l z_;Vg+LAvM~w{{aYU;8;#<1~M5P&WOV`|W%;@nj#S08SA|8ZH$d{&=A?TC0RidXFu3 zI@V11#UQ~d{1I?jaK&m?CcOrdM?(cD3BSmREp7i+bP77u)?h-YjkPgXO9m=kmUo53 zwyh1*Bw5cO@-(2TZZ#r)98&ARMvjBoIw!{$ zUN+6kjnL1hrJ2n-sLP3a2L7vPi&lqZSfDE+-&i3)_(i@eOjF2{86;UClvyZwH_CpS zRA`*+l;2a_86#Uf9f@QPkL3aq!>7qjgGjE2NF@^M@+xoKUdk@Ro5J5hb<=_- zqN;b({UDw*zEMBz6+E%l(Wk2P2k2@k^jW=Z`zf* zzpz?BO~P_1RujX!$>5^|{(D&I-y}2VhD=)`LA=3;iv2IVvICP3OAYj-m^)C%8PBwZ zY!t844OaXf28wW+2x^k%d>?{t^}RKce<|jyRSHrg0lx9xdLHbIIl0MPlAljwwU z*^&09^5kA$HAwdCUA3i*-K5=T?vUnxpcKeMF*Yj0cjwOgJTkEVF;A+itn!ZI2GuN{ z0YaJMo=R}Uw0PQI-}_!2!B@Xxg@+F1&c_`I({<&@d!1l)X$jgFVYwxnu6dz$A$jaR zNmFJpsed#-w~veUYo#xiyRhv#Kz#Qk8uHQ2M2JXg;INu(j~aQzRckMh8@D2j@elp>7s z2AV*9{%PccCRQM#&5yh$(}F-lew*%KT@KCfAzJX-+CMSzlz&B-iDMaO0HJ3TQf314(k_K zEPfz}-3;gaxTodP)1{ITA+8_ro`5UJl`Cj8-VWoDBEeahN_!ZLk@9_qnicPfv29RM z@dP|b2h{e#@3K&XS%MyLMs~;Ic%Z{^;8xn74q3(ONC%(2A{tL4 zukCc8V+1w4tNH!_p-1aKb7#zLY3)MiO7{3$5fiFsZ|(&o7W>c4Ee+)*XPzB3tzeD| z<)P^5!Kar*Y(WBLBEoQGMt0O#b>H;HOz6yQSPed#(9eoSZswF5A$XlsZju74->H=& z<{!+LoQWl^oLaxS*{_G|{QO|DJ*MZU5yRdtgZac%=X76Bn!JO%i_O;NMPJ5*WRG0Q+ zuV$=t@0ffR_OLG1^`)^Z?rNfK9+zPs$=C%W-v_h@s%z`V2TvGPgOm4y3z(q@CP)FZ zQ9nr@@7qKH6+;sWm#dB)>*Z#=fn{_K7^wr)Z_A6+3}so;^ye{!n#%AB>p)9?``vXZ zS5z666Pm$c*?ibfPW^`-*+qb#h8>!|@{$!o5g23FR4U?%w{f%n}y3#+xLi>ZpeZz!Z|r z*{m3S14x^U=tZP)*RR zr*(|F%Ir-)4}&S7C&F?Ej{UwKq&7YLQJa@Xl3{iHABjAB1gBAq&@ANSCb^^KbsaTy z*KN!CH5U~lMcs5!5}(j~5!HV}kR>$AZVRK!fd~vbXBbk9E(!+3TM6iFrwdy0l>*qj=eqFtATp=H?4z}+vNUTkO7usZlhuv9r?_p)js2Qu^u?J5 zPXWxw#1cKS;z*@1Y>gy(Wr19s{O!;mDSewph=?cnpAH)sZqj-|G&omns**3c^{ayt zPHZt||9aDraUiP7@17GzP~7uWjTTI_{pZ;SRTJ0nJpIptOtGBXijK!mu?d>X%LZT{ zD#TqO0uk@Idm6sDN+i#`2=ZnY1=zo1m{X$5*Hu#2Fg=_2Wi-{nA+91aZ36ftn_X{n zY?UAaWTrB{szQW~cO=AltdLQUc-pM|9`8FkQMFb%y4|ikS<;bGb|DId|6{VkR!H1D zJbRQF`#&lw4~jJvD`>9(HqdO2)o>|tb6$z~x>(@uIW_^a3G?BGJBaTp6klpC01W2h}arvEGUG=f)QUPNG^!f z-qXfC$rRsO7MVc)Kds!A>%B`HFyn4-AqFlukx?@}^S64<9F@p3(jXC}?s}YSkul)b zlxc>HJnBCHWJu5^7&x7=iu$2=441LA7EKA6*?psUWkzVMDmVE*^o94`3#@cn1_fCr zTxd}Pl_+K@DpqACGyAGMin`{rB7*-CP|Lq4)%h=HmstzzW@8%?A-xjpzks4*qNh?% z`+Iseh)V)Ggu3)mTy$%O?tk6Y+nWLE0qPD2YP`c^V1TBeF?w^n?KHkF!~J{h`+tz< zpl75fUj&_1avHVQ)-)tgUsQpI`c>`Et5jP*Mg2vf3`t<+)v-}KDV>us`L~n1P;rgL+Lm(`o?RI?RdrLF6 z+AzhoM=s((0u)jvG9@lU4YAARV5Bj`lJ|}u z;Bd!~PwSUQ0t%N**W`6Pc!C(zcD!3@f#Og|EMbAOoVJsf-ica0=34xo+Um5DVi3HR zgnR)t5a-V#WOT!7&1d<~*lTn}BG;T9j3VZL|o6a4oNKi$9%hTGo z%+<%M)N?_zWOE6ecp;bRgqhTe)gQ2KL=~Zb;n#cKw!QxKJX`1;>RJfMcZWO2M~t(& zN#O~rrf%=AXY%fEM>m&PX?RMoTw?KOOGQaURrq#Vn*`WIY6RVPVKZs(6Nc@w8Y?qT zTi;>kaRq+-Vh#cp5u7aADJOc)+u4rHQ#mQ4f+|3s7g@W&v`%7J$t5hu%nT&^zUFG` znVNj?8!UQdSA9)Yc31iQ_ZpGY$^EWwWqLTcP4my)_G_@i#W!I}&#G~EQ9x|h4>zLo_~Dg0aT<;ZZgKR zoHO7dO9j!+xWA_bwaGz-icS$L2I(0_c{3P}c^T8QB#xVxD+Few3A1 z9{ja8bw>zD1n`)Qe^8VG_iqVWrZ32vrRgbINwzxJTvql)wVDsY<2bPu^ku8(E*?ka z1uR2;e2ODwMXT~Izifn^V~r5xmE6ny#d!C0A_mI}4Xj(rz=dv8Vcdlw8JU&aR z$HFVG>d0rQz<<3V9y*ojv<&;{U4`!6GXv~1SU9sGb1YU2-0U{ubNm#e-1MBVxMYQ28zctW$yl7R9I24gE%;{c%#&Y*cM zzRuqfBMMPB1CT)eXj@L-Sr)bi3bTp_Lqp#Kz7LnYtFlBh`+XfvoL)j>*Vto%#JbYf z{q3Y7IL5oZq~>-!F2Skl5ZuLQj?$6n>!Pvk$8pgw=ElUSotr`<|IMMl|4LGeHC1Ri z^S*adExQZ)+SfoE_|{qIz|2J^uX&ol})aLO(m=_nDV=(KE7`34QJnlVjeG5 zWc`EbF&Fj|BWATAx{)-2KN@}~-c<(`Y8G+OqrrVThjT`ktLKW^Wk^TsYcmxS3olh= zHX?gD6TM4*ze+dR)NiKk@azXz^q*xS>V=DhM!8pH$w1-l0G?;qI?gA2Rg`KC+vQv) z>6xt<-CE-iqnaI$HB7L3AlXv3_1IuMPpX@pB+mqG(YOSfpY4jdzb~$Pd|GWJwm(?& z=q=J}=j!9nsIL!-8U32GN;Dok_5^aFo1L&x`K!On0_e@IshwJ;x3p&G<*OY!$3>46 zr*Jn#xLK+qvuuB^8j}Q)@o}1dc2<$0E62h}@!Gz61rr>8qN51fnVMIcH@2~Y&p?)I zw(gAFt*xW$*LlS6p8kULJ+Tm5kqkb-*Qz~{BdP=u7lmFstB<9;jI1fhW-rMHPeU>+ zBuiT2be33&(Z=S48<+(~2M#Y}H-3Q|A8RV8iHOViEvKEd_DGGQFMBp)lZVgD&dmH= zP~3S5*4M#trYw*?8;s(;@=yudeeKAg9dD-=5eI&ZIL?ww*&|?C3#jTj9*Q|4+)%@2 z9mVj^&w|_dQ~VjR_NlA?4OKWilhWFXAx}bmQZx}>$~H8!I~uV`Zb96eIZwLvtHEq~ zbCN8?nHtE5C@+Y2J(s{5q?j@sQek_vL23lx=PoR5uxTMTn_ALz=8vX=rfcKPHp&(M|sD;9;W(1NL_ zK%SL3u~-PK#fb6CSnm@xE$5hWMqN3Z6_fF|>{IOfaHX_nn*Wn^V@*IPcO|J1uzXzL zRYmbmgh^{!+7m(TDg8eDS?Hh;2Mx1>{J{6w&|H9$Ye-bd!Aa2KIfaK@S}@?@v5^xK z>1l4PmS)0!tCKGScDL_$wsYkaClEQCl~rMFrl?NV-v~|0A9?s!Y2EVi3z8U)ON!)2 zKH^~mKrbNQ`6RcGV6rMm=W+C{Y#be{T0*3bPz82S-(o{l!A`r0#84)6Wu375Lwjr{ z<*-Tykx*!LD92A{KMZE}4g5D7+P(cX&-Dj`HAECC`bV|vSfzvo3`yT_&f3THo!aML z=M)UVnZjb3ifpx}KhHgVR_i&UfI?bBtS0pe1k7Oi&?4qZ1y4yaip?f01#w9OU#9RQ_x$0&v;hC^ z+1i=W-n@odw1^NHi4((P#~tOj{~=u|Q?BCxCa`}y^Q8pY3Bq;t^G{GjlgYwboI}|@ z^k)+x|AlX>bBPnzu2(Qig5f0=F=NV^-Y`;k`%2JL2O-2-$+`Ye_ynYh&Kx|lyHm5^ zBn9LRvrPQ!dsGK!+LA96Txku#bp^m>Scvgegszg$Exu=ZgS;;UFu9kloH&y+2=Vuo zF27PE8O&0|w5z$@P@dcxaF-617dmJk7h~n7JQW+)xa@_VyItd@qgu3=Oc_{vN5gZ9 zpHe23J;+ulGSS=i!4GIr{?W(~0j}hB6rs&LkQ_Yi+e?d{(rSE*NX!dgmJ1)m(_6sW zQUj)U1fRW9mCbB-&u3IFK5Bh=j&eX}E&}}_IDWsL6Z4$Mno1>Wl zRR|9Ku*(0kG%=BVTYhX;Ch6k;o}Cn{`jv6osfUN#y)A2-wCKx^@1i2>^ZI@FO_)Q% zB6ZM`DXSS#<$VLb(W)tg6||7iPZO#ZM?b_yIls2}2_^OY;r0CN?j1i@TGG)$w8gI% zksb)kMzBRGIftmw9}45TWJJdb+rpQn+gS(Q8TX?-zc#z((5^_GF*U`BCNJqbh>Bkt z+h5Q3=Ud%6=pf4$vp6<|D}`8~RhL2S0i2uDOfeix6ufa~?&pb#7Q}-?$Io1P8DEcM z_X@Yi*@I6SF&ldQ@KOC&(elA?S&?&KUZx7a#1mMaCxq(JZo3|PlG)ofB&Nm7>Nf#} z)Q71s>%@`zPhRryyzGf`!gS!-7E!3#%1EF}xee})mDR5fa~zMFVUNf5ON>^h6A0aKqLpLz8HeRz}(=(N)`JJBSUi@O-=3!EQM_I_O(! zwpqk(mAN|}PD6`38RUDYRNTSqV#^+!^#$s;hV*iWY4;)LsoE}B^0%bNIksA)qhM8p z8|nTbVZ7?MBf)A8Y~2US0_U&^#R8v#Qfb9@^2n6*9;aIkn2{8?%0zKrT~eT^2!p{$@uJ4HdIkl?aCG6)j9voXuQ>-e6z@77HQ{vnf zD&fK%-C-XM{Mqa|vzQ^1?TH}`*A|qXA?t>x{Ts{Z%dg$6Xx{~cjF0`a1jiTdwM9$U zn9>D8%@R=Fykj~b!?b^emTd8CvpQ3}6OtBA3!U(!HOC36RyxA6neiv{$#=HOIR>1B z<1jo8PD(qR<7Vt2NsMqB^m=^eO`IvHWLt-UAf8+`KIdh}$*|aLdfC}eq zQWUDhOgB&6rxQeV!RDl-dPmXyf&MQw_@yhstYI_$WEXkUWGOzL(bALsUa87XMpBhE zBedIaEj%P1TXr^wyb|v=cyA@dkJ6E!4-nMxzs=UY`Ow-=OHO{Vj?g}?T%Q#F)!HmdQh`M(N0I2q5Fw?<<+zb`X7~Kkz7zotP0DL zwB!t@g2*A3{2$D17vSGL`Z2}~v$ea$s9=bKnR2N8Z{>ukN|#M8Tqy}YHk3EtSZ~~B zNnYn6!MK)~meCrY6ne2yd>cxNMxvt`MXI^0OVleK69mB##a_mt+0eQz>hY1_S>1SM zHUe(pr~F^9#fiIQgHkv$mdV|ubBsA!jpC;y$=r&B=_Pr*2MyLVc^1UQlz&2s{tEs4 zk)$~uJ#2@6oWTj7-(0JpLpubf=emC!ha8O&Tf)UEaw-Gg{sbes({c7jY%&-&rsr_% zFPWzluT>laOgS@ptQX%!+7Q{vf^&eU^*6B_0E(d zqk*4N^`3~+6H~;*e(Zfq^wU+RF+ClUEYl{h_QXV(Er4%PFM6!{=FFFM-mDSM>Bix7Q^%3I= zM%~Tv&}C5X7A?1^r7`$v$7_`T5_;4uy}5xdKjQMc7>|UD#D?S^3)lK}8U5BGsYzqi zhnYemT4cG%mnWuL>q2udCp$FZAjWFJm^n_pl#w?jKZ7~#b@EWn+TW=Bw|v~(`>=QV z?wECv{btCx=6Tn;knu$^`?8r((E`CpfYt7jS78K{snA})TnSzyT7nN8JJo>)q5Qs@ zUX_z>`5)IYsg0U=Ca4G(3mD;T^?BvRsI!xb`Q(mW!{+O;eB3Hga!~>GKBHvZh!BJE z;xPj?Rib{f*uG_Wd2W948ZXmd8g&p237wL;eN)*bdH}h@sjdcs3g(2f->Tx}GfF#O zO~RT|htP|hv;cpxixu8Bl3Hv)y1*iBhA=^kB(qZ_VX0ufLS$S!Ew&S)E(4b8Z|ojp4L|6+dh%YT>}>?* zBdXS{TvRTd&gK3CzWhvnXEMSLQ&6~ffi%&u$A@ zPdEPo%zaT`H@V3Dr4B3v%N*!!Eae$6Ao+oRpe)0OT(!B0}}ltpM}9 z=SpKiAVqcm?t@8j=7IX5Nm^;`6=I(8uOGm-4A_mvIuMjb1xmX4;th&c-hZo)Xu0&3 z+LpVXJX)|?dBfM{9Oc6OYCLtqE9EO6r!sp!Ge2=CF@0g9)9ui*qaf=|QEQShiK=A> zVe}}yJ9IW)ijr7Ng2UIULG$HH0-`_?AmM+ZgIZ>1>n8RavpN}^chMk z1&1#N91T|sM$&EVu=-$-%7kLs1sKZ+szJI8N>!dTa5JV@J`Ywa$Nu|Kw?6I=^QAw+ z9OC<<+7@0(Y`KUF{8vrtWqm+=fWuZQpF_7KVw2{^7g7|fnTx6Oou3hynxpvV*g;sz zKk3sb`+@Q>P2V(K)TuO`Um#in?_X7WY@}^&(|&E#O*oNeWkn*dsNSP}3A;T*_l!na zodyHmLek=z3Kmz@V(IF5n`@^ZLCM1m9x>!-MFSKRmJ@!VH22QuDq=zGAO2}8tb@h0 zwO>u{A5XQD(+{ZrJ*Lh#CosNU+qfAvt21{8*SZHl^SRL`Po5lvLlEaJ=#=;NKV?WO z))ffifB|{Eu&ft-du-tLz-k*mDmxQL`lxS_BL7`_{K?Im(}}kgIGLe>mu#+GpT%8l zpfjDLkU)jCUaEj;!QoY<6o`oIX`^Vcy!$M#WibuYcv*+0QJKqpv%7;N%zs*)YgRMyqNDGK{Sw7m9XDrK+lj z(3=eZ=d{iQE)lZkiT;f|*1K0Kt)fRe$v0^5423U^DH@7|HTVKgYSlv$Cj<=_0wrlE ze{j!Up996PnW@xhQbV2VghM1D4z@P4T4IqQCZ5YgfXO{- zD3oOum3wn*%jHY7BT0}t(3Ikf6)EkWwmzBgyb=Zcasa!{T1m2$pMf1UJ=@nmUWcq+ z&7Yq=|ApYIMKQswpqHeSQDJ-W+5~5mCwOs0Ip~fT%^~Z9)SM`(h#X#tvH5*21hm4XMObJZea#_BikLak z>EXh-(*6gDib$za`sWl}IsDe2`3~j~>(Q4hPJucXY(+J;uv+h~>9n zTSfWECgoQq&SR#0a-6qD)7=1gJhKKl5L zxkxE=%CX73x&v?J$;%NJOdS8og>?65I3}#+630 zegM#{+Z06{`}cUP5HzD5M^~x0J+Gav6wv~SZ>nt|ud#vOiYpoD#G?@m#RL(Rb+Z3w zM@Oc&yq?o8b!8d#W#6D_PQQ-JR7nfBg0fq8`8_%r`(Vw~N3l?hFKer~Zl9dcl5 zah#$VaQF%MVbpZ7MEH4xzl|Aj?2lx9JjYaDZz55D)dLB;MHXyh5Sb;>=c zzbIgyFJ602`+4{st2et*Il-h7zw`Y)mB(?Ow|Bn}2Q(1+hO+ZXU zWcr`Yy;hyqZ_Y;H`Kysn`%WU3?k!|50`=nV6>l`bjj!YhrL3{Y`Nm1}`RjslBAOP0 z`1Zsc3qcg$=l^Z3|HrUi{Af6BSWugu7rY{&`G1?a_*3|_S z4^GxYRvV&C_(+jI-R^J_9A~2gqvA|y^yF69bBE(Gi(8e*CfvCG$8`)t_#fix^HnUc zl4)zbNIT%QqM))fvF9NEBGZ;AxD-?ZD#H;q(eXq&HFZ>br04EZM329~1Vje5F1Z%K z;)&r;3;j?m?o%+V2v6HQ4wL6D8~F>h zbF0k4+zd}B{^Dn7>=pC$1|t!UNzJ-G?hh%MgAANo4NVWGmdD{wFOba*D*@A0<|>8lf&w%um@Mp@1}C}pU1YD;#k-!L5bE`Y z3yY~|d`?pfCvT2OEZ1jI3mSKaX(qII;s0;n`8fY2YGh8uL);f0k-zfz&F)*ktiTg zvA4%}rnz8MK}T3zcBo}*Z$TPiHRs3kY_xI}bplY9h@(P2ns)QAka}FrkD%F%0lX#t zEdhp_FY7h>49b963TA=qjY2>ATl#nFzoW6L#Mgh)DDGs2bSY_tgN-DQB0ru4fkh(u z%m`HK$$><=3csw8&K5i`NrLKD55KF+_!I6s$=^xrYudyzu_VTA?Z!nS^qGy^?Q#uQ zVt|G8a>lostKvz}KFSQ2s6Cp|`(nZ9<;G-7l(+ddLkrzWID3G%0t_6~`zMRwG?x$v zW+~P2H`+?ZuH#-;zy1|&+M6(}!eKtqr z0^e2vH*OqZ+X+{cC6*C>BASADnpB+E%&SD! zPTuzDmAIS#omqaMU3i_265AWZj62Rzsd0Arv?dPREBiswKle9VWoo)ZjScn+Z-Y?` zG6DEF++)?AB~0<_Lw;#^HxZwe7uy=w8Zz>5A10Kz!uFTE8QpPQEe)4?v=cqN=>)^^ z+N~U@#{tA0M-qVFk%&lwM0gBW#eu1ib$xCC&E!&>}+32hM?} zDZn!E=-J{-i&x?N3pes}w+J;A6kAz7O1n**hxy#xE!(XFDX-Y#Q8@MSO}+OMqPSD| z9l6&K4&fFl=)P(5RL82i2WxPH6&TcD1Tvo;yFoZKt;A$_hwa zKOyF)O8;Lt!|rNkm{cTVVT}PCTQa4gTBYordAlRgbEVeN(hN)KX2^yAiJ1^k z5+3cOWZfi!jU@x)_my`H9!;_n$E_YzGq<8z2qJa(N(xp&Nl0?Q>D>rRhiTx*6I8bg z^EgUdlvibR>P1~BXYa&!*F8d!^zcP04A*{Mj&I#5GAaBY)Y)w8KEK>OhU7VnznW>iL0DN8W_3 zsO4_6V4IGL7QbZ!GVMd6gRF4BhQ7$m#b*=Tz;m4IZ{giy3Z!-Me9Ww5fEH6wDVL9^ zv16PnIg;H6VADLe#&_F#x=w7}yApOaxbO4&7SxiQ8jLbb43AUP@|d@`c0q~&K0u5Y z?*(Q;0nsiJFV3}#GD;Gr?4q$)pwD)vN+f+rKe{TFA65|V@7!S;{EQjW?;+s?!icbz z?#<%QSAP_;{<#sUXvJ(ObUR{9e&2s;-O$0KV8%ptTeBKG$J?ntvR@bQKHnQ1q%Qz~ z%jPJVPLB^;G&VpjscK$%$p6HPB#I)Vq_Yelj02(5cnd?HphOA~SyX;MTph1)^$Sw; z3Pzk}SJmJ9W>DjwA~Xk3|F~=Pf4s)Y52GxYRZ!mCdV{HuKK#zF&r$C-R3v{K@vWb* z2U8@JNp$1N`Tb@O?mEMwl2r!hhk~-E^4h%>#@6j zF`N*$9PWt>F#+browds_l>auqS|eNee^^5$?^sJF=t^M{uVi_QI!n6iSeA{3(wZ6F z`JZUeL<6edb2ail+R7Xi+prWy-tMH|N=1Ncjkog6hT&Z1_{Xg*~|cn(k&QmzU|4bjXd@7{@Ee#`aM% z0s%}XA7y%nSVuS&Iprlhi>7873CfTY7tavI06jv4x(*PGaxs)obD_Z1m}@U@KBZt! z{S ziV$gcOq014Xd7UY2H*IJ3TSL2XT4rqDJAfqAT~39IZJ=g<_BepZlKic6*$t2v(I@e zld0#+C-WcAm}gE2N&H9|Ixg+F&0f4HAazmMOuLIngMR-sp{uu$-{~Q(;A*(WHo_cU zR+l{sOvUH(H-OZxo`x0#6hP1k)TFHCh+t&RLpFHFxCY8ZRnnU_IG0h&=xrd$kuuL= z8b8E1+6L)KY||Ik6sW48Ou_xLbS>_JtEYW`^5jtNt7NH5z3N=lwIH6wt#+{|DjD5Q z$+C{`a`UGiMMpjU82T{EP6{u1FdukE!t+}_t2yL?m&e{wBjPsw>OH?v-!FkF8})MU z;wQ(G4uP zRB5@!0?pC5WTM=N3Cv6zbvV4lT=1(1>x%wxS^S_?7yR-+uykYv%psb&&caXea&-f~ zmi6?AlWgr(G9{<1G79flapG;9+Jv8ZnRq3?{U6rR&xG@x^A%`(W&Y*v#ZT?kV~9;t zMm_L*<}CZWV5YQStlr|__^kM8-r%bL38vsJNjDL#pGfC@K0(?AKJwZlFU?B}CjQ>> zjec>=@wL%l{oV^?d?cU)0?^Ge)Tu{f9-edV8G5~_r4MIeyX1#3l6 z`_=KC=CRYLyf7DI0h!l7Q@M|)?6JG)L0J#4szmL{_JugO)etJm|D!L-BeP|r`71acXZ?Rt2_)!d$RoD%5)6Dt9_dVym zvY1!0*=#PMdOb%12QYy0DL1nAq<1E!EClh&EMcMAJ7WH`sAB$bSV@A&Olm(IL#>ts zF!aOn*afgleQnl_>WCe^iCev1QYZ%?Mae~3xB3s~ffasgt1ID5q~B|u=Ohoe{j5YU zyx9La7L<0&s3fPgb;ybg>E%mSdQ}%q>85qFi}obrT^ca?Ogk_?M%1;rnTuMhnRFaN zO1+i!v>-y~!I4p!@uVWH>g`1nE==}_Sciuy3$gZ^$OMooh=O$>DOTSt?s}CyMrrap z>kU$$P`LMT_HZILLA&w5?Z>0dk^4v5#gpO_^bc;3&qnX$FM6g&Om zYa@zijhaF7!#F}jWpu(Egu0*eQ%QYh$NqgTMUd7g(^E?H^Zk3-Uvv4sPjzi{Ki)~d$=S=3ZpRVkVXb|~1xfHk;n zc{)?s`B76TS+<<{-T$f}!^rsGsJeCM*!LCKNDiu8_Q!|uM=H-%k(s~Z9X*1Uq_-wH zKWM9ZdM$j?Ig|H$o>lj65<$6ziqbfEIg-CfP}$yj7ATKI$mc8Uo^uL%M8l=-(w2qN=;{zlU|nxAjsecf|b_6)f7Em4+?0+E`yUigmGTvh2ZJjIM%%tEeUIY;nn5 z=u$EmPHd)r-tBbzLDQq3c&k_&gYv)hXC*d$ z(J5%!-B2p!4kG!O$Lw1*^e32%-Z<(EIq9EDk?9*I8x`x6LBex;Q4Sd>X4SNDJUsbNDOBB zNe=#zWN7)!4`U?X;GdYZ?lO-vXwMys&&chR)dB;Av$@m3C&`Xm%M=1MfPVeS0b5D^dFiy)V ziGG(&ooc+_u>@~l*=DY6^m@J}O;s}_S)MY|4vbs&^LPcBSjBjgUAvn}aatkNV=^LKXRrcH-yZ>bsdfnBSV_>A zuucW4=+Np2hP&9W6kSkj^*-S{1NKOmB{WuqZ=@Qv2M=0?6v3Wi?6I;_ye}|=_6>t> z-1jR?NV^-D;~|Yqwb&6-Es&i+lv21^AymW=291z(;HD|4__dw8kB}Ku#G6)E?lg6B zY812IbDZqkGeG{$GeeMyKMZijI$=-oHX{RGIlF$?4+DC2%}?d=SzqtR&I^`D3x5BIzkwzp)I`+L_4EIV=x685U@Q$93qp2K_B$b>GhT7Ncz z!s)A;nH$o#$>xg)`TEk*%S6g`K~9w!C39K0jr$Pqju5$%ieN|5+3ip1XQ@-uB~m8Jr%eWbk@8$yre>3@XdZvI#O$f5;@g zh067i?^A7kGaOSI`*$NZ=9%SmSxl#Y$=_O3@6OG!QO#k5>KjHcS*5R|zOYY7-BEXRQ`OPX7X33b3|jrOGLk$h$Ac& zTOzMv6KEG+WdtqtiT@b!fbZ6|re++t87`f^dHP>LL9P%(2ut@G&5-Ya*aqOolai(P z{7pFgoy3tI18HG**WMvYb40nv?}mv%`!kR4T}RGGgmy=n8v#dog{SiDH<=lxpDeA% zx4*-`-z&*E6Ku+0lqoJyu?z6gacHe|X-wngp1VS%nJtxX#iFJ(>0{s?+XSEd{))|9 z_#^coZ16m(cTW(0s#7C(PMYsL%t$sLWu4>7o9r{;s(HM1JVW1EfU|`ndL1M7X^7LC zgUz8;u4Zaw6moQa$VV*h82zPJ``Iv_l*#h_6jja*zHB&Q*ZNRe$MO~j8NVc3>-gSI z4$-j*oZ$fPUd*tH5N`Zl$akKdigtEi>(cx6C5Z%1a%zU%xd`AvA8bh2_`No!ZgzLu z4OG2c)LX@ghn}VM4gRBTkYX#UJRdh^qv9IxO0dRKX-(b&Vfyvh&8h8gnl(2SsPlFl z4-1XW#9aiv3h%Ll#mcO+LVjw5gFL2;<%@!N3ta0QeW?xRZt14~XQ-BodFbLS_n?b+ z@*zx}yGUX6eQMQbGhiMJuimh-KuK;hh`?`RqrH3zbUt;@G(_+%x&O>T@wrU#0?$$2 zt4%wruFr!FePFnRF*ee7CaOC<^JZ}m2wdgpeKf3US7XgMQJtmN5wjbs;UDq%}e>6-%4Ck`})IOd>N&EZ-p3d9; zCL&DpqMRj>2$svkO#Am@MB|``?Ign-frkmW$}r3zK-*`+-2}#MxHaT5j5Q6Kmf6LH z-%$UEO!U;R>UvTNt)L%&m$%`&q_u7H@qDa=+r9B+%*;Aw`DM$nnZZUxn@tiN_q2w_ zE6zFo9#TSlS1ntuxiu(znd_@u-X`yQ%*Uge4m#No*P$cb-h**R*fVHOZk*nL`be5? zt~7GLMe6Iqlyl0KFxPZ`BHv01yKvAfZ(uTn^l!os>O*FjHnj!q?r0DfK3ST0bAoO; zD$Y(?VrIG(i1#Vkis{Ve$MLUF4T7!fR##OXwhYP^+OOL{VdoWQHdbsGjq*1XxAD}L ztHV_K9awT4!)i|&T#&HQK<>JoqtLDD2H2NnJdad%fTK9iyn`A0^?HjHN}3e+((IxQ zbwBAMKK2ohfC`Q%v4voZpeH7yr9U@ROyT}P{-TLuOJ}D?oJVsG_`V-)MMINq>CjnI z#ALi#+SC+8SKdcD|Am|GHACF%=xeB_pC`a@ zI}H$|qopl5LWU$-E_BlJ(z+m^^J0>|lk*inwE4eP`U+;+n@{E6E{RT~^>`rXmzvzh ze%xV@zP8OCVURU1@>P`5EGg0#&Cod9phYPhs|358uDwnL%HL+>o0{k@-&|Z43F1q2 z04<5jM{37gh&*>D#zU#r9oi41`>j#x(IX2vodR~OUqK7UL^|gsZWlqo4!W|li>Ub~9GPbTC$w!xTS+zFnaI=$FH( zw30t*^qsb&Wh2Kcmx&-6vUQ{Sy1=N9m-p8TUZIukEQr?~SSg6#rMg{^p1hS_`)k|Q zc$BA9bZhO$6P~=JJZ~|xwqHc1e^C1vFTyLo1u<-pia%cLddZMD1{IyBeT|&KKp)rH z>5JI<+K5%MC^r4Cyji?j*;tLL8AQ{3b*}N7{Kk{=_G?y8HMoR;wj~SPV?oWU0lo!4 zn3k0AVFAnRtU&tvn&PuY)OiI@Xv3O<0fzsg4Oz*{=&J!bc%4xZyfwB3(jQ)!Co5_e zLeiL=v3T13&~tv<23qizPRsmFUqsi+HyEGm=5}={pF!{pw}lj_6&Rv+;Q3 z6p1_s$!FgQQ||9`R=k-9H^j4tOf^CMQ<5_V&)Y2<0!{8@A6Myi`=lf3KBJ_rMF<$< z=$~1%I zTek^lB)wKDq=Q<+Fu%##cyQfHi$YGREy8jn9_o%r5J0;+nxw5z)dEK(@CT-qJE-nK z`>3sHrK7UlN?&-%+^$5NsEmqtXtIJ#a`bksiTO9ktx-)#I+e9M3T3;?8##W00(~;s z_T)ZqI0do#;7Es+cj0F+fyM))R+3^WCJLrHtt5?=#s`d#V39@jXg7Lnd{BzYmu?eK z*%hyqgZflM%VB=s@f$P&5=SBD33htdG3mNye(EU-PSI9Ob-;-P|H5>=LFT?_pXjaY z6}4N-4_@giKO&Ikqq67;;NEK8IbNX$sc6PM1p@|x-N^P=d68{7V<12909BY zRqDDDajcBUE9rAAlRQ2-wqMNAa?47r&S7`W9qZlV`9j1!#aN57AZgeo!W2M~*OVj` z)C==PL4;9wU}`0yc4AU6&38y3HZ3)y%BLs!hsA@@V@LK3TtA4Tx+!1=xpgC??sAyl zI}VaIaU*A^NI?_#%U7BCQe~AuacU!phy?$_^jsE6&sqB@Ez&812!LA6Bxig>7Lk|I z$16qDj{jV z5K;@1f@yz30L%`fkw$42%nT#6&1F;I)w;-J1voO+nwa~vdX;zrKnjwuZ0hJ z*}N8pg~2U2?WJk0y(H>H4AKvNTOC(aKv|;ZlXDRqr3+^7v8G;2fh4hx0Zl!rh(&Qu zsVe*eZkj%N00B9@CVJ;Ue~gW+^+_zXi@uX2X$mzv2^A`exC9ajH`^V+^e{z{%raoH zDH6pNUT&Q9Q#YTewNwLAiAq-MIUf1>qEr#!MHw1T~2E~?&Dm4@bL%u_KCam{!&7Zj5*L3T; z?`pk{>l@#AFVC8`zwudGfBLMS{`99`s!Oi;2{QX7{lK1m$xCp(f6c!p{M}lszm0AG zr~XHO@8I$;e_Z|*p!@yvpZ}}=%D?D;SBfsbmL)SWmmI-KpNa|MatuY}X0u?WsI^o; zQlE%Pe7L5Te#%cPj#>*fAki|%DNs2!iDqAn2yZ`Ir0B~DmgW}8Q&R-KKI^KAhCeju zrD2sG!-K%Vo(XJwf^NMZgjc+h(6*G2XWQJl0WYZ}FBZo-CY^E5hzFESfS&G+e2se#@wFC_^eK zG)AWp@}^6noU$<$a);We6_~q40@EmF2OQ>07>`34X{FR!Dj=y(q$F?6ohL#UN=j;M z%^e|yHyY#@e|IDY+jWQz{qQ^52U~>r$p%Xj#%$FTfv?ZH2q@3n4D|p>d;oJ*)JDe* z*`A;jlOK~CdTcpccQo8Ynq-(WvX409VIqC+E|CxSq=6b2jp9YU(UPT_f=%O4mI@7jlQ%XrsUwCYw{=`mqJJ;u6N?P)1rQwU!DC2~lu@H|N+J*hX(G1U}o8i#U1Xyx4F-~7MX z+&Yv~sje^N4zmy(m*&WsO2m{w%qvt55bK%r% zROEBhK36xZd7|^5CRngsq2Ye|E8g#sY(-a;z0TUki_cx!lh$SHHe&2{d0YYf=duP> zS12zH(Fx*IN{aeP)x;V3srxE<Kcv~F<=;+Q$R0{K^{+eN;VbKZ{N$~LL)tDB=JFs|LfJw`eyq;6bRFr6ACk}zb5*55s zXcjTi`KGstN>%hl!fbxo0K8?&8lvonFX#5*s3ZfnJ4N~V!xFtrNO0zgYt}AIg4>+R z-G1G13CHcpkweTh3IwfgCTRf*5tX*jCGI=<;cSXiUI~K`a9u=_x+1Pg8-(=`%ZLya zn|r*8Me$e~RY;u=g{g@^ZQIUh)#g%BQw!C48L#GZs zGqWWNyS0{DFGgP@D;UQef5Rv zvTl9ylhdtFK8@C=!uk~do^Czav_8pn3+oeMeS&MJTi5;r>*HX3EUfR~`Y12L`rB!J zq*@>0n;-kw#~$uAulbvBy?@K!TmSrx_0OOCbN}?8`|In+`sc6v5C1Fv75|F=zy5*F zqlf#ie?R{F{~dqrpC4a2C0dmnzmzg7^%QmV2|!CA`3fzLQu#?pC{;~d#-|`1@frwr}krzNk#`HpL5CfOY+ec$$4*!a02m55buQGTBb>_`boPbQz@j30y~Q>^R^42 z+KFmYFjF~KG?PsS}o((DK+jyB~d&V4iwhF9l_bn;o;38C&N0cDjRqaq5YB})8jEScZF z_D)+Q=c6qGHj0QkC|5?yGzph>({$8WDTWU#2E$^@ysm`)8?a!D#A*syrIKojD66sJ z>#~8Fq6y+mRP;){iVl>Y6f+rHMie;9eECN(m!*nTc{`g#m*l>b@2O5vpNw0Gq#=z7 z>5c%B1PfC0V0d+&NLR^^-YE$H3~TaZDx$$@LFr>I!3e=?z8|JVa^9OFY#>O0chWv( z7=%l^X*z1G6!NL5&RJ}k*9~E{6L4C#swQpI;*LJ0(6<^ZJ}(=LnE{R>Q8p3UP79Qe z6f@bOfr|c;f0$X_C_AG*o&d$6OZpCheNA_YL^xNjEsIu3_}~$w2o@ygu>?+J9nv{@ zs2m*G9A)i(Y@E*Gw8-H1T!ImT*L=^`0q-?}PRRn|pwwS)hC#TryEIKqD9|%8QbTfT z%i_I4SnULymaVEu+qAf&o2t`ltd1&7194=u7QH9;hR6X*NU_|pX)KYb|FQx2E(jql zY!ajI5oNrtE?{#hq}7&d>!Q^n6z?6)PnndIdW-=~qo?U<@=#q#p0CBabJg5dV|mUc z;mx1ne*gRDeeh>HaZHnRg&!<-5;3q5opnj>0TG>F?{)XEaUEL-#wCKu6Y(`>QbldAHCB7iqHB}O z!WRvN)1>5|E*6gDQebIn^nIJ&#cIG6^U$=I23i54i3TBdh~D=PuXS(URrHs}34*-T z(FnUlABxdMu{Tm$owO-68E$A!f$xez*aZQw@1t&o0gMy#!^EAI+Lfksyh-v)UUL@$ z+i=+_r7fHidazkTx(ARau+)2M3;hUCO()3|dO|l;EqE>|=;|KJg4GGuB!+18#%UW3 ztZ6ejrm1GbVj^k`SPms@jm!;xGS8FBt|`u{2@unY9@}WfwI~(}hzPR{X>Z9ZmBbal zo4|{Bk5IjA&V24%VotY;f@_M8zvJc3ajui+cCpxs>zM$vwFxHd@x6rly7zHqIyHuR zWD%=rfdE&9gJv>#3~$YXAn>U)lXQz2fkC0Nai*oGc+m6iW3T<(Z8!iiVM=ZZrv>SZ zQ^#c+Le3)0_XYI}IB|>*GC&s?sio(RMOPG%aL$s%$B4_`gtT+87h{U5kxq*Vsi~4c zNvShD4TG^CE0f7tEkX?K^;fUep44Q~U-4YVGSzwr-Qkgv^1-SPip{c^QFAFMH1EPm zGa38z!?6nj;HF%g?2;VRXg{kVYAdvyetzw>-_L;;P4}X53#Ud`&I>vjsUxuHMLAh- zq*)rqMlyt&Fjf8cA2Awq@e5x1mH+j;`WCyE!g`(8(7trtbcvNMOu3KgSwGF|m%^$a zyTxa(ck}eFQ=iirYwUN@-(Ak}AO3yroc{S2#DD(p|M&m)|McJSpQ}38|LLz3rsS7! za#8{vnl(b55Gg}S=irNqM`be8hYZjH19e!;H$hXWE_D>w6CWc!S|`SEur(E(5SbBK zLtT{wB~m9tscqHd&ttMUt3`;h33|cycH3*^?TMW9NQsm;98@3HYvSi%Md2_{^_M~} zqDvaHTXo9cCX&;VkX5NA*T2qYms$z>@unIQ%=yc;*9H}g8b+l|A+~Z0r$$%K3pyGp z2&X^vqViCg%=AMB=mG<^sn%}fNxboNxT(N+X`^}~Lq?ejPDsr6OYc=lQX;j6N0C(} zg)uW(oE0Pn_`d3}q&(GR=r27|BIPX(YCZJr2DrAW>ng+0mZGaPa5=&ph%LM$1$8Ub z;s3PRbTuko-7VG7)C8zjCSdv~Ew6=Gh^<&%x3gNxc|k`bB`Cf@CE=QOXV#f+fsQ}IYwAqYmlmKXCJ{qN-06IQ~ zA(aD{5EJnA>bjlPQqBW98Yw~P?ZQ+gOLV4|j{_)*NujN-hbqTa?L>1&)3o@fShype zA>)&-mMKz9>L{)Ob8bX4OEH@t13+grz_4P1HnX+#L<@~8D`fBTLc47%-T+HRYEQ_V zccXRgA4e4=Qy$zu6jg{FD=4HAH2>RXGpbPn0Hf+nrze1Yt_?#f1;&VJcm%w?y3STB zv>0%z!t}JzE#CdDyB#)5v-Gh~*)8`S_uEYc3}W5Wlg}i#(hC1n49LX3Ra*2t0TU@k z)d6uq7*7A2`>ABp=k2VP2=m;sOF?#B4Ni4!SZ@gxAT^Xa!Xwy*dN`sjkG;{WcCu39 z1Nx6{-+Fu6NvR(pR&`SpR z(@Hbm52Nzy@bXYFN!3CSSx!NMEzDfluA6Yj#!53*Dvyv!h;cG1`Y%c_nx*UXif|9S zO1&dqd!D-5tn}~V@vcwv9zF|T2uYUKJO-pv=93;hF!vDk(D9`FILNy zsS;Ky4(j&%Z+i!e^J&KTD8)A+cGN)zFbE};H4|0W;02phYA8sp$>!uFTRSHvqQVJl z{Ynb)!jf!|Q_XhO0#eKi9vLerF-#Y-y2Tj(T-pZ`0gVNt*QjK3({wk zzl*@_Yaa!9X=W@j(&~!4bk8N+aA}b~<;F1^Kf|C_(s3wOxeh%$>BeJlLx1J^ZO?a1 zh;L?60`fKNeZlu9U(@~&vVj(N5JRLR_~{-Y9b$*u4>_ekY6PH#4x#%5+n=FQyxB{on5M-Kq3{-L(qbJQVfOctlap+|F>th{POSBN+E$cLx9U%f zi6WMm74wy`f)c|->VqM~AfvLF<Z-T4vygi*+85onN~Ei_s!7vN1$0wodNFef zN+(z;R1jEicz28A;{oR&qK0l9So|Bn6IW(LimB%d=E;dkiCLA+hU-#BDPmyhSD2ro8VES)tVJw=bJZcL_?%dE@7VTOa1j8a zYOTX21;0Nfq4>2BCU;8JPneH2qXT(}E z1kemh|D_BRVKzmi8VES+EXW=RoU0B|#a9*0bEn%=!36+zYw%j=DW9K`P&kDR z@uZ(HL!T9H0VKOfN~^`B)jy$xBGU9xRvODygY;#|1lAkg^9PGV=I<=NEx5gWqWQUy zN}Ij0ZId=H;Qxix;%uX0biPa^LE{h@Ir>2nW6ewVmwauk4mfbTFikN5G=tKAIfE1z zT@$GW0?s;Xc_RKe(q$E2wYB#?4hBC~QG|bbIW(Ljm}iQ@JNeif+A@pC1x&7K+PynZ)4?W#nF#$s-nEnS%>&$ zOG?pYiC_4ZAP_8A*;oHl-vVRk_w9%jr>pDg+mH7C+ABRuY@OC z(y^GO^UQ%}RsVajrd0ZpOlrkOyqiTNQ4B635(`xN8TVewC)z*wrME(%#;`}*J&@)) zQjaD@jtdORIgoF8CP`(R5HeO&Zgfx`-33~io?vb?r%*rYis3M!!Kp4?&K96)e##9d zs38|PVO#n>a`qlg=##qF3QxC9(^9rlt=*HjbmU;8cZ9fls`ea7)2F@&BYGyH*&L;} zMBJdKrpt-)y&c$Z6J&3+qHXNgo}=#aKm6*NQ7QtdK*S7eLdzk(lrn+4#4PGuDP_Kv^B2Z=zHj@oec|~W(|rvjoak%X`-=O_-~E1g8YLxv=<_4}wc#zOx0TdoTiOPP zxVaB(fpCaC3b-|0v|!h^1|h+Lp_pZF%XX{4kutOx3QTwes|PXHNGAa~nv{+z3ai`# zQd+`EdoTI+D0K<*@Hi^()>B>AkyL%Uz$_Uiam4%XE=neao(h-Yi9kUsWIDI7sD@Yq z0@4tKv#h)|W`0Nx8H09H)b_{qHk_!W`7yoYxRz0qsE-h1k|Mj7KkG=Na!Lo;RE$n0 zD=b-?QRserIMtkpsD*mz&EU9Frb#Ttf;#rm8&AbFzjC}ubye5SQN9d|wUmHRf``vf}6R+)>~ zW5ebkazUKUTTxwok}!(t5eG%QuaCh~dy+}kQ_K6k>O~0Mg*HlSpj1#m(=q}~y`*Q7 z0vE-fgV|G360bk5w=Y&|e&z8d)m7c1vY|q7MRq;k`@Te_GUDM$BJ^g*ZlF>-x#BdZ zTS~iydY733#0l(weu;e+;3%G?&UmpNIVf+g70+}Bi@cXIi+d-znx)><*sw7OVweUp zh*Ao@rZ5_+M>dW;x6Q0fPnk66so`=Dy$GQ@(VF8xsi1&%s@`!W)Q%-IvK(KslNKI1 z@JHk7Vx{KSyEIi-#UGQ9w1B4~`1>NH5|zq`DhHuAJ9fj5RksPXskd872U82v#Y_R> z1ol5)V!smyA>g7YG%dF0iAP{lAoSTvXoHxkkc)L5&quFYnxDv{S-V<57g||Y6QBnd-#j#ljD>W$e zeqQ5wM&6RsZ!?06aSZE?kcw)9Wny26F&8^_Ki8UWezJ5;&{;3s*<+>vi3Hx}sIdo7 zdo8J7RF5&|#?nT1AslzGqL%a?03K&2trOw}^J>_1S&c!?PrFj05;LcS^VkOuHeQ0s z)tPk-2|*Cga3+-9+(N}(O&WOxFuO^Mhf#ftTDlWv2>2b=JJtzoI!-TP3={w@CW_37 z6~6Yid4>+ouwp4%O{U&ECCWrvQD#2_^B=hutba7fET3dOBR6x_cknaLo^l(!$sa`DRM`F zFlU8Em%WP%{JSO#-e63i|Q_18G$n+DPA~l(BC91Tji9M%3d_n6 zwRLIYDV8{^2$5dYR`{*UvOVX2Qk$tNO}8Qtj3O=18aSDn7V}tmPzAA1k5^mivy&50 zZni&+K=G$^{FnauMgM$+DBaG^A9()Z?|MHR3KwI^;npyoRN^qrAjwJH@k3`0yseQl zU_gkip7<+K`o?F7mll8?YQ>z==LdKd$QET%Ftblp_fpTG(+X8kj+wCL|n?RSb z754hF0d9$*O?lKmQUqm?uFcF?0FziaN~b$sB{$`6ykS%9(=EbuSe}eMaDH}QCH&c zz`#lrl@TBghh!-Fnzu|Ul(%u(a%PGqp?deT=rf)9PCph+v$QS!s#fO_*@iH;SaA9NlCfH zCti}QS{}0Ebw0I4l@&yDe$EBVO(hC*AB85BG1Yj=!wayfdeTCi+N?%8%2@JQR7OA?j>@Q5Dl!;* zm|`MGc+^%`?qPj^zEWwo94&!^eTroJx-(KZ!5y3PRUrlb<2>CZ<&w7usAWb))-gV7 z=WnX4Ae#4cuD}dsv{HEUB@IJ9YSeg=kt*k9Sp&6maDd#7BEl#aRTwQr3;9JZjL4zQ z4U+yR-7b&08>5AA((wXlkV$6UZb1L-W_)CW(DTZ=m_odKA&j;k*h(e$!7gZP?7b)Zyxi}&Vw#Yjc?p+Y( zp1UcnYvRm0OJ&_rT^S_qVmP~;ye?(2C8`8Z?&bKcwN7kaj;nh1At2YjxdhA#-Y2(0 zK6I<)YIvolE`7U|Qs%$!$S%za*9Rpmqfmk%P6VVIi7M)_N^PVSCwvlWWhbx_kwc8w zuoLdk6KQAPa{$MOuKz zE`{m};cjdC=$#(pr8r4&g>XISSr$nitypiR32^mij!9LNNtZ6G$F@tE0_ky4{nE=9 zq*oR65L4gX0p@}lqIY17p2<@k)fFI`jF%@&m{fhxF1 zi~4o&L}Ny?rCC~gHukX9P-?PQw+o4s&T`4Z-84&yGsLv zW-#=ypX?YZq&Kwl6?gUR@24t>d$EKfhJ7aPWRvU0O?JXicJhwI z!qfDSRMF$eb%wAgBXp+(Z_H+?O^#0+vt!$W?+?^0w6PO{QLJ;@xFZkptSa&+_YS^! zFi;UxI6H;EcB(%PfEY<02POJ;e3g!8-KE( zQgLc&x~Phh6vpaA+pt|0QzWf_Q#L$o&zVvOO>CK>xjKttqZA_6NjGq^J@_fr6VoN} zs<_Zw!$kJL-G7oJ)uJgWMWq=grfO*_JwP-#cqDTS0A?qyZK#<0dWZq zrE8WqZZeUGtP>0H)E&A|J%U5!=MNW(WP}&WsRbA05i3tOa0`FLVik1_6cL|7FKMZY zl5~s}@^AFsVhSe7f2k$Ve9n|QXu=$6n(~LCnzHv{9G4Zi4`4N#>WS%6@UT+2F2_h_ z*W8#xp9R&kn`ivhTV+f{4cQP?Wg$7t4qY2EVeWZ|0W*P4#|BdbS!Shn*&=e2i9}?r zi$kgI5LJ)h9&J?0Dyk*$lm1Vq@y5A>Fb}3lIg5o=Dgz-RRFp!mw5pnwH?46F4)lVV6Q$^rRB4NKW5guhmp|Gh zdS_ilyBSmUH$#CW(G=sklOm7$a88+=E{&;z=XQz&yV=ijJ|%n@E-WRb)}Eq|kZzGe zF=kersaI#*x>p++Zce^!sbZSV453o1w5qk zJjbk2r)BP%RYCx@S?D-t39tN(+!;;88m5($#|^l#5-6q%lD3lek?6^)iXsTT^9JfY z44*_xgG77@r;8V}o%#d;Y(gA zPO~ai)7pF1N9MSAr>ZO~wXT1B878?D4t8Eul^uL$Q*}tQ&pCM?xN5vh!sS@a7zKHI=m6X}hJTYPR5f>Ks11XR6 zB?=-eZtV^wqa`|44#jIlJRRsG&7Pk#BUUR#u0=Tse`1Ze5Dj*!m?EpO8xXcN}#}(F`~-qR??lw=`s_b z9V2daktbk4`+NH(re%^%s+l@DMD4Ev$u?9{W=HeHgxN>CS+-9{-SrYh5jJ%${|VxL z3Msvp3@J`+#_fjTX{OBhj)^=5FJejfBWr|rsKFLA-H~M0G1fo@{qaAfrUhF{DM+NF z$b!g_TX@qm8jq27Jfgj;Ulm$Pz9{w6D>Efkr*=}wtT;4+$muc@(2X%1^^#|Rk#_Yu z?JV^&-K3Zt(*8ING0YBBOqlcNY?kfQr|x=*f(VOS%PXV%6jFLG87Pi_^izjAML1@B zMWZjL0vM%AAFH+zg zT&ftKYEi2PdHeHs9|>F-kxvVyXBI6Ue0a-ytX9>62NPhs=`2K;7PfVT+l`qT_`@>| z!L_$WAnFtBK-=gff9h`c)2hPJUYXtPbHqKqf^CxNTz+}8a6k0cBF}C+7YPD5_el#= zgjCA=&{B;J!q-Wz$8#X1cnKJ!iMb*RBfxcZJ+FuL`pN11TU^pusUi;oh)fzS>^6fu zE>Y2fFz!ic1$~2i)YfS}#M^^aT0HF$^l6P6xK0}C*+t!1Q}Ln%X*W2h)Rk#QDJ9v` z^iyzEyIV2t8rp zG{@384Kt)zHCRH~mQ+wl%5*8UuF%t@YA{i|o<(W;ZgK-uQ?>*C{pI{iLkB9NMB+-E zm5NEf5pdi@zpzH_EwcM*-_+oerUH;cNkauw)w!EgSrVmv-v$>&`=*6<_G6*c-Xoun^H>nQbZVb!~N}w`F$%ydEhH z50sTb7bzQjxc6`We*0HGi6eY_J6~~D-`;K3zr{~$X~{``DpzJ)mtH_(k@F!%`XdNQ ztc#YsY-l0PA}kSR#bA==sCtt>RiJ4TTRKqQVsU^>OmH<}DokG$c5B*?hcH(_TlDfl zm793qX9|nNVs}2rn3K(PGo_~di42Gex@-we(AF_n@6b)_bAu$Htewt-*a_PtPZaxf z(^L&KmjKtXDlz>K;kn_|5Gy#RP(zYcJLoqI3?VXW!c{5ZcyOVAnN$%I_r!3DBhyHz zZo{AvqY~;IR!Zq02g^k}d8N*(uuZUQla1&NYt-nP;Nn1m{?$oSG3^gEB+0e&efCVs zB1%lDwbjU@?QT3uO}c|if}7{XEzP3D%D)0rh*aAAj(t)2Ngjya^7c$WS9w)m5hX$_ zmusnFQY|SwQxmBV0g&G>Zg092bXNX#A4tMA=yDW;*zf6X$GxaWM;5`f#*M4+hW(^y zI4yTwoYOKxidEb6+y3{V^l{b{S0&54EuNABCp0lDfCi5P=S&myAsu`HJSc7ujZq7A zDxc=VdDBZxc(UQa-m*qb*My6M;#~SiYAUAvLk)>?jrK=YX?TLTq{Ng`Tj>%e?bhz4 zfr8vog^J$CMu%ewCDot6g!*X&XeSCH&B=&RMQnRQ;`O)5fhj6Tu3lI!lvIK&H(i{Q z>gQW~-$j~}C+W;~oG#7(1biDa8U;ax0jmHSJT^!-K+#~t2=W_OMa9b|>Z{h`{tP55 zG)SYxF5Lyk2l3A3fS;Tk$kdurjO=(Qn1y&329@l+^A4 zrW~5a;6f4wQO?N_%YQsKC*(JZ=QVMno@K$Lrpdxdsf2P`oYSlJIe+!O{BGc?q$3-= zvUHD>D8DgMoltgD$SyZXZ^nWKlk_C+8Nwy_29tT@7$~o-5JNZuVBpB?z^J}HFVTC4 zqhQ)U)R3a9BtIngWg}J%DIw^~#jS#tlu;U}jZdKSY|mq~h0#h`s`I`*K<7No{-*uS zBI%iRB80asfV=QEF@Tb|6Q)y&4*)|qGMfok=51f)tc9(_crLNIw&CfNBxrTHef2&9 zeum_HAunk{E-eeRdan{7Q#bepf7Gq!i5xho!N)uwN(OOGD2S(k=}4q4QqmsvWo;FrtEMsaF6L)` z_LAzL>G8}}tEHMEm;x;jTBIl<2Tn%Vq^f-*>&A`!R9fd)y(+Imyk}4qVi?oW^E>zt zHSi#;Kn}$PZ$#DP9kd04xpQb?_ist1JL)V66s;vbIe(#f`|VrcmU@gqrX{R)LX`>t z>Q?1@#mlWTqz+ zI`LzhL%(KCC&77)Q>aIZ9C;W`4~P8Vx+VVOdY-tfO@2swF}+1|E{TD0mO+9E;$Z>= zrXx)%EI93d z-7|gXnJQ%sHPwCaQOu3&QuugEZn}^I;#}0_BBgfF4sMF*8d2E&n^G+_Qam7CZJgvE zet4PNbV)w3l4o9r!iv480`G2BcBW1RaiLL0MP(pugQ-Dju{Y@LMW6W{@rhnhUd`*2 z!m1Ojxun#x-0q|tLVjpV@=4U_Eyi;2gl!_O76|ByDhv_XA8b-mi3{s?`=3%F)l-2D zwPNbQ$6&s?E`*N@>>{=%mkclMsFsrcI2cK<$&dC{D8jF_wp^cTRt!@f3Fb{c$=#t% z+38T~{3>A5MeIER+?q-tJ(dtq7>fPS^#8l#vA>d~$$Ycp#Uq%2R+e(<0n#jP$XktwQ*f)|QK)HLMUfE2n&tyF*=eVwmNH zj&#w~?oZZK0_m}YfWlDdhcNf$gSaA3#J?wl1iy6QX~@Hfwmqk<;)47`808d|^-YGQ zz2q&ep|XY3(Lp=j-p0JeBsGl7s9K9p|ED8@Hp(1j6z{EBB2$d@<$d;COAA+ zZ6uO&L2}V<(L6~o`D98~S=e(tNDv+oq>%_(!}9$xySGSMe#zaW$GAc*s!Q*f+?t9Y z^^X>2oc~Q9br9EfB&joTW6;n}@8|m1tV@Y*`_^HP)<>;QXZw`ZPr98Xt77jN!`*;EvQ4)O zpv@3tkmdJE=U2}mvF>8l>$u9x!5v=qI!@|>$g&Ysn5L>XI**uoO&i7ZJg1fT@{QoTvFDbBsb zmj%`GdFn;#yt3{E=JsaYsC?~Oy2)F;`#{E6jLD7FlW|D3*g!r0if@p%m`6nwAkr$r z7TtK8+zO8elW1kKxuV8F+~uJz$9OdWa!CSezyyRDry>a=%#htm1RhY1mI_n8rEMb) zL|P|Hx&ii~x=>SmfE7NwmHM?hrf`-A57w7^brL@-AAW)F_!{nfbw53vu=d;VwEYU;B91UiJQldl-f+KG?B0%RT*3I!prSsKqkyv**YcgJ8O`mWpDoLJ8EyWGT7x5d)^^VDV zBc@){Mln5m7ymeRvUgKpa%!LuTh5-EAo^>OO^X84R6^})@WglGQF4kQnknh6{!zK= z65UiUgGOzNkK%UgtIY<`k7=7%FQuCwQ%+?kb)&GSlcgKD_%ucYR(Y&T+CchEnOd$t zu>YEVqRsDK^XvKXx?YHvOIgKs4$Qh%TaBoB7Q}=L-A+p?Rl)||fh5_bSUx(O()&XX zOYQ=$H)tZNAfFlcyBzTi<1kz@qLm5}+>^wyJGrYj9AC!mPDWkWskuI4>c&#tD5eVo z3A44T{xU^`jv>!i3R9K{C3?|I&uxdtBfWgu$mU_|ZpLWT15yFI-{&?S%1pt=xW z{vxn}?yfIAHynQdcke7RpKj2-6|SQ_l%{%;lr9XmVi8b<2HqG{^jmLd_{z zTj~)~XYNdP%(x9a8ZcgBcXFx+9=OkO!`waTx0h?Oh#?$e%Rhrfy4}pArk}{F?wlgF z#0UV=j_Xx6Erk&3{Q{T*Y&j?M=o;XmneyqC%yQKgA?8kBRHljVtt^8pF7{#VW8myeLX%31ueW|0BJ81u6VHCw_KO^Mt>>humw zGv*(ARD4mXv}M$sKg*J-^enx5(r>TVWD!F+#FoDYi*##L=JV2KYR@TRON;>M$goHm z!!i&+MK_Ah?6Klx9$#aqX{P-0N@lrgi}2Zi@r}Xx9z>hZC~%J2MxWFhZ>~jdc3;36 zjWlf8cOniq@O~w6IQLlomNU5xixvlFu6MbwRE4E=Q>a;`F4VgmA$96*hgY}RLy~ht zc-+zNbjH*rmr=ce6UFFIWnyN%bW->Ujim}))Kun14-Undnb*pRhDtHhv$IJzJtoEQPLNNPC$^pd>c_%} z1q^YqtOP(Ui3@Bv)@?pVI2P^3_-hca1|;2;t5gNnJ>M0%6=;fe8RP;&r!QZQp;WY4#;+DRDh;;&AIm-+LmYUn_+<5wy>#Ws`ae~TDDW6;tR8^s;md40dN;`Cu z&g->LW`XE7-i^?zEfbUVlB=ndug%g({qpnxv}1}hGoO?b4V9n9Eoh(z-6Rao^c9eP zE2pKKWAAB;!4?xNR7kCnZ8{496s!Cd&*|-bISKuB07Tu@RVuPL!F!84bqrGxHQvY7 z=l7i75ifeW_~!53p%tvN@vA(DP|8~2ZW>)bk$2>7MT-sB$w&S0w*&yKl)V=|Q9vIB zI3`CX>Erds4!Kq2g>dXRP3{+d=)`n5pe>(cC8Q3{2P5VD=`;@}h;$KKYN(vrDU&6u zVP<5H%kM=VFG@+TrnQQd+7AyvI~H*kvGu{+E|G>S+6v>8y_gu$@_R8r#7J{Q+HZ^D z77w;XIub~el_Iv5ys}MmSGy_uM6*j2@OR^*dJ1$)wo=M@dsn2Z0Aq4wl8&x_{Nir0 z-V!8H?Aks$F&z$Q%NMD1Ge}ZfIe+?=JUQF8*}Z&F$nrT^O2^a7mkZnba(`$e%dg-1 z@E=vm$lVk8zopVjL1K47$9P>AJp4(?=aw{7%TaZIp=(-HF0$`d3@I(1Y1 zn)(M3bP-w@DeF($JeVNUF@73IWDX+8$&!KJ^m20H(!1F-Psj4>xBmQ>%!YOblP_eP z&r%BJCbsS}CigMMgBWjseEx#3a4dR(^3eSi@Z88@kl8RDG0$sec7-66AdJYI8*LAwLtOuy zw5y)dX(gbiRN#j3@1$o*R>JMw?-Y-6CRw1G*Rw`XhhfFlK zM|lm9Csy*f;mOVrKaLI7!Fj&&+kN|ia%js`Hr785DN|YK!*k4EEU{rNsZr+OggdE_!q#dG@BwRl3 zPF^dm0qe&Bv#E$mWdlAu)NX2n;tGCim6Ba4xUteNfncEKR6$S4h9A|_z&&;RPOEAvE<4v$NaU;@NINdy;eIG{d~ z}7u!}5{CaXIJn2l@_A%qf@j+iw zQZ(rcEQ!gj`%-+5K%#*V^g=lvw03)qp8_k99xv|NG9(UxBSt5=SR@&*7M%Hsp(Bi4GZw0xX*BJK zRhEJ*w(mIfyCQ>|d+##c26&d$bir=t>x-v2`RUix4YNbH zG;)xT=$lrtF7HEEN|Gj&MA1mxMjR7H;%N*q?IZUo#{mf~exympZ`9 z?)0d2ZSd z10=LmvR+Kk+5gy-9vx3o4QPPC7{H8{v`N(2L*#O;_seN=Tl7&d(nQioC4s@esIaBO zqnaC8$)vtN<#LiIGM>JoFQYVV5;9Ng_#IVM%r76CHkTaU z>gA9@gAR+ibUaBlpaBA70EZS3A0hxINn6!RoiDB1quQJkl=!Td1P1>}g++&Ha+ht9 zGUX`1K$RgtU6^e}ATD&!+BS*^kDPaq>R2sJ)SRfo^i1+x1Om-_G=L9q^YpZ7tv(&~ z#J(u>P=Lxh6^e^T3a)Yb5~E)0_Rv(3LU@%`ilroQCiaCgx$Aw?=9-6>dby#P1dF+J zJTO3g0z`-bgmysk5CJ~b)VxJ1IbT}0N3l7%D(N(3Nqx0mlwrX(xy!ameLM0%l_5Z! zm~Ap&;7L}kZKH^A$$18;UaO_qeW8(*7xoBN%EAqn<*Ww)-10nOrRJRx~XMg{yxWadT>*?O2!BQDj*N4SD4Ffk^Pcr6AI1nYPsqn|oUFaRT{&R?m!*RHmWF8d*^@jF9t=4L@n2>2FaMjW4L{(cq!{6QZt(MYd z+30`*7RQNM6KYvZTFWYAeG+RhPzqWa6v!q_C&(@(=Qm}kAJT_KfDfvQ7vvKG$d2i` zMUyQ;!WgX=?w1$eR#mW{T6QaZ2j7&VV=&Wpe8^^yKNuHF@__(E$0Q>qVOJq-ts)w#VqRFchm&uc6yZH+ zE>5Hz4ZJ&X$S>g}!|P$dje!3M@Ze_iZo2x zMBo-?mpr?Y*Q-RG0rPRWO&R)0ScR*2S!_5K|7{ANniidj5-aomPRGDs=fQ9%2;SZL2lCg)`AXH2c&_ z#3{|?!zhWbb1~}a(y)ZBtV>m>e2;oCIpoUqazz4_DgJj#4}! z??!^5%?5*X)m4ePc8@}m1ZLlUtd{92w)&WAbw4zefc@d+apbW!YAVr=RjZiRC*og- zYrx8+X^GoSltq}0?y9Ads6XIsGG~MYGOf)D5}s<5cA-d3MRaSuAOD-r{*eGWFlm%7 zUzU^Pm==tb6hdBzszi$;o}}V>Fzt@|sF)yu08XRj%2*jLOfZX4?l*bvus_}+3#Y{( zU3HbA@9Fjk+@%I2Qa@J9bQN2EPqj5bER=wKczdlp)<#Vw8qw~n;99>C|3X{?Rwm7q zxF1pY1{1u{gKEgrViZ;{qA54!Ozf%lL0VlkZJ3h&#{Gx?<+Ja5q5yg{X>JsS;F6~r z7%3^(q76}%XmR36DlTABP{pa3_*iXnSv6WOrJRQARB$&&-En8a@}masigxPm^S$jT zam#n}Z}e7-SEkP)XwIRkow582c`Pm9^<}LkBmMRlHr4E&N68{ChOd8{f+0-08Jj8) z!mb#S6Gh#N!{AmX)7JZ-;Qj5zEPXtmdXi(wreKXp&^g?_kPm{>gQj#D@61%k5k) zr3WG2)l7{kA8?!A^8?JQ{(%$8#2~1xMVO(*)ME-Ta|-nisEZ|vDk&svj?@FpV3CM( zAr<}{Nb1FK-Fj~cscBRII4#A)qp0AhptKDWB5XP&Zc=JJU_`b!YN+Q z{iF&Svh(1!Ik@s1A-oBO8(5NZOqm}AuBYVCnG?x@N@8xR9%OQFz_D4V;M$zV$hk~T z?<51|xLxc9o0XTOqUbzQzb#^=PBGh!(}&tzC%bN=I$GVykK<|!p}6eJbuAG|*5>dPUk0M6V=Me*k55b?H-D!EP}L z7271yc2ZWfM!vnPnQBV^)FgBL>)o%IXVE`+BmiEZ7GcKS)nf{?$w?(Qn(fo}SSM)> z+n6oD3>Jwjh9J8(%%EYBo#oPk6b#sg4JN*iYsE7|aSpseIK{r;&`NFg295#?Vg)Ybzk(L;gdaDUI%WFq;MN=-qsid1t~Fd%}Jx@Q?h^xW{Hx; z=jnbC@Tuy=IPdrb}-HjRgG;(fX|uFM&86p&H;D!|Uh1a@?oHGC)K;a1_cEkiF0V~MPNS4|gt!|omy-C?*H{UMoI7CJhyT5J7sueht_*uSSJZ~LB+(J!PFwV zMB&A?>s2*op>9l^}GMq=NRRy&WbH-9Q{ri9@(MwUM#FT3;-%7<_w(j4Y_0} z1I=Bt7{@zYF(;$Mlz4+nI)`p4q?Ecx4+Je&4pjO_%_a}592I@cQ<@@qE`_6Q8plCo zXucm_TNrIc`fRGgP>w&I9(YXJn*^Uq%Pc0bMXvW@?@6VPY={@lR2D-+MDIAQkyON4 z{>c78`t!uw>k$LQ(Db{!@mAGLYBn`fHm9PabhxZ-CBYu4F4*D|03qa(CROS8%;GrS z!%j@xG21EmhOL?&-IAo#SR|efNv26AtRFs3H&_K5W0VkFG)-Zo25X`{jYDK;Uhw|L z8oH$a%}SJGZx6h6I&;%K+=N58TrUThv|6m6_0IIpR4Sp$Na?KaYiZMaHD5xdhBpD+ z3HDS38p0M4qm&td)KZj?U;3pVx&p>E(eDKcMJ1^0lC6xHGH=7lk0_-$lf0CS)(I>5 zuGDD9)FDIa51ot_ac@6YvZ;?ek-2xFxd1YsXwutcrbgvdlfk(QRA4j^I|@bZ73EP3 zVuA@NB!hZ3_Y=L7vJB$}AC(!YdML{X(Akhd5<&Nd-ruNVa?buHf7eVboBnIN36>Gi7>Y|5(Z9 zO_eB(bjaSYW|UKt4>W20Ir8;rO9YF!IzGG@th`xpShg)c}=|w2ym>Vp~%-yM8atWURA2r{e|AvS+6V3&Eh`4b0WUaFLfFTa}bDi)!Rr2rK#VxrsVS8ZuOA zAGyjOC2G^sFK?dWfNT4?z6sj-4Bd17r zwwo-D);%SIZghAR3nXsK;!;kZ z&7XHtbXxq@-#Nh;JfH_H!7*DpDSZ}EZY@_Blt;^u3PpB5Ifwdt$}n-TU@jD#Y?;`Z z5&%?~GHjGel3(;+5@{>rEYkCZuNp7E>(`@A1cyv$G37}Gpy~wD+zG1Kb=H9j2JQKh z*rfI)-4hQ)FM4}4Zr{uiIYma^vzgLM%fL+I+;QNN^a>nHRA@H^aWtw)K}%6Iozazr z(rUs-731j-L2-ef0Hd2P6_{jF1RE&xW-Cf6ER&w*t1|(>|5fi;==5 zd2Vqu6t`o_L@MQ!!U$Z=k%!KW$GGT&@NF6 z`Gvf1Nja{ygV2eJlU9_4Z{nqkEP~OeQn+(Q4AP}fA}&z|T1sfZdGbzmWdoefpt%aq zt)hA~dIIF%?7y4&MJ7eCWu!pi-yqr8E%<_xnXMhCymO+{o=WR4=|=2;_xaRFu6Nf5 zzm1c!h{15`v`VSbQhi%bru3zo-wjrVmo^Fb{Ty)L1vD4g$vQ=b*CHo+NMnPvChN6! zhmMEIhNUB^B-MwAd?xnho8P3nx0w6;K9GBX+<8XJS|~&Ppdm zc%xW#TBX!zseWvmDP?dUdggwv?9?To8dfwunA_Y_H=-!aLYKwH+iDw)W%CIF9>o)r zX#=F#zgrzAOltZ``gHO6gz@|;1Xv!4JuFhz-1T43^F1H&^fk@lPj}rEJ_xKzYmgOr zEVaw?LOFH+(h)`d4zz(!rmJ;T&yS+H4YJgB-lIqFnPY`GZgCwqg!82C_WnY#X(|VW zrVc;|^u$1%v8#=!i$FWr6W@pt5jOPS*PiT{t=$m*K5Re7e_*(d5{eKV-9(V!wN`GZ zn$Z#RoO3(HrMPA;RFDon>1>S{nd5Y=sFT#rqRE%D;Rf#L5^`1C-Gbssa;)#6dthbi z1)zrYX&)+=Kh%F%CPgk%iBhG-&@i?mtID(k6v-p=CgS{uB}#|vxN#ulHgM=(|Hd&bvlzuUE~vsjqS zVkAd`rR9mX>#$55S^s3`zDc)C5V;kN5k>50M0wlM7A-yr>Kb@onHP3CppjSe12k!& zTW&r5hOBdf0J7%CTicg2JSaF(u^E-#2b%z&+EM3(4pY6g9m#UCG>Mfuif}B!^}%}D z*IQVYOzHsn{?S;XO47-A+bp)b6C7o~*cTd_CpL`ALp5$gjgiykq%=^1xuOk0_KExrE}e+d`)$x5$8_!cB_X2=;M&L<6t`LTs#SJ- zlW*SpH2r9}@=xQ*0QloTZgymUOpq)mbIUf~q{b26OK@@D>*iI%8a((TRh7f>bi=zp7%R;&GnK}imi~bN=}TM4bmNz z1=LtBO<434aJU(JPwf;<*!VNGQmp;My{$PtZ zx95V__kEqIxKIUJ7H)%vJ`x@sPK|pUF}eiT+V@(z&8y)wSyz?z-)e4DP?I6Q2i;_U z#lg^UPZU!khZ*_-JwtuTrrq@*frNnN-4HN#)|Pe`lD=+E-LF}m!t`c zo&xRx=T(=Nk!0vhfwM|d?k&Daf#R|HqXsJ3hCJcEr+5=%*0me%PvV17(F#`c|hA< zb$J;{?w?+UfF$MK;+qsGZmU0Pqy}3bO%hcPjTMRNQ|6RHYT?AW)d2w*jAp60^lbav z)5}(jgwkQHDszZGSD_v`}KZ#1(XbZGyVJ5!W`Cnnx?*X zx9==KwFE}pq2wCgKsU`w($j;;I$PKZ*K$i&{^QqGl1>1p`o)YaL-3*Kaj2Snkd#mO z2IQ;v`ZE03*-0ga&xstn9d=uSXg}^BL(s_R5^_x z?5sR1j?WdQjULJuK-HyF)eaq2SrT^yAd{OH76`ETX1Nq2MmP<23)TUsERKm<)sxiEyCa<9%jkWz zXKTu=i;z)P!wXgkjGual-gQw{2Kc+0oymknAGLQ3VGI}p*>ycTD|#-3+7H822M|U0 zHkF{Y0#H5^6V|09wU`@o5C44HNJ{Fq;vQsHx<@c#jD$gP)45j$& zSlC)<53Nzln&V=}0^c$6K)&4}KX3(7YygZ*QFJ!=MmLf>2Sjw&if(ABEJ__{9+jMy z>#SnVz)dr?VgO*7_doT^wC6eRw^{jm_7`X0H&0a z&yy0?iW&Num_%JFrnF=mrh^7kNGUPR*$6R07~Z2EjaaG8YCm-J#BywJTKrVelir>q zzT*$tjap9GyWMF{)*RhP?i3I)x>m&NrFXA26KN&7fGoR3F$Ljs_=&?5;l5ZCLW?OE z*ZHC6I$~K87uG+PReC5)RifOGBID}4qU5x0gP9(j9-*b8!?a!@^U~8&1+G|M&6fLZ zSI@9hlXGVX?7z+3(vj;5 z10`<-sYd6skyZ<}e9x(EyEo0Mo61WYUiWt6M=re1k zMe97u&7V|B2%q$=LUdBj0;ks=&?lZk-OHU)D(CzZfC{(w@EISmOx;C2s|(M(5MgY6EiT z&276U#nx%%HI_&ebD^0erND#$w?jQ+yS_%iUt;)rq0gk5a0Ta4ZnmT-rbhV0EM<^JQpK$7ug=ixKH*%4J`ongu+sG0J> zw=q_QsEE3b?A2*;zu|hb?Gfds7$N~a`KEAPVW4n11e|}gv}%yBJFr&D;Gz?46VWY^ zDCSZ#!Ha?EY8URsqt9*imUh5jF`hkFfwXXOPYdI2UP6v$hPDMeBaza+ha@dIDyMbyJI4yqm@H3%)~ab< zNyRn1rdyVyG$Qr@XWbv@rY4iE(*)p~^$%T@2bjXjK?|?svM7i~O>Cz6P#-<>OvBYz z_Dfg+0Z%6cXaAipaWWi97(7to{pLP0?EC$p{oJ zz6jA&bCzq2-TOI~@=!EsD&4Lch%AR?p<(;vIhL4Ex%On)#O(2f-A?k8Ym>D)akUt< z_zjsTs9K6Egh_YrRGNyWNvFfvHnz>Km9*G z>l43Xhy1QG5hI^w3mnhL7S#mlX}T_jMSGE@luU6WrH`ID8^@)-)8=y!z!NAb{`EoK zn%bPKrQc({N#DKxEh4DPMCAnEI!C{qlbyZCW;A;ogUl+Fv5Mwydetuo{al-5#`+xQ;AW z9nOTm{)r^Hy_xr#cDO3V3orGal_ZSUDXwK4HW3TsQh+wRmcYkebn&+z{o0&EZ+7A^ zN~uLy)m}VJ%BA)b=Mpm2+(_wDIU5{TJoluH)B{bapSIt^7ZspA(;l$uD(NRR(wb0F zB$@PN%i|%qx{E4;G)?p@o+-5`obK0?d2f1cL{m5vF-wyI=gMo#NSaEw^V2|KKl-1O z9g=<}uK2C%Mp3Jfa^c=4Ua(d#b6;S>dFZ3WbK#NNXSL6}{0u=?yx!hY~STCU|=yzxinjiT}! zHWHkDwUUtNw=`M7s5Z5HlzH^JXYI4Xay=-m4NsaTDKa@ETd@PLRptl~jQt|TVD2mY zR5pn+iK;MC&`R@ko^RAv4ZC$vZ{!gqc|{||kOgKly%UD5mU?@sav_}tuO&?rJ(FkZ zQi-G5egh_XVB{S|6TL^o*kr<=T$s~2wUS}=*_(tN8+5c>%eQ#@<_nz74&v5evQ8iM z7!obHbpl2|07afqLr`E=H_<49(%SIYH2I!TXDS@OQ|1T|VnB*3Gj({J0?HQBjfx7C zejlnvuk($l30oa?=Fq+hs^updDTXY;PuiO>oNB3$mnj$0Y4KXpB#|U?b*aQrZGJax z;^K=UyzDn3#x4^6$(7m8i7`}8@#;;&e(^tx@)}9z8oiT$Ba+KB{q3)_?SolGK}d(7 z45c;Xp@yKubdrEHTZ<)YNpyTqs52Fg-zjqx5bP~IcAZY$vrhrF*^+MQcN#_t6?McE zZcWsNb)}rsoGPfszugVxBiw0S!e?d*@@qgvVE^ylLXWU_tsktPr^GRrSBtoR#GePh3QalOx7rEbV<)kQ}2T_vZ?!2M!~gVsE8p9 z(-Z^<^RQbJq){q1rT4Dn(7m#RqOj^9wu%oE341T$QsT}}|84xo`ybt@B5PP+IQ+(x(JWrnTt+vS<-^K69}3n zpXh}142UBrM}w_qhDD5vSR0iYK|jqu&=e^(M^w!bQWI>{MAMzXNG;1-h?*h-YjP5}BTd(_7fArh>rarl%djsRZQlnCP-BOr)X~AvOmj+H!)uzoV zy2q9geUTeQR!N&jl}rk(w?2$YRlMXr5wCfUXU-oRPvMo2s2<5A0qU{3ByW`-c8QhJ z9~LYtDNsyvZX#U@Tn|_~SvAeR3FrZ-U79GsKb28&X_!dHc$G_x3f!?ikY-GfUWf^C zejwAm3d9svt8m2(;NvvEQKa=Wa)0}`@gJ2M5RmVvab+0>Wwkkl0Mjp_0bS*46`Npm zpqUnT8lEC9-RVn1yePfUjF3#PEm7BW7}3>*fJv85mI9KaZl*9 z)qE+w5do6~`Q@HKL@gz2G~+6Bf+)kKFLEjmeJLghsJ~2?Hg9E?Z&;cLvfQ0y&=ZL` zaX-1IkzHOL{4?~6T_H+X6=Lhjz=`DhjIXGBM8I`|kY;JBYGb5jl-AsXcqoc)*Ol;J z5%x|i2iNz_?y<1|kV9I62y~c{#2g~oZ@FkBxkOz>XBF)uM)N#SISR>Ce{KjwhHaXK z;H57_{H_g1Y9QwX_j`WHbz>yYRx@})%a-zHu&ENd#9CS zt?v`YZn@oEF)xO+1d-@GVU~`L{g#VHl1tQ8bXL(mVl>W!4roF$>Ca6Wq`FSh`15@1 zg~%WG1h85v*2r;{aoRgSlvCutOPEnGI6PSJXWs;5tD_v$RXKG18@@xJw{!>Uw0DiV+kkkQTfC}yQaL8wD^?S>ZKp!<-G}7g*YTz_ z?S>PjXvjT^AeLgmhsTlKyG*cvN*P|&4z5WdhNjU|AiVHTer+ME#1AiqF?i9Ly;$4` z`!IkZ?aYe_Pl0C|4D2Ug`X#_{7%qNYo=381x`?V2;#ql}XsR?`5H~kFM>?KfddGpW zZOC03r7Avz6?9a)2K-tmCYI6H&oURiCnweNL42ecP$*tJseu91ayxt91Nm*NSjdE6 z9yNU44F1VT{gd2+E&{4)>HT`zrFUbv40%exQ8l@)?U37h6qSlgAJtWt1k`Xy2;HXa z$K`wB-35SDqc!7grHZ<_k7Utw5LJRuovHPkQKa^QxQ>)EZqD0d0n63M&(2oRC260nzSmOz8cWSs(+V#vUPMU9hJ>R%H*h(ITUI2Fvr2VBCAT)a~C&W_}N`WVJ zu_f_=&M$P-^-ru8$ysgI<+-U8EA5o$ZI7ff0pB^-ooR!w)`P0~P zX{8*Jhkb%pfI5p0*vz&{qDmIseiLp5as?b@L3Bl*qk zpKoKW#>$IZ7NLuDaMmS%=tOBcZZF};yGu#|0KP{OYVBu5U-nj}@J`OOv1fK(P(+#+ z^2CRZIU=CTfpvl&qho>r`?%h`gl!dT893pqv{v{SK-$~*8wldLKngk(m?;%cPx_s6 zLs9s`agkMvnui_&CX3q2HmLhZexsw>__pyqq5ZKmV)(n6e)QUHJvl7t$HsNv&ocqeDNo!`z2ib(S!&+wtpCMkX> zp|DQqu{fp^ct1l#_}q%M6rAu?S}T+iAf4OsHxMK+NJYoEX{F|!p7eV;H&p9D!XT>_ zHKj_63maV%hE*^TSc31#&qGy`lX`(aguZ^Hu41uu9 zaaBPlec?B?N#vI(vvnfV7h`vIO)*M*kZ8t4Jvz8uDXsYwGT#vlergyLi?^h`xGNPU zKSujCaRv$jz^>pUF%$~Ci?L$bptUA1Z#$t*%8|NBTR|<^hKx2Xs_^r~RJKlnXlXR_ zLGREKtz;D$(rtpQVmPWJ%PJ*I<8X|6$pDHPiY@{=g zx7g|^DYIsJ1yVZ^8Y^ZFsko9fBs$)w3_YXLZ*ZC+dsy563F*YexxcUjH?tY;bSZ7u zAn-?|4O**RXp;S^gt{+FO)nIxh`b>}+@<@bvTtR61w=$n8EI^DeM zPs6R)Mq5{rAw8TBXOrTnanRXGlpOdIo^*+1l-g2_DiAG^Wfd5dM!u$v)gf`F|F$w= z5Jt7HxLNnGm^(wK43iSepSZ3uKTBBk5&YODZ;P2)sUa((f3MogkrmTEa7yT>Cp(L( zvWfJW`=Q0^xJDpJJ~K==Xi-sTR+i1Da*#`1F9$nVe<>%z5>O?fP)9!Q$^hjsnUKDQ zBF8(Edjb)`F&1VqQT}YU1CLw_=%NZlOGH^EYox&_a2qSABW3!#OoljcLr?4#S)qk- z0wWqJpSyZBWmBbD>=FFhrlt40Q)|CO^zT($Ie2gJL;5kyoG0tXf-MpV`(y4G64Q=A zBKex3x;u(rx+`sv_qN*&QF1*qmuO8Od#9LqmXAR;)%!Zeeu z(`GyH$hCkj91blJWtFUv218La%q$X2!NtAWHkqG=eZ|8*MZS}K0wWs9k2Q+&X_98v zm2M>!)S9W48ZsF_WC|TEs_NDc#S3BPJXtpuY>`0NA9KHum{xCNDW+~vsHhh!%j|I| zftGFoJFvFOY4YyqkV+lVD+Q?LE=t%NiX0cJJb{Sd7z@)(woaSvz?Dm#Bsd&eBFU<2 z2ECn@i&@f($>QmejC_T-1$D_$ox6%AXF4%>oqorh9^3g?S}$eSG?qUl ztwtXf0+5e0Aou>ot%A+ss!BLiU-4Yv9z^xo429ljSTMo8qj>_VXi4yrVTXqc+&41b z9B9@;5-k1c$-HopJtC>Xe)8O0FPb@62<0%lyUMa~5q~A>fTbRi=Kf%s21dX6L;)n5 zn%v<9;F6`{VDXdsiFOS7Er4S*h6sBqh3klGqvbe!xC1t-NKh*6?j`rl(;R%ap_(y< z6!EV2-<%?T?WaBY+)CK1ucsgLT#b0^R|)yb^N5V|IUOU1Gfv!!mweV#;O7BF9F5ZI zOC6B9btH#`hSbdNR?Bb^Mvru-#27@6AzX-pV9L)}NnS@+8!DHQ(%pn*cq}-Dn+x3E z$~aiJBdNt^Vam#+Ec2Qmslq;aPOcXXRyIsoOc7^%QMiE5xeZvC+6qV~H3u(-QWhB1 zT?(@46pKG|+)0M-)=wk*^(NLW#@JJ7>9QSqUQWYi`9-uPZ0(3Vi(%c2{&YUBTsfLb ztBSF6i#1p0IB_dp@>$bf{Y+F_FhK2taqrefkZ7pn$@LvLZAcF0#h!URKB=;6E~GJ~ ztjdYnPPfTNV)*%sn1nCV^bG{Gw_U9F=Yu`7lm}|E_xox6G`3%VY)e6yDRrhh8D}S) z9sop&xj&A>GYE&oWAK(iBIVC;Y1E}h%2%Ze{qzEYW{ZL;o+yE2)5!oym8E%7Dg})M z0%?Ct$92hJ0B@(9a_$5@bmj4?u}&M(6oa2?f{3rT$gZhOJ*2E!Ua0LW6NYhJUqH7D zUqsWlAV9mw-@@xBlT#{|*=Q}<7&tV(-G9ix2uXhsW=fsupw}W&-|qoHq?kK19M2#e z5|6=K1__j8xMR0#epI^mOlyG9Y$=$AJ4&$WHl={1N~?J~jwonJp!SLAQn3wQD8u+& z;l>|9;;gDXUNzID4as8OSrSBiEe;85r5>uRdY}V_SZh2!fo@AKeV98TK)cBA!s|Pe zQxc1f7qwKmEI2g0rTsEoRi|EHQxRo4=(V`KuSe6QIbrU|8#9oW(qg$a4l&D2Eu$`1 zRl&h}*;cGv&DK5Jxtr!!lRH3)%G#uj%4+Fd?Gw?ZVv~KbR+IP<`8~9OV6kVMAK){P(?tAc-ccw*WVW^@vR4xk+ zO@=G%m*G^Mnn=K=B2v1D6PL&J3?8j^%-YN=Q97B98*>hLm}90!!R)FE4%W+RrB<4) zb4+J99lTC&2rhZ9VVIvV9VH|3@htHO!?_%%JpM^(=;=q)g@SXYufqm~GjYgGIaYLI zYEh;JS=ls#r+XNV(APjQVXZbMXPUMH?S7$VAZ&8|gTR}cN2RpsQQs&7uRW&?l(-2I zAs+ip7o3vC(V%0JH@iQD(N&@;c(=T~E?gp}6?dlwfeZHyM=fPnn_4-A*aN}#W6ojk zQa&_2WZ;5{2cCUmViu+J2NcV$iM?x)G+*tNmIP<16o^z=5o(8q==Wl3(uL9{&@U!S z85P|%KniU9)(PBX%nr~>=h0~%rRRj`=5$AE@7*%xTh~UyJcR)@mGnGz;H7p#%14lc z9vYVL%|uE}c2s-w^15`(-ZY-1mN)?$t39l`OYBMmH)c4pL$E!@*<^?(y?RWgP{Yi5 zj^ICN!Cm~w$Lp>|JmS-ySQWK>-`>a6xbxD8FcM#HYKNMSNp!TZ3%G)(j3|-)Ko7-( z{a}D7qaE^BgW8*EEGxoU=245``toEbi3D`sy!^yg72#Pj2lc9z zye3stajCTOy5LY=pL0Y=oowaJtXROO=sDrK+05w$LXQOcZlGTM&G~`vQYoSd!;qK? z{Ufk<2qLEQ=(9>Wv1*m>i}I`-l}y&&i2>-BV!0o97nHQ1mtd^ie8R|Z18P@rF!|DT zv^L|{;OIDvqDG>g;=D-J7}VY@Dl49oB8^fF*9#Sq5LUcJks+g0N+P7;imG_DaD1tv zic6Y2FF2G}XHp;fYd{`q%>(!pJttg05?+-OLHtNv8fo+5ZJ6n_RFY`IEG4Ew{|M|I zf`|!n=|H)N`7v0?8_?cOu_~XZG6U$*eZjl1q&3t*7E&liEgBQR!Q@NV-N>fTJTtf* zhVcw`NaW`UsK##6T+vo2o-+-NQVrM7wqzyP3I?cl>&E7EmE|8pJdcX$%Owd}#Z{Vj zaZMFe_?{bS^-yabz^CZ>!u1Z0Q$VK5@lR=_&6BrbrW4nV-IFNcD5kQXM0%SVF+nbw z=E!nM4haGBY*Vb_{q!UZbm_j}U0Bi@>L3d#6r&c63E*J78~Gy2-00V5iaSdg?_!5U zChMZ9mh=`T-Y*2VOLW?NPDfUPoq~D!MQPP`SsB@~Hc~OYxh5g2xI*L6Eg_s1x%0f0 zR-@Kj8yC@o;u=t&9Zsgo@ex|^Wp8A=&PpmF3T8=pl>H>o$EOq1m8fFYSfxgQJ%$Lh z&+PV6<*XLd*tjqBm@jCOdMRy8$Sz7|6I0rvZus+QP`Wp!%EIZoOzEc!fL#sP8x_zy z#9LQa$S{)VqbOaS*Ns%(4d)YjDmtz12E1#7DXDS{qE*kh-l#m^mk|jOz&6~$PH~c~ z7Z57;ZI3G{rd|f|o~A;lw6#YuKYL8LIi>es(Ga3}dd3OV2OCtWF-)SgJAMsrp%|3) z&~b$w^BP!^s+HT43DRT~1F}U*C1ZA?O+z1 zg%#+eh&uE>3_qD!i=l8=8J*fNN0Q?j^Zg^2bi{fqK{V7q{sKxAQ~BiV&gj*mAvE0u zQ(R57E@0f<-EDA(;0}YkLxQ`zOVGh#aCdk2;1+^Ia3{C~hX9xFoO}MkQ>&|X*Y57M z-eO&(0j~dpiw%PaiV5*f`*(& z8u$v1(U;M$aVsuCoomYOV$p2RSbHDEp@7T|Q~`Q_Ze%4cpglY4eGL7fh#Ogqx^-sCWd&z7S0m)qL*y!&0T)=Lp_bMLK-DnPKx%s8wt4!osxpEe zv$TTncm)xu!{YvT|bI!_R?G?nA&Cdb5b0|HA;9 zDeQjibA&xTYw6g80&wQ+=Nk}cXfAR$ztetlOtH)4sN)ytZMrc`P($&m>j(8lToC0& ztJGwrQ*|Tw$!t_j|LKB%^7tZ2^YR{yiiW@ALl>v4Z@!fe^fHGz{%4AYXf9QkvuXW% zwY86qNd9IX>7U%eGvqtjQCy%y^XrlDnxW$#_DPbLWpOXNR~B9JMw0tq0*QbAOIlgq zkfga&M};2D*95!a6=FRm2Iv%%WTskxy~9QxMhygP`LHSGIO40aw6_1y#j&R_d`pIC z`^&OB;}18~jC|gKSG?AHbsfwL!kePKQz!r+@b*G1xlDl;&qj*!*F=*0zE@C_WMEQ9 z>3UUE*nsK|za^O`#W4QxCcVlbhE?JJf_~1oORq;)Z~QjGqQEiqs<_r_x0!T{ai5RH z^&?#+ZM^3U1CT4)EqHIzqM9eNndPv?isX32DI*u&J$U{cjPc>XUQz#B%KRvd6d{6C zOVzx}*S2+cy;3PPsQCqpcQ`dTSS*;L{!U44tq$*mOPzEgh7by8xgCT@$--`wB|C`g ztx`RI^j1(gTVYzK?P8tUWkP&a{IZ+3lbg5{B@-CFl4HlCrO(L7@vXQmx>$oj=QBUh zdIoQES>g|1%Lr;!qmg()^n}%hJ(^=>BLt!kII2)Pd`8fqkJK)R4*m#n$nVQpt7OC1 z_@bB43Z7NaC%7DT)+68T2E~eoTAb(Fp{mQLc1%3Hc5hT`NnRL@v-M zmBle(5i!(7g%&5RNsvx=K)j0WvSE2IITo4S8gGUfmUW&B+6bkCP@>R^!&6K4DT~g)K0A`_o_gOTQ|oNDWxbMTVccz`9Wt zksP2~Qf>~z|2XSfA~{H2K5z%>P*CGt|Ih)<42m*+EhTg+4trMzR$*y8X#SLWDX$tV zOWo=iN1s-7sIqh}&;}o?Ny^)K^9g=Fm1!%<6g)2zP9?F5#A$5-ubRguFWN4bH5rAT zKab~ zD39DCWOh@v@Ac6AYWlC)UwBBc*{#rQ z0XNFM3_mI=8SBt%6G}6(VVJ*y7|JOp#XnhzAy6axhVjA0o93=vG~&km6_1ft=?0WX;bv9b z4Qe8#?NLnSEk=mtLPPkOQ-1mo=THDJyP4rN7lLoUDR6}rGBpr&3?{kUbKV?~pO(U3 zSXR{$*uYpQM3#oa>8Emgv@YvmPreJ}_S9n?z;=?xc}p%j=@ejqf~43$b@NqE zGMBGYU$Um9bd&uOhgSSjs2-|$y5LIw@g-uP^NZ1ZOoC#Bs8H92tTat?3HP!5Gi|T% z2{?^uH^)j}P6&z?IwXi`QTNv)is;e`VB(ZdM_Ly~^G#o8@)-hk=b|}NKG>$AYEK|U zL|E%_U)NEPuSR%JJueW9Q>D4ad8$xncqP97v>v!zN`=5x{_@}hOK>V5b&QF_V2;65 zD6`0Zq{Wui(r0MUPK9^B|0)ct^(sR^ZRQU{k$?;p^)r5pY#6gxHI@C|#l(miewtHA zx30le5okRO5r|<4ww8NP6Ubs;ckhs$OYKOB4%Z>!l3;%;xZ7po+QnpmZzU0KdGjH! z5a$a%b;pEeRaL8S!H86Jl~=bk0a$DV;~>VLBuS}{+LSj%?j{#msY?FURPNP$PY=sX z`qo^lVKx0R)Cy2fQ|a78XxT3bbczbsq>}NJDVY>FDVKygxHHBL*O--IC8qsN>wg>| zV@vy!|1o4OVO}lLQ3J!Oim&xS?bLsgwwqIH24ve*tG~Cj;gY#+dIKm4u(mb1?B(x> zzo={UJQjXR82m};78p3pl-J#_e%iDV|1|puP#}G%C_YllHuHC_RW`Nz%X@&wQtrWh zSjY5M#sn;&JRq=f6QBP3W^#VjPDxbe6iNW%cY2E>olA2_n|Q~(32gSC>fEHL2|nwO!&*X<$FkH^ z8<7kG$B&ax8i5D3TBS8~>Dhd;3r&l->rzznRwx zwfVySl>)s9G-{E%9rNApMVB8Vtv>!W$xj)E5cqa@^kO`i{LPguRK|*wdr_uSsYFXUUpp|An zt7ZfYU815ZheqY#ERR>2{xocWz@zV`dpR9FBB}`pwGyUR@pr#tYLI}B~`X4$}>V5SF zMtaN;=XRw4+4~tFrtm}88@E}eaLojrh!2Y6g0s&#Nu@{Gn>&K0&%H{lnq*s_mmZJ( z6_~nlE1s><>J*yx{N7{?qG7%_hH2(558pF(cn3?v3csbPGNygyhqDQrK-z4c$3vTW$Oo zS+Gn*kuJqgb-A4AVvy}J+?+IT3vBd}UVQO67SxTkX(sUysK@5Z%R$vl!e=o8(ze1Z znRe-;S?#R)TL7afmNzecVY4D@?I!bf2PT*=i%}+RgW|ri9WsrA$)0OV^aLz5bxCyC z3mMzeY6$Y~OB6o9K}1QzwQ;6Murl(GOY~`BkNRO6>1ym6STe^zEs$cnXfMzCh66%Y zQN1IXtwu%Tx6M4Dq)Wh?UJ{DUdsha!84(-6csEx5Ym zSf~Hos5EqF*|rII)SHp|n+r&k7!@|0N>dAcyEw9_kM>y8Kd6%{cr7nN>i)ad7mAiu zbAooHZrcR{q-0Aq;E%_`b3UUV0Y4>9XgsC`%|N2=mHUr!r0F3O^d;_vh?0xkhKtpW$W zuFN`77Ddq23}c`++{+I^x~vZVjU{2EYLC)Vs_mJ%7ov_rAsol!|wthP3tomzz!wA;p9rk909rHE{K$35wl)E^bgg2fkGmLYcXPBOYx&S^vtq%^4xDoS)^i>>P@nlF5X9TtmKuo zn#<5_HZG_XPl_(WUcN3<)f1M%OyeA(z{uG-^$C7&5E&%b@UG>|r1Gx*-8m~u)#@cD zL1S@GB0-3_;c@A=laeQqrmn4};UAhz4TZJsmF0327k>)Rhu^^jb%8-b7?UxMDJwo^ z!*^-O`tKCkSMD!;W;4XKM9JAU90UQ4nJQAI#a0rdB)LbUY;2~l747IY&g;yd-@Qdv zyzW#cAdw$?Q4zv;&G`c$QuN#TS1@J%*ZAZLYFBwHX>=_)_%|qiqx!F1xh&7#y%^?V zL+p9+--VHs5rt_e!lyh<#Fb!!SMW4CauHPRhp!|@Y`kqYB*?4B({`bno-UPK*z5Dn zSAJh&sSiUs^4LVlIWg^})Q#9aYdA{#ldS|Cm~6G0_5ZlcaAp9KWQ46RQwe^oN{g`b zb#G=fq(mj!?Tj*C6HW$6W!<-HCMeN-@`!=QY1DKz@#01#rQD{H{G5icDnEI zG&=N8mqv0_0Ft93KDkD+v2?iz9#=gf1^I@JjSq-$9KNxu^#f7!4WP&KyLbn@5!mIP z8CJOjwR8Qa9z7p=1n%5R!==mLW}_&@z)tzEZ z8f#K2o;uz0g8EVtJIWO~aavu&UPbt;N<6|c$oZeNc1$W2*4K-mqXJec&PWn_6ridJ?HBf z=B#E8dxj*lVPvuok-}>^>RKy?#?o4LJdjVTMHy0I@FOzzou$7WUfXaC%p+1->V33d^x~{-R%~^q5wXw^Ek&N}`6zAELO(5$MbO|G~I?7zPg45(c)3fcm%`Fpz-Ueup1k`<4$Jc&uS_;KOP|)st=n?@W|hH&Ij(B>j?@g&8FTm? zH+QYJ5&*RP_xbTlHcrejbzBypYHYRhvZ-XIC{+DP#9=CTO>pLrnXH2|HF7>)emj?n zK6Nk4eN4+!TaUz|C_uh$=I4p?#|69cwSjqU!A-Ht>Q*3SexUG%@aEkstrPx(30TnM zEEj&Z@yGy=C_j2`oE=koRujmnHRu|ZMdkv(>kc8{jO8y|%Okzcm)UxSi0gNkaJX!H zdZ!3Yj%58?mJ}*uKPvDG*5!|2jPqU>Jyn=a+*7T=0Xbm%`!D*&c^GO>NN$5NvF1d% zH@S&YAH+In_jzTT)h)`H&bnwv2Eim1nUHK7-=b3Fxk+jXPi&?Hf*Iokk6RvxFJo`? zGS+MiR*LANx$%nyG?w)Bb@O3T>cqecTA^=RU{8suZU-wDV8R_LsaEnwf8Zrnl;lS} z^?ScQ7kat@Oe}fs(Kh<~%f&PLic{8E{$N)PS>Qg>&opb{;KQ%)k!N>1`THO2$sb>> zp95b$_V+&eH_&U&Ty`mzTDWJ902s^Jt=NwUUg>rZO6A^vVw$j@4;Y-edX-yZ{U(6{ zwk;)dBSe;B^&17C*D5D3WfW7-zo(3!$x~f=wrojsYzclh7MsdA&T1YinJayhyRjB$ ztsU7H2fO90is`V@H5&XQV`=x;{Kmc;oT+~*=RuWF{)B={yw7$!WC+E+FOv#zX3hbl z9Zp_)LvIOh^!ynjL<-v!AI~2~Q|r%y)5%ueMjf9+lU=EtdwTuUv_YL?9~zumDI2=r z+#h3*Lu?}xomzf2a|mVjy7kFt9|;J;^E$?_jFDVvwJUp$ZAATD>_&JvUP*GCJSA^M zx$GLB*P1iM@=Rr*SA$XIR;72M4){Tp`;IM+N#YG5#1zqv8mc?bRp|&(DDJd0M}0rQ zNTdAwcT9G4v3&ZR96`&}pYzJhOeUAv%#~ROqebU1B4`9u%*wxN*Az-_{&tYn$0kt7 zmu$?p_uOlt>eQ&CUs@9FFNeQnKt1C`)BM4i4@4id{hh{wefODz=cO9_W$Jfj+r(Gs z73%G}Gt%OofqP)a9a7L1b1EHHW-mUG0@J>_jZ01PhkF>``3kP`FVbdtOB?#s)a8wK zy-8UYbu~{Ya(EO>JhopK@lwl)qf`5Rflij&Ws}rzsa`i)DBv{IWrNcWVwZGlQ{j@} zz4u1_HHoz=ab48)CJSG)=CbmPDugnNbItXG`VjuBGT)aTmpo;NuVFx^>)vL~EIISt z-d`oe2R3+zZ|}&Mj=$?2a*(3+Xq#J7Cgr&vE%06{LKB)&o<>=rMpN9}f*_50@H5PY ze1VBqo0^^FPCjSV=gCCEx|4NM(>ae&Mt!C|kV&E@w-(9hs zg0}twsm`XTQ=6UFD_-YpY&RuB#Y5qX$@ch9xBY@uU4Knw=-Dgbn5#W$#oQeP$T%`A zEq}x1_?5(i`Nn3tMGEIc_cf`u%LW)W1(H+|ECVv=5LNP>(h*x(XwGa0q zA5+y5L<0~xPv5HS-^yr(--rax=SfQnA1rETBMy7%7;JM3@j03=U#OpsfKjc~IlCQc zE?T4za?4u2T~XdBS)Vpe^1)(zuJ>?S-*j{!1OCaOu>0wMJY3r8HQ*S`gUrrV)Pze! zpK7Pi{v90U4w$>^0U{w!Usy$n(eprBx8P6hc_M1+KPg_Ii)`iLZXxJlM z>_5=<@WW9@+9Qd>?Zc??`t-RkL9b{CuC-|MRemw^#nJPMFuR8F{mx zQDOiR%c!@!+^8>|wUcC>K!3d%HqLZh+Sj`%bMZ*>V&|qrjFeH_9tGjbgY*Yu;3192 ziSxtR2g$UQE^4alEXqs1@2Z|HyFU0DIH{RjosUy?^dBFuKkA0kXEr~E2EAK9o4BK1O-?RP|zq9hy@ z9}565HF0va%``S}02>@kg&)SP8Yq~I4pEzDXu-ej68pb3p?{OS>Z-HB=XokSGnHE? z+njqt6+zf_>xAgX@MY5Y7g!?ZG{?G2yny!zl!$)|ai$VNcf?pZ+nj8}%#w5K@ECh_ zR7izgmFn9KSnJ0;P_c@u{x-u76DY{-K!}0KTNnSLY}-lRk@DSGC#WYX^_K8vY4Hh} z(jXcXB?+R-P4`7|-s-NQ#h)gvQP>{>O4BYw^#*t9IYN)DqVEd;#9thVPp2>Ox_VLUlIRlL5>rVmo(YzW^9Jyg%pmc(nv z#nPIHJ5~|>Aui9XtLU`_X0wX3S0|S3aq!5*(R|aE@<16F;U9Z4{UKQQT#9AECHk`ETIjYUeed7Cs@|fiuLl4D;tz~>q`~|j z`Cb0}-k@mG{+6gpZ@~AB2BsRSR%i7jGl>yo(i1o-q}P=7A(*?COe}zH5nCjD`tCqV^eg z?R|?wa+*Nj=n>^bPSTw2pP26X?N&V7sK%Oji6UJ%P&+xnP95Rh@T6#e_SZUw}5JL|7vhACjiqSEc9?Uc~|&jY}@?$24sj!S8L|AFqXOmM9a z+V8?)D;zpjrPkcDo`l;rsTgT8oyIs~aZfXShi!rlBEWtoT*5nE>itA8c$Vq$E zERF8Wyu)3RCWo!WrnHoav&0vM0+3hED{**Ai>Ln0!MgD=?I6`G#1jb=E}9qoa`Q3w zji0?AWswB;i6_ZWlBw(233`Nrs$Zi}!k>&B^B_U%!`-eef10Dg&kC&UKQ2Qm&w#&= zbRN+$H0N!#2?uO3uCeaMpAVXY@1%(_GjZtd(-QJ!%7;68L=A;_%hpi@_hf9_tN(;@ z15IQOX!zv4n~v}|6%bXiwRhw1U+h)e#IVZQF3PfALTs;2k@GVKQgXnm9U_LUn;jqt z7f8~BEbEi<&>*B)Tl|neBdy+-I+$Tuv5<5sba6Fc_spiBhcMvKElw{vLO1%Fud~MT z2Gau4AWnllBy}bTl65dkCVL8_>Ff_8OF86x9`ifn4N6@uf!t5jp;m*$C7!U`_vP*aPpZhgYhLiyV%HWn6N>H)y4YqB#5bEltU9 z0VSo`7m2KYt1Dyy%anJKrOLQKsjVtXT8*YxdKc#89;1y&5xI0!e%s?QQj+k0AUD`) zaBh*5Yw_Q=rtT0?N#Vxs%)q)u!C0xKT9x8@rXA9tJC1)zG*G90jruUYkF0LRz}AY| z!YK2-nPb}uPLZMnT?Vk~PQP|LN_bj83hILiO;X$g9HEq@Ff3VM-|rvMYNgRxUD8X) zEsF+`x|ENMdv{TBJKkOKE!rnmrq;z5XqT9T|t zxhk^8SzY;g!}O2j4%>=$|8Q4KfOK%@ahm@(0Sk;m#+=DhjW1KFI)(HPjoL*Q2fj7i zB$0@qSG_tIaTBXmIab zxIX~(FVes%^(~WAVyKwTVMpnmUzaNgO>^oO0%Q?iluyAtsBOVeNxwa{juj=4fYw7& zjX{WBqg~Jj8`|~;Eg5N!=eg!=^eRw;r-V9^Lm4 z4X1}rce<8&Z0XsyRvhs`Js-1UE=ha}K#{c6QS!VQb2}ZqwQpr12GA)c{MjbM^|;`& zJiF;5-}>qA-S8_Tf;YXdiy;TA$d-aK2vo}^KUR5;bi%BoW*J(zT~W@rpvB^K>*-;S zD=eTc|1G?r8)|pMq9)9TC1Z3F@CQHzWki`ME%3SBjv|m*HdD{1o+T@V20|TbfOIA4 zhh*lY^6@guiB=g5hjMb5;^s{WiiVh$v5v>+ZYiP@D^t*^Ai$5P@m-U-xV#hVB0ZVU z*WXCQz1mlhCrIb_VwEX=@_EA};+F2`FIFY)wZbS|+}@HeHe^}kHbV{oR_2&NprH8wD8+;}2F^a7;;8357Cqz9U|mW42-N-JGn-kitltdv zs|WzB?Q#utG}xTGJinP%-B zBISYJwK6y%Nc{}b^+rFm^x?&Pb=DN=S!$h^SJl(Lup1PmH=>=>N6Mj7p?e{7*pf+q zt^xrW0-guXE0}k+NKYah6x;j|Urk=JLFs6WU_~Jwm8JWxuVlYyNZnb7G*0^yozys5 zM#ZDYgM`q6W~o{15YcXdz^vq$1A<-cZf61v_tdvawK*25%j+;&p??B5*y@11g?;Fz zn7XO9L&?1my0t$Q-X z&oDJm(WHutQ3nHC#*f#xp8Hvo-%ah8liX+VWE%FRa2&Q`ygzU4ihR~}e*N+$R>u3i z$@OZfb0{zS^gUw9uK)1<8(wF3J{sL0=T$E(U**y!cJ#1_zGD8YP-4&0ck#Tpu7x_H zYK41aBKDiQ>|I~w0&`WR$U`S|?NX2*AGQK^1CzR#;v9RtN6wL}*rL3k{+CGiiuQ>o ziVh;JFS&xhsPD(_1L&VegpJ+_e94_r`aK-3R;HB>VajRh7X8Z8^=f-s^n4+NPzD6& zHWd}y0>2d`Kd8?{5@0chMY@AT-+bI3WgwOkrBzv6xV0qzr8-Dj`Xd#SFSS>Ab@j=D1u z!|{3qfB3TGR-v@r)#jQ?oeHkzwnjk9K8nlP_f8K2bpHqyJJRkJGKlfvy>v{3< zlpHp^xA^z3 zOj!~TMaE0Xz4E6iJ}tB@5^c*Ox8Yr$_L`5n9A(O1IpA+tZ&zZkK5XkW{jzCbtyQ(T zhDefxxbKiqJ`L$5yq6m!-M)o0u<&*NpCnmUrGlkJzf9>ZmD!Q>mq;6b_L=& z`=ql+&t8axI40kc?SdkU1J7Xyp@3MmPDUzWJ&Gdx{=OVHLsV^+$9vaO-Je)-V%b6% zsIe~Y`c@e*Z<-PcN<-3DHnipxlP00=pbuaECbW`Zq83@{mcie^aO9Ym#iL|~lN8eB zGy?tF8rfef<~Crc%6OiXRzM( zhI7;b-$7|=<=Al7e>sZEoN0QQ{mkYoI4ovdcywD0ku{EMcTeJeN>#INlO?@&vdRA$uy+#qkW7w3711_Hd6iBN z5W`f?IWb*C{GVt9ejs+v-{+VutM(@BZW<1u`fk@@;D?gY6B5Dy zh%EmTExdZl(6`J;uu>)!wULouEfEu{M*t(;8nwo`GN@*Yvh=b4TQ?{VKFa%}q^xV{ z5b^GfG}9FTYMZnAm_wOpOM2bU6m+;uy~lJm^&e6g9W0C6d9N&2_%RFfF^KF5#5QOS z4a05#AItU?wzvC|glMEVSntS3L(domWdnKa)Zk7$A<<0^HbJQf-QHbza-x_2wG7NQ#~E+*6c^lWu}10K|HIDgkW!sRatkTHRRp%> zvOKV^Y0~P;S-`z!162|PXW>Y3NOUmu;&-7Ev9@9yavs(*OsX^+JDw4TQfr*@um%vO z#Mz1Dq{f;Y8PGe6mlphhlkkdU&fiL#DmHfRtR3(s&yERyYBb4L?=*3K(^J~z$|+s~ zA^K{Pb^LZF`2CCpLtA&*C|#gp9>I~a;K^B0GlfQCVFfTd7#kz+nyS?|*}ln(hqip7 zxlW_0?QyLY`u@9(I#Ucm&VR9^Mm9>f%wh?wNiSI}PzoQQ93QrfPWK;X!dnOnN}d4~ zaLM$0Zqagl;{Pmgp{g$n9}qMNkR!Kgr%fEmU#T!9r!AEVrKwT(n659NzEpo7sXQ(K zXzj48*$H9CrIwI#zQu{zfe#nA@d+RPF>bFq5+lQ(`Bq(c^W5Vg)xms%q}SVk+ozSw z|KKUjGmDl=H0wb!p7P(3TfSiFi)JX=Q5W`?47C6XacJuP&oiah>+&v7G8O`NSn-y! zv=q$i=h3dy{a1meX)z`#DJ^2WK?-i_M7?{EuW;&@?FEzDbSlUwl{-3KBt6p~00mbT--ULv~xM6n7u59y>r$M*1So>xik2TkTXU4PLjb ztkTyk<=*xef)j0eWDly{&ugK?%N)?af4jX({frgL^L?56tNOrh2`X?BuXpcVmqv>T(HP?PhRyHVix6>lHk`d+N4 zv}fV_u4Jj^D>(HS4{H}O9^F|HD&17pAVmJ~5ynMJ+joIk`izh=O1!Dy&RyerbEQ}* zKo`LvjsZqZLus}nIOo8}bogoMQ*vJN0a<}XENG-3!(6Y!OqQlB1G$KSr?IwF9$A(oGzA)=?Apwke)RsPohxK$ux zBqTT4pHc>6tM$Xp_p&$?k1 zvQ!_ml+2>>U|CERbs&XvAT52o$8#DWRjO-bTR5`2BMcipE^R2)Qm$eeA#lYfWrXYq zVqK`S2=iAblz8E(aqErh<23!%*CjD|xN9QeueBIO@owORNPT}rf>?*D%H4Y*r8{Xk z?X)Z=*Ge&s!5^*tWSPjG#@sDii1OuH z&og8&7~qY>sgCa>EkJqyOp~ZuTy)ILhC3$zAJoHA9JQ|>I-pg};J#J1NX>T;fLa9r zeia!mh=F~*5vOTzao^iC;rIK|Lo3jm`3_@UC<+^ls#>|h16ge~Z?oivY5_Ik=Hb9S zdg5Sfdt-gLIdFJrVhpOaNO4x7Fy@xD-T(vhDo9bC|J1#J7x7Ojr+8(V8lV)|!$kxz zk*Hfl1+E3tQ=-q(v({ML1alIDatz$~TGw>=;*TXWC`(<(b9Ss~)*{1+dZc-1Paa=Y zPZ{yf(;rPIE>+J)3`tNk5=w}t?&!sk-vB?l<+4==80^h|IWPXNtMxyZy{)Y`TEXS% z$u1*}tu(=t>>l#7M{Q1qIfUHDg#PZAdf*+!!#RTvG zg>q%(5+~p8^VmAiW04F~Wq*EKg&^{lWhCx5D<)`eR*wTdL*PrNyZH2m?5Ajqx3>{JoUb`y+5%8%&$e>=(h6_s}A|3=#q=)t*#1I z_lH%10*}_WZm96M4tPXB(BSrVbkupFNs( ziwai=g(#ot4Po%%J>RXmwt@Fplg*S0w6qoN9gVz3`0lt``2SQZgS+HQBIXAvE>6f^ zP2$aqx@52>l~^34XG?jrhqz7$X@$Y5e^-bKw&51DXD$v{#McVWik5GuxLJ}KmTOj_ zp#P0?5Wf1B-VF-~?2yX@M{5c;c+1D9@#BAf3|@1NqUO8qB5nT0ljWlcCy$H#*lx#`RoEDp z4^VdF%Y)8vXYRda9Sw^^ZCY*cATLOwHt$X0^3S%xM!vm|=MXvOfS$i zUuV4zD+t3nZ$0{xSjo~I@pz94hfob>@tafjB+&uS^xpczZAOXuzZw7T7u4+XzH|7+} z1mH6o>xYLl_bX+;81{4h2y!fKu)BG()3-}c<3Wo2jhJY6Pswcy07Jsb>x*a2%kRhu z%|aR+H$K`Af!4_S6=b8Q1iO3r$^Qzw^9ZVYwh#rfX3uE9wyM034UBTemoS zHi?~I0DP+7)iR4Br6z3TmDN`47nf%SY@`y0!VrZCEj&J4K+w?RmLY9Y|1y%M1`QZ@ z;l~_3FtF%07u95L{RMz?GeSc=_peid@KDxa>BqYqN}@6MRZdM zop7z5^87^+TbHwf{Gs6#K7>f|>h{>pi=w%5o)Jm|w5GXdHLpf0jc#ScYl(U&A<|0U zs^0QJR4V!K+~NM$I;{+<6A|1Ucpt%hM-nNexR7ccN{DX40UgjFcR z&jwsAH>1w7Fb4fHM$=_eBry2v$P<1l^Id$S&N*py*>ABZ`4|{J$$x1KzOvO)(;g^_ z4n;`Uaa@JVpb6iy5$rFme|^h=!bDfwy`m#%?EO-L8QY9WWZ(Fn;U8%*&nrVPm&+K! zaPE#6*`Q5SEBX>4AGqR#?4FP$7g~;dK^ zM1jta_d9u85qC~LmfqE3)Jizpz|MJH4E3YFJQ4twTd%~osvSc~rM0k1b>hdOKV-w_ z+@?TgETkkYVh^Ztcy(bGb)^zW7|llLMIFBgbts~~dWZ5-TG;dZzD5^@7BpLkvQ@X~ zRK$wxzQf&dG05@GSG?2~l9YqLZg7d9WUAzozp^Ga)=TlNsSvcC--g4;iRq#fLo9sQ zh2#KAAxI1x3zonQ`1BR4?Fg|S*X11YQmN9RCS4e+vqD*@slmk|YMNa|HzxC7>nVK<+9_`{`h&s;{#FRGA7EvkZn8bBB;XQ3pr-S8%4n$+GSVYML01Pw zTf5W!j|-iZZKh92z{*4@D9fCrXq1YS?{HE=N<&}93(J`(L+bMcW<*P(*F}M#K^Aqn zAAe%4tg5Pt{c!p&e)h{`gJk}UeyiI1U@gn(RLcWb1|QxzU@!;3GaFFT!fu!Y<+1Rm z`<79Vfge{(Hz$~naEYSC>JytK@e~Mxx0w`S}38q1zT{WR1 z${nLh^(!(m8XiomTo59Ng{578@%R~f|1{X7XFM7wgc zD}Jh1NN%gFs$x|1;p$}qgH3Fk|7fx74*jJzW_k8d;czMr?{WWmIRckuIg@S31-n{) zb-U@4N{X`qITPOcGNj{>y~$8n!N3Yob!c>FeN_*R%WzpYfCKOWn$GCf^# zb7Xpy>Mk)i$?j>K_ofSU0B(^#Xh1ozcnKa|G)VY5;g1IRpwW|69f;_%qXZd=YlyUW z=8hU|pk!_9#`l_PZ^A{&+pV%H&O03CsHSnU-47Wh1|u5qji2SNJHNXRb>HddS^5}- zN_vMoqhN;SLW~lb;<4bqC|v8Cs2QeEsb>+(2#1IWoKViyQ->U@nhCha@*cN##lr}I zsGeD9M%s26poVMP*!E157qxqLfmq&EQ|rECw-BmKs4U^f@WJq1Pj>UhfU{mNQvh9< zit5)U;Fs&`C%#9K-M$S1HNs9W<`l+pS7!4(1tp8vhpTQf3+)zkah~55&>@BD={7$i zLXATlOPA#NxcA$}SyCjT8FAf>p=F49xbDI`$>n_dRShV#idY?Yx3F$XD%Tp8c&WNa zaMDiavM%($-@G`J^Bv-~UAFtz{2s^%qZb5sy7!Q3gXkOG$-xyA{0U~e8~(Qo$?A4QKP8RxxXL>odO3^g95 zGLy94X*TMq*1t=xo({6DVFf+?=3>(Y4e;O;ci zxQ0N0;I2*M?iSqL8h3Yh4ek)!A-KB}+%1sd{bXut{=luL*12-dzI(4FQ7&e$+xd&e zdY#gyYzV*Y=^ZHng``FzNGxWi^F9Vl-BVoFZV?qD7pL6*zV|xpR>82aseqvambgTF zo*c2@wQ>Kv`1+@Wp}aYZsL2acv*68xsKoRYvc!kXSiGRw=bgQ`_A}}8`96q8`0Hyk zAK%aC6UrZ|&T}`JZT}3+o^=rzWY2iurTg*;aHpz10+*FCRoKB?YRQ6p#z_Gf4?1Emw#EAQqIQrrJX7IG~b2%69`7FaL^k0dNJ(3(y)x!5^j z$jRO=7{d( zhQT#xukEzs8|9XPY=~Q_n!Ye}_=vCT#4W>SH82DZy<2HlSx8-VhCQiH{)y+Xdwn*a zoD;u<@wpKJnhvJ|sTVMsrut$T#Hbr=d5oC6T$FISYSZsbo$R{LQZjaCHA|CSB2?Gp z9Y+Z)GD#uu{hmI1bC*0VCiGIMC9@LD)hFPyN_SDIqB;IN)WL*{l-+Zw>1mE3#=gF! z(@MUVT_U0}Xf?Q?95RLW-I<-Ah=u_F*$IyKF)6XOQL%sK2s$sT-|H66kz0w17iCQ) zR$*jGlud@?neC*MKp2jAd(=fF$S2NfA-P_+ek3pjD^(bjRyQlwj-hh)bw&|WE2uAL z&40N+Y3L!@LLX+9d;#>rx!S1Nj%WZ zhX{8uv0i7*ljEE6l&~$B`qiEEh^dSxh~~n;;B8!oTA~%uK~Rm=1#9|-QrI}qqtE}f zb}{MiRyL)}D9-?S3Y|iWeg3!1Cj>PRc*vdpU!1*uy(L!YdM^#{QR3touXP~QH)nX{ z@#>RmHx?>S$1GA8Loe6-R`O7B%0inhRHA;td8qDq7m}bz8hkeEJ}H02QqB>78UK0f z?sIo-W@8k(VhWmO)x^_KT!G#~UUAuR>Z%I#VCoUt6k}78Eo_4|2m^GZW~PZ_SalrY z{W%X==5$*oJes8a8bVDTt+emtJzni?AZlTrlyMF=;=EN)eV0><#v8MVD?nvzws(=> zN-tbxNErelNx0eIsksQwlCRo=_8LdXA;kI#(QMLePdD~ zKgwD~(sz7OH9^NL;!Og}(&7UW3fB4hygw)3wwmRaYXr)`g@9w*7Ul#R04(44JQpnz=q2%#Uu@HoLne%HRX`%2$$2Su!%a0 zPsIanHrS{uW_3c&wT)F7hdWHgsXs-^@y_BsOtqD1BNRSHfZ}NPtk#V8x?8hV44$+6 z)L}pN@rNB|&4IQ#vI>~LW~{#ekCI<`X80+4Tjv2EM&Lai$fmeoo(H8O&f_4?$tqi_ z)Mx+}>+zN%QGhrxWlze@I$^LyTOk)#&Rn?4|6nzS)sK>$Hcy1LyJF3nOY$P6u#hle zFf%bv9S1#|v8doW1r10RZl3kQ7{P3l~=Q=Ru& zD;M+Yfp(o4o2N*tD(|U_jeT<++}X}2+cQ)z0CWyfOrHsnw>iVosH8IERnm^bBaGRK z+}z!2E#NT;bpeUI5Wt-pq9>lsyB2F*Cyx^$TLnBhLH_|MK+H!fr1`dM^I6}&Spr7p zpqRn$M($HD1Ss636KB%pAl-XsAE?HACqL_Bz&h@8!;8QgnY#3FvsJrU^*{tmOBLsP)$q#j}h^>=$^EQdz3n^D4o%8)Q0zF zUm(y_IU$AT$WSK+mAi9akV4(!xKihQs69gNXK9B@+!hkU5lxF30AF$Cj+voB+=bBm z_yuS22CW3gHJ`d~Tqz=a0H@6E^qZZHVtLBN70QZj8uuOm%G=n8?g%~x)%4YuQ;!R0 z&(|BENFUgNX`=F5$0{56n>=4h`FwMUSIDfE~|1I{q)Df+_ zE@i`ByNtA6m-d`jI#EUDY~by*|9(Pbl&AIHT^+tyJZmF?Gak3KqR*7~V6^MHX#DS%;iYC}+vyN(Ez5U5HHmwGx!tO%1t|#t{qWa3f+AC)JEoVAZEnE1 z7H?1AHAweXVTyj}!+u*~QB{0Xx;K)CgIYX&UbP*+X%IB8Q@vO7(17A=*`VI|%~FpR z0WgX<5uE)Ag#$@*Sdr1_T0I6%Ik4n=Fs0t9DI9P9&L{_UCmGzR701qFCD3b4R{k#- zfdo<&adg0LtYCy)F)?^9J>&-Q>o-|h3pB71tXekgUkShJPs1xypaE}WaONP#fg+#P zNYWPh8OSD8OPY023`%ZbI2N|2QPg3erbZ<>HDszx6U3ZgBA1_wr2?NvF_1M! z^=IQ4IKdtR^dEMVCZhvie&SRe%UlCWZ+%q2WWx%=2`7M zXL9p|GP+M93S|W?U{i!%EKKNYoHty7;?(*uDGnv*TX?(iOXvAG;Fh03sstoI*Qp1u6b~poucgY4Hf$hmLYGq^J ztYS6u5HkbpP3QN6=^nq-4@HY@2(k(<0;MIx6%Cule%%ir+g9A$cEU3vw$ThC98#)hd4!lk+jArpaBj(*k*7%lKoX z`yz>)KFugqCFp1LtJecArb%N=ZtgNgEB}P}g7c*DUw<=Vq4`_1FOm#Ze)nTWJGBm) z>hTOG;%_g$<<1DXEoEJ)vbJ;lg$Y!y5&a9$sF4L$G8oEf4{DQ9!x@JeCLOkPTl?$Q zbdz1@!1pJjf`8E4c5!-EwqB>+fX`+mrMd7O3dgS}8gK~kmGEkG57qrVpFh!)Ogu*< z{bc*M9GRq}Y2v$yov^5+<8WBZpDMlbosk_2iac^Ybci#zG|9Wg|C%@Ih@42KRgbRo z@;0jxnvy1%w(&G-Beq+NARiNsz+dGUkA8fs^KERSIFYGDUj(xJaonMnTlEpF_$J%F zIhvS7Ga2S*aq^4%AhBk6eft!Flz=)gEM>3A4zZ}H|Zxpwu}cHX|t+#jR;uatGRfS{im-% zI9e+EYu^a#$uN;)Z_;z_-N7HBQ$~88BQpq$Y!@;>jC^gQcsW2Q_+CrBM8uSxg$Ht0 zwQO!RUVVKREYy+xuk0n!? zxW##oZEvPOBIj2QKx9tXlHzogYj^=7Zqnm->7yq30=tX{i^x`r{;on6Pp-;Aa?RiV zArgKBd98o%d z>vGf};2>VU9h2%*{&WqVOIzv(mpnYs1~)pfY2McJJ`FE~xmJISyTD!%#S7AweJY?= zlb~HwIt;nO**l|caT>?PW4ny|+L73Q*^VS8uq1Z2yg`GWDxk!Wv=r@Bt)0+VJk>9j z%Fm&hDf;7&ED&hXG+PymM$;VDNp+baHdz?3dn4dcRHt+- zNqQ>U$#{|Gy6H-M^0E`$Ls+z6Vv-R_!=P1goE-DLuCu0DMy?3&P%oFytsx-d2rh54 z|56>46fCfy8@Unl8_wXfCoZuNxWDv%l=6-}CIy(53#wRLjWoKx(xnAU&uSpThp z>fsPZIh}aco&U&Ei6j0gRUdjJd@U4*@gETAd5p7oyiA>39Ov$>!Y1uyZ#=@%B=+%m z_uYD;6`(*j27s89XRv5~7QtYbwl~WF93u{tVeE-|wZhrYHyi&pp%A``Su*E8{*7s( z)dY%fsraJ-okd#2F1~;eIvGO8FvFOp?Wix~EoE=`Q@k-V_%S=gEA0hcBR9N! zJ*Y<*F#l=4Z0kC@>oxDQNnAJ3Ay?!6O%7B|yUc1hHQkf#d-?tcC~4 z+#7iEeH-rEf;T|ufYuhzF1!=-O|X!E}HC!WKZ1&s-YQ00IzDr|>3?JRC6@mbU{K|ZiH zv7WD^7#Br-s~U&5R0Fh1hetHkVt(G+0j%ZwPPU6E}|SPW(KzA zEVy+wLOv|Vr5Y9>X@FS))AaVr!^pJ-6c@clOSxtamQs^|#fP%a1X+c&SH)7LeSeEF zDj+rfYxK?*(b7YO(|7xSRMR1o5*oc4(u}-!u(og-0F!xqo;MecnovTo=;D%kR(Fa$ z2lKlUDxVZY<~OIi#K#bm6Cdek=A-@h@VX|qsQL4^kSI^zBC@oWqV0D6hr;d_2<=VF za_$_2TY8r&hh@X%ZXa->zm%NFpduF%#Yy>lmJGK)&9kY#1~fsfJj!aiZ}f}(@3=#_ zGg<2|#74sgOf@dG;ugFQb96WjtdD=T^m@lWv8U|DvsoC~UPt#fgB#J1c5|_3Ceh=d zHoS@{#!Ix(+1CUR#gJrd!k=j!HF2Kc{~#GZ3b6$*`KbK1DvdJ~bNvcIR5+dki|B-v z-iAEGoCdb7ID)8XMTa!>+_e6!+e;Y#Ss3G!VNVsK`IUqj`DSHzO}v+2qGg1*t_ZhU z8$NKIp6PkYgk5Z=%s{y#_J-TO{m%E{JwH^G4nFrem9nH&3#{Ub;ZQOgu(>QDlMf2;2&4-nT zE*t4+;g!{354O6kva~Qv=OdK~&tb-AeUl3UUZJ%){~mb!YQaj>xD@$rKM9MFC(68m z<+7{VoH!isHCqT*@Vu3?da!UG z=F4o+Ln1x2hwf936{FoTxgL6qznl6P;A^HxxCbWL@j;jW6yt2&(48nURiq<|U2l+b zr*fK)Ym$PhNI`#)JXJ|v8oEJG#X`Ie(W^VayEpX!8au2cNX+;GTbOW>-K2hm?pW9^ z$KFLpDtbB*Dl^f-W0NZ(qJkm0#?sW)#@Tuk%TraZ1t3x#F%|%Jw2@!I6Nz{BE0K*0 z@@=IV$*b0IdznO}PmqpW(%cwJE@>Sf)V z<7f7-N)zfgELOF{|ABHXAtI{iQ;Z%RH%?i`0vP5OP)9y zB+gN1{mEUDepDr?W^_cBNo?-mIXX)dOEqe=9Y-z|%Ex0)$B~Xdw-#Bs8Y$0HV?q5U zw+dnH;E#;Hz3vFnz)nayqP=9@eFQjrnWu7{2w~!YYano$xynrFM=&sh;0}3oJ zCimV)!!%3Cw6YSBS^CMqURuh7Y#g1bggQ@;3ASaL}`hMHm-;y zMa&MU@q5TPF04pfE&g?Jv@w+K!h;y&ZCM@%*{#5lTkLZ-tR}3+xyO%`1U9utQ*9Az zFZ9l16_HtZT_n{hjdBj5Of>{Z){1`@U{}mF&96!sbSLvmAY*>+77+soQ1FR6`h{Pm zeEWPdzWXaQ$mrtit|-UzlH7x@l~VJJ#y6~}io9Bbyb4f~^^HrMQ3fdV1w#&*(9xR9 z&8nP2|MuzhU+pIxx9UKgF)6T=$Tb+5*1CKpC-1}|=C{Kg_hNk!%tab?FXUkMuM|&m zMdTosFJsLa%C#fj14 z^-F7B98AX*Q!>PJBQ0MmPyh5Hb zNQrM1uV@+sqJ%fCkjW4D>j+O23yaxu*HvZOaok;}8bHXr1bsSb<3x@pS1^!l`qKDN z<6Ge74IXpcNK*6pEA7d38-P=aV~qnBBzK{RDZ!(cCe*VY8ereCvwrRP>h~XgR(8<< z{z@Ue5ttJ`MRfl|6Gqz6v_IJ{$;Ha3YMAmhHdi5AdW0e=rWqdCm;{y*W=C-F;3tUf zmWAyS1=OYr-^k}ShBLK8sh5YVSinT&v z%pK(4XeZ-0vn4RZP(!Mgb+TU(QHj7_6XPqHPn z!ObE&0P=U%%`$I`;aSn~K9>MqafUN@taGADSJklHgB8zvEM{R+&N4%lKfr{*8pdofOE^Ob z5XZd_GZRWUML1Rb!x}AigzV{R9P0DV09hbTCg3;ZmKLCsGOQ5$@WP+ac9Wz~zi*GT;pz0I zDRaFtatmLuX;vq1POx{gW1{s|7t zzuK5Lf4E7PV~-_$)YiZIG$v62H2i}ZPPq<*b7HRJHdJQUMi@-VPpuX|6$RbQfCkr^ z#&~kw6oMN&nhRRnXGRtuqx*3p!ouJK1tH6bUv%t#;SJRh4RqLl5027f*Cq;CIE8r( z8RURAj5$*JCWrVEdkpe}`ec-EuLkv5`1}h5;~@iyuVUM6BP7!O!1OPc&+jvZ?*y$X zgI5yY)8!-d!zDb!xfbHJoMoRv{bYEUqNM2N3Ky|d<&Y|$;I!Cktn-$udVTF+m`XeJ z$oKi<)!cI}Sj3dXRcux!$$(y^GWAJGAECn-3G9F}OzEBhD*^MTb~ktDgceZ-W?Ffd zX0jF&Y_#>2jX8?!H2VviiFT<4PMKb3G4U4aLau8$1b-3E!Az;+$cGf_cvbAHCY}N? za>$jbr)aAtCU?P!Wc{7( z(|u@d_3A9e1}h~Xk_YDZ#q1`Bv#0*{Yo@Jr5lBvpWlqgDA6k{ezt@$nFIKLs!+6C5XO8In~x~*O4&sFH+Az1@{dU<$XQWD zs)UCFvLViGdW^#-ADC#?qF3xwerA zMc*c*j7I6sI##h!9c1T0=SBUJXMm`WXLsp1Y--e$R>V_cel3=0XoVSy+AGam8bDQG zVQ5rYS&*1gv=>P=bSG%f#|PpaRQB(|bFXf`R&kDGh((EpuBHPo=`92sWu=52qsG5OP{rN4|WX1dUro#uLvJ$fbAU?qRFG zaA>J7_-fXEbdUUS`pFB_X-^_gn7>idcC?f0-eDUwajem+nUufC8H?VsZH&Xul8s?ni{R(}J61f8EjSdO5 z@nUlgZm=!#>?KeZoa$kKqFLU#H2B11?vkuYFZU4QqHtnLdq)omp&;~kwk3i z$VnAp31JC2!QY&hi511TMNK!b*T3bYtZIslr=%|;bTWV;v)l7)i_lTEx*c;wJOneO zsVuznDc!`0buK*F@ir+!hCTF714Z0UD}?NRFdhF&pkMl9kX%#$z5h^F-Oy>*stg5N zu_Sg28|rY`Wi-UTmdAQlo*TKCkNZqt|hN7259T%yG|EfHp$NKG=(g?c3` zY73VSVBTz1mImE3uvwMH{}55IXs_X7k4H;|`85sNx^d``RVnC9(O)zq503RUwT~?P zqEyRur3=70mPm(7MoTPEzSLp47C2Pw+59Tm23Z8f9_Y`XUuz$Wr`9aW7(x!mASZUp zY@Dk#PZbtyPuHf)#9NwNvu)2ER!;3kd@>bUSjmStpmye2j?@pa7{x(cOR<67;wKVe%@Fp_ zf1m1Gvpmdaq_%Yb)vQ`fNq}q)rCpD8H!21NTgk`}lxFQ4ZNCV0uQf_Gnhgj}p_Rb| zx$;r3K(a^@{}<^Le5&X#^qOiBxbouo#DPry?=@T8}Y+P*nsbpO&P&P`p2u_WA&m>n3sNuXNK>u zl@DDqM<|eyF1%z}mc*`6sifWJfv*3mJ z3{SB){ zH<<5az7$4-;nNbOWhVl_(4xpJo4f;g(tn90Nlbnd12-ne}# zQ1KFl`H^$T&!t#V19%hCw}8#v5|V<)nQ(bq)cgJ%pf6HWkiLqfkA!FcWJuXtzK53e z(7j|E7!d2nmp29x~QX2R~Q{>xT+I~4F&?XwB{Jb2*`OG9-XyO z3bh0*{pgM}j!*D!4@UE8GUrf4J_t~@G+dLEY#B$*5V}O96<`h?y50y=!iKEPQE>J3u z1~Z`iOVJvXwJNf;&0O=Q+UX7nTS~1b*7tNY)|8gbw$`mjVqArvi*{F6mXD7!I=#r1?TQ2~E)ET3f@%Sf{cHV>mYBcV7C+v}))EJ|rIa)&ZjP~oAX z1&0!u2Jc#_j!<$V1u~{E*jkO=XJ0jj0j}Jn8*$>En)&%Rf{z?T5ZRT-p=YdxKSSq! zU52$1XuOoDyFaJ{zS(%$mT{I>q#B40I;n&TbHpFY%k4!XW6EQG6-};I^xw}4K!0by!Kr*%3D8ynE0_$Zy?sH_G%&;S{AP!0)~VB;;|d}Fhe84e;U2k zOfg9i|7#GwTau!)HR?r51s&zTJJNBVPnR89+QDN(u#r}F;D6kd7wWG_at7T*rsakL ze~)9k0Qfr+&ns_#c#wJJH?jE_m@57VW)w=MYVex(=rzT!H)`Z%Z{k);Y8(>4lKFM^ zyL^2ZIkWOYc2U%#7mTRCUi7p|#pkMpP zOq|_znQD<}T=j+~y)@2WKRaxf7!-@dU9U_3CUjq`6;%Hd{t>7d#xPa?aUQ{kLDjTK z!LgljMJ^TNt7Hh2_Nlu{I$Nc%>^t>!3@TYw9`z?|xZG<-JWZ_%X+Pom&NeVqLarA!8m` zlOYw1{hQgJI+Lwi=7PxCB&92n&ZnQyCvvdiTQ+G9 zvd7P)`F&#Lx;88^2GwdYsB-XixN$08MPlmBV`hR7H$TMDQ|5Dm24`GeeYR+|0H>HXoJ5eh&LQEDlu@XSUFN|NLB2m z0topr4i_I2RR7qSV2SGW3HBe8D*QtuANsuTmV}G>>@E_W_+8WWy2bP@W??R@_`Ai= zUowR&i1%`v{&vI_+GFwj3}r*Sh?Ku0}=}4c_zq50}7>zo6fX-5W_hD)dSl3>U8N%A#+7t}s*uZ$) zb#~aqxXjRffl_Z=GZ}^D+|U~qI4SCM<_hxB63ts&3t)p1sHKQl+Tm|Pk;Xe*%PqN) z(AILr_Y_%P!i0*723iZ-j1`h)J|`ICHg#o1h4;phnpFF@!3AvS{{|B=XSSyL08@4T z99?WIU+z%D@~MGi$KSX6ACJqp=#;XQNWgn|!rZ5cG8&*Xi8T`Dy(Sw+|G}-9F_xn~ zX-T~|ZX+JAp*5a1F@Q+{RPEIYc=)_O1D@+wM>bl(1yWqjw#K%Q=Jl9<$)>vyD~U7~ul0xn?lS91IjFUu7SRO6phB zoU< zd2tQg72==I{CS!!f-!+#&Rq5(dl4xSQ=VFFTLNq<-xxAJp>QRd!I)u}Q&YzLt&sKn zxtd_WutHzGTy_)oJepuAVPJXBCgqX0%ft8cu1~3Rp!z2G(`+hyzSx6OCCEd%37A$# zQDBjqbu8djURCO7$MB8OynFIj1+<+w2VcOu8T4*V5q6mb)BuwQ9sr78b?@yeE36twHgDIF;O)E+zB;W z)b9pf?Q|-rh&yFJRfwxIcmL@y)$S&dUd;WNhA8>28OCs9WHup+@rL9mT8xRYux@OX zRz4^z06`VO*iY2DaqJG)X3CfbJ8DZId?eKRHFm+bI!~wWWiWbv>WpUY1Idpu_16+K z`yv{lX>}5=WJ&}>MnxbrZzAlYbw#S32R~FqghY3gU%!yyRj=SVQ<_jx(2y}a7=?6zo`~MqjC$Z4%5iF}(E^MRiW-_gY{2o-F#bf3 zKpJ;AZ_#`t1UZzXTl$C1c-@lJX%1Q2h;S-Cp=r-N$#Ni%{dPKNwj4Vq4sDEFOk~!k zXzPdtvU+D}MY|hkK3G+Zz?)DksRJ--F*9+)XN%+GzOLPw6fwD7@=b zaHV8X93oo4icJfbsvzr%yfGyP5>*gD(6SxBc19wTQrW^N>yR$vt*1lh{m|;_zmZzM zhX4#C0V%vV#J?N;xI{01+mo|y@CD!7`}#{{rE{1}MIp#18-iHA)*>HB3f(WEOE4aX zK*JR$RnLy$b#Vdd`JrH)vZ&6p+_1{8_Jq)?luW4pB=X&ewDg18UYr33n|bwOCB;t8 zGL$H$;3VnqBz+(@Wy(intE+Vcc&|IvjESF_aZ2w^5f1QtJ zRCpztP-E7h_*pnn$4+|a3WuwvVuB^4pZR?m#hgjux8%m`v_U{qc9AQu&NK%BO5xOR z#Xo7jzv^Z^m+qFnjj2CxfJ8P&)Wv#_Fb*(!p9h{D?3RJdk^OUSqBcON&|+t{L=FY z`Um)&`aL}{PV9Q!sOzSbYo-R;@h5{+{L;WQdZ?WNMG3q7=;;GWHbO}SX%ouAbzu%! zfhk&KCvWKC1l3+@+o2f~wf$*X%n-rQxW9=MGi8=p3d=xJJRZxFI2ilmivl;)_~YN+ zC@T!_{tKM56=IrnhEwe*yx;*>P3$i+#)BBvFVx<(-OxwagkAlNMTVN45kU1yABAgX?rNG zs`XeJQYD!VT!deNr^Sec%n`jn-UK+^i))Syd9NLNz zS&ElIq9oV>ZP}Rk$Aw>H>T}0lf@bRD(wZ}kQidzh)>Ke76q3X6T#?-kI}w=b;^bjb zI&j7}(yWp!bi>dWkC_`W+xhpY_AFqi7zvBlG|}KOp})R-{u$5Q=YdX{PP=EpVGo*> zrD^35P1yHpQJ!0-3d$P*ogsz$*F^YoA^GZlMS}}DxgU$hV1d=op4GA>Neobx31W1f zoO3qsIr3%KLI+%CWs2&lF4Uqad&f%!KSN-Qi!Vnn@C1E zjH9DMnyGxrrve7rvy+Alm?d3p(>N~=sI6>oHcJB5t*xXHdo|Lx?coaX@wJwHhQJ-k z3hkUrNgRpz*S}f*Vg<$SSDJf80%#B1#y>?MV%q)kgfzTG1#^3r@CFHeFJJm1AUWbU zpQK~;eh_0_3_DOO)<+0`p0O%Iv|q2!LOAJsK~s0rR=B?DP<=c<{@bQM&YJhVo66UmPBVK6*1SZk$vtqL$2R#QVWqXYauCgxz>%Fm=umWMc>-n1z`OmpP>!rg zDoLg&b&#k2M@v9qCohlhOwo^kSjG5VHf$0I4g0o$yZg!eVSd5XK%;DY5Y_^x=IR;3t z{$z1Hp!By0%Q=HCm_Z1r{h}=8--ERZsLP5twtZXzSx@25TQEyGhSIfaoL>cV-Mmf- z1qDXTU%dw%t(q`&6s@N40`$*IZLG8AEs8w#45o~WOSlQpYz{BU$v-A_UyjsBew_{v z9&R5U-d_9^08s(v(BvpYM~(@SQYfrM4#Ly56v{&a8g+=d`)>^FO}6GK23MkL*cchm zN*LL)i3FFKUTA$>cw`tZl1E6*V*iQu`LH@m2mAM_7sqsZt{IiLWr&!X)!(*mJ~yK@ zYGbM`&|19U&JY=Trsp6lP^|D~7l`6^L zq|EDcr6z%!VuV%j^9h2HCcHk4x#Bh?unNgq_L0$cvQ9gq_nNGVN`g94l z&bgbSMdloPQ3ge)P>Z8B?1Xs!AYK?ap%Z_fTga(tCYD>dwRlv&-g8`dN(E* zY~>hj2|DmqIH|AsGVx9`7nSFymn|@Qd3f%-8@Ys%e3yC&=RcS@qU+pNfGyru#7Q45 z%+UALq1eYs>dVwUQAv4hcm2;1ZcgIoZz`+#l+!z@uZ+K{ev#wr?*!e`JIaKMISp!D(4~6y3c3$cx zt&o5_!~x4z78&%#DQD~&eF|4mI2fT2#s3p zE~w~bv$97z6Ujvh^=Swl<2Uw>5mS}~mfvs)@(fa$LXM{c4IM|Zcr9(XkFp`_6>==) z-@|MeJn6qx+c73{>4Y!Kfz*D;(|OD$yZ8cTkl2AdyUtBTX?&RlzHq(_m4;VNo3eU` zbTn7aQtak*U>uBk$uBbWKe&1+%d7644{l(=Sh9ar0NWVSVcbZpKa)jKX;Fj>@>ZzS z<7DvUPHG}^S)@kYPNe9pFAV*mD>mojDj=4vSDHl7M2hkoYEx^#^wi?ecZ>WNEh5I# zo+`k|`wqxMk&EW{k0Woq-^bAI3Z*8q4pS;fnc*0>uhRPc@e(tIs%l*|-2L_wVZCn1 z({A=tTCftD8xK*0J<*{Bj#8alXn^3{Y`PyU^aJLEN9WQl*Xh~y13WAxCm;R?FdXAB zKzPI2gId~Y<&MzP{dhP$^13ZUTZR!DyMy3R$$n;oh+D(qz}H1y=W)J*rwY(>-$nWq zfl$^~j4|!Tq#9Il!QBY$dB3W3!d~-QCeTV|UgcUGhGJ_dyO#BCJ2WQ#55C)thu5GB zb#j<2Ef8LxW2$Tn_NJnA_t#XxI)|r`ATEo3srLE!s{m@A7iAsJXL>X(zjx}0{MMhv z!*{e-*7D`__`-!pR8{G8iW~E^3FzfG`}i>R5%d%RS`4y-COcVpu%NJOFQApa)ulzr`Z%Hz!U0RpJ$09&PcVGyvgzcTylbl5zPp$6hl&JP9r~ zibPf3WkKaye~a4DXIXNYRi|5_Wi|EJrBaV03t;NHXla!^NoXKW+y! z?T?*0SNc3>{(|Nazz1o4ODhwk4-iKk^l=&H(i#;9BQm6yz~4ftd z6Lgg^afiFEf(TKCBB6l;?*AW?Ns2-+gqdnvMx*<|xoR z1!wD0pr-cmmW8DK7&guA{5v6Ee^Z6g^pRv%HJd;_deHiE(axILQ7X1x!5*#+yY!ncaSFKQ zkwZMme!ATTML4MXjRq+^44_&GgTX0XRDZ%>o>Mr1%z@O?rijCWz;jOjb9oMl5i^|Z zIFtj5TEjjrAo+`ICv*5moJt zFS})RRg$}|FH?@trlWNmq5ZC}nUhwVmmLSnGb5)q^g#nm5S6?lm)ZWk?5k%H8&!f4 zqN}?3QSb&JbN+_a?0kb>Zg~drovU-}a_rfEH1UaMc2Xv`q+v7M`m0VdIkvOhlzHm@ z=LpNQM)z+y;1)eee|XDx8k&HGa<1`5pUlwvs!c(bF-AA#uxtnc*n2LSyPcr~<)A3X zQFb9+xoSC$Np+seSIIdN-N`nLJ~$N_9jbNB)bT{GDm6iR|Iv&#@=HMnnDIcePLCj7 zu~IA!*66NhS*74U0YMZPMnTbdyQ4!t9b!9-=mTTtsW5{8h7*#ZvrbtZ$=o4VASR2L zl>Zxn{V47k7enhcH5rNx$q1nIj1m_Zw8XZph>boqLTuugwFLf-PpUg~yHC=tn253( zbmlW(68~!n4mAZq96;{n+c5S=H{Kymw3c0WLU~cw=?WFm6h2KLU!2om%;!cKM4&(r zS(>MeBab>LvYK3Ivy9e(1;;|P#TX(Oz#~v<0m}eGQJlyvYqLLj6>HN^Dk-t&Vb`iZ zE80Gc$lbz&A0`*Vpo|Qf+OSfAUr`NUZ*I=150jybNs8kBRav?YGBpD;y57n7O^d6@ zx@gde^O#w-w$RO+MOr1LE?VE3Zt0Co3m$0@2jKi|uayzEmb$K&feWv$GMp+Xg(&U% zgF!NA{zJ0HA{fU&${z|%MHecK(74cXv!fZsUvA8vP_kSaGi-jjI7R7|NUS}2SyLY& z^qC2XsuCU+^n>*zzyX?T@r;pW&bv~ha<`10$owG+E)sTRD!5HyxmAKua#URHQg1!V((n~}l(0L0 z=uA?vX%W%88yoHT4c*b^5}-4VWK8!+u=Z>ky{oS*3R;!YQf(&5ogwqVCiG>`ZXc{o zU;XS?#aiF~K!CKS+k1TL7$ysy{O8(jIUVJZ+O$B$T&`}L{2!Y~y1tlX@e5R*o#uus z9W=E(ddTE8E(Nr$PRzrwWfk(+l=j;kc=3;FHYoij zd^r&3wOb#5@3(0S!smHDy{M;#-3lw9?;>Nw75HZb@gV-Lmz{RI%(8xSe{_N}Tphuc zn6|8VX|KzF=jnq4Hrit|w5YlClqhBH-a=;nGj~D%Ws=49_v@qvi|dNYb+i5RubmkX z`16AKTL5BK7tzpiOdZ9HfpmwypaI(ZXqfiZT%+-Ee%9%X!9mh0^VIO7Zu%aERfQLM^WNwRXCm z_iCGxDBic;eJpd?u&S1*{H&oL^(JEk19zcE&C1`rTVpdgJ;%O8de%?AZhG@*UYX?o zKS`B-njEKVTy+WDRZn0X{Oe1MD=f5$qxSfH;f+mU)nEOLml7FAyMo)qJp_h+rhNY^rjkmp2%jhi_pphT?{-ZK14e&kCyqWN#y zybsi6%UJpe=|&k+s0GPvIX*sh4Cqus)t7?lq$d&fz+1gChWr4tu4r$9Z>gwTFfyEb zSvjna-xk$j*($H1etpd;g$PKOn=^U9btMerehlGvOioYDD?IPRu2?JmU z``ieiV05y0PY>tubjndo7VK?l0z+tW!2602F~a|lxu!T-w5h-jxHmM{sVa{~KVY_M zBjOUNoO3f(D~C`cY;Zpo^q3EW`Rg$h8n)NHhsrNG4KZ2QqTR;Utabem1E32wDGWQc zO7(jn!)l72bxvgtMU#eZADB#$RPNRg}8W71_L;JEIG9GA<<{>5-@HETCr5 zRMJ}r`)9&FSXUep8xl_a{xl$m6`V?~wSf@Jp3o!~Hct>0{y|_P1Wi+dfiaYZDIua0 zo@z`>JXhKyr&pt|E+KKW)m|s^+vMKSw$_h?W@dSc^()RhPlv={9egH8ucxB05;E^- zh=~D1uDXiS4bGu;((-DKy5oUy1h;)d!ogXj>~p z^vsM?>JRe7by86{rrTmBULXbq(F&2uI2XU=0P*QZP!?kn!_O-M`4D=BH`lx{d6R`( z`1@*$^R`f$nTqfbH3$@338CI9R^sobv8_ogHkIQ5L~n*G-(5fV`Lr`_0v*m|X7wr0 z)P&9{EFE0-he~f{E6l;ssf!r?#_f(x!_jw7yc7^lCGYe1XV*`}#i%APaWEc4s(CI{(Dy&cqW7f}hn{s`}LyL+Hrased zW9Q=1)ncS+cnvF)Q=&u}IM#q;MwT=xaU?e@oS0ZT7VvR%nGnIjvBBqF4RII6j~35^ z(x1BH)kCy%SeG#S-mR9w-l|M*gZ*li)socvY%D@amRg*qvkGZOgM>X*>iiUrxf)#V z8c4}lo<5{0VRi#$Iz5AwCC`kxSO$Lhxp9K%21VtK)C$ZrckJm=vI81NKJ{KjUnm^h zjgncp8>M{emzT^YL7gOohOEY)4QxjMvdn=wqIO!IgxwA`c!RXC@PBRN;f?*hn_&HD!qL?#Qo$^cz9c+ADh5(6G07#G=K2>MgALIjtZ`5 zPTgHJVqZmWYsQDmJ0Ukjv11`p%a+>cf^C|GsF(bGV5yCa7e_MC=~Kwh8e~J2G_IO< zkqHd7;eSSQOuGCY*(TO5|KohiFE~T~`u!^XTq5QBs9s91Ae*7L#)&G@Wp=>~S6x;2 z)m~HgNYVBswALAbpv$>JtWSwa?_!oG7l_1Dy}5SeV~J6i6&jZEP@8>}s54+AXUAJB ziyC2?g|g^{_A5ETL6NEgM1(Sg)zwO$36PY_C7d(iOfPX#Ki7^R*W9C(FY6P1`vK=l z)tTV3E_?R+>W#^6xMLo7MEvt5uG%wh6H@;pgI_K-84>V$W}uPKJoz9CP<4XNn3msd z&c-2;)WmP{+V?fn%V$0kKaR}PP!$`{*cviioW-8G=y{R!==esl`5k68iHQx8`FCtB zJXEmF!(wj8>9NP_;#%JAm4+|4oD5x3RrCt;Qd$fi6DlklE{P=X*v>j*@+-2n<164A zqoqO1E43>y#JDp%VBxqQ>c$)Dh5$d{IZsk^oRJePST+O3lAk0@`t0Eo2}Zh@b;63F zl0Bf@k6`X_(sahBwDghhIr^E&1DQ1@R*!nX-!jmCJRBaeos*{%CgPdATv~a{8*R%~ z=wW8H=18EoVw57e7UIhUTW3(ogx@eLz4PE^2R;zQWn+JAerK>O=^zD8@+@mxvI-8{ z@7DHN8Uy?T;XPz5hve@?kb0i)$8s0Jug+R%k_QUoDQw!@e)UV6c!vf{1P^fKlE@LA$S~>ogB`eX!{BWAPpxrRZHpTjujV zSiDH~I+`FB0?4b|-D-}dnPF+s_R!1U3bxlr(86ujD4Il#AOLL?Y71&ny9_>PpfX61 zMzSc>h{jUU2ohro1K)|LRJ7bn$CAue2rlY(R;QU~BDq}DjJ0N)u&SzLM_vFs^x%o9 zFy~f^{FGeYWXN0by^XzenUv(ckjsy+=lyvr5B|KjeVQf90JTI!b!PmdY-fOfN`B^C z@&D2cp?U7k!VwYeAF}hNama{(OscY>M~vdhLYQ%P@YHv-9{snBKyEeXB~}B~q9p&y zc#e~ebe;;^qli)?1Zx>)F_WkE4ha~k<8cJEH36%WtK12DI?w6Hg7VF_4TpsC4oBZC ztJAyEWgcE>fK$K`O2)i(jc&KCCDm=1;evlmNke1vbDtK9g|iVtYCEh*#JrQ6E|3p< zjGUjvs~`jyK^o4U4lkG1pR6@tEq*0mpt3?deq1ChZc#$m80z~2C-Zob$Xhzn89ajn z^fc?(<_CsCN>!5V%(N^?3^&t*>dh-I-drQibOxABOY)AItI6Rbrsi^}nk{n=>d}g< zmxTlrp~oq!MKou1x{BZq`AcgN5OL{!`3LsHRR@VR7QPmnMah2t+`=N*OOlj7P&rc;rv4}r?fNioTjMJ+~1GRG*g%uo6sLD7)^@PHW3Lbnz!^vBGb=`%9;~Z z)|PLyf`6f2-Dg;GTJ#-{?dDdk9n4b`9*4~K!32l>6;j~pn=S3zbXxKn)G%o6E@;kl zX@njTq;=%uOG|Omm>8j@WcV(_AHvy}fHjJG;gCk$M7}hRhGrbxo?93U2_Zn=Y#7y~ z$e=Plii4CiH4d+ar#Sigm201qBKA_VhKl*q(sK;j&49|2spDV`5iU%!A_35GqE-Ew z{U5=ic8Lk*s5Z}!q&uLxc{_NrI+#)ph%<^K_+e%x=B_=j7uo+|10B49Le%cMM!C`r|ZE7hB| z{crOw9i|iub@XAk13^y)^WKL_U-#QFB|3}^U1+8@+nl#92|BW!yrUFCMHXqGhiZrd z#CREbOb2FJ0W2Dgti-D{uEnJJBBmefm9?(Dx$sFnondt}xpRwR@%S<{ChX0tZl|VR zt~LXYTK$MF(|71PQaB!gNOSbIuKa2gd*p%ZEFc{AJN-CqkA`|CY{-Q&VjjEdovDYk z^YhQ|1eNl>6N)mZ#1|g6#Ynv&tcVQQ!~tiy^ISgh+Vkq@?7fvf@aAw7`6wn+xxCOV zmZXe_xZkPH&hmBt^be`+brEFFSge9T{N#k2cuXK=?hF*R{H^qt69_yE4)J=5(S-7V z?gXj-Mv6 za+Tl5#EFW-9>!rXac&ex&z!CU$(`LmV^KsuB_9tcuH-0mhL#>%xe{eU)~d6BXtEu3 z7-Sxm6;gTHX1FhW&*jcyQfp#BxmPV2y4+x2QoB^&>c!*~aU&falM~A{TJm6U{3a7u z325UbyaZA~8z=cR25I-fJbMOTRVzK}yK$wCvgtg4?LZ|G@1N*rbqC*F^7$F&ksx8z{iYud&aF&FEabjm_#-$d;1H!Sbi4RB z1*B1VK2?yhGw(%~?F|=Q1y#l$@~{EAW+88crz+s@Lf+zKpXNh+pC8sJ$GEmjA&8!_ zy6cehaz#A}Dt|VKKDgbsAU7OVl(x9Hh~hA4UF1QVRP~b6VD9 zct|_Jz|urW%&$`Gurz+)PfA!aBo*kEWp(1_70THVRfa374r$^eR)u4ir5C5por5gl zZu3pk+FZG6kG ziEdG9w@M>PGsE{K$c;wQ=GlwZ>Rf9mI@NPG>?`~%)rXVwX`$N~r907E&)E~!9Gsp# z#Sql?9)ytqur+9KgVe2*cu?a&WrOQRg1CxN|M^W4;TB%#M%KAO%(t4gE1EZKw1lB3 za32?^Esx{!A!Gs z7jWy}ROUZ~E0P(eekVf0Q7=@hKksN%^aVl8A0UpFoHTyJ6xu#bq3!>eb-bof;X-ye zpA=T8Cg6blOMO*V**av1?*Ml&9d3fu>QL_BF7K$h0`^VmakukmX1{ypGJ{EZ7WwKj z!~B(8xL8%q9ZSk|_>|@&A{++}oXT^Zcy^?wB{Co=9 z*tuN(jFd?^=e^6_+788dTnnAxu1=un=#RpXm#AjLTN_d;VdNmCev>=r_=Hq-Ilg${1RO2Xg%{=U^ zac@7dP+tHYof~86RPTCa-luFdm2eb&;*?1ns7qiz9;1=g%%Vz6QB2v}X6IrhJh~H3 zVJOXKy*XmqLC(#N-nxF90;ryLXqtN#zKy|R0aUSWX;YW<_%}XS&)|z=OsuPpa+L&Q z96>O!s3bL%rHlUTc1??8Xv)(~NAKKwp7YJ)+PzMXvdTdfnW3KyevBymunCR?Pkt;m zME8VOl-7_e{*OvYd|$OBm*#%MPG2(ZD`$Mj`!3693=1a60%+UB3%MHZK$|7M29K!> z>kO?o{HW|l?HDDOQ`e~@)8xWYrE-(Wm0bgYm}c;~5ybMhd(6tHa2n=5^1U;39{MAJ z4D@Gzr9I^#dD?QB=8&k2tN?00%|@J+u0MtkUsIsma8+BbfzQ*-nEody5n~Pda17$8 zc2)3}Ia#;D?UwW36F0|9fWz60QDV-9^=0qQq226Q<_d()&E@>Ftgcka^>jz{io^XZ zsSYRlZpesr^S5dYWhtC<=r@gU{PYE{Y>29P8cI>TmQ{e;iR4@9cw{Ms)~Gm%=yM53 zLE@_wGJ0x^()0ZZr^AJvQJ6{eu6#Ccq3N-hxy$#}Dza3x>Q$VorR3u(0c*xPg2|-S zT|KzSoc><&DfTdmu%SPZXWgTcG%wNG7HqE%WDKlm8&` zMi^nSxYRe5prh;UP2{4pTP4N$%2ILQO;#ODQ47Jrz&X0!fZatY*wG2y|1`k@jRijX zkU#07EC^o3NZA<7kvj6Aw3|y~WLW6_(iT;4%Ozu(vj&?sk6V77jJ+l?Bu!vhOO=ec zb=34wjs}-HX64w>-^DDHOLVdTN@DY$BG=gOoeo2lJB#eYCBveaRl0OSyMn9;y3LZY zY@&dN9RY6yjtgH6j+iKX={Ly9viDu-CLusZna5^eQn5=N48O*z7R+ zD8+ta1I%9*Roh}tAR$>2L$wRBHxzxdpR-Y-M(G$mJqPvKB{3fkr++fvO=5nkGSU3k z?ns_^(E4}K65^wi+h7?RUv!bEY?fY=>g| z!>XzipkWR?)H92Y_Ajrc;2Yv-o{Auho>IcVM*`8r~n+F(X+M+et*T zo1lNIN}&^$15bd3>`x6lg!t%noeBXqc)aAXuf3HQFnzWW0xaT&Pucq(C4&1AyP8(Jde!tN5Z&4_*YqXbqO4x#*(llq&iV z&y33s@vzw^Db$LDVAUuww#ym&+g((HU&T?$ZsCf=4q-o40HklKE zD}OI^%Lv(s$%=#6O%@?yxJ5!}ER9x^7dPk}h$^RzDebDs3SbE=GfSgjZ32d2pSY@p z$F(m0opB@1Lvcfj2~r_{UupgoE)qla57=rEX7SAd+Ob9YM8TmOmTbJ^*A_4SpLexI z&ow7{dAQ0|QXWA(-tOj~j|dCP&2S|+EOO)iUL1#glI~faJ5cf9FP(P*r@L1X*=1)u z%JtH z7f*qat3#oH-)#y}9>wlE3bk>{g4WKK^B7NV4=LeTfj;ckXd*3YWlI$kR973&jN=s9 zWO-Q{i8);p#}3zL6ZNxp(|_y+)fWK-$V=X#LOwL1izPjCodRq0HaxschLd2n6{qy} z;&%C?+wkjhvE?+qFMxHWxq9&kz(YIf2DOSy6I4^^W(rTeMqzn*J{l8L`gGEk2T~j5 z&7Ezpg<3Nq6U$+qU{q~C2ynSFr;eirX7dXq_Aw+!e6h|W|I;rJklAQWd)XuVRNL5* z?b~U=y9fFbL26R`CjzhHPY6rfQc7tM@0zndt4z^Wtk68{4&0yBQMyWtk<=n+0wd92gEi+3f#qCTxOTV`$4}C4dZ3`MpmSHp87+aWb7f+v|Pu| z{G8a(d{=|KaE`wvyVby$S6dP%7DmLevKl8Xy_PQ22-9jv!_E8m>!^3U1(u(PZc zKFcnR-k9fyt9h{ z;~bsx=e*=BG2gTMo{p*dsHu}PTlg_E+i*vh78dUe(l@1vnajhlLLYkCt<{M4n$ShF zUt`()_)*MpUDPde6Sk6P@P~`uBayaVlUGdV|Gl*6&rt)~vZ-^d(gzXrG9UUf|3Nk2 zhzdS+^zC)M{7bfJh^b&Am#`PW7IXLeOmtyp{TSH2_csuh%!#XrZtb;{4g`_Hb&o*? zJRmUt#TAHg+SCtp08R&|YCQLYQ<3NEiJ9g*eDbe=(STz%FC)5y2fA?FY#RF5>CH{E z!oR#y+Hp@yw*OF3`Veb@x{Qo8>OUmFIEWKD*cfAx7jPCy4X#vE8LQ*0(~vffGOiwI zEBSEABvNJaTRZ9r+eTi<`dd9`__A9n8~L%!&Rb(;7^rCw_Sjg{1{|E+|gz?S!8<`#6XO6e$EK z_e-_6WXaZ3wqm{+gb$TK0Z*`ESAi!H{f+T;A?n}A#6udSyD z0+jq#t6kwL$H#VO4pp#~JjZ#yCFw#>n z!2l0&1Lk+coqrtL#Tt2tv6@DsG)9}M-R^_*yJP>p2#5j_2Tn4CV>InUV0RORLA^rk zL?sIS5eC@Eq2_Sd{li!210c%c#u#ZXXlFo9b9`RCw2=Q{kdVb?!#0yd56 z2~_>;bA!K!0qfXu_v)W+nZRNGM4II>xBO#kbY3(6{gLxD)3tgnaF2o2k|20fE3ZT+ zD^BvCpYi$A_QT$i$CSN@9|e*D!|n8CtKjnJv3s#ii_3TVNy?=tfZf zh!FxBxGGe)`y0kg2ybJ|!?K&d^K;6YaGOa!aY7(Zra3jm9BPq&r#fPZ*o@tXPRd z%N_L!KAqmjKTRnV5oB=9%=T-{7Wh8}(Ix7Ytv~TNGz*uA6HWe@NW@0YNfQ-@$_1nt zw$nQh1|s%~;+5zY15b)2-v)!MD1ULPMC)~`s`i$R&nq68E4}DauMsWjk7uHG?KAI+e~elmWF&&D#mz)f(ts0rf8MF zUO}Pu4gHpx!cWr8KD1SbTT#>KmnPb?fOWAhVjb0>`EdH#bdE8Tuw5ow$$I}Cr-D3K zNqX&h;*-M7E@G%^B^Ub^+Vu>FOP`aO=huzpVvxgCej99AXk+K-Z|bys#n8ve^Kq)poe&FC zm*sc}6b8t!at)vLU5!!8boJh<#8QGKU47heRP;=yB4~zv6OTs+Zz0lr(~OXbnl^Q3 zzk=s#PvTxwo>9m6;;fQ>Hd_27Wse5lKvr9U_)}aRD?aWvNn#Iw2&LO6kCqXxWcVfr zZNzbnv)Tq(*h8~$jQ|2MOB45Nj8yzi*bhi|6^#YYBoM}7J=+NKau_RQ-w9QX zx)45n-q%l@dX0m?%7U8sBBZM!%Sm-8%rA#uggeSfF>-WPMejSJz#UFYuSO9qb1fZ^ zym&O4n2waL`zH2ANdy1$@Eh42maOu$!S!1%VW07hnPQb()v00XUludyDD2%dA;fe#AL)Kj%AwF& z8Su|Y6XfC}@D}ds`^u>BV$hY^s-bJ?b)0dst_~WuROr2!cO66S$R-V_!6RO_Ia7-t zJjtQwGo4vofGZ%h3U;hWoN~~UC31>h3JP*ZSf9&M6#)smSms-{nC1MAoXP5&uTR~& z&zEqQv6@HIJ+vV~^n^=nKK2XrLr)QmqS?csAv#!oD(=$n!tF>}!e|pp?Dw8^tW&AF zFi8?zNiJg9mdNW1;l9vwdnfvVAw&B8Pd{{Ab(SKB@ek?@=|)$0<%1wEHp!}fhok*E zXg~SwI(^afQl%oFOxba;vEFXd-i1@yq8MFlNoOR%Zt*U$fT5~bgK-`T)sjf%D>qly zjSvYW>G7-^J`6!&*Ir*s?lfm52A60&=*u=EoZ;UU6Z_oQe6-1gO z>SH#?j^8PU4J7jYcH@| z)lXY81(E*b(#)#(W2tOfu`V|Cj4o;sX+p2hPZ58fCpLU;KRs~Rz%d-228SB?9L-r= zef)ha2tC*o*lZ@zqARPSW18X5dqGZ?@2S$zIqVj`)1o)8Qn-q;9dsXL8g-#+y)}90 zWc~g+#Lyb7o@!ApWltP^*-2ad^Mx{Fzm*JQ*Q%Lfb_A>N<@^Tt%w)-wUhvFPRXJiB}oXMB5zjXPT0jbnAc>q z+Y~wC=OFH&&d(+ih&$yj#o>vYg_7GYkI6?`)KhEcY+J=S|DyQ;O9eD72zxI2R%#S0 zXVblQtRy}2S0c!dSq^u?4TN=8XqGV$IHw;W*nk75fOWMlT4*!QXk)`8A5~)L>gZvE zbM%JV-TDwB{|23(h;8WI-D^Vkh$}-WluWaHj8)OMKB|VYw2M?us_a0S+2a9bA_$As zMM04K$>85G1d%~OHt4~tb0jD(#YM|*x^xwGvnhj#xE6uh7L3B zOnkjyD)g~&xp07ytf{|Q8k9QQ!i$Ej^)Q9ovg}Yal43SQ5^~NK&Zn|+WhX%yR3Y6< zb!+nH>DRQ==sW>CW+x3$5?%EO%W-?ELkPt)^!Qk<@0QHn>P2(zhyDPgg#UtH1if-A zK+)6|)%3uEc2^y4yvJWuu126%kdL8Cg$@21nM&Ovqaxm>!%-pJq#b1LiQ*d+5~UMA z{Ea(NmfVCZ;|}`?x>9c^X1)uoBg&o5UqWe9PA#s<3)jg=Cpk=>`a-`5ef#XbXHYOt z|L!fU8Cb7IfrV*QgvG_i(y^hyd^DLOFtew`xod9cY=|=tAzbee3=}rhpSEGcc1=0H z2WZ+3 zb+4h3=Mj`Fl)3U?;w*}!to;4R^5NAhU{Y?eu#{_81xh4FsgI0!xyd9lMHHx-r0PYd z5FB>rB$BMDJ!mk^%w5*QC~r{a+=#^C$ZYiV#%>TrqR#cT zI3Zkxb}Rt58nP>~B#;1p)$&2pYSD34R=j#H)wwDIVeev!>+IlrPEesDHA(chE)tT_ zBeb(xcQO_OMV^rqgJ}mau1n-y^DnYcpt(fklvcPXg&Z})$01@mQ#3J8pB)3$>J=hG z93mwu5+Th=S55(2_nRIKPyB?m&sHd!Z`{~uam zc9OH1u_-P2gl3~Apv7n9R}B+a8ud?V)!4;bm2VKKSSmy!$hR#LASsRsbWOq^oSF4g zJrfKN_IwVk--cZ(uKcJV=2t^&i0+QiS-G-o&Y}g>hRA}iAO6CAdr%8qn#7OH?Lh5O zKc}zmPrlM|K#}M<<%>*|*{E?m;MT6#vK7vha_2%wk2k%cX6Kn|{K}93IVbA&Ojqf7RcpL{* zc`VX0`_`$mWQ=e8XDho}ZgVEAUfk!)H~!y)>u{l>X4NCdXBJ$52o%i_$Xyh0Q70mV z#FX#_6zW6kNx`;IY~*ovmhhKsJeA^AK;|1#quIG*U?M_AnHNq^pPyVFZ`3GXZeSU+ zUJh(Lr8OtEx+oL~I8w)TCOdU6B<})7sv}cy$OVoVnPDZPWxtcw4|%I- zP%ss!d?c1MCgL;tNi^@M2m=l@EQyT7OEf}I8YjvmTqx*4SPhORjudUnGUVWb>ib!~ zHFGBO9*WuPGG!kC0sxHufXjb}SB z%rrQZ&i#bGDKMA9{<|$Zok8L}&%DoSrHaIr&8pxQ!7Hyz33XpcBhTH2DT0z*62$`k z4VQCQc#r0Q(>&#EVAH5@Tue->gkqsX`Y57N6NC&U-0naVe2j3B5VWm2Bj~ajD|<$N zb3lh+k@Tx)DCY@TsMH2bBQbtjIKzSBtB@mU@6T;wbtr@3UOMhnzrwuvp>iA^T~7)k zC{5ZTEYM*-=xppP+HH^@&1UPpC5nai^c}2mk+H!7Dg4Rz?6Rd*9o~gUT zhF8;y%1u7PqGA4p;+-w+d5P}~END(OJ@#i!r;fy{8>MCXE0n%ZPy@6#>*fmwHd#rG zHs+PB$)?RbR1@AElqbV36st}kcBjzpt!XB+uAOxC7<u6AD+49!D z$+wJ`zd4viQ42m3EaW6NyPuje6)|mrD=8|GJWaGE3@2lUoSB!*@m+xsghU##e^NO@ zb)OP7g>{nS(=o`i9DL`C4zqu3gcwtN$8EP{FB*E^ROstVXn6-5F)k}Q_PDO4=HERi z@xY3$45z1-Vy`C2&yU4#YdsG)qB$b>3L`R52lHUK%_)gYI4k5if4q?2pH6G2X_PqY z8v261zlyutWL5#x5O^)X3^pEAq4gyBnSaD?g)48N~*cOh=+ev;)Q zo7F@!4M)W?m*}p}#}f?dR7eHIB6YdT3u^-;mmoWoOU&Qn{z*+8++Y7TtF&@s4wrbF zGc&R4;=Q3+N9%@+yIH^Uwm!KJUGo(R4`O*A8mdZkC#vUXT zKJUdF-N(*;&KGLXgX#RF=6jy&yS1<{HMl<>J~+De5aeey`r zd=!~qL5JAF-vfvCR>^u#W2eJH3Rwl9c4X_~k7y#x#piu^9nq9Bo2hugA)D#pVT7Y2 zY$_@Ic3FfOY^Id!wb={X)S3L(@ISS)V1I>Csd+Dv{;srk*3F_GLb{#ydQ4k2 z*3D73%0HUSe&b88(;_?m5J0&F} z7j`Py$b-V<(D$MYAa5&Ml$;*xvQZh9=tieo9)u2B|E4HF9^j0)2c>2#J&@C~{BMMwv3_y@c7?Hm4q%<}m%BfoDM`h%` zVjHHDWUTzhtDn~oY9>_5Z{Da?IhE_e0?kanYqRdLiJ|&dn%> zL&}C>ll22xX6C+ad?!i=TizEkb0<4v1HcXXGScv{x~t;$l}8ayzVVP&B*DLT8tl7g z-+N8Hx|}~bZ0X%vyL61SLU}R&YL&C}xaF2u{<}M!A+sVtDTre8T*(4-8LyFQo5|2~ zh-RO-D!&P*gM{Ir$^zG3JJdbai2gya8*AV5TG^rGvV9dPM{s6-%=wTif+j2tc9<@o zl_$V#vn5DJO(#mnGcKrg!K7GHBZ1Y=Q)yd3<;^jw%c56K%H^k7__K{ZVj=1bl{d*? zQEugY)M&y%r`h@shDvCRrc)@q&QWTBhhvJoK~ranN*JHkm{Gtr;)2PpqahR%_bc^u z#Zckb9MjqT<>);e+Us+VY@W&q@4bT^kbxEr@K#>nsJ*PFQH}y4sD#E%HQ8rfe7=_b z%@{SBGSNDv;iHhA|pSJ&VaSnxcwjKL~h!pL5q-eE!k=cancmT(%n*A(ByiHDx<^ zKpQ8w)e^M&m@SS1{xeB&ej>j!B93mns6mQ~M-u`e;gN43wE9j?q>E>wq*g~&xRN19 z8+4GK|Bl#X(yS>z8;iWt+{pA7p2GvTqZO_jED0wjUn?q>fZ|J2_RQ=dx8YHswZ)ij zN2<7G-9PSc6xf@ZJw5mM_scSx&tSw6*!Ld=DGC3R{6ITBjM0kQj=Kv^pFlzDv1)nsUELQ?2;GVLsL72zLuo8TJMJbTv`-M z(h2rb5q|!~)fOXns`c-?8P?)Ftc{bJ)A6DykOy>n+fwLRmGuiAJmmFGk7yha`SR&6 zvjZw~>Zh6BE_kxyl=v4H*jY8fZ+Na5nv1~uoXCzC@({qCvzDr+Ly}5N1G7WIW-|>B z3lErWkekjrves$=@NqX@?#L{Jix@ClsQ24MW2no1mN=!_qaFim9mJwD zl$(+Ui}QR^bd=@q1IiWLuLdvbd6=2 zi_z#isN9L!H@)u1!O3q;Jj3IDqMoLxixNYbFjPrXs55y4i zublj#`l!uldQ`qgaTqUJ`=M_^A)9IPV@%LrwPZvzd6dOy$Kt~Xg8-_j2bf|}-g1QC z>YS;DbIPe4%TMV{+79qde42tB_E=mq`Nu;MZ;!#VijAD9&fg`<+x-5Xu}oADTbWXk zzef%e+85Ud4<b+#|Q6-(T7 z|Ajk3$IIq)Iv!*`I_1UDHZ64POQWS#*4|H)7WJnti=%3-VSIobd~XnYpbn~JB*nL8 z;AgX^9W`XUVxX{{xi%oeHTmI4Rzg}?<*fId;2ovxCUL&2jLSt9S=mKxjp;GT9;SCk zLrXO~kK?R0kQAV+Wd%USeJrcvZ<7sI`V`vM+>V|`K(hlfN2*{5Rm@AXh~4P_MJoy1 zNw#6n_lQ)S`^k*KAUE2wI83+~G*Bc%&@se(ZVqxAF7=Q~XyG#_KMggq| zQU1+Zr!aMqnSRfcTRx%Gau|ejcql`CGz-|9&8$4l)X=?9_6S4?VF7QAcPppr+(O$5 zVaBj!6aCc&kDl_;Srn^piu-8sCCc+yVu2L0LleTNS2&kpBfT?TF97uz%PO6*zQT`6 zY15SfvUGK0>ux8HLX*C_R5c6Z3BU=SzEvu}G|4;#_zq5ycbR4W;2>Ug9$nFW-h@#v?@}Z65R%j zKKERI|ClB#Ov)i8$4&k=jG@Lq3J5OvtxlGR0}%z8FjyQg@Ts8IRX&mI?%zayQJgW4 z)$%>y8Oi0q&y{9xQy%P&WE1fkiSTP7q^Ez?&mv-yJ>LZA1c`6m!|-7-aon=78shNE zxYc`qT%u7b)pe)A2H>#yQSsI2@ykRJbWi!GP9`EklBpQP!V{drglmjAB*3#5kRm^; zq}%cRFFBgu7=(z_hsTycQUpTQi3>jBt(J3`To+)g1*j zIwk^Z#L2;7Eg2wNssn3XBF%VCJhWY>^C|_x*{42?HS<=nd;>l;Xbb5pnYWS(wLSRc zI!Bpn;oqM9@KD6yOhhqTPk!E((D*l@(sf-(C5ciV;t<%)dS%RoZdOShs^AJz>`n#A zZulH}$s`S-@cA6c;?%$(fpRL5s|0LU8G*=ri;sIw2$96ZH?kQVS6Nc&FTw{OXH=^S z;-*_cEzh(tN_d3*I8MelgG5=46Hd;>pCuvq*JpaMJ{=~PRw;5Ul>P8@vdpBx1JOW! z;g;|Ye$lAB{qHbR{K@xkof_1?+xjt1YlihJ$^*a73p8@rlKId_$W5c^5sReYR$nti zGXM@kj5bL`$Y36LjJ|ONYA~XT_OV>7zqWpx>^~eWu_;8>7*2N_lR)Q5Dnh5I{ZUzp zBFpFIm9c`9(1&B5fQ<09GA%=Dobij94gtEVSp61SL+D9R}#A>rO!cBY}*;;syJr0aC!6g z?lZ~4@&esXSBX_}6qzzn6a`*fCm_*c4nz21{!H1J4n`$hQTjm2ol^~DzDp?&eSlRP zb!h1<3|c#XOp$I=PNo{Ho{qd0FPNM!uOXAj5_ed_nYLNX#9=DS2&Tw8(*vdbq70m9 zHfW};6p5sF?55Iqh~59&%W_EkeO7n^u1n=BkGA>>X8Hk+n~4UGg4&O~gzRU)kZBq; zRWwW{=TSog=Z|1HHc?~&b{t2%TxmHuPHZdMvSbS<&7^d|J-OVj4|@l=%WjH^)`_Gi zd4gfFRswz9L)?0jImB~v8_lC(|3u1Jv6H!3>6TQN*^xsWI{llpzyDf`_M4Wl4MVpL ztRu<7*Jt>&aM%evhp7z7jJ`E$Hmy?QJ68^GaF|wA>uHJSKd4mGK=J#UnE#KhyKJf} z>b3-oySo#dgS!*l^&H&Y-3h_n<>2n_?(PtR2bbXP8X#%z+xK>LSM@)5YJXa5?J>tB zHdN2}kAaK69I?BDVbWrr?6fB@wwz0Sb1z6dwe7u!2Eim&7e^~q>*!|_zifv=yOK|L zC9i3j=Uyy|7gG@){>MkRXp`i!+D=6sYd4<4PTJS1yJfU(p+(QBCf$!V{DIm1#xx`V zO{Zq%c1`R)0-S?xYYXTSo^Rw?@yO6mC!5`CG_vCNkfA!F;<6tb*Pajojf*QsJL^>o zU#;AlsHUX{wT`J~^BN+JM6SaJ_7h#8l}GqQ8i~3?XX)N-dg$Oq_Si{cN$JJrSQLv3 zTpTThmWohK$agl4Nl1;uGICtfpPg{-KyEQS_7fPw5vwgpvhWZKhTHI6RUy-=E&Ga; zM?;e_K8|52Kk6uT00nwL;WQs0GR$*Zhrv@$Le8GIt3JL)fs{^6>VjyzK=&8Ex4qp{!Etu(qAjO;<7aKtd?<2K`DqPi0i9r4Yja zm@TVZE_dC@zxM{EDmJ1L`v-!pZoDf>D4fX@g)EuXFWplqny5kmcon=PXrspUA5eDj z7#6SMXSK{%3V4UyN9`r$GSlCHUnNkZU~3+x+-bUq^HADc4UmF5^xXcz$fbzk$5%%7 z`#ye2sUm@?$8=C9@&e~PhKTxFMVe04jV_okt4iPNz<=7W{lZ5gEy{90Rw$dpEx3{i zp1Wxon|uTrZwpvB(96G~EDT6~YfL7C5-T7)Swy6N7c(}e#77sLOhL`zgNuc zqLHbUvnGmSsqii3O&O-tA|+yPjflJe5wZ`{G12~F`6*xjo3s~jp9$Bjy2mq}GIXm@ zZ~6-C-d6vWv z&L6pqO}N(+vM}hiWiwlDDn=;FqmE(rnQ4v{CFY>JdKo!d=BQZfY4@mG^k zaJ~)DN+wAS`{R&w-}#8PZ-Fuc!q>7(s08991F|-LdK)w7vT(DRI3TdQJe+D98Jb%- zsdjz=l0u9Fu|R5Zf;ZJpH$*}NF*#)GuC#=YSI0d+6TI+4q?~SWmidi6t9xlN%x*{p zULq?`x1PrOeA22CgDPfSwzedJ2vMrz@0tRXD&HewVcH_wAj(8W{Y5&LaXh$fZNA&O zT>lH2dir$=tqRE!`(pR|fy^qRE@`@(3`|>u>#XBDWE~FfEen`j z#r37kLFutFKeTh$@f8H>$z|%BeU#{VJ=Rf#5@h&&1NEnT37c1*GNuhMB}d8~0tXf+ zME`TX5m;NzgAg)8CWCiTleAkFbxeVi2GL5N#a-9&4og{EMARDoeSBW zG7p)FRzB3ZFX{yM>HAlz>7@u?b$yM%P(1+=@U?7Vt$G*=a7pJZvY6~kz}JYOD9Aez z;r7B2$q;kkNWseC7kK~{cS5iyVXYyHR|vhz{-n24>AhcmVaG2eg}>r8Y?+~fO389= zV$P&`MVuV-FY(8X$oXo~vmC82c=CBKe@cGhx_tm3kLMuS%lK7+&IGNnkhMBe+3Jt-P7bq7TG@y{~r z+8@;xaM2`^<#O6-9tMo2pXE8U(0GhBC%6wJduggiVR!t*;yWcY!HHCO%1Px|wd-vI zu1x1rz2_Cb@lxD;SjdMq8~gj|^U|x*M^1_ehni1QmNCQofi@`M18&S%qnnMb5~79@4qA)%cjB&V;Dp5%IEdB1Ft5<7?NUL!@sa0U^!rsf;f-1L>SipAr&QRC&- zH{ol>SyzWQN#E#h79P9KU_pJS9?Xku$t8L7itcY^mpfWmT^}w)I(5+$&(u6LCFQx< z#+hji(-b}VF2jpqQPCSwph13dtU6}mMNvl^eRcVmv2%x4s-PQ%F;Y4i#hVSH#@)ke zMdh!fhNm0Ie_o!O=!fcWzB;1#}0>+r5j>)zR}tL z#R>cmhZch)%En~!L6M^OPg2*%<#%Oli7PpKd07=f-a!s#lXMC1bYho&HlRy4y-`_6 zc-0b;wvyJgRPus=IQ>@H)+)W|9rJ!xPR31kVV?afgL3&-Jdv0v?B6%n4nXsX_So1V zFmb$b^+T{Ptq5;{k;ei#nJ0BIx|0H#fo{yN8^9))eH!ar+po(w>k)BUc4nr`D?o|X z4p@o;P}~gAn)G<2ZVDYa&x6(rTcV3_M(5q@Gb!401^%^$N7bmrZOE#NkKri|)9T`v zX68Y{@G+wFMJd|ll@MOL)7hKVerKXZgUOli(+HBcql+?kKb7deFdM>@^4pg1 zXf;JePvcKj{3IxG&kr8;hs>H7!ys@=^w@`6>T!zvYp$_hA@Z2~`1kF{PkH?d9$~@X zedtbSmW)DgQNv!QZ%G9tio@P<2eC9FL`mJy5b~5WvrY?0*}G)8tEN3wiE=SY$OeJ*?2Vx~@N`^pAl!17! z3GI?rqeBBs81E@o7z$Rg1Dr;K6+wc>Iqt9g)-HNZsZdEI@zn@2eNwRaH7P=%_grfJ zaYxJ^K=6albDoTbHbt(S##Bjxk4(x|s&j+{MU#r_+{nYnps&OB9Om$@hGD0wd`KM0ga+$|U_=+D;f39_7fi!9^W(oT-W`t&SNsIe*(`|}f zs^qLKI689N5xVFWpM)(G%SlFOG%`+~OETPOp6%aXyPB#ufF_x6Im?zE+>@D}$ror5 z39GxODRb*`lRY;rM|OI8;&@8j&3B;Uls2T8E!mY`7A{6Rqr%3ixwLS^!St%kG=Z9y zWGf$ZZVWD95Wi~xVEq{1l&(7$0LnTe7fROi8UeaqnNM&7)_c-iG(BQg1jkg}wP zM^mIo5$PF>1H>|{bqS(rhBTs_i&lm;sO;9hH3}yWKf7mQ@K|BfnjS;tc8-2emh`ZX z(n}zsYW@RG%0ero5L;UJ9LK1!@FGNGuSSXo(`cOfVd!y%9XmgAnE4M+Dr9z+^;QZQ zq=))~t zo&sHCzD8{9m3Tli-_1$|yKB0XBnP~qzeRdDx`G5a49mLD_@j(q=5%_5uYep1D%hqo zNT)hslT@e3;^JcF2JWmN*y?@ zhfs1YjwP{Ru`Q#sQp}8SGJZxw1qv>!+~6OC+Oy#Y!HBzoy+s2M5*m~12|$G3uc-Ko zM%1-UiRS8}Sc1tLe-O$Dyr%y%A&1>X-Y)}xgV?}oqD$vUY6jTlJHlF-z|Wp8D=k@|kH?N^UMhyJa~P?u8`%NN4x z|3W=o4*AlJE7tFBXw)Xl&wuoMIOZ`bP#Nc6n8_W~P?MPk&VL)n{QhM@IZY#@uwD9; zMowDhgr1%S4+S=SL$?QSvDQD>D6w=iG!^s(_Q?9GNzH7pjAeBCR_L8-Sg#)c6op6 zb-^I~X5#o{eM-3H|G#lR1JcXuruF#dox+^qsofXDlSKsB4KAx`jaoKrlgdXPyMM%e zQKSh})%?k?uU!!UhUHVawho%qr7cK}CHZFvB5qo6@7!$vOTLCf&n3zTlXakK16hO> z;l+ZJu{IDtOe^NnX-4BkJpgf&ArXJ3d^7HAmR}b?;fanNtAezRB&jMdY+ZNs7mIda zD!B_(U0GSq7+T~kREb12X&**QkNV5Yua^SW6cHDWsb=v4a7V8tDk+eRmc8(iXw(<$t2`kApj}W$$3Oa9eqXm*si4lX-|+k7WRy)`5{f{;nOK* z^o%ZCgY{pMvMK%g1+k6MS;4~#G$)(Gx^4>pP87w$#pN|ZJN%!Z-38<~;RYMzQ}sf& z+I8wn=#ku%O(w88ttqt0o~gy~{6Vcx`mkc>aBT1@0@gWo8M)fKu_-s@vHQCvx2HXXFUN>u*j*y8&AhDUS!3AI3P6dtSCSbSHy9aeypx&`Y~8$Bh$3r#Uv%8IoJqt%uBOONH7x~9vzOvELqa;} z%1ig1kJ(&3Y<05ACF3}Vl3BUJ2*MYOy!vd97REQ!aqD#ZXVS-lV5hj+mxw3&-;$Zj0KaW?$ubEzlY1U3 zsr8`OFa@$YEeuvtExST!S*3%?=9DJ~i9crssqao#krlShj1eAhxtP2!pT4m!U8hnU)kY@9BKJRi_9rm<_>S8n#)|J?b!MilZm`O7!T z30K~--%iXA5T{X_KzkgNZcajN#JA^@zjQxMVrXkUs6ky)?;ed%PR4-o z7uA2r!?>>*hDi2<(jslC3VMKA6OiWN74@vZH#&Z_hR zHJ)9CynC$QV*BB`_uc0QaVOw_d>e_@fv{s&p9%#)9G~Db6+p%E-{s70sl}R#h(P}i zeZDz!?YO!P5WkhYP>r5p#`}>vQ0bN_CIZQUrf5K3QIAfZGP{K0Nn={t9eTnAL=zC7q>5te)5dw zw4{ToMOmT;rD_HWt~?+k9cFKU)I42Ft|hKuzW#OmcR3h8%5A)bT(9ch87dtM%63HR1j}M@whhQ9@kx-bx#!pC0`v{M!JS#*(RibmncDJDVq6b45f-B zdLo5m(v`QGC8@=%I+^{FDF~ZV4tv8Br4f~g8Yu2uC#(TQgG4A4F&)9z8g-bHEKLrh z{`bV|0?ks(_$P;=)un-W^TrH9jJFhq@>ZvfCpVu1ak<}$MvT6e6;5`!0dllUH%c*Q#zR*UrQVVh1M4LKJc(n)BBWTpVkW%mcK zZS^oUs~c=ooNv)g4l|(GAB2E^n4T3<1*N#`QMDLe=z5O4S#C;vkF(QS)3lLRJ);`> zzLtMdM7LiSnZ{fmjsOqWG)Bv)VwSScut;fOP}K^2{hI|A)d5ts;!~wfEHK#@TL&vw zv&d5>^*>6?mQ%|?LWhw|%S1^t6-P{z@UdFp@2K^B`;W}FU>}PrP&VRZ`Cr_+Jn8V4 zo;~Yy@7g5F_5n5N-oyjF8PspE1c|&2f9j`dS)Fk>`)oeTbkd41(n3x$cn}HgxFSj> zJLJlnD>#~#G;Hjf?zp7+>o}M}lHG0cE6Pz*%D~!QlH23*#T;s|aquP>d;-}#u~Qm_ zr45Z?U%KM*IU&zAskVUvuRs6#@m_*}nrmzr!BW}ix z&SDt`2q*fH?b_UPwJE_OXP7>Tzj|xbS+EpMw{QR`rSH(pbf?M*PfXwjvlMB{pFV^$ zK-U=H#wls$jnUU1&QnTp^@q1LDX4qK%R6WuO?s8{FN=5VCI1%+;0#p*iBM*cWDVvE zk59aUb4?>!5~=T()?P;1>Lkar)f4$WSfh#f*h8MpK#qngl~~I&o13Ds2-!npzAb?jQBmv^D*%*B5Y%DS8H`__YCdR7ya*|9ZK&pzoX(05~glhl*~lUS;w zIwjoO_QFNG^P>Y)+}$SSMwHOLHw!76keMViRG>kj7$yl!*M%ht25O`7?u|bq`&&P~ zvn1JsAmu~By4SG*mmYx6BjLbmhn{N!0_o~O6ya>@$Hapr`*mFrq3aJ)o}rJw-(y>h zoa=oxoHc{!nN$5h;xj?3&N%#@x;Pr;&p`vHyKTX4S$z4rjJ&Xt2S*#oQAYNvsW}D0 zIQ3&^rfEl~xS}uRtY^orAJ)SxhA|4nOPtaiV*upMqlvCbzWBxr-XMgyY%0)czV$ag zudG_Xz5XOqb>&#@U_eG8GHoS(4nd42{10b0B7k2Dri3Tb25lJH!mDhu;lMX2EJ$KC z$j1nSyrnG4wp=_(TwhWZxb$$Ags@j(;uG20y>r4+>8^EU3b>RdNjw}Q30Y}mZ^jwK zbo$_zQ-uK^LT?4;pNi(SvB+`JFDS48M^*TX?bw)jL9Zh@}ye5|3GVV%!J6 zf!<&9sM{u}B^Dl)e0OuN0iVk{d{XRv6C|Mf6l@%0nqD`T3){VN4)ltI)`%{Eh8ND@ z=DXNwWekQ!eCtN&2GU|HgLLH#R}Br~BrPBxvF?ao58&AC(!V{FC}Z~v78Lu-+`C@6 zVor~<{U^gl=_=&_rcr(w!{iUi(6_!GRNaTzqG)x!$mtQ&XjyIYRubFNOvb_rA!gds zxo5U5oq^-T?4%~g64ih|@-E#prS=q~1=jC*fko{PpF7>}D+LEobD8WkLyvGvfnj-C4Mn}>{nZwqDdng-(j(&a~6*~2k+Du~7$5ocXEOW&l zRTT$p*qB#ucW~=5+@H_pRiSglm6lcQ%6?0Cs*E%Gh+(hMa^h^&^rYbn{CnYA(_Km8 z4k}kL8?>daO{gF@fODR&)3PJQ;D&r%MhUZY%V{mhuFR04Rs^@x zQ5{Q3$t6fn9T+BPH&3kWCBeMZ_fw6+7{aXJ_WeXk2(<;XvsV{^_i?UoSD}1~TTUtq zJImw|ya}r+oi=oaif>FvXdhNNKu+ohDZlbWbk`EcC4te!m>;|e_{t3Uw zU|f~Yq#wmw(cPSqXij0pELK9tepPPxqz9!pe4y7R^kL<&yyh%xkk;lP(H?=|T%eo5fRU@iYVI9AjnPb?|h*G>&y z-Lz^@(p*k3h`33H*O;O#mxFCBPHqWXaIMT1T79Ky?A4aNqo=R*R^lgWcCj2!z)07L z+tlkOwn|dMn#(7FFlLEac8i<7pzf@~-HppuKq!xx`Q?_usDcF_si3-5kfOtgf2WuIw-46rOB^kO3Vk z^lE%-41j{XQyQN?T$N^Tg~5dnyyoSN&Fm%OoYgT;9$MfL3kz3QkeC;| zb;|@&s3$P|Du&tkq53VspJ^y=RrATtZCz?(D;c$Ug#8v>r}xiiikh`=h{K0TYI*y<>D4JHwkUEFuGseia!b z>eR*^-y4e;cT^b0Z%jB^x17?GN#nz$a348Tc-Ff04_ZzOnJ_F;{*>T!)!@m08nm{%pv z?R@83WZW;*3co-v%teee1W9M-9X>N9|2nz%DHVZh7)m?3h%6OvScTnC>td8i>7~xE zr1+S=PJVwB8jXPZw=xqH)GL$Qm0D+mKlnIgM<1t~n96sBj$W-TNK(q3)>Aa9#3{G8 z2mvdyT=_Iywtz>*qeh`jeMuGCL`J)Tcc@!YHmj`2A2nrP0Po7?6jIh4Vp~1Z5WQ;2 zUd~-@n!gk;@IFjv^sgVx<00BC_l$jIcNRRV4ZnvbkY+r&^m=4$v?vvCAR%-R z1FA9s^KS_GL`-CgvDYRQCk}ebgD2&Ah?ZL1;j*hAJuAA6-GWs2U<6o8Tz=>$Sk8!X zv7!kZ=%Y%=d*l)5pnM+E23luDTX-pKNrL1m?-V_{M`a~7rytl^Hqoidj6&ef8O(uX zXWl<53m(~>U&h?UlPnQh1 zxyGc)Ibf0*X%aAMbg?pW=Xk{+Fz@Kq> z?gOsF^YmT|1p%^>_`vGP8Lmj8g}^Ie`Pzo}xE7OAvJ&;Aww@&-U))P9(>`%Iv3T~^ z26_fl(P40uQ@}f_sSJRB^6-^`SaYl0!1-=U@BM48pzl=5+aIgnhke&Sxv% z5~quGYC76B%m9!9Fnp?0U!XtqG2d?UlsJ(7aTm9yohwA&UKG z$qjGdPK-U5BD)In)ojS5&l>(YR+GJf1#`C&Kt>o;TK>2q3SmiXNZYyvbqUfLoF-oRtgvsVD-G1Hf8*1_9*-yJ3lD1S ziS+1LMa99ahvMa1#q<1(+jHAYYG^VFFBhLw8f15{C^2xM5G3tEKp9l*w%IsQ~tQWIA)~8o1NX5rJk~ZN|FBfGT9U zCOoOYTf^zo9988-UBR2~K8tgl7bUL7L~%}~uCU2*Sww_#{$Oi%-JSM~3PCFmak){q z(&s}!Pv<91`Tx*-#DNmJ+Nzq0rRZy~7(86~9(Zve()7Tukcflc$oKeS+m?q0^fU}b zT_)z`b>Ed}XcnrMqjQKn|HL<&sk`UZF@;R(DgZguTQu5pbKXJ86uEn?_IoY#&?Gx! z(%)>Ub*I~d?z{U;dT^vL^<#vHBI)Lb4$Mkm4m7F!2$+qhBwZ{v#O%Mb%m^C}Wp{}s z=zo(L;o>jm{&s;Vg=%9Wr^D?d}gOksRB;7zT`cLt*-WCu4Yay+Kz_MLtjTGVT%@Ota zBrQWI5fzJ+&lWfFpRD|8D*99ELGl4r!vT@b??sPuBY&-0kC&-GUHc)R9aAKN%S|ix^VNf zpy1#r!GLs2DLoe9m~2s8YmD~aL{9V|?vC_Un6m_C&p=zI$V%g-K<50=RF5aIONa?f zLc%?n&3Y&3E2r}K+h#9`J7h1kexV*)!Xo2>Uzb7FSLA$-*m4nz)SZ>al_iNaWekCY z4d>;26%w6)%3Wk|%^n>{Gy9I@Z9-kvN2r$79cr=sWoA>e>xawf=}5I|(0@%n{YvvJ zktZXfQ5io7fq%o1m+#01DFLr>V4#@%HB!1pxSrKtzi8xML~5FM8IhN$AK$wo*B@vi zrm?9y%&6a~iHU99q_ElDI{t1-JuxdQ?rg4-lGj5Tj$lJSveMtGl@^PyqzN%%HRtMt zsH(^)Ya+4;#Yr%}l?i4-3!Jy)G+VRdtdNwq#?v$QuDK%RzVf1AEhWLD;qO@9YhZa6 z)B5LH+FZwr>RTw4h4kH31FXO()Z)6^hBA&bV&o>aN0q@Ar$jr<3uK)-6M+g_tD_4Q z4_MTKhj>VSa<#^jc9Pb?>GB(wQF>D0=qZepp&EC=DA=|JwR!q_T|0hW9FQak)$A_xFWxpG{ zq^lfr*YB^_k!!UxhD_P#y8)J!hh60lcz=UvNcff{9OfZ`JM+LWawE}2Lyw<+1cNAs z-S}863PCaT4pUXO>5D?}PM=Xx!A$5(oECH`v|3Ws;BQQ@^@D57GC!tHzZ#*dCcfVfvj3u5{vuwCRQ(lyFFm~W0#B?5hsV6jD;FB|ptV9dN)ETv?gl(W4QC?i5jLi)>?OCG#j%)`vkd9-3b*i)4&<|`Y7 z@)ImNV+1O>F_+&}c>k6<%`zlGk(0q3;HHyIVJQ_4s!|A|n?vLqBt_b-;JN_aaUhAv z^L()6wFic#RV#y4Q#Gs(HS8A z#5b_Ot~1V=M^AYkmzm@$HU8B@FQpS((*}zvKTyk<<5Z~HF$3S~*4O4;_C}Msbfcw4 za8ZNRA)P66X{pi^ljE*@DILmhYO04v>@*(=Cr>th!koby|XEu@SdVW#CJ+KX|2{)=L?=2&M$Agqv1iL_-UbB9^G_WJzeF7 z4HM;WKKix%Yc20s1blZr^*uv6d>T8WL%otB{jP&BFs$$L_E_ADETv94aP@qryFE_O zvD6-WQqs}*Igv%Lt%QsqZalY8iIR(}!C|Bd2wvA*k52tku5C$~`LI@)*D9xpiy$%I z;q3r7EP9`c<=f&!*WLO~^d6^%m=6XJE1JX|;;9K8O4)W*WoH-RbjO1CE*BxcW2<8! zT8FSWZDK{I-xz3}wqmJ>B`PU3UC`%K=yytfZTQ}4AgNyEf9P{rUyH-C2L9==u>+@fSXZYDv_KB5;FU|y?^Yx zr>v$U83pSSsbsmvn5CB9*{@m&bO7WUeKB^3E!1@zo`;V8e5pFDT?K1KJR_(bn}ooF z=aKHIbY2HT+n@gof*i+%m86u>!|5Ge`kyXu~IxmW9wLwu{S_Vcd zPWa(Y^FS|D(O|mG%eK=X3)ANU!CrPEQ7h|xf&m{d@WT%?Ff&5;#iukJHLsY*xNav; zOE&vOs7bh#b~yhmu?Z(&_L{tA3DJy}mHk{}(U7oJV5)-7fgdrKGF$Voi86O_>kfgQ zjt3&brf59b2~q%M{56B7XsPw27&G1s(c^GYbBudrZIuGSX6-Y1f2vie6?R%=LtEGL z!7&_CHflRHm~nSf`ZnpmH~n05LHcAVIL@wQ*wnqTn*aDPPcOp9kY1f$$=t}&eV!mV znpowVle|@nJ1OGmEeEmbNAHaRbW3DXfatHbqSvy- zb0Eubh>7-k*ji6Uf?H46#%^t+Fl6A29Lp!6PR3YUM?>3n0Y1#6>vXj#cQf(uZoCfW z7$MEffbcZjqrWiiV`pl-a#}Rb+%XJp6*N*<3#pY1sglzrIEhkV^E=BxKV{0XI4K+x z%pA$#rUy&Xpd!RSk=>Lr^m;9aYJoKK5ayB8utsK;=9nQ-uGpy7pAuBnBboS0%25uZ z=>Fd<3azAI_zS(|rMS~i2!M25MYr;BBcTt$bGjvof`F{q&)ZtZR zaU2wi6)_k|9rYwnGtU8lZIYGa*}|HBl|C&!wf!j^36qYHmQsa6gFkUrtYmxB z#S{hiMS>deLZmSB0;l)Gk9g*D*HQEa^c{%SMTO}&dqH6_HRlccJ2DbHvt^a3 z>e8e2){tzfD{D{7#>&+3!K)(=&f()+DTWe|*ViqwU4cm@SS@ao1|H6}2af7ONC>k9Q&o5m(8R67wlD)royWkqE zc7G`U8^r;9^q?*qKNxf=EEfW4)AABSuDOM!$XdVH_}!3}p{2^Ki5!)AH=w!?bM3ka ztri<EKnrnI;UV_LK2YeWMR&xQ5syVf;D+-$H1h+Ls5l_gMVXksNW!Or-!RD z0rNUM-4zC2Y<(Mwd?Ay<-;KJVjOVPh!7@yi0unG-owR~wdCd=U|cLdYP_Kn3R( zz!eqbUNesgx2HW{jYg)yS3@z5N=)^IabcP@E$%XE6`Qus zrMMKh1btA5x{a#nVXS=Kw+NO=TC7#rWQ_bF2J=}3ESs7QdIBq;4;E4N>kU8S53C)l z0!f*QrGOEndcj^##=5RBN>>)?s5Aab*OI@Oz*bu2H@Z>IR#Np0ZTl+PsjpM@oxfa` zPCurdKUZ@U)D*SS4#d1oLE8J`-IK?qG175l1s1W%t8Qs%>sS)u3=Di%xRtepS$iRP zTqM_I@Ri{1_|rumesg^ElXL&?_)tov_#uFdm-ZB0X|gPKrjzwAVs*i zLuZ((S5wJAVqNlCgP&G)=80Qrv@#%8$wzjV9-R86CvmAktuR_sL%;pc+A&uh6_iA^ zH0u*mq1J@jBM6?Kndbha>fs9JTtQL>k8>)?wL??v*z^!2q{^WwKd7S;3eWwfQoLLh zGot(nhVrwC|6!CwRaD?vW>gJJKFIwys`n^95{Vj_3up)SdXs%`api*|4Pq`2c@F6-!UifhUXdVz~R?>vi21oM84Skp4e zK$;sZEQg#smrpw%C!^L{3d34TBmZ-RQIL5Mt*z3XBf8usGk21xjPW$x@7`C}`7GQd zv;?r576MI0L}gIcw$f7lW15g-3Y-kOl;J)=Exf@(*h$VAIG1O|*C~Ezmi9laJ!>xO zrxUC;#Pf$Rb9w8+Nt3Km)?SWe>aXF=%BhE5Ek5yX&(GzTeqFao?dyr^s=^N@6C;v$ za!^|H{^OWWG>l9lV|52vS0f1y5zq%rZ|-yY^9;q;`2oYeyJx&(S)1v z><}xxQgXi!Sirl_;k`!73WoG7ZcffD{>;`jEf64ju@=^Bd0x?EIKDf>Iic7go%SRM z{M;-yo#4&NtQoIY0KIz6lLuwr+$Z_QN_Uem3a&ga{=v@GgekV2kIqG-UXqY6SYP^_ znW36|Lb0s=Xci-7QkAP;qz-Z%R=lEKW7^4xtufrnJ~J%bIm7!lx^&g2 zE@H7023sf3QIZkK`v!jLbrybAIf}KFGqhU*25nJ2guy)f;mKu_k*{`BWR(=q*NO*3 zJ=KLS39=+Nqjd+#sPM{H{QIyn!CX~7ar$c^!)lm`mBCYYgsEXNDxAo_uzjhQSE0Uf z5hpLsKcmy^Q}5L9w}taP#PlnNiXj9PG@*torAFm zg(W!BP)xqmofUm`7dA8{T`Y=})5(Io!0UJv#fP1K8D6F?s2jc_`N=%4Wh7`-Epr?M z*qy@}`L#3VO&>Ag7`mXiEBAILo*;W}@_cee}MFw5s4)pFO(+ z|2=rQO+V6@kw%1Qfp>sdRra^)hcCkVO-w9|T+`N(?t?z{J{2-2fYvkc6(T!uUJrGk zbcPWX7^C}jGq#SE5bfE6w>+$Hj)uLE$?*Kkw z*bb4LWblm5;S)l$1-?dYi8=E0+kN%mhf=stbUitKUi4Wco>GIEv4(FO4IL4ifFNzU zHA6a=nBsT%!G+^vxKmsZ%ib?f`AreuPF5DOa$ITr?vFk4fsL{?Qys^<7rmq-UycaD zEs7wev_T7tt7#~}X^*f@8iz3Hvn+WjE`NoJ94sZG?{zgAQIX}{RX9vPH#idJu*Lm5 zB4?(M9gRX+0|<`dh(nn}{@y_dmrt2xm$QN4>joGbl_1xEIv=t>RSRQr+n|%>Uq_-L z#UZ7mV>#E7i(SaQC3(ih5SGl%8>GPcp!@@;*b?FBpV$1VI*}_|ssQh(j zz=L*?2rrVnjTGAQuj*~A{V4SAY&2V18vKN!xESgo(Wv|X!Hg%So>{H&k!{g3m8@b#}wHhTta)Zskyhx`V z>L1ybL!l_DJeII`Ei0cBAg|CY3?Fxhb{R^9a7+_#XYY7eT#p;3xL z6T(YwvD~%sUC&eHkao)a)Th< zH#_Y-#DwxHms^IXl|LQ#9T7`pUrScNZt86tpuB!*QmzuSN%3zAG_x0L(=-fS!7g|9 z+eXm8%s?c1m_m>^zu!PzQF*6uStrs&47f?DxC7!}AMg7f?YyR^L8groF}b=!=ES4Y z0I{9#)w$}*o!@?__TlT(X^ss0quO`7UgAh_&mk~=Ip~XV2j5j2gKt(*tMIbklQ=&Gu4qf8-`6qnAoBHzpD1 zYZXK7no~=14R(>*mqwUS6i)+zmYER<O-wT>fbKJ>dfkLxE7Ly!MPLVA9J0R zR-C#(apM_QTv7UBF-gowTs?rCS6Bd2?-IrNKr=gSV3U`5d2=vTZ`i`Uls;G=X-D$* z5vKhDfurSFfGtiJu6J?Z(0VOkOR*c!Qjjia8lRJ}Gn9qW{yZX7b`YlP*zsW3x= z%w6rdu8+~?oN+?Kg4&?)ml&Vm%3wtC<;CyI;(*Hdl+-DS`U5rAT(i*jD#eV{P)(gq>iST*d6{1Sg$M^$xH1P%ad3lFb3WtpJy_g>gKj|gDvBoJE zr%`O5hE8j5$xFEc{B#{4Q-DVv#qQ>$tTf;$xqs9ftALbL`5)fjXmuiZ)rZ&Ltdq>Fw#LQ*n|3kPn-bQ+_>0gvbO(~qrTN~<@1@~^!_#)@Mo+ZSbe$SQWi-{(NmbScTV9l>TZiI~C z??yU%(7Qq)rtE=SyqIMjB>0};$GO(bzETcPw1^PA);Ivs?O)~P;}z@;R3nE%qOYIT z2c+49HL``%)RR#au36FK(?=&JRt`@ND!Gv79cqMivczn;d!XA7$z-SEH+X>zaeOUC zphS(K#V^73MSs9qM9Y=2K0cejAu`YkJWL$-$Du;=9rq^p|J3dVG9T?Jb>)xkx9-$; zMG@fIP0bEHxzaUcJRB0a{4b{NfjzE1Y8QBH+nkBr7;S9Zwrw=FGqIhCZ98eqMs1vl zo5oGrljl9}xvujKe*3?@_qx||$S+y+^!3mEF%Hn=Ox?vPM^xXGHYMis3I3~~Hy%;@ z702NR6#VB1SnTaXEdMZ~Bt#9B!L9~1?0LJO898)txC4FouS8Zz{%5rC*p%~c<=J1I zkV>e;@XYiFcMJFx|5Tp}tzfy1^h=$4U)`e>^!ji?q$`&N)(XzuIFH~tPV2}wZ}dz0 z3L^j2gsVH^e9oxqkS~0JQ<@=v*avhCFttCpt6WuNyV-Kw2xAj0vJh1nOYuIu5%J97 zY!82<`x3^gG)hsjqIoFkEuV$`W&5P7FRqhD-!x%cvKiE&-S^Vb7bCCGaL7@!^A&AH z?)=vme~xn~5!6Z{M{V~hI-=?VW2yce7aqm?QY8AKvfyysV^H)gQg9q&lCp}IcF36P zzh${4S-h4gKTb*YFId{UBIn%RB2Sntapp*XVb7XMmd;FOg{FzUpO}ACW)C*w)c`f` z5<>WgrRJ}Wq2}?Dc=GFV;qtwaS~%l+3OuJ_k%HS~S>H99mXWH5%;j8SL$vFb7=uX9dgBf+Bz%X(pd6lwgVvOWB7-vODBI3)+W8k4NrZRM+dNdS&xr zCq*lgP>>~?Z7t(?ec2g#eUtRf55_2r(bO_)4^~e~^%$~^cK`yYGicF=_WW!*Kp)Wq zzXJ#fz#Ys?adu=p@RwAj_YR192y7s|4+)1V?L3~eXIjn*P1_9JkLXf=+G&DQxL~Gd zKY)NBNj={?b`+_god<&g>c2&swTHTao`5!`PtTfD;0cX9#%zrL91fc6u_Qvjvih;l zlm?oO%&n@`YwzxLQ2i@(Xd>0Umh(c>E-K6Tx6Ablm%W4Yw;HOe?ZPpkdt(^hNSv&P zC9SkurV1|ZWOWdX*H${}J802KZ?_m&H+uQ$DV?|1A)~ze9QxQ&Ef-n^c5WFJ!yA5# zhyK(vx4q;f;7O0$l1#18Dqal^5isLyy@O^$fWzgG4W(SM&`Z)4&gTy1b|w`Qa0*Yr z0N-a$sNl0=uHHQ7s+d+Hun3wlwK|YJ>u3TBB$&>Q47H)wNrz!ASE1t0fYiKw$iYV- zkd_-w4Butxr?B6c6B09}%P1qDaOzoh6!HEzrfb^l;*|6=1Q=R*}XTFjl@T zw9}9ay3g7tI7aWk@Ds-Lh`Cdr_usdu1aeL_feox2Wviwep%AAkDSL<6y$({~gnleq z^19l~LJ)F3xjD)tpJaNvmo{q(Ig%@LS(R0;t$Gz~Vi}~y5N5$Drl8nN$}4oucuOs9QwAiz!NZ zR%U~6m^s8{7yJ2flcb7VZofPpFHMf%4z;OQVpp^`dCbp0rgS7<)n@%q=lLiCA9`BD z9C9EwoIiR$jYFE9l(wTNEdxM+yrWJ1?psA1Lzrf&#JZr)frbT}nzIp8An|waikUda z4xaeAnxRg?fz#sZJ?nYQ5xSI`H0<6Itl+phQ19i0%`eP!1}+H@jmFN_LeysY za+~M10Ok%zJ6=k@69QQU`y>s{wXPNrQ0z6_L}y%^zZlInd039CJJh>D%7T{#?kpY^ z>{)BD;WFOQ%`tuwI3mfQJS1D6F7f&&+u^}B%#l9qf_M6FRlfZL2lfK zjb}N!tD>>^tXqDKE~wx z=z^b`Xi5r4hy%AYUv|au==63UEA@NF{ZAz$PlKlsp7pSs55Wj6uCIStj>LX!xP9ZY@R60B% zWgxe1Pb;8sbC}_7X=JU;=@Qa+1bw>lE#-lxkY=DwRv~wLZ_-mMbll!bA_CjOgU3l}_&q_i?aoDZfEZ zv=|F~UtGw&BIcEz@P(+Ca_ccg1!#AYrd3>5dtnfF@%mHnmjABU3xE292aP)HZF*Q* z4{&Igy{-;0j!0`&3T+b@?@P=Qrh3;*HQ2;d)MC5EIKSpPDor#&{%lvBgIS!Y+Gu=vy)j0JOb?8*pdA_ z-8Lq54`eF5QZ-5|zmMQY5-w_^0LLQXnEMyKzGvfP&q~2OEsMw&?(8i)@%^Mn_TqL> z*K)SS#!MacaW2<1!;Q*H(oLT>$0KBQS`LIspv{D%+{MDd^aS~a1;d_zJM11iGL&+SJXjIke!@5|WzeJC)hf__dY090n4BG*}w^WiuH?^ zAK0;5GeX&H)b}%%*yCbfcA~FAjk?RdN~vqys)VtWc`7k^jVf|G82Rs28=1!Rh!~UQ z_n$=CYT%Z%U0!iV`dcc&fXYxxJuSx~js^*{=jOUgN1a`rRiG)FB#GKwUkJ2J> zqNStJ4Ox=ymo@u4vC3!#$DWSPu*m>EhS|NkyEm~QXOw2UpoW1O)l}n&C5LWSeUqK- ztQBF%sPwn|H~X712d1{t!hz4*Soy1u<&NPzWO@{-`&t_4Bn(4CoiRlg$8afsh}%Cd z#qc2_H=@(OA~w3TmaUWNi8#d3RDD^t&M3aqpktdLvq^|1v;2{Ww44Tcgxs6q$e%OO z-xi)MwFRix=bxpc;?_JvSdlTN0}OR-LTlqzP;Qb@*q*+9bj@_mo%QnkAKQ6+fKV_) zmEUr7V)jy`6g}A0GJ-4&mynlf7PP=#Hix&HoGUXml>Tg8_HceJ3O6l9#!Sy0j1ePT zril7C(gRXZeDoal{{fvRuW@>0I%HwTq_AlewvhedRzTr#S0G`ZsKE~*nAcTR<=r;m z-|t3(EZN~3XJps=tbbSZxV$us%FKOWz+fP;)gE-7L!a>=-HO1TFj1v1|C~k;QSFbr z+3v$&Q%(1Ju2|*8Xv7jY-5$!mC+VneWI!1_UKg8D_T8x(rdzvVN}rTU>`MHkHLO-( zZ8C*5<=(v&01l-`LD(aWb(y-2_%RQ1W;(ro6;JW^vM!O#ubfu)l#^j5|EV=>6*O?HH2Q)IwI{4FvLNkKTu?x=x zUugS?48NlvP}%56tKl_}>G0Dt0&j)8^Eo256z#~$w_MQ$=t~Mw9*WX$Xc~hpug%s9 z$+U7(+$!1+?gS8|Z+2KA8&HRPHPzymm{VMg56NLEzO4c&-9qu zqMKu&^_i&HP-cEi4|Ph|Z)_gpqexI!(L~pWZRFgzt^$dR(qzb^z>HQUV;M@}<5gp8 zshA%Rb0VA6m!x_OO7slq%`q}%9N&8llzACip&r>~32{rrh2u!0W&ao%xYMwdpYbP% zF2_m4E#lp*mMr~wT61U7@!5$)OU6yg{ze!d@%|gl{u31HbY=rjjLA(e>H6d3rZa)m z*z|Rgf{(^dF5+Z+hV7XzL4Q3jmS=`O*^Zl$T>Knt;jMO`Q{Hd>V!^t+I7%8vPhPf z{H>u{5ru$Vm4BMu+%mh%be#lgHVu{{N!yKUJLO=($j6aZEbPf-MfijXduGyIK)E2q zHDfMCVN1qCJxV+|;Y{VhcKoxUUC9>s{;;ATRR!+!>Wq z)Ru7>Z5L!&9~Di>4oZm5iG?ZRuxQUj;u!P;2qF+hi?3-`D!!XL0>XIISIJN3;Sfl9 z`RRQVVohR&xK6UL^H;+d>+|hdS4OO!&YlbWt~n*|aME=?st2`I~TjfH6L3SxoWOTjeKs``5Om) z6_7Ty!D82u6dPDNUmRa5C%5jR^2Yx|E>V?uo^r^vDV zr<}minb{>FkXJVWI@q3nQuQdMMW*K&eUWKJvU&gXfkjNCZE73$(s z)89Z|;to~wXVTUJQYQsvm0`^#je+^kzjs5uG@5r;aiWJm*E4qQv>owEYTSj!QOh2o3 zUp|xC;yn`W6&8LU`1F-grM=|OQA7GSI6QSAe5#d-o`HJyq)jy&6rw+Gq@*a(-x!@_ zgMN|g$)isIa%rha9^|lAa~f~ZdJe<)Vhhva26qm0Cpy!bZoapAC74L!)e42uZ+1jt zV4Rup5Fl|E*}thQ&QtthR#kQ$0G>G52TUbQZ7vwl&UqDxL&v88E#bAMRnrr7D+K9& zus-ZG!NHi>z8@G}w-cOUr3cE3UM(e}1&lr;kL;6=1&TSr!@MnCji7X)hZF!F3ZY|g z!>ty7)}I zo!3^==XS%#bg~q~e~s{%br@4#pW7a&a{m~S^qgSxl-Htfsa@Ld2-8n(<+)7y*TvQf z=p|*3vD(?$KzDsU&s*uttzWIuE)jc+DRd7=!+&AvQ;|gtyB3O<=bo6QF+x(Kx0eH2R z|0HS6fX4NPuq4d17uG}Q01_WP*cVoLXFILqq0~V&CHH0z(wy3E_9_+aO+<2$bdTZ0 zLDm3NS%310U+#kpjau!~mLQ$9eH{1|qX4>XAO?pO-p@V5AtP00LG6eBg|3_5h=kRY zE*Fy6(gIdh+_*{SjP(98tl)zjg@KDd!*S3kOflk@e?&!cS=O-yPNMk~P@g#!$T$-3 za2WIEZfl?)lqI7+|5b#v3iE8&ip1NzihJ?8992+oJ!$Hr#;2;vc6_TQqhh5F zzB%@``3?(|`>14)n|6&2gEWZXUa7A&j*vrN&%y8T@PPFk?r&^%WK5*=Dls(VSxr@y zBQ;0_nW&LLB2|kR3TMmiJ?sRGRiz_DQ`ydU_VFi7K}>QoIyuUK>R`42K;-H)MGmRz zjilwrI?ca~YP3p0mCTfu@FHp%m&J2S*WC9M&nk>!uDjN z0Yo;sRdY2t-$V**2adoqVw{i@!6cjWR$c9}Kg3U4F3{XY8n-5uJ^L99?cdB-YXzJZ z&w#*H_B5I9lDf>nQ5-Fs5J_R%hGmi7-pS>uB@^LCM^%BnOM+muJA&{%!9XiZPH6ecY`Itw| z)K|XX;t6NUZ^U1}Y94Idi13VjJ!>tGMW%2JEPMMFTq#$bV4NHv2qORKde-4S)lJ+Z zgMilix#Ou##;u7GQ{Ej@8oon+cF|qINy=U9phulUExZ7YXk;}E0u&x;B$3}tGj!<3 z!HeSQrru@H=V19+Fi@`3wL9z-IqpL?fqAS+ixQgbYA^GcYa-vOC1&tY^>wn|kY&}D z)JsjaMQIe}S0;?1jiUmk9O->LRFdT!PKp-sn5gvD!0p57K+*uSokvh13$ zl|*RHxnBeG0<);G8p!F{tW0S;;vn3hv(ni+RRqib778uz6zY2eu6_`=AwZdHANVmQ zaO3)@2Pxu6Z??wQTP3DvLvG6&NT?;&wkhMMM@^x8hcq z`rVWRw>!HV`x(5Q$1?96J(THZAR-dhFdYp9(W~>zE@x!F)I>m2ai32A_A}Mor}qmKyH*-h zi9GKx%a#47tf(cTN5z8Z<_BI25>`B5p2Iv0JiA5(7Ar%%Vq66m&1^5* zOig_$hn6)f#&iKt@s5RpLK$ny-^il$6D)(=BX@Il2Z}Q4*DM||m(p{$r9dBCoV|f~ ze?2j|;ayu`(&ZPE`^%!PWc9yA1`+NGlfSj>j_<48;#lolZeEnDS4{#Yf?pCyP&86uk?1YpDHpSn0k0oBW2fd9So zY++*>eCmKKLgET*&l?i1n`gCYmFK`ZH)5N>weQRBRNO|6MkizJS+b41LinIe_HAzs zTagj_$C?qt6ORia0CT$tFwf$vNm#r9A3Je z4$7_t#j7v$5RmXn7t|3Xtsr4dgBTHoOf75RlJ~SfHPY>T{%&z#hi13Zqd0V z!`)zSJ8vD+^q;~$JiunNeCxOdys~(iRMZ+(K_`FFk_wNCfcRyfJU<#?FW(h96W)@L za|*X{^hS%Ov382O#xDMjDrp<+$sxw`77F<*chFTUv}FA zOCv{i#DK&d8QRVQ~%HBR3#C_#7JT9$0)n? z$2*gDCW7ib{)~wYeL1jU9`RlCcZST=`-E0=^U-czU6&@;@)OYz4nMa?YS>f67on_N z^WFSIy-Yg+ll#&U+DJGdnX%kE5l8+Kc)TY=QWj*jtwfBtQl}^KE@1drck5aNmV(`J zlxzs)0^%&OE>z{yb5k*OxwKSw^73U0OeDd7I(1^<3Zj+*$n5tOBw>GEh8g+Rd zeYAQL$AR&<0l3tF%>bH0#*IN!s7sue!rGy>iu9xL1e|r&0oYE@PD#t!Sn5TiICk^p zr-#6%1U-ePIg(z(i?hlLYCq}>2I!l`xoPRva=!e9dT)MqiZ%ZZXDIsm5og6)$LIsy z8AAeX#!U<$~uucBClEGO`Q0 z1x@{Ane6fizkYoOO)asG{`qE*xrw~sxA?O+#W!|AoFl26F+cJ=wG1^yX!>oUIPj+|aU z`&(Qk```i}4+XcydYNj9BFrQbekXq!`}w^rX$58+DlM24%-r@&)25w^Ltv#NxEX&& zCOQTu;53OhCntZjJA6YaiKfSL@@0Xavd3C;O%` z{@I?qV4@XrC57FY8WWeES9ftS*L0(d8Ws(otB^Z{;JfJ5Eln|UWkici4L@U>5WJVu zl9Tr+tW6~=y0KGkqsCnk1pDGz=h#=?~&6!zcJ_5x|IdX!Q`4K_La4`cgg+kx2O zFTYK@cns^ctgf#SoeRHEKCVILTmtmsz3jg(`1MaUca?8n;Ib?VoNH;lwq`R8Ny|vh z#c=1T+&)G)O1|&k+$EtGPE(xz6vM+NUU{aDxIhSR@L$K}r4YKE&c~1=A|(*p*ua0EO}p|!M?%Q->l1GrpFBaLg8jxh z7eUk}*K#7-0v$waoG@o(4`3RR{7ndySwc&mWbPcjZwNo$^y@`tAFesB<#81M(+`b$ z6oP31No^z?^!}QFPpGkL;?0uk7_i+i6x~{?uI=V4liW)CyQ2bhgW&c>7HuZ3>LC(p zECLMj#h&WdmGFH!RU56*lC`bpy`Cys@)bq7JtWeV%X0JJ-uL{=W)+S^wlq zCRnm*;Mf#%x2K$3M)^^ol z+|+j*86DH_WDaLO6k|!LqL9vW4BKNG7Y$tzWI%!ei|2oe#9o#heK{BqIxs80OK>s% zw2vFH$$N!(8BJm!&V*>cJLC(8Z$5{~8AtCVzLdRUK!O0^`SUi((VyL=EFj zPZ6_QxsMr~60b6Is?8X0Tw%$r2X(Xe2^Dud44S zGffx{MFa7!s%eLGA`3Nr%FGmNc(#CF+sOki3VQu%3@4%Gb`F8fe%t^Nn7gjnD7zW;kBOkaWS$woFrHl`YKOVTT#$5#-#zQ9^ z@$jbWOYGUrjvOH?wS^Z=K)|MG*2P0BCxKssZDhuiKmufLt%**1;|ien*^*MB5^4pI zk0`29{uosRJ#F6@Yaj0jEc7ZmA{@4H69sj&>7xG~N%by;tefksZQ|{Y3tq7?hZAdG zZ^Y*1Ir|1(SoUX4wfuy^S=cLVv9G5gIB6dS67z+6LKybw z$ks|~lGExG!_eu0irJxutXk(4qL0x}phOXU>>yJn9@)Vf$k2bGwrt*q60MwhS@uxg?dm{ypBaC5e z_nkSzkwFw`w@kcMekIA(U5W*9ZRI ze^S23kpY8riM^jH1|8aj+Qlb%)}+rYm6ZoziYbY!YQe$ZtkuW`Y7}l5puE13x6^5p zt+>yZjSmFwL$sFcIy)R~NL$-eU6RY)bv)#Y#<)JxO7NI)kzKum;?q$u5sMa@od`Pn zeU3?10EL=+g*J&>-Vr)8jOtdfbh@|!_qQPEAfQQo_WG15Qw3hdC97F-1ib{z`3S)W z#l$Ug2`g3Z22TVo6jVKAoUe}ZEKp_RJM}RRrayFvll4?s|8ka47<*l8K1s>?!g1g; zz$I!44;&G3qDBI)Q;dy@tNDup%;JEJXmYsb>5Abp=AGn9Tho07Zc(3=N3x=XotKRe zh=yCPY4RbQ(Z4Lk*(IV?nxCtp*hGrp6rv#$5k|E6N5$;*+V%Xjuo^l&IIvr8M!8&N z?6)J`wRjd}PfF#IhfHwx$4lGiG5Ar;WrX+PZ)dZnYiOxi*V`)}r?-(QM=`;;qtY(v za*ms%JT82W#R~oFhk}G9YgwXgPRzKbYbZ||1+y|cm+dZ^uLb)m)?1*x8PX(oLiq`!Ky!D{4yIICt+vL^HRga5bcDz>x!yeIYU0GlhpV9Z(#6WacoCO23XH&9oElH06p`sww+ zsF*0WtYJ04lytksEgw7Dbi|OrmOGFJgdksx14hIIhLVH(UTuo84Ys1h3D- z;11q<&<7;UUGTMXXDPU%Zi)E8C50-eHZ|%Crn9c}I|=gz!#6R#>|>hLsL&!kR&sZmqW^fMTMcuuRsy zRl|a?@TD9F<`GAH8IKTCVrsDN7ysIyvbKt?l`YFa1e?0T7TuWRK$SnXk1flCyH*(s zv00O!UKnq`s2gXQjQ^nCFeV_Bm&w0O{YPz;bmh1`{)??ZEkr+Ci8an^Yd2-$O4p<+ zKf$p@_BkMYrdj^Ubv`fThizV1$_!bD zk&qm)qS`dy^d&SG|2y|L14a}0A8s5Hlz}RfN6x<_*|v#jk$+5p3~36Ch*^ll;_?{mw7`xEi0U>>4A%f!C3`V%6+Q@`yVU|Lh)yg zr*L7Bs|Yx$b(LWapOv4*#>MR!OSz0~>*}fpNQy3Y(c?Y=O;u7Z7-w6xBQi?UKE8B{ zybJ+UG{py5kBsuSdzb0XrVBr6G305`48EnCMo~Rc7UujrEpfWvQ%W0W%>LWOPI7&$ zG4)!B>aUJAY_nr|u)fn3;a>l?#LO&(m$GOVSz79`KgKMw&sYHF1pd!bx%s=PD;7_^ zvOOz0laQ^Vwq!k z{C^@4h(7r&trAg{()8sl2A-DnzrE5E1)`P$}T8&^6S&_P!UK^ymxk7Z42WQitfO?rbA z(z!@oeXxv2iSv198~IGl)7?wUU9|Kov$UA+`(=yfQ;BefcWjw&maJj7RBkQ6nsO~L zHXYDDFobn!uBC^i9WBP&ebIR6H<>V&k!1*q`Q_6yH$jRk zJ1ZX9E?UW4$q`!oJr#t#%7Uzh*k`P8ztBnO)6EWJx+@7JP&TzZGg+qEA{A+Ip4wq% zxf1&GPIugD}Nr2l82ROZ@SxU9ga5GolkiM zX*Rq`=EW@fZ=B}a4Xw`q{R#8QAFlQMYja^1jpZV1eoRN?Td_YpeVw~#>a-pQbIZUAjoO%3vE#g=-FX+lQF0AL z)wJln>h=){c0#iz&GLQ!5>dlX?$;Ad56kVS94lsTHUqk1ec9YcbmEWl={t?`KaZmY z7_}pXe6!sh&W_*0LnE4E0WVHrDi76j^1Mt8;bl9mfHanL=tzuo{5S}T!JF9@#W2%) z2|}r%y_NRlEbF;`5oT-(cav$7ZtQi-YBvBliHE*Ay1e=e&^mENyE_tIsZP>AjWDJG zoPHhEqg1qtQVIDSqrA(LaqN5H=0cLKFO%08Cihq{ZxB7Y`;Y9URTS@Ke15;twBfg~ zK|7^W+7G&CFoo6w;DaL}%o+=r#T$|yvqX=Bpm)68e%oe2Z!Qf@;!3l`(p&NG4j+48 z?{EYhEe{>ol=iCILsTo3@1s~16%Ng<^O7a<)Mj= zSE*YyYHIlwLkHM2J6{VdVALWA;s2Yb(QEblzGLpavplQL1TLsP&kZIdQ1nyJ|4F z=Vxq^19Ufy{$PoOG=8^?7p(gn|MlAv2y;$^?i;8iT}(p`0$+2l8*6tqX8eu)dg&#> znG`v;Ljl+7QsIUPR!5r(8Az1}bcu^f`H@hwu8q8o$e1W>p{Q(stM?^+;gIf*!T$Q| zpL{v;q1P(0WY&sx=J7$Z!mJbAJ^u(v~1uJ?JtEwHRENP z_NaCt!*Bjr&?_Ds?_?Tx=OtD&uuAWpxDMz$TWGL>b~(WQ8+`h+*{XHGV=);#sHB;F zX;i86al9R9q$VGN+!G(h6N~ErGgc%i$11(1N}!It+>&3mw(7p;_AmWsO&0Kbk3MJuak-&ETV~|q1Q545lf z>iA`~+4qG{EzBLAl=)zSuoE4Hky7vh`L>zE_KWd)3fEj5v-m@pJ7_Px{eqiIiJ5;F zZ^?Q@@|gV-w^lBr*K&)DAI~<6aq|sK^(`ciC^P>sFY5j#T)-SH?qk-Ta!Or4LphC# ztA|n3Ie3c;lA7d$kH_G~PAulm6p^#F(@AI+c)3DHA-Z z`@@=99&5SC0lkruFTH`P806m6jTa@p0pE zKb`8fQq;=wLSsICuA~kkQyr&-4Bo3@5kGZ1w+@NOoas&)jtT&Uv?!= z_+N$+?j%O+9H(1q3CsT7(3`0Wl^@X~YV~)!=Bo59Isc#h44+aOlndZ~HEZr$UlnYy z`4+5?f~+M0T^-w0nHY?RCUpoarSIs3DDNhV*WN7H|NRg=D8gLVW@3!=}x3{m-vYVK}dTx8Qi~97` zDv09)N5y5&G#}E?FJz4+$6AD|zW1J)kKd+N(KhQVgNA;DH6r_(&+y7bswTQNBA1!C zbohf-ZfbbC!nqcy9hwABt9L}{7(z>q`!EDS-EzFhXBh3qXE=rFBc_tFf4}DEUABF_ z+nH`{j$18z0w*jFE7WhEZE`5^Rqn~L0tNHmhHhamewN0JLmYiS^JaRQ?nXv-M<1vU zlmo|a$HAsaH9x)#Z0^MC0Dc~IlI>OqJl5EO^i*>~%6Yu*o3bElRVMQxyW@?uI>+Ov z9_T|4<-`B->F&?3eTnQ1*7O)#Id+kKz`e*TAcM2E+>EKIP|vHiLB-Z_WgUs4leOtV zXZqvIzu4e-;W~^wkaY)6&R|$lanDCWxZ$l?gpE>#&%WW;Fr%;D(aS=RaEKb9F-t|+ zL__4;ol>ExoVmnr&M5j$y0 z(z|vtFCcZNd@r;2hfzq%)8l!10NXIg`0wp_hZe}WEPSt4!>n57GlKhgxoJK_YNbm9 zy3C#T@Wn7suG5y^46w{B0xqpnZEvPBmcjM2UeO)4O)D_B2+sVP!9+Qhf3o_*V~#nVF` z9!0Z0&2H{X9002)?B)z*$${KDoM)8CIAlZ4HZ^c*Y@MFt#BEw(>2Q>7%wW%Uzlu{n zomuw1RVDvyF@H~=EWfmV_Ro`_Pd&Bn1>4M4vc^KENxAfs%EO0mzu=eWV6k^=%;LeW~zxH>z8L$ z9f;XyS%Y0B;rVw3muU?*QY&Dxv{nW4rm9?q0f%gSN>>5x-N?9*#mWRus&jgL?#yk6 zMCy@j;PHFVKIqZ#b2Q^^kOnYFQ;oD|+Kc&x6~7QEi}7;aQ%S5_`cI^adxuWW%Akmz z3}J$Tz3Ul&x(8;JtH1m=Vd;K2=B~^X0zsxLP`<4TJA15q;;m)x{ALWR29Q&`--5ecf*s%QB9U?S&`lHS=L&(~MDF-#`H@R@1G zdWAw4)#*ok06disB8+9fld6m^h3$9L@syTx!f^Qi$hHjp#r&w@? zQiGN{?K!M8BefnCp-rrGE%m?Q4S-RZ9~Sil=dRD}{fvWcE60X4BVGQ~)NR(}zAa0E z8QgF*><@N+>+}D8P7~ux(OJs&DNj9BzS9&fg|ZN`Yr9YSh1G=Q_7&q#NX650D z=`&xR@~;8$nl}4d!7j1Q$~V_mz#GUZeYyX1a&!en)VcZBi3I~PLo<{h&u4S|-_buv zZ#Ir0+y~vjBlHG2JGWi*PT_u^nCNp-(S@#-b)8NI_GCkx%r8NI(hMc^Ft3fdu0{0T zZR2^M`FIP=nu%AWK$(Z}{k=~tlnc`7zj`hkYIPPQdY^_f548S@bqelKeXVsEYydgEiU+ir~9&pZo z4oNn5^??##SOBI9(Z8oUlm&YAWViRS6#k5lC5hG;&3yh2)JsAc?F%sx$r-s|g|RPB zj*HbZPSCDjQ`5Ve{T=tmm_&uCq_!is4eQD{(>a{8l*jNE0T>9vs);w!j8?jF9jDK?tQ99OHtmifvNXeO4fEQI8O; zzlXWNd>x=CToci-Wxp)m7NFOIJ`tns+Mz{1hF1lUd<_3z6Ki)GTpPiJSkMwtr2oOr z8aH^hSh5WwGWEl|U{!2bZDvQdW;Q^}1dI5VsG7|LmUa~HHW7WfwW53V=I1{jtb^QY zRkr5|Nh#&ECSb6)oZ&;HS@0xXs9jQ56$Px#r^jI4=8m7qL7)@o9b&#h3SM>uL*_$c ztgFKRStF$`y(#KSejs%VWyI?FCvt)6-%isYK=E-^@c>oIQPTS20rF3l0Zkc_P{(zb z?}A>rV@hjUsp?rz-~lQw6SP&MeoQNrXL#j>%wzSzuzyu$Vf+(Hpz;HMnkxHEy1!+0 z7xRz^v%hspIPgiEm2r(uE>%i(=x?o!%R8(oNsg_kBae zAoA+?DZ!zPIbQ=Pj6UiK|TzWw|izU47T<6_~<68qfKNu!vpIix-h(%6`v zo`?tCD1W_P-%qLyfnPxR$0j?`O#Mr5Z;0i}X^x-xU@SkG%Fc-BwTtXaLT)Dy6SK@9 z+;CiEK}JOF2!4-JK_eUj2FxcYypQ>=O}fq6qBD9%=vX?VUV&>7N+>fZG0>8s%XVSO z2X!FF!uQ=)5LnsvYYz(&U;~pYIi5Rzt2A-CDBlTwdc1iJfs&5ImV65sUuFxg&VYmR zfQpIU0ZDDa+$qmrru zso@)qQ72_kZg8;ZDEh;iyNeb`6FYSo2)DZJ2gFLwd)~40%ugwnt8lP9+V`3URJ!^# zIyuJ|X&(N=r4O)=GkS^Ma3Nj)hMSH@4Yn>P^1Jf(tY>(6D9tt+D^cTq6cwEyDygU* zYkgy&)`pmu1$k8*1_s6**|*s1naRRVPYQ5M)P%eHvxlr5AI594PGSnxJAPl`ZgUQI zFQGS>_5FgH%y?+8Df=TJ=!?(8=Y);cdR7bl8*(dtGW_IS?_KWw2ImsY^$kZ8i6Fc8 z&!%o&?KQLZvRc0bE2O>QB-#VrMa7Q`*)p|RH!OUP4Mwwww`;b>9O+tKY0`WD}lJ zlycpxwNjPDW&gW$HDIJz?fqtQ-@3ck9}?O}umv=UFBdouydn=E2{}z}tS54_NDaeu z^T0a+Y9C-kkF`h<@?=JHd^UsA;_@s!x{6uUsX&~_ONvXXwv2Ua{$u$8wS2v0N}Q!$`(B2)%5@@sQX()T4ONu?A52k*>{I@3f! zDfpgxRskL7c^mM95vnb8SKla-N+9*KV$zQ>FLwl2o#;ojgQPs#X(eTvloCxAhe}BQ z#EeB!0Ju+;4H~#0<{h@Xi!`t~zOddQmC=OXLjP*f=Z0QVJqj5G*pOQq!w!ukUWS0f13J0gp{Z-- zt`yp(d&r-kPue97HpdI~FRG@zLk2X{QJKX?&D+?n-kgAoE?Z_yk!N@>1HDPE1&U$X z{`H5~E{QHoK1g*YFvRt!r^-Dc*ITEcL(pq zDc&5Uc1|uWi2{?pH|!fUk_6EaWE}D~G77LIw={`&Yg*9O-l?ixmC`H~mf+$fgj{Z-QL02$6lzIijSW!=RC)^{>PWK6Yy}4v@xnV8 z$uv!)rlr9w1^Eta-0Y=d4=bUhb|`%ccfa^AsZ?1(+5pvsCBR04VU|9f4}Ygfxh{|N z)Ny>?<@Uo}--SiB)TVwv+mZJdljYb-(f~+*-b)0Rb#_D%phcwES}Esyq9j|^juejh z)JlqPvn0LK8|fq=q@PElREes8_HF@~V{!5(=AeRG%>52vf&(Mo3HwQ=sT%c$8te&q z`3Y>?y5EUPxdA}08nx!&PKVaZbXZ71s?4a|iG5TKMa_MOhjyaTJd#;j!+w`k|L9xh z8Vx1ME-wkkgGMkchoV`v7SkG)e6dcAvV0DT7I4Fcm}B^}j4bq`Vs-WL`Y{%I@7C%p zqa|i}^%{M2h>f zQnvf;#$i`kNzr_^5C(KhiskXiV5Sdq91KKv+H~hmr5H@U#r=eJRtLlFuM5p1Bo%eF`8Ti}p`?a?v?P3N2!C^Ns84UyVtQ zHeQ$A^~c+9r)|iF;*k3M=B9^zyt=*{>hc8Ha?_TT-r96hh27QPi&g9P^N?duV&~;q4MmYVo*2cNN7{I!HI}b6Xht}{g zFa#_MH8xxVBtYmoE?W~EH4*3jVi-Gksj(XcVH4q*T0@!**h=MW5?-Yw!w)LV#*#2- zC`D1WNis6`1ey_fF(xMx@l~6^bminhpmi)h&?-{UWVcu4+$+q{0ti2YcI{ zjhg{kZutF3LDE)JaB&ty3ke2|)cvDxrL-Wu4qpsz>7f}O2Bv_rP?(T#BcE2vLEV9I z;JEtjgy4!{Fz|cCooQ|o9Z1lGpKJ1%JEAPcWX324j>fMqD~;$({9jjObcandJbit} z+8x%!{)U>9Q&Mg28`R0!ow43KUqStDc0YuuXCDq9P03c^CB#sPX$HF{5|U-L!kGoB zfL0!(goh8iK^pCI(fFvrWCTf{!RL+l3V8(Z;%85vGVRGe&5}6=e0L$!8xN&dbo*(i z6eoxy=cc3sDACafRY>jwAWH=9mrv<7yqC*`C85#n?=E-p66hEn;+(90yjwC%7}GFE zTkoVNy892Sb<%}Oc7>IWOWmX%lKzk58~(JlOpoG@URYmANHsiZZQ=~Q z$1&~nhBqOcnoKry07Xm=i0bP}Jn;c!pCH2ccHhR1)v0&2_dbe85OV)2G}+A!g3UX6 zyFxVwwWXexI!!vI+W;E$RM1hZG;NIk1o^TvgStjJ7HdZ|F-KrbL+YsMQf1Ag3__a( z{T`EaWb;T8T_H(z_#euB8J1U(tgxb2oG}iq8F(l>!>;wJwP+wS${u$}%B|7Eg<~{W zbVaHXqEl!0h!QR8RBJJYouK~J{UOelKmFD6t6wdt*ZG!(KetWsS|*Coq(p1SX6gX2 zyp<-b>t<{-F~oGZXQ1SUB6T2FDc_+wJ;Gk8aW5PGC;A##<=^{3eUj&cDR1An2u)ZW z?6Fclj`m!SKC#zV=zWlfmqET5mk#Lv`Aclu)AYZ)2tvbb+Uglnk~^s+mwsV%7MxQR*cojJ^jSqKiMO=df`{wS&{xf zBxxjzi4B}Hw?l+?qcN)D6neQ-ry`qcf`1%01fz{w0AlP7G)kVi+)brSN1BbR1#Db= z_k)}#8}%fqgrR@Uf5mZHKs8g#cm3v+O2woF(@(`t>A!BaPf=W5A&qWY56_!8>uTs` zdK7oW!}1zR77{)>zNj|i=+1bJCu>&1s-Azt4(T#oLSh!QtjZ{lEk*1~=lX;t@&O?rk z&$=Cqgl1lf=aSW@L?Td-8C47H*u+vvNUCZPMxf{?*gpj0+^>?VRGOn{WP!;e_f zF!fGaF!hvn3fohvxH0BVN-BzyRQlW1P@I%bt#XDJHR+v&ME*Xhwr^$AF-1D*(pG6D z{Ur94Rd0-RN=`Y^q1REVi902oNVQ}WX=-YoOr7!(C^F|^@{P|r9gKv*{QP>r>H`qC z0tMNTU(y0QHnHv{FYjp)Mxf{?*bjD#-nW9F3WCzd`#uq3%OA0%Vd|Z1Nmpql{Ur9usy9Y@C8uf| zaoQ)1WkBOHeif8RQ&Wq{#9B2eG6GQmEqvCiU|Zt}=5O<##|ID)(b?2dt3;;%$EcXk{Z3@bKS(@2VGHI{+J#txh)nED2cG+rC8Y zkMOxO7OC7e@-6kF=xR)o1rOD8y?f-Yke21;iGSrF{`W;}#cEQyuJ-5{l$NX|@aavf zNu?ykbWiDlkST~4>PAFBDF}Y3y7U}xZ6+OS$b7wN(!w=b%2r9s?*yzus`jEz%%H6?x#D1$O%)d>aAM?IX# zE#9MK`|i&GNU&~D(N*O|cn1JXTwE+Xy*T%UFEe%PNR?!@dJtKS+E0gkBxfIL;u4*~ z6I2$=v9)GQbcH1TXb=ulHQgza69xcu5j8AQ!+mOxY@j}NjEq!0CW|gAuuMhuM$Sn2 zT6N8Oi#2T`yC^dqi5>Tl=$t}!=@^tS_vLF;K%%QE@#Lvo%vad5SqqOh&nbMeQtmv} z?6q7mN|9Sfx#Z;Nk3;YhKIhoB7TwnNYPDHa@$OZuIZf)u$&4agM_R6j?)D-}(g7dy zv`82s@F4O}25=BuF-C@eySOdp>nPU&%fBT7`4bP zZPxv=0M9n3glAo!`=iLV`0bVCHpInuOD$Y=4~2xf-WQO7+VO-2htl}>FY)jU$4?B=4P`f`&Em}a+hJ~p5>rfDH2+*iUa?PosuSs#uhYKbyYw~e zb*`M0&)?26tlmL+AQ~=6<~r_APh**frC)Z#}xt`>AYwz&UiSL1QU8 zEJs-WxY>&x+Fg1yyLk;l@(C3awMat;H3yWr12UpbVMRz%4)c3Yp1fQzNbsWN*In>#7( zmJSFZq~XdTd&?u$rLgmkbGWfs;Drz4_FD*{gD)}5OrRxgap^W>9qF&d`@cnUFqV(uZG*4!fw zjumpVFZXyl%I}*FEsPA0ZyIAEnN<^&7&TQq5>=!f8aHx-9!GUA}Yr*W$mGL?K+Zp%vsTC5WkTS+NE zFD)U!3vJ2CoCX%9h5oZcTJ2FWgaWu;Bn?eLJ z?#4m43%$6lnyAF6sp63W@qTDhG33$&ZzIzS_>fcK$_BV4(x-8K>z<3b%(Nydk&R+& zKW`&%5^$7T&?@t|L@a~F6OaF?A02*%uBkE0u8vB5~<`8KYOYQbi zLYCcA@9P{nfEr2Y@Nj`8D^>M|7fe#1ne&rIIgw`Cpqo@KDt%2E1%^ue=rhrp#qFJV zUv8fLsHfajYJB~)a7?sJoI+X=NA)B9b9O2kbL!=#9T0QSW!Xrqjh;MPg)gXj*e4R4H`iV_>1 z|Mn)R&Su964GzU34mK5z zLe=OnS!y%Rf!av=OQaLkRQ5^C1bkdONz(5Vr!5uNwFPD6eY^#7bX>S=2uutmeD@ya z{`e>2AWg5@K;iVz8++$GW6XL9k60W7Z8j~3;ZEhDfa=qi7 z7F~#8L^7{C8?}dpImY--uRhdNvD5U(sX-|Q25C<4U3EQeo^Z9XPaK8cJ$o>zVZo-u z83e5Tz?ADtrdq=i7(%0zWlrVjqWo) zoz}1-%>ddEG~7$cZy=a{NhvFdLq>>US}<~3|6<+LGQ9!RTe)e{ zzAPvE9+OiW_TwHV*ut456_BTkDS-xf`QIE;_@F{N4vJ4{F1dk|b6R##!i9`N5=G?5 zp9rp{7@uLL)=QOXh~joOI%D~JQ?4~yc4CI>;sT1T9I z+7E>xLC7;jeJF}fHxG+5gasGc6Dn2F6@b7tFc9Otj~WChZ#9zY(7rIXG%04Z36AIe z*a#g#XFrRG3hM><8Z_7+abYgVSM6^kXxVg3f*x5f#=8@HJ?B zScDdKNiR3cC3v6N6=IP?$3jTLC!`b~#Z{&wVjl#MvBBz_I zqZSNe-1|oj0ldK;2c>;6_TD?%2s1U`bHApig6;rG4;v7`Z-VN>6j~}Ky&TP@fj(we zh$)A@^p6H&ky3t_RGD;XPvHor(h5N&otfzcPNEBP2qdGV;yO5Q;6#U1+l1Tl*b_Z# zwzVXa68rG%aAOOk4bBYtD@^qXCD}Xb5g6+3WpQCRzKZT7xOlH??I!2F1H+0&jin3$ zbn;Tp1jn|NjNSHS&kJ({Ch2ytGm{JZTS7oxcRRB0zY(^DSAJSQ8y6ueQTsrpq>GUiaela6|6=^a_~T_5<>l^bEP z#WQ(Vz*L0j#YV!;T&ee=K%-td6vqM8u=F;Hh(luao>@Fl0;NqAd1S`IL^^PSvz*=ZJy&1ljN>THi;@H{a5 z67ZSxiFD+x7{LXLphqQOiB{z*3WI;MpB)=yz3_+}mXMY|yG(3~sr_wVN>{^rq%O%P zG4jRh)Vs9acYWDD>)(1K`>WAioxU%Fzv}nYuc2_KKI9+#H@)-s?pLy(0T07xxXPXH zX7myCP@_^vAH`L}h?e5Ecs2ih!Kk94myEaF+dQPDx9w?)F4(7d11(SrA4pVs*q9ck zgTzVgZ^B1~oUbY|z*um@6AOc0D^)(+?heSeZMsZcC3fqqaNbZW7Z+RdZhGNv;m-Ug zxbQ39dq3T4M#+FbYtQ_KS@|ov^fC^-vwANS#*%@hqM2IV_#kjjB&8@+QUq=*Z^uC` zFurx56wh>g>+VTYB+W%s6^k#@2FNG5X-yt@$~ZuVSazFE?Dyoyl|W0-G?8>*A!|SB za^aC?G|f5s6Xw1dtsA$ae6!pN8TNhAxMI|4`ve|^zy1kJCa(DK?755(rH7hsuk=1Tn0dWOX|ZNP2Co4~ItMoFvO)=Jdj+NsBph53+DSc_vsV zHbjmAA`OIBEC)!FnTHC{(hyn!h$n+h8m&`}9I$zylZym8f$I{9B0}aqNo93ruEaf! zCsPyA`)0Im+>Y|iatkudL6M)4VvnWWtID07HaccrABBUG#`|%8WX-$EzIhn5JX77H zwJNWqnGKP{!UQpFCK>kgUiI2O3K`b3MV19+7;$o9j|P~$sE~#RlKQKv=~-(_?uK%= z-qh99chN&FZP)`4PX?PssbFg4h}#D`nIqj26oxOZX1P7`>2Z>AHv{m}PX7 z+=yYH_o~+pLTZ#0G_>u^>5tx{#g@nvppNQh3H#(*Rnuak*d~dSy^?2AdVRQ-2KxoR zo@|&LRO(DBu>%1II=QW0YtVWz=f1R}q6y zR{JQZK+LMO2kXm1ySwIjA8Dlw8>-E=DbX9`T*;7r$u_I`-$@=k5<0Za zH&?%MN}aXZmQCV5Kl-Pn>C$1Fs9pno*S-8-Gp<;H00#g78VoU{G4bxthRq=|n+56?J;w{lO`NT@3XaEG)MJXlaM@wXp z)wD|N{k)9US!bkF2~<7Rrx!3j-O6|PY$gUQ>M7vwW=(_nD4Zn}T8K zkf^%IOP|J|Pt_-vh@yTfTo-Z&o{h~SM3LHBcqarMrG&8|lcbY%6JO*%39IELygl$q zYAKWtXIq#dfISmQEuda%Ryml=RDJBQtN3Wb@8-J@8~|ipj*CiMUZ>EYBE$cbZNaFu zUamvI3$&JBS+p-mgLzdb4={kX>=5)MVYRVVl=9moK>pj za$wZonp2q};L3KPNJgN%Rj8TX7Zpe7dOMLl8QMu3J4BP4eINaS$#keOr%Fm6!@=68 znf=3A%He41hs9=jbl;XIt4*yRH~mvyy7Ih^{P6wQ3&z{1$)D=Pm+doOe*W$!?cCMr z*Hd5h@2O}s?>nRE&%g7JKR<0))yP+QjW35ed7X1GYal-o_lK|oFYWeaGz8W(@{#l< zQcoC2P1{(g+q8_g$H)4>r%<<*T$pBu3{aLk6*D8Xl;~w+Hm#A4Zr+|RQ<1X;%Y}NC zD2ADYqHxDd{327v?pX2>?5;HOsUu;pQqMwqJ7XNUUgHgbMxy*YP0HO*aQLO~gWuau z*VQPI@pu2mZ{;uJHv#XchM&xDW(7)7854hF$dvBaR`qMFV zUlfA9w%DHcYdxocQ`%9DRQYZ>1nZk2?kaUV1(3DvpDFtq}RidN?-*UG@lM^v5 z(cX{GL+h-k@=NfAL2vSXB8Dncr9<=zs2ZWf$yq-95B|pEzj?G{W9LpX0mfLwhc$Mv;Fo|p$G^Apu z4kzx;m>VJ}m;_Sn3H1SL+*jOSn{+x(z!sjz8!AN=#2G-U-L<9L3FeEmG;XRgIsU=? zgof1N_yI*o!SQh6!g}mFoeC(Uj6YgB>AvbT@fuX-D8CnUJkKY`Ue*#eQQ3{b42AiX zl~zglz*v#CeG9c=wqtMj3W*X{@%8>?0eek0Tv29UvmX*N4@T(T!OzsWh0u6WRU4b- zUl$fie?3WH7VM!XVTT# zc2!PG%DSKWvD7jxmurKp?(ec8Z~I#NdeO^l&1F?<5M!L+w_jiS(P{iF0Cn~&)|oFm zm)_XkU7ddWf!F<>pwmD3YybVdzXIKf>5uSz{hNw3lKmx^%v?pVM|OP$W_Q?3Yl}c5Y{Oe!U`Oy!|v`2f5Ul2^a!o{u0{LUkEZP zwZMD?TwtDAAk^(l>h*?Me59vtHf>1zC#j-G<(1)X31stw;r1wHL$(cP>$}>dt(iH_ z{_CC@%}nLTL>UYzJC%mDmao`%SB3WLKI8vd4>oW6zL4G^Vr$hxEz@sMR2(%hE^Ldm z8aVsK@427mHB~igBT`-UXYZL`KP!JZm$0+?TrCgN(3rn~{@OzK%;9t#Nh(lIl~L7O zRX*?b7ba=D1@5VA>ZO5RUUa0ao7^(Jj+~;w$d}AjX1&W*eJ$(NK#vV_AkkSLS}Y=K zEdlke=cTv=oBgBf?V7>Cq&hW3KVn@YfI_488Oj?EV-&V*;Wj=yw`7un59w7ic8 zM$WKedFkCyUy^R35dy=b<#}{&8(y`n-iUPLvv6AU&wEr&tfdac>+Cc`M>0wYOZh-* zMY&iM@qUzCf(GGDW^~Q6z8ceKGbBqs%8fG9PSKR_MCkah*dPl*QfbNP6oi0PwJ}J_ zaH+lbNVvOXs2e+Om5^|{MgWCIS2UXY(06Gtq&P#*l$ms{abulz*Czw5;gnBU%V-Jz zXZ1rP1iDAdBk8o^RmxX+aI=PWgmN zPh_wglcK_*Q|cT66dGO8JPYpxzEEY#M8T^@Fg?I(_gH70^!S`4Lho7?R{h0&iRC*ii}FaP5IEwQm*r*S~ESYF+2 z6qScgdEOtq)`Nx0XM{ppO+%TFgBfBfN7h+yJ{f2Y7x}1|WT&E7q&kw;u(5mOg>JTK zlfdKUS+;MrlL$60J*cK#clIbr_F?UqtrQuRgeJvVIcBO~uk8}`)hf}WQKPj{n&kFO z-Y5Ff|=Z6*(dro2+f0wt*0!*ct-nj*IL5Pi5p|^Tx2wJ2OP6+fu z2gz8cLKV##;y>H0(=$mzHR&cM4mNItnI;uonUs=LkUsic;Jf|tjYqR3S_(Q^Ay>YOGL9QDOPq$O(;( zG@5=)kHmV(cM$%$gWtkZHh}>~{ia0#c_Mi$u6hdssS|;MD|C>6CFKREL6MNM%^E$E zLUq`j3rUtYJ3u8c}4oN-&H6?2FC|Ddws^Y~~2UWXmT9}b}#5Dy7tx9FwByKe(T zqm<_JID=X};+Pq}$Z`2T#B)Ev@>8P|BdPq8N*RQS{c@K&O0KZ|ZUphw9ceUw+ei*I z`(jeBT8mN0E^{j~xir_xD}XRT+_wBPy^>PoWqCiEeD#L?KONE!Q&ToFoc~q1v=x+W zmLh|=T1vxa(6Kfk`ntKV%O)$0K{9kK>igy0RWDb(zq-5N{o7@?6oW&SZ$C6N@C_d6 zEh+=$uB<0@hoj@sv#M=+Kxb3Q@A~p}>dU{CkRRQ}>9YrZ2qR?rbJ5RwHMldHUht{@ z;I~roTkbNYP+w9EGyw>bnp$^bz$2}{5|ABL+=^eL1z^CGr?~+znv8_HEvPR~8E*rS zLa5saBxwY>r6oglFgMTgGLXFo#2tP$;>yHEe*UWWPYA5V|m-T@fu z%KR+NNG<<1-`xMx{@1>EFx_8`%GKRcmW_q-tM&a=(;I|uuI}C}o3eQ$2E_eEW6;&V zYQR;a(e)eQ`q`*zo>h;VHxiH9ro~WIJc0>=|DXGH-|C&#J=3=SD(A|OW($BH5`mI2 zH~U4S@2)Kyb|&Me_oAv4KfMsEwW+MznbezPFV<>*UX@3QRN-}l!h2Y!)Up~r2%Sj!!kU}Pf1-g1B zg*wtraVN752-GUt|0hKPo`-D2e;dBdi?s3fd>&XcvSODM8Y=vd6ED3Kc!?M{1=1rr zs40G|>14I6vIq~>ze)Djk|Mn)TdhS^oob&>soq^7SaJe<`6v_301H;fLMklK)iWv75n0^{ta(zn&`LWi zb@4oAL&CrD@ws_>KF_gcm?S0A9W>P7hnjfxQt*m6917A6x(e#*hUS)3RhIA{t|?hY zO6%jQ#3iZ8jA1t;j>M{U!hEUOs-_f7N~836@+mVd!M|C*a_+D*0{Q@Rq^bZ-FXbxL zurZ{95vB(C_EBTrGjZcf+_V=^= z@!2YouF6RNbk_tpqGiz(#O#-pLpSIuC^gQzucQ{0m2_uI=16JNZ9UG7P{yDe4igir z*2&fs0i8`;6ytCRNh=56putDP__T7`sU;OK@1m;i=B3hgvN05eC^o3%qbz=&%oK;Z z&mTHeBIBP@S+cLNthYq)o6{e^5!_C&A>op*Z(8?LbI;Zze;MNBO1PeiE-Y+LX>>G! z7!Rc>J4S1`E~VBDNt~P41oDT?@`Tqrk~$^tHQm>}ZTXlGH@5&#=moCBtd#r!QtiyE z$(!o#nfCRK6SAhmDf5iZUo;EQD~$nOsMRogtE*;UPBD>LmLC-!NI?Ckjvd+V40ZLBz`KaTu9-QPgWf?A%@_JV^^ALoS9 z5Gf(Fv4Tlh9QySHrIM4WkapxoHZlbOw?^AaD4F(#VIpk>1i-SA8|Aq{?Q<^?7~2!vDtCa_2eRxvSIX zFaZ6yV@>i0Rjra@wEZmL7ckq5Pky+|Y4hrFda9MY{} z<7G2YfBScv1H(%FZnb_%xW-?uk$kY469(?C)#}4aLOn#OVYnbSK z9w2Bz!D3f@<>x~z zj>+!QjddENr`u}NNs0EQK}9VnC8J+p1Mo9UVonmx{SrdA#JCoJW|ki>-HzW`$U03p zmyh7L;G*y`1(0pCoRaW4skaumo!F&NVijm8$=oTH@Bg7NtWPFkMTlL_m`E>5afU3!1s#Xd{YWkE7X z?{2-rg-D8-V;1xSc^{kx$n$Kocg@pFh}9}B{%rXssUx}_zq61JbkbG%hyo5SN*|;7 zibqKmA%Pv7g3|ol4}?OARiL3HTSRXHG;%M5OSeODvr>7zoCyZM6smy@Y4lVJ`SQh} zwLe5fNd6+=nKLA^HX6wm*BNj;OQz&Mee{UaO6rIM1Q9(tEOPmQxm9 zskaDzKb<`QDkq-*Z3J6HcLFqWFN8z4bJb#E1&QnB!0z>d*pj3u+k_&lUi^qnh;!cr5^sJaw{$^* zwa*w^FJRLdCErcH%TGdAGcL^9h7}<`e&xJats2P$u&ZcRl*Yc*=loKPad0&(8Mp7&a-b6)-T88$;Vi1bwl7O0B^-ofP?R zI(N20!X9Ol-IK1Uu4s zHMwQe`ly=j;n6Tv5sV!32`Rk_9h?~ZO?uh6_+J8m(o`-Rqb!@B3Q%ONl5R)3Y$vzC z$|fvCLTY^icN2gPmWg5v_S=75GXteB#buXlyUdd{aqwsV{qAayvvQKj%Y9i5Dz4)B z=ULQ46PAztY%DeT-w}!iX;Z03NTvDF) zJN<_h=y!WasW2H_2NEYsl63k6AU#QCCI{%!DEThv0dq0@%)DiNsgtzw0wDhGDTL>v zhJGP2{~P|Q3?{u(pSks~hGz8#i_*Bqal!Jfe(?u9Oa4Hzd3I6^uE%e~L3f#6RGHM> zrR)#q^6||b|3HL;-@UxL>ceQO<5ok`wtjPY~s-G27DXOv8kQuM`{eAjG6 zWQX-_a4RFF;z~Fl6m?httP{_58(5@WjO66BlPIaPxvKjFW?etkQ2AlFma~R0r|v!r z)d4GVOA>Do{MS8_LRfT!tZZ%4Z zu``BBaXz{#XteoCQZX0a!hIne$;Bj571rnaV|p_GOS4URgKRcX^k0i@vBG_Y{@Jvu zKH>DEk+H#^tkIm_oXTmO8SbhtJ4c8oU>X>uoI%kMOs=1z1b8NL(Mi1=`llR|O4V~B zx4!Uh|0h=KQ3G{n^)jg9$0V8HsbaBX%fH7dMH#7n{IMi0P<+aP(?nV-fRhK@eT7hr z9oY0Cx+-*;=2w!6xxTk>UvgO_Hxntt`doiZPv-x_hk)`1*=(TbzeIiMzG#|ed#i9Z zkG>;bv=egYY;P`8FI~UwTp$kiNv?qzicV2eXq&)9QXLFDlUzEf+e80q$cFQXrS9>e z2oO|jq~eW5#Jq=5P`5-Khqgyg)3H^l*WA41?T zl2*j&&nUivG(&Omtkk*OwN~ z=GONQJT()Fi*CfonyFuQZs>SY0Fzt;W6J&6C7pHs3Vz|*)k;x*61G3 z#FU`UjZ|FI0}$7ux zM9h_T;E|dtNp)S53irh{0L#au3o}I3g^vLO<}UuF+1|EC#|G+x#zIVV`G|7MZ_TYg zJz!mVdUq%;Y9mIvnR?neoYa~5{qB7!DZHwtux2_h4o~M3cX~)VHJsa{<0ad<581cx zQ8J#~n29M2z=Q~@a5E(tBVSZMih!Y7+-P`|s9!(QPHan;h2MYw@5g>W6#eq^`|QRd zOXoJ-bpkcb4I?@eb_X7yQC&YwIsrsK)GluG*h9@gDT4;x-wC(qkmS59lgzQhD#2Z#)i{50AZ z6_sv~W5fWDdR8lKRM|2_fo0MT;Iv8O)_go_P2p}yWeZ0A6u&|e5XxK0N#$k{26kHZ zX6Y3SUViyEO1KrRl~X-#@VCE>noLbIb$BH=a#A~m#*@B3Nx?hbXz3B;d1amX8`SDd z%?TW6>?C7mK~-W7Q=O3LdZjUZH`-L9ZmD#caD~t>GSv^4{m3 z+aV%xz_sg*N+JE&78>Bs`IIqB>*suyNgA0wnUn+jc2S<`_GD}ItqZcu>=AvUPs|;Y ztt|G0i<`;qtL=okT-d-(ldYLjwX*|;{Tn-Y+?y!6D3zj(%He~pG7I_QvDr?F8Knrj zAn$gNm-df6*FJqNykvePV)R$N*IsqktT!4I`K|bYceRfOit=yNtgp}oY+-p$vB>6 zs^X(T`GGieA}7L2HMY7+%MNjlK7`0sv07l7C_D`w#O}!A$tG!YkdrG&uuUR~qzDgk z$QX5yy@EQjdH`P2yTV@hlu(Wj2=$xrFFJzU6K&jayopd3I}}TVt#V=|?}?cT8n!4F ziVaigP8?B#pJl@|K#@q_8T9gI=M<~8tcv(WpOk7GC8@iHC1DP@abmAR3&!y{IZ*&6 znjMTRI++ux)FGa+L(cI;8%@P(z%o%hP0ZA~3@!&Cu=t3a6|_%+(vSrSgjtlXWQ;n< zT0y;#To~CS)#D{cmWhl3fi0R;YvL|TL+p4IUQ|pTiI&1v*S%PGog0ihQRJ(+A_0v$HvGi-{nYre4pU68DCW=%~0w@w5kqre$6KD%b zk|=@T9!f4UR9-OWs!&5&Y6#`PZt3nsPZxG*O*QzehL+T=0-ai0i$Fj6cd;dPlc#T{ z6-ZS|!1 zhjDn3H-ykSHt(0TOu`w!Ons_Jvz>z<B@9=jeF)D|m-;HiQo|axSe~UKkQ#JNo7l-p`MS6HGv`Sk;zUXP%DeT- zyLq@eyvr;4L;ip2u4wwBRJ~rK3eiR6NtNi_^xi{x89X75R;#1iAHh5eHIaH=!Vo~1-ZICxoL?cdPv1Fj4s zWFvl3 zrh$|fQtL-~60)H?VX@;okzS zUuyJ$_M0-a{AmcY`?(^Dm?w=9id>S8q?0Ipe^j-+hC!@+I>TZ5*^S6rMi|U2hW69p z=reA4cE~a&DIv1?IkPATVkK2AJ)R7(tBb%w_nTM`o5GBLBJXC&{y5eA)LPmK3Jf3> zx!+Pw@YrM@s%tW@ESmN$u{CK+8@j4*;y)G5rP6nhiM5LU^mx9hkuM-&zuA&q66!N~ zs3c8YSZu25KNBNj=i-%XoOtixv3*lk-ENEHL2cJ8NcR@Y~tiW@N6!hXpWdd0(H-YYJ*?u0lP4Tr(YE8&=* zM*#(}B=+88!P2xdUos`^OY2pgR3gcvW5UIMx-kq^mN z2Bv8GF5b(r*0Za(t>pb!@wSc(6d=;5E6V~S=v(HiAgIuo=iRm=^x`xifJ(;wrEkw6 zFl`66o~!UyJ#<;FBN+z9>G(?J-?PBW(Ii6koiC-PEMh<(Ln&Dq-gIn7Tbg}s3Qyca zEzFH=h^aauqv(x!!gib_2sc67*Y+eJTac|;mqi)p_cZo~Aqd+-s9|LaM0uvrGflPV zLNZAyOHC4TUsOl_FJpBjLk;Opfn<2@DDi0DvR32Rl9{LqKYN_;f^Pd5`GyIca!j>a zHCzZD44?^F+Y!TJ3n`A(KO=??Jy;5w;$OBs-RE%2aYC&f;^S5Jk)dA2`|D9Vy>-l4GkWB+$D93G|PXx*I=09wr=b`-=VFcpY&n$CC?I1(PH?7UqpX zj-Qpe5h?Iip1+9YZd9E@a+K>StNQ`<0ZRaUaCU6gcDYKFf~c})F|FKgn#+o{6d z#5o9)S?zqe0rTTC7sId5Q)$OtI{zmaQkWt@x`vbNR$=?)^g?ggj6nhHL zsjTI%Y~cj5Cp)vbn_p6PCR=SQF5p)E&-+?~iBgU8Vfh&%vy#T+ z&eC@#(2IT#B~18>9l^f`$&W20D^+m799;cMOa~wbflOLpCByR1b1WD+S}MLd+1?fV zH1zk66$R=yS8<=rFAdVQ!00d_KMn(E3d!KSEGtK0Z8cvotmG+q_4An0|H*3x2(7o zRkMh4DC`0GA`At`fp!@NgO@}@f^PFbYXNk#lIqJZ6qwlwD*xIRMxcvmke~n|d{_0i zh_&i(m_V;7$yFmoMARhC0WaeSRX=$~GA-nV))LvfE@H^wl^0XvmV<~AWxiFqAoW<> zUwL)4&d;l5?K8{stm*ZZK86jMH-lo-1dk#`Dj~2@#r{ThHXNUv4-P zO{5uLVQ!nuVSwQJ($?=OnyDWM;FUdH2p6~budoWEJ5Kes?sPe9zufhEXme=PF*Ic4 z4Sz?jfoDEuqbUsV)|_9=cJj>V!npc9lIrPh^DZENB28C#nbBdp>F_>mEA1Ms`M~jl zKPF`j#&|qj=vHO4r}pfT&ZwPZr<|5$UOfE%X-E=lf zs-hyG%4%*7m1aOsjj^Ll(^AcoaT~kMT`OD>*sH8zJRQ|On=42q3iE6?C{3zEU70bl z(?#f*X|$&?>1ukNzoJJ^;31@No&B1m3lh1k<=8QsW2m_tA_2>B zjC)%h9CjC97v@3maNz2^;B!KM*Yd7#-r6=ZC(iAhz2r+u9sZT9z7N)TBrkyG(KzPi z^f-W9Nq~jjqI?*d_22tJjQV-%%e`xB)jgDg%`2`>So&{_X)urse#LOilV5+-A zioA4RJs0xs{Qv_PE5_+hw*<#ngOT{j_v4Qc&{sI=b;_xkqBH?Q38BJv+cAr%XT-!@t4>?TXuSESE{^w2gW_!M^>x1sOG8(n@XolEQ5^l*1fHPu3cvoG(>!sI-t89 z0EDX`_d9R+nk&Qjey2f|Vtm18%t4-N^^FNY_C-dv4~BIXUQU@tXkb*SD(6az>KOo^5iWBKvxvyA_^?8I3{QwSy3&!QC6k*9fqp# z?|(3ad6HVJtT?FzWzf^f8}0_+>a7=Ese<33+@$YhcK6pZ#g~`wQ~oWiydWc5xbk;2d{PQkZh(h4EC5&d zDdUG!(rlTd-Xs!0|LaNe&QaNMm*TOZ(s*BI>S{8q*Q|DDZ*6md>pZCC0Jy)ibc~gb z8u=YQf{;_!zf30K;Upr$2)$5~W}=^onI%8t>^ga!a90^QoDH7Z3wA)`+U+_;dZ;0y zCqjqKB5fU;ef_X@b&NFp=X8afFOai8b zURYxh{Dka`H9H`|g^K~Gzz(5&tgsUYg;~eI7b%-gDKww@fK=zBc+;FV zr5FufNX7cSB4Q0!N}eK));rg~(YTfck6eKvCBi9{%(87mP@IosRxQ*Y=VW;iv|(xI~TBl8hDY=S+O|w~g^{ zAIlYtTQ#n_@`d!n63+En>&y`ULD`_U&`3?+pjhR4TbCZoehl(45H~{W34q~M5?Tr4 z2cgW=N#>}gTI?(Sh%#mbhPVnRUUXm8rHD?_6pgVQbZkY`D!Emz3pRY#t2AYIHr~{g zK6Ub9EZHBt6X%yDh}2UEruJ{td9QE#BB-D}t(@KL$?Ud}#!bC~51a)v6Z$l=E^qxR zEiQr{?XheT&WLO5b|~V+ebKUk)bl^(1RcdG;l}roFyhJ3)yHxx`o@YU06Rg`<)@u} za3O9nJYjcZ@)Zn6x4G0qQ=mBD3SuPnXm60!OQiTD3m69B|@BsyJI5l z6kBGskw(b+nGidc(M)TvZy^#yxG#S9^#Ffz@_X%59dh~CGqa-m0DW%hyoHo@`uxui z(YyYspqozgGSMn@Kqr*9ZrV>h^8Uzu?MQS zuYdi#6vVvV+f0pfq+{px`y=_FF*#;SG`LgYcNf4f8hh#3XvkAC8G>SydTe-yC_2FM z@kOi;b30nA$u@$h^vk&&Oo`k5Xa1b=yqk*J0Gdln=lS38Va@fzYV?&OGR<-ivI;pl z3ajzgyX3jBbN81$02nDHImSX~@>A@a^{V>R%clwZt+&2iW>B{9&3q5f-JS|z?*Btn zGmoL$b|YEA?^z?mv6tq&f(U+7I%o?~y6Wkr?|EJ7!-Cfh;eNBYC`A}1y)^iTGA2U* zCj$M-Ir~;4$#p>^^O!Stv}a*Ahb)W$2LOhm4QV+5vm}h;|L{=fih_SNS(D&fR|ta6 zq;vb2LtZDxj0CnM7)PtM+J$TPGED>m_ zEuQ@NjA`1kfM-KjOkr`Qxz^UQ&g=|b?n$pR`R)Xp06fu>UYwL9enO( zgXf>njIoMhV~wUDFUQ_FUDS^iDt$to3lmqthBWa7d~@nq3ZTqKV5W-xFin&l(iQ&K zEeyUCQ2VzUM=ZvFSWU2rin>a(;FZc5bGiGB(z%9H+fKio7iq@n7^+VqRNmJjI3^|M zQIFz{C|}de)#WF?(1o3)PV~W11#jZH8dfsR#T4k=^Hq4owi=H>vZ}2zfI>34C=_w z%-flPn&RckxS4s2b+6#Rs}AdbM`m^sBLX|HD8GMG;L*f9mu*p36VD)NO?$h2c~4bi zlV_kwXi2YLGSL_&pdS7~-M^_94S5$dsZk%pgDmSuxO|mswd2H1oB1+cm-P@IL@QIO zy#+)38>O+(lfuqfsMVRx^%l;ji`e{%`nTeb%!{Cb_~$Q^i3$guk94%=a>Gbzi+-G5 zg~)VT=?;H(DE$5tHm@FCtJ)<;!}z=IWgD8Zo&&B-nk}CCxP+hzc7U>P;M{>Sa?Rck zdOjniG?hkC4wzmZ>Z9I+CQgiM0T9c3F-7CVL-UOG*^fk##qnwaOUJZ9+Rh&%wb#dF zwP|TRf_zgd!(A7|qk+eBl@w@-x)1ZWM8slh1!a&G+*2dKPy=q0|Qv*PqkI9&+j%!FY* zzOCVym8Als?#?m=P!1{JH%t9ZBbrAKTzq1Vts4gkD z6=7eT4jX*DoV(r$iikeVMyiFIG8|jgyv$3B42LIO`XzmSe|jf8md0@RJ$NgyKGIQy zRX)2?^fD=bE633Y+fH6{A-?k?Y|~|J8n-h`35qrDp`$Y}rc5kH68*;Bt^)NlfYUfA z2A(E-{-dZ-i_?gQZ^@P)<$J?_VE$DJ7Mf72%t#Xvl^ zx5QE}sXUH3O{B^FE$Oetw8t)}+X(9N_YkQ5?CQXJEJsNwj;5KbVUa_Vibz35}A^Tk^ z)~F3phI1-@`osM)B(!D77SID7Z(I*zaXdcXNbjCG#Z^TjCaNDH2SPWGJ?$&=Twgo} zZJt$HQjwq-iAg()P@t(sxzcZxB@B97aM(&K$jzUHuOF{ouc%HCLy~0SCTW7&lCzZE z-_jOSpdoZqLntlNWX%`DmvbVzxSpx1U};{9l06=aPoH&LYV_kyPE@ijh|==7#6j=m zKh^3j64W@c#rOl!p2kVfAMVFs>uaEm~iaiFIRsY*dZ z2UWCsP(}xbWIBfm!Ik;MeU_-yPhx7k&Us}6}mpDUK%E##Sc7^>? zm^7UdfRNa}_UHeuUd@u)Rq49u2p-t1zwp$7Q66VS(yw0J{U%-G9L7>EyO3AQL16vNY}- z)QWHaev9JpCq6s5xiKt&JEEfnKdDQI0%}3DFHrRb8?{_5*M{$m*DF<6N8!O2u`pN%taD4o!D#7yA}t->ECJ_^$`xfwP`Y94A5qGdaOw}N-wxT?oHDd~ zOq?<5Sn5{koTl9r<5Y5zb~N}fl4T8xW$*?Ivd&exV$*fA9I~r!`$HV!GUTHKG40E9 zF3dKWMfSd;PelYvhoqaaYm6#>n!gn|kC@b@N9fBu4+d)0L15BVRurh;A5!b`!3gSs z0pI$r3#L0SzMxQp8T(i+z1PaM{L#(QXeGa(z)X)ndIyp{WJ^=&mA*+Ave?8WI zE`#aavu+|>U`t2xBfJ!scj%SIqEyP9*>?LhnfMIP>=nU|`T?|+!Aja~|2*{&{p&E| z)xYq6F*x%w(=T(AVJY}>nBHo{{R0Q%9IxCp`8*H_^DvQ-wLMq=DpjuF5t1&Oy&3TW znHE%ZiQ4+qw^-tZ9$P3?rvi}IWJ7dln^`aG+-7CLaA13FM^-3-1VI?$ ztl@($Pnn?Un^FbkrcO?d-|PK{yCFzS;F(=OTp>$7y>tOo?KpTZr(6V0P%d%1@gQeZ zri2+K?&xkm?syfv^3TD(k^~jySfTJ#Pw)yvWFK;rr_U2;$fR@V@>g9yL4R=5H6u=C zNK3s874d>P;~?vFttV6{4-L*5bI*#r*%61CpTWOH$6*eq(!3qCt3HAZ<*sMwCcD7c z_iD6pRGX$x@1Ty*RC{3u1E(waaX@vR!ZVa|jX7<+oO6Dz2(D?Fl4eUD zLBP2n9|6-!e`wQCxrDu~aj=UF7SCuX zP-|$8(AQWUsjP2HD(!mXVL#F5K*VEKkfK`B_PiPk0ykI;qHv%Vp#h5-cNJ z41(H_dM^U+Ec2m~xiltC-T#_~9IK_~s@#>>f-FIA&MvmVfpf+EXq7eSWp zX$U6w7rqiLbp8)ll$wP+Wp~p3OlDk5EE8s;m-?TjQ70kWtSvtKo}p%yDc;gG)QE%c zMSI67R6UM)IfD{Vw(|5Wa#7Ab62`gTFitVs2`M!WgP0$q@d(%H?8*Hb##Qy({bcF+ z`dTbAGP($ImLL5sZqn@a@$Mz5?VQ*QQqp&gWKk6Y7%$IJVI1VtPmdt|wF{vVS5ort zUxe7V8mtW!RA6{HX@!iOixofyr(>8p3H|sLCOJcmb=ROrq#LN`6`T3yP|fu}5X3cG zE4s%FJyKAnSo19%sks92bS2KTSuuj5#5#Z($k4K$uxm2XLhE(80@nx*++L1jY zz1hiw1W&u>)$iVZrqv(8%nA14`cG!OMy5T=#u_?`4jHm7y>$T^dcEJU zNfdxt?4Zbf{^X+-iGqE5ry7uHtx1qSL2G#@|kbM>|^BH9?NlOQE+vLcLxOm1S z&o~?IXcqA8KD-(pV36Cbtf$gDv}aoCVQ|R0uX*X(hiYAL(C4%tcE1+XFo!s~M%qbn z_BescBll(OwcD)yotVR^%e+=u`GsFl&r(4p9R;XOvtJtfOh#qybmxkLN*@r0*bQkg zEvPjhmLkjm-U~U9qVo5WGdRv7XUG8f81CJ$`@^|=SsKNNrxGtWZTZq4^s--X5?wXZ z0zF37$UztKnIVI?M?e$%xdeH7tHnCQRQ31lS~ccOF^J4?Z%o)^#O;awb9Hj1rbt6| zV?w%$z&{Glzc`fQmc(<3^w`L&*r;lKQ5fxO`T3Mv>k{tiTZTfOMJ^6YRCh%&%WuhQwq8ckQAB%u zh+8M9hPP#fxrALJoyY(!^+ttO?BU8>*<}BROR0xH#PC!G=eY>ME-b-)Qf^5c!(~Cl z3mME2rGQ=r7U<4(wPv(k{_YllD`<7kjd89d1^rbr2)Jgi>?8w-Q(^aN7Wl9dLAp}X zPCL^EZ*{jJ?~p^eE-DQbE1A&`VRdO*`jPW&0goCJ36Ww=6S(m2M~38WD7s?j3PZdU z2BG}COBqZMYz?t&2sTWB0=_UXB>(nrd?6rjyY*m(a(JFeV3Qh;s$y*vrb%babcx+v zRrr2HN2`}CFTA@tsrS_3xZHCD6W{@!h*>;5ewZ2jF~LyZFxB3U%$RG1J7Gq68(pl4 zn2aBTWzta&C^LFMtZ^sd)-HW>oQ)@v|Djme&gv=t5#+kX%9QNyB*MyvPBO*p(67UpC{P7^eg~|Fs0mfa z&)Xm;@7}CZF~~^f8EQ4jwpZo`lWUt2Xm(?^u~F@S$uY)RVwWc^&WS6@FeC2&fB;#$C4mg)UZ&_oA7C(B37cmMBM zT{dP7Gy6OEJ9|=qw(R7lDMlL2_p-^Bw3w~%Wws*(G`r!ul%|D-gm$v0%!z-d)gh9Y zk&{h~Sn_h?7^{)F7=l`0kFOAqueOt51fJ{V<}>K#r|IheL8td=Xv)C?1SN1v@1f(1 zZiCXKrHb#3s2K5ERps4nis2rN+%3&qn^g}4SSAuAl&j-gmcAN428oEE382)pNT78l zpGY`=a7m)solv2oXVa=g!2veg+RW{)rJ~R^bYkBrlLiAao`xdg0hwws@-*^D3c^2? z)g9`M-q2pduKmr}t^_o`v;WZAq-V{ibOa?E@XfDbdvXYL-q!48^m#%oP55IeH?3we`J_Qp&Cdc!t zB-q-8!CSCN9f-6Oq|&|d3#McRRPb@_W!iMw{1A>ik~lt^sAAbovQ0wWAzWwZW$Nsp zLDLxUok}XJ|MjGt7|;{Hb0Um{iJlLoFpZq?MAP5N=Jrn)dtFrhBVS|6tIZ?=ZJcLL zivcwRrxS2KeFlPzk^(ZUT-{}fgn@aX(3nc#3hmOVVp*4dwLiJSpGN;xNU()%HRzRH z=V$kYSNk1H3*F9cnflwM`}Tasq^QSx9FVw;Z#!Zyyw!izAeyrbXO-t>tC*?&^Su6T z0^;&uboHKnm+xOmLzRli_9ZZ)s4xhv;7bY5-#80d+96>w{Jx-ihM(=7uWyD|GiT`jLEj>4*=$Ea=sc(ganL zylZ<|`c`pxtxHQ*niE>3$XLz*dNpuXfwWk&9`c$Nv|9BggVpL((bS#&kU_@cdAsdW zj5v`Bm=t`NkSsD;ShyxXrOvZAb<`-Igl>xatbV;X&IMci-#O9-UBxsj9QSGA`N+fJ~4R@c+ z;*~Ng+~uP`OE+9yGUjy72^&4h<#y$|fwFg%wsCYDhR=WLCUBL>68ESyYb+Z=4nh!z zylnp*J&(^LZ>C3`%z5F9Z_}}%msFXP3cx$X^_ZR3`9JR3r8b_m*a{m|w7hvrK3aAJ za0k=i;mCk*UQD#$M`591XmtSQZR6ENBBM0efuBPIxFNPjFakvU<5kxZyGv75cKNnxbJK=NA!R^!DZHVHQ#-Jpi)1@C`CS&r zVP;aT;LjB;Nq#r=y0$OhtC^dc95pXM45_(`)H+1VF}oL8{iwEhQHCPa_LP6dCWbNz z2CN{!yOLU(Z&x;OD+cc8Q$4Yd{xB9FJqL{vG`h}$*-?HO&k7E5s$8D@84T{v8jM}~ zin3S+XzqDdL|UMg8L&8yI4XjxBLuog{-v-B<_4w!{n3t`n z^KZ`aVaN^YL`=-G1s?pb%~wd@@xVpG!rOw;WEx;-H!Db4-f1{yiq>8GDyE<^)m`Mv zX~Fe8`R(46HEOFf?$_4U_?=(Da4~^n<@8B@{WM!>QC+%p@WI6M{x7QH)Zk{FX^Fd8 z&JQ_HT9M$R6VVot)pp|S><%jl%pYKBWpB5v_8{1vpw4_xMCB8VrP+1hkCG(AetKGJ z?88~q&fa-ie(!bR%wMszR>@c*{B##mp7J2A*N607EVZB;tLC{*q$op2^xy-exURrW zIun_D1R6Vo=rs>bJ040s(2VAe^tZ1@5vOmA{P)Y^V9iW0sGJQ-;$5qFi|*YOjfOF#8mZ4GNdWT6AQ+^30lD_tV1?*J1l! z^AQxWksSq&LdZOtOSDk-nX<_d*_%=d$N1+wZ`fYnpdz4})B;sma?_oWt#WVptrC_h4H2gF zL3}>F99N+2Y;cv4Msu{a`TC{pzeIAlwT;%~t^aIGZKbjjK? z-@fMi#uz$;$C3SZEIdk6N;`2n_Et(3Bb=62i2}gtm4Nmcpcr3gp;SoPVA}gHFy`O^ z$_5I$YKqoEp~H1cab7>v+)HqvMJ)9_F#_eFRFWNb1{!@KPGb0IK&GDf*Khyj6L2@u zJ)HqKM)LMA6@Dfi{QuD~Fp8sMg+bS*sr`mj{_ zoYk^DntmF@p2@$(lPK46LsvdlX5BeiTr;Z4c#M`Vfwk7BmqqQi zn4Nu%M7n(&k5gKL?P)ry@MCdd`9auwf%6aLbJc!T7(9RZy$Gd_4+M&&3KK;jf8%g(?ZY(gK|+ zAj6{FRs$f~+fSRrdRDoE2mz=}CaMAePD;s!WY3u7Lr|Y8l@+;CQJ4q?v_;D$Q7C_A zINGfei4s_7rIO2phBMyFYUXi3_Z3jm2ds2^=TGd-YBk9u{6y-=vRldDq0Tkb!LR`& ztK|bWpxRe~=&F3z^YJhAhH6*8ZZ{tv`x`$I6FgDwYT-u?=qiv1{*^sSIA=(*P_IT( zIxP~c2GS-k;kZd9DaUoh?#W3I!?a7o!}!k;8_?1Z@a~@#KsUX)aM@DF!WZT zm-!uJnXuU*=fN&iBDT+xvJ#D}i=a>+O+r^g=wxp~FzlM$Lc`n|aZORp8H&l!tr3pE zw=QS*vJ;<$AFET3i2@aT5&*lrd;8$ON;WU&3&k3CnB3SjNeXw#K|*{K z3;gq;J9TJn(!qdvZ#2f+50ceO-{u;>eyp2n?=6fpTG%#x^xWP&Y95k&YUSiNbuVx! za4w09_IXS}J-Ut3O`T$lb1v#QVQ@tW)-kEOEs>jI6oZ5I*NJD_`p!S{bqm~w`fChd zA0bqBn8Ta_7Wz9`9q2+i~xKe8a|oTGOO1^eUIZlHEwVe^H&> zlgt9h1Z3DbS7=O7%@q@`L=3rGQNd4OA5@)(ANJU&i7G9*oP4iI4>l06Vg5j zO`||U^`?9uQ@TKs50Kv>K+#K;&ZPCFjcy9Vri4909+whR1IJJ=D-np17yr~tme~Tv z4o{BC^IO#jC{V*sK)Y#j>+z;Co}Y9%=+DkeD{7IIYa}re*kA#$$hiq>(yG28m5E|PXJ=C+WL3dqP6I!}B4KMZ zWwFz&aF(X`8t7-{x$+1TFRjj_V>CkUn zo_QH6Og$r7t|Zug|E_s%z1V@@a)~#=n9?I{m`sB`CgiqCD=JMf`yr)O?doF@kSmDu zLwKxuE$w0O%a;oI*lTHw!d$!eHVjc*En`T%aqbajJgi&mVQZ}EJp6bB)AcM-?Z}JZ zAPBu^RVF{lm;o-9-LC6F8wb^eh6M}emB%I`TtoYkuZ<@^JDI$cN5!aH&E&OEvgTct zY)4{A8&WkQ5y#)IUJIu!9D|b!)!9-c_SNhhKuTl%9V(x!d?Yn^uR#d{^5e4HiQRG! zTS0!!3`fOQ9h?ai1s2KX@EIfz<0KW6xpCIYr@o4-P}lc%&*!WMalHKnGIWaLe*U81W6zs#L3)|0q27z!zQide<~s`j~$ZP z&E7PKmij>fWxQ1t(3N7(vpvdEwEB5Z*L<`B$==@PR2zJ_^+@tb*hbyOdB`&shj_)% zL_VBz94195Brc2TkWSvXqxIvA@Ah9!^k>CcS78S(_lb8=ykUeTpn~ai-64WD zI@!dswpF5($Ji-uisdM>lW)t(IwB%X@8>P+b=3fhlhL8&>@SE+iw5Wzq7epV`!4W< zay^YWK#{1Vr>^~0K7n26@oV3wO8}Grh!W}7z}zYz&0)tiLv32O1l54DnhBCa>+9(} zW`o0~=v1aGPC%i=AGg$tL;9q1S6Kxb?mZ%C3URAo<@^(zH2J6~!UPog<8lBo{#34Q zzq(frpXAKIUdX0nOc7t+lg)T&r+P!|IjyTyLk$3>Qf=hUp983-h;7{M&F`)Z={;z3 z1Z5|dWkZvb+^&+`3Kxr_5YfZ=SEZvB1A9wa#xQxPAs5j72z`t$N^`a;0)dCb5uiFc zvg*gIaMB>4;%gT8U|3slrI+*4uj~i)r$I5J_@o?#;}v*7Z}2#2!@qy8xMG6E^8)$l zW)ju?Gni^l^0yqgTDh&;9~wC}E(uvFR%s__*wwxpjG(FsReL21U^nrt5r2XJ!s-14 z6=usHdi^WdY!Zx;Yb5T&BK^`~+n75G0oE2N7U*N804q$m0)DDaypK_X`jo#qTrub@aSG?-u$Aa8Q6!WK?K4F5dYWzh<(Ajm z289MI&bLO%zpTi<&y#C|rX3r_zOZ+e5=v8Fu1w#7^bEegmL66*B}{Eul`<`}j_ zm9VP^yy)u2gUXfAe^hVm8QG&L3ZeL;m4KFP2`00A9jt9%f9jC(YRy}I&_~tdLOJh# zTYym|*M=~MR#+jgSMnt4w%V^!6_IK5`BQMZ&==TuSJJ3v)iQ<_!B#vvH0hX*{Jv_z z$}vf^yajDywx@jMRx}Lbn!JM(nR>fAF4G|&?xSKjSCnMRf1DA`D%>hy{Ss(q$iYd$ z4t`hEYywgr+47Fx(=;%-;73Xx^ca-N2E%Y-eRk1_oG^prp^L`1lj@=eI|8(6+>Amo z9jVe3v5O^D)L?Vo{b;X@Te9eN6D9rx>XzX1#b3`gbE+1#MX3P4-0xUNzDe$1|3sCq(%6U455Yri6^m!VBW&%UbL$b;3{$G z^E8|3QzNxZ>k(wlqzN0xD^9o})ViTm#%PX;(xZn{+mOiEQwz_;<=~hlU)w3HcB|a35Pi7JvDzvASF791DlA}Pc)J7K zvU|<6+ZqoQn}&}Afemc&E}nas&jhE_9#40^EU!s6;@5#p&PAA4@SiGWcJS+U+X7pe;B4Le zWxqMls8ae8ZL-C&-67bz%`bKEdZotDGkCW`yG3kB9&J&WgqkKMYJM4%m$5!-7dY++ zRk_=BVT9hpJ~H=PSmk}+HnShzm&kE)HVn4IwhhzCHu=fVwz4*11*0kLjMt<^ za^OWpwdi%1^kZ-!_%`9Hk?XTB_$;lp-+I01Z>{n`Z2flFOQJy73uY;W|&Hl+IawKK`rF=fjLzw#8=G^a{sJf4p8J~l7o zVV3>5>17jiB6iEIl*NnEO~5G>o!zW~R$TqqXqw8SJnS;aLCiwWlFO4R9|D$~=oMYy zl|c2&$c6>=SG^1@IGa!+yoTZ6E{gfdAd*1DC*Fd~6o(s4^S?yO9UjS2xN$;EVh_wn zHf^KE6J}AZeiQ>xW~XnK2Df;_fpH}J zCV!a?)TT1rY?)mMi|>T3UrVb3s4ALu8@h;1IP2q&$tXQFR#T}4xrlKx>wt+!%lN7+ z+Zr?q;Y(;B@0#N@y${^hD_|AJQpOTG{CC2Gz1kwpny-FY64VIkTQBqb4Y|-Tl9>Ce zRv)V170pY6rSJL(DKJoC7MZTbu69baGqJ%IH#7{%?M925D^RHj_KT7lZRXJ^LLAO* zYaJ@Flm6DP40ZiS^DfPXUV=W~2DguO=RL6M$>G_QqG_h|&nMVQ_QR?EBf3X(rlW>p z(*76sOS^PR?s*XfAQYON8Ha~z@q+QI(1kb)5T^ZauYq|*r`@%Tl| zDS#or)%JT?^}PSLJxiRrcL8WQp)apWY|R^-a)CD0ZNBseg(V8HuO-pC!5;v--Uw4s z!ZH5JdBZ1N@AEMQ!E(ELesrUOGu zMt}k1f0=Oqhe?^(n!Z>lxF9>=mmDBeR-&KTv!UWq<8LW^s#5nLK0Gk2_f;G$6EUig`uNk6Z3I4tFb}&aJ-y+setM@v2Vy?sL5cyipbBkIY4# z)u+q6Y@P+>7jjo4{E9oFZdPBe>i>(ht6lzuzw)SN(4tx8rYa}L=*Ct10rp45GbQuPqw_BFddF!DMc^yA-1$y#}y%oCtnzGHUG zc&iJmlHf)pR%9jru{A2>UHic6?- zzmi(JJtPNHZ5FTpvy&pGP zpBX8b`>4%lzDYX0LK2bj`oWQVVX8nJJy#{rH9gRxi>}jGfZD^s1p6JAw7hA)w9d}} z!}t@;mFdAhjsCg+JSx+UNGQNd5pA|*8YebOlOMxoMMCGr=G0s57%8K{`@|}JMN9-l zk(g}oubC+1X5nx0RQ!AkyvhDk`H`S^oLmj@WB~IMx-9)zqzPV#9t=ajCWdzoPPs@J zG9_1`Ban@SfIgPushX)pUWd7ajlI3_up~cxi#~dPAUA9c(C4Cjy+63?S7lF9hi@D*Zj~_~77?`u5#C1sw z0~!qXLLbQ6#dSh#;CifP-rT|q$ZvmfRrw;cAOqIGsc}SUs!dZ=SA*kB8!|1^MX}fA z{VVRvuIAyautz3{_^@f=?KtmlQm@tJ?MePXN8Uo1UPtd1hRGq+<({YZdn?fvfpBPl zLJg}$6cb zCHAMSN>XtmoD_`5oK|$fGqHMv)0AoH=W~7aE9h&cM+Tat z5h%l*cF}SjZ57EpDF+&Rx<)i}*})@|nVdm!^`x1->gj^rPuc>m+P#EhvmtQ3PvhEC zjklzkCn*QW)dI1>LOz07KBRUj+S7#yy$8_%C0IZun}jnrY%9bPEdJ^NW2%GoU%i|1 z-17CU*#=V z0vF7MH$RQ2eSS~hs(4W1_vKJDl1t?#D^;0|Yfc)h%1%3#RQSV{Kk=PKqL$?@1;o(A z5$Tk}<|8po9i@VnY3hj>`dluRMU?CXuku_6j4iunu|2eo_#KBMkDrR4Hd; zH%{qvK&Ca@9P<*8LTZ+b&6rn&RrYb+1@QkA>vhVx6=1dX)X>>8U_nXU4QW!bJ1s`+ z-}>IQB*oLWf_8PtJ>8w3`4zH$!PqSfWhbb-lxg&_rb}C{u9;3`@+IOy*Zz+z<$uXs z3W>^L;!zZ{TyLf`z9n{XNv(s~EnKH{Ta>-|p7g7!{dSbqdR3A$tKTVqOwOkAVcB5; zuq4b)-Tt;z^kq%QKv3w;;{7>N8^WKb*vN`z^ZMxYtWz$@dDIiQpKNHfG^ z%>Xc%@Mb@1!bQ)(?9bt$4V$i_{=f;l0!dbUpT3KF#9YU2M|(&&HqlWNC3yYq~M zXgA-;lePY-BDXWsRhnw9AYf;wFbAxdWK2K+<+jRcUd#jYxivr@SwFt-j zmmCVr>lDfqNP%f&`_t$y4So`ilkn%|IdZxoG(+F2N@qmvc(eH9U7yo|J69V1R#;Uf z0k+#^X8LcGiIEDLwKN*Wm~#lNQ{KMcJrXz7M{YeMZ1iH9=z`-Uxg5)$d~O<^n!HA< zpE{n1ed?BJw|aJrO0g{e7P?Bp5oaYliC@Jtu!J2b~q`UQ-vc%_Tj&^ndlsk04Eab z*t?w!n2@B{f8}EkCpOeM6<$QB;8}u!a{;AWh<*Vr6h@L{qNCQH+$No7s(wRo+`%=R zKIIypV>e=_@U$?M8UFvMy34OPm?mz}xIBpV?t;W$AYxD%}{XxueSKFIVHUk%Ya9MD~On)u#&$ zRRbo`RZC-8n(ukd{qoGR9`19c_({I}P377C>{Ww@?>u$L#Vs{{M=R9#J_=Co>~lkUa&dOio03)=^OVbO z_wP^O>g@rkUoT}M!c!#u8nP6X2H})pxKwkQtkD+93a%4)A;L^@i0v zDI{%di_}U{$Y*jy|M+w56%!3O&bpt;4|-n9;|4;c(QO2>^|OBenHi*cxP zDLp6(@)KR4*$Ev>F|P2U1zo*!M?qX36kdxW&VT?G^}lT;zU_cHDtt2&M|v?O2{)Nn z1+s^XA4nO~6WAAr${Wd-=*?`#g`ig@{@sO?n+g2Ri}dYa#R;3}Y)3Zi0qM(%^vN zhLYy(ITP)%H?+B$BadTK6jUoLrq!=q+{xRmFs~ayQ6ESslPn7VgYvm;u4G&YaU2`SZJ1$j@7;@Q=80qzLYTN z$CigQessw?Y%Z2B??oT)PkYyYwpj;h2VB%sKdKJP2M@f*-^sIaW}A`-UB!;LGyiOB z+rhO!(~uX2FA)N38N=wnHjEfWcfs*v| z78TkCT7pbF;#F~~Vr!MxJtN}ismuUDw)>UF>8@?XGRd}$QE5EohiONne!==WGfRrO zRx6+0iyT67RnCg*W#CNi@{FD3>LYqVl0NgpL0NaDe=|V$@pVx@UK3inOE6wh1T2%@~6 zxilu0Q7hpx9^~(u0Z)|b-IU!ZFL~FRxQ0WT{RZ`*fuIZr`@%2uVvv!%o(`>8QY&eG z$oj0@hzQ7b ziVQB9 z1t#JZigm=~1Z!D$1p^IwKeBF6nx6OHO7gznUrJp4z}L#OL|I|_&`3Z97g2tcZtcua zylsuxWHe>aaQ-01{)OyH;6=C({ToPa8vjLJJYS zUhcNcBEQ)2Fg-Y1%}RbmJ#PmF@elnms|T`TuDUyz(6m`>yu$luSSHIc7s7@qi9a=- znnzmE1G$zt;Ka48hE1;b^3bu$a;gz)J?_BufJ*|Lx1#_CS0`BBJ&k50xSC3b2fsD_ z@I{z+n=st2GlTt56R<##E4ogGq9|O|bY)jnkiJ+EF3*E`CwyX^u=iI+AX`NF{p{;z z*1{&9&a4>6KB+nY>iq78`ELQ#-8W0j;BbIesx3J8tq7{f?URWh5B zN@#)rYM1RijDq2l)MJN+fCukzcv^`hz{-@e?&HsizpOCAEm{R*iJPpw$DW2LPxu}I z{~CmdB|SA+2whq;le9>k?8Jx|GbUL3CEW#Z#Tt3ua?ei)X})sAh)Bj&T?OI)e~X0v zCj#{w{4P|2K&Jpxat4mq9*C<&-!6E}uto)Bh=kgU!7aH{t}okMRGTH!G?x=JVU(BU zC{xlX%SU0&dWN@j=~c(a*4LxV-vhr4Jv+iHACB2RHL(-K8c3$K>QMWN^1G-P{2~Op zW#pk~Xq1iK0FS8}zM!UYtiZ;YtQ>J7s#;^3rz@5DW;hxbY_IVn3ShCpe^z?4e6t?p zi96~`)*Tq?KJ?q~`s6cwQ4>IPg}ASKEY|5B=ct<9n9j5vmrhT$?IvV*0SS~jx0R-7 zefnaHyP2^z$(nLJC2E-lm4i5r&==W}VCBzjn`|@ipa9V(EZs~P#Y&a!a2Ju!%l|vK z1vYAR!(==yrF(g(^fx4qNg9x0#gbXaYg!MKX6u>Xo#;sE8-|jObfSkt9IhbH@q8j3 z`*NzoF;Mvt^LL-e6V~+KKNM3%7k1i%E{c!JvRJ7MywCu}@ehBeIPS)G9t9Z~)4@MU6UT9bzt1`|976nzP180VSvPdP_;G(q zWkW{_X+0Yg)kB=<_D~xZjwh7uc;(x{9Q@@NH+X{E+gq=Oa6T`7T}qc!&F1sbE$>?@ zLF_1yo4VGqyQ-}Lx^up)D91qe1+$Rh%3W80d8@Sgtr;rKIS?RF_MnF>7BC`x3q_O) z>%{HShxJJ>KWl;ky7m{!^`@#8QXg~$wzTl~WJ2h%&{u^M@M?wegpsry7F`T!*lfs7 zq%|%=I^^UudL{SV3e(OcnsqO#l4IaMLS>zxp^h{yCPiAxb3*eluf0D1G`-B`qL|``K%u@kxQANzTv_gd=gxP?Fr>i(cJEP&(_sD zd=t^&v*m*Iyh|iJ-9Y(k6V&#snA_46DOU9g13Z=eJ&bOV#5hi)Sf*5DY9Z%i@}fE+ zFSbkrMT59tNbNXb_V)|iO@nhlSK>F6=GBR!-+0n?ft5ky%sRKeNP+R&GbxwLEebD@ zl@s}0W=F2dqzutn0~Ynzeyry8K%O6q>y#6fje;1x<`3<9!w1mogX!HB9ZFCS%37p< zU$k>*9(Kf*DBYjs;!1Zq82l3jLS9< zE*i^q6kX-hV>oxW-Zo|$!N-xrKx*(cRl3qqNII(TpZcAHe^H>iAp7G~-^(Ww$$Mc< zRm2Q(Yy#My5y=lTq|YX|D8UlG$C^=%9*Y!hSB55Q^)JNRDpnQfB|O*>?mwn458J@1 zBTGF_#rb$31I?Y`*Pj#=O4G-xGH484(pFx35Xi&`L2rz7^x^5xxLMbTflGQwe) ztg$G_%KRU-{qd@AA~b$VX}&mLlu6rLctuP-w22xJ&THSpD7prvrS$C`_y#^L3w*U6 zNk6E*Snd3_z1Qgo3^6$>D$#fMghzvTO8Kz0km9kSR&(7b*qiC#=lHk%u%~#Z{z-Yc zDv!XUmac`Y(kT4bw@U?V#UUiY6^%;FIT)3hRMR+xNoH&f%e#9C6>N=D*drA=z5e1SY~@a zFA0xobFq}Hl+^!Vfw7UONs8|jfnmA?pVqP-XUS+C>V@2WNq63FS{q zm8Lp)_BT`q@g~#9Mr*$c?ds3lw%EEKlGWB7B7t*EDc;hmHjaJ*<}r%?FIe0go^%{V zDi|(B>ZlKC453Ybx?At(dWR3Z!nLs0x%79oyAtg#UaT3$@r7+M<7Xfgf}rKECL`TB4dF^Eyk(8 zg+F4g)YJkJnppw>+h6b^PZ`z@=+BQ-LV(z)&ygZYNiko2L&x}Ey=OCsIKBZ+pFo4nWD%=+boL!B{;H1lW%GC|S_1b8 zS>0gS;rEy+n)Qng;qA)SM8s20qbALaiqT55ySe6bZbo+G*A)1sWSH@~p18x0u zV)YuE8WVL_Bh5-%pI9rGF9nbiNA&1KSc;~*0Q{2qFI8*Hi3s@>jIDT*0Ed%=)aZ0& zvR<*uBvrp`)f=O-rVOTP%5M?A6^sUPgU0NG;eGfXwSK3Az56y~E&7h<{YKI@Y4T=Z zSvkCLJz!kOvPi^EK>Uo|y+Ey^)=sW;2VNnm!3IQ-k=*lx27yq0+QCua5PUFOn zNyZPFO=_|P|E{b#XQujp!?Ov#VGFkW4cTF+bsUvT5pj|M(OUh%(b>Vm_gK3}o|kkL;Ry}1^D-PLeFUldREGuqbYCM>TJZ2_P${gMp`qf{kG8QnoP zu8Mif_zb~^rH!R>H4;*}8*vqRt_qjSq@Ch+w*V+ED_K+(#oE_VRXto!$f!M!OHWw5 zTJ(`C{VTn|GVg;5S?@0m80ON5U4FjQr%o>QX7AV{0A;UnUfIFThlOZuQdznwMAn~0 z9u;38Kfd+%-WSvd@%)-q@?QQ|b-$oSwXK+Lc#i+SsO%dA}Yb*O1QJ)hQb9-F~>=T5PQ0#>IG~GVovZ2Lhe~7e^&ayEW7;|=X{X! zJiU{uT0U3vO(3BXfq|W3e%75j!>j!%=I%8yU3D)n^M9%j5G62m_Z_a&`%Ga~xGsN8 z_yt~gC(Rs{Lyd)*JUqjhB0&}jVyaZ+mxHm)Knw+#HYpMEFRFaDNd3XT1^-YrnIc)FxGb3h*| zACJ(&X^5JEzD9a(RUPcwRJqdfl-1_D7-LESE%(h&l+S?79>tos_b9dGj=Kwg4{9nJ&pNeZK$V~P2wli_{4#>NM23}c3- zADmAjCQQ^lT9cW7<*kQ+i`fFZ!A=`29Ep{qrU zjYzRAkuy~))ToGzB!Eu)1uYwmUfcVnarvt`coIOC!(3Wcwk(DrS@sJ}*Jx{~eIN*P zfiVMp(dkY%(5RiuOOIZ+f|oQ2m>&HxuX&;HXP)h4FR3;u8EM$yU8X>cmIt@xiJu@E z^Th{A;V5}7>No(TnHQah`LF#GfqZ7TGiozKP=!ZxJCI%oJ_1|KNN~bBm+qn@iWg$V zh3ZM4YhkM+C-T|j%W64Xxg9yriD$_@SrP_dU#G4&L6w72YFSH_wls4>7iN26OLCyy=OwtEHvscagU?JM(O?+|PKwp{0qa1`jS+cC$E^+iaEKSg19+ zef5o<*D%Csdm31((Z^%jJRbO#ZEF3O`8n54N_ywgBOFL2F-Dw&*bjNSya6MKEkCyPY(0GjaLM#WuWlb)6UsRX#bZ)01Zl!i*J;bSM>0+VyhXrgk z71qwxgmC5M)!eiEMqc`pCf?FDhpT5NOMn@$5MS97uHv310Q}q<#YBpHM<}`FRl14r z3em|%D5WBd7gnwcAAPWo4t7@pFW$$0*;M2{?kmiKU;>W(!th{_V~DABGrPf3;>TW#u@iiY{m_>P`3`_Fg{>DjWL`_Rv;X~+>_!6v$YYAW`jb=HSd=}%QasoQPPb{>v#sU%PRzO(-&=HC@yH6g{uk;fqeg!=)vYx zMp5>#djNLLRA~y3u3pi^QKLMTC*HK0>4*z z3>bh%fXnI8JyZ_*n+Fy6yK}`p`mJZ@V1;}?jTVe^jOvNw3HxRy` z+7{P89WaL~QUHW6JX@!CD5WgFn&rp`PfQb1BVaPVHwRD>;!_YhZGt6hh7&EzPMg=2d~R`KXxG+kyU) z5LoI14*p`4bWh4}X!xzA0(7cCihuhAqmg{A3a9eqqa9YHDzP%wbBjjX=sKzrp}52t zYSTQ&Utlew@Svm=W6;)E6s-hdBN%M&bRDA$kg9kTC$uQ31*i$9)EPG@(|%=R*T=r0 zl!=9_L#YN)C}2EV!1XJ#S#Fkl>y+o91al2nV;q&Ha(#j}y9nYt80fa@0%>)r=H6ISfHvf|y3qAc9fP>=qXWTj&k-gn}}ka{?% zwiEbaD5pivLBZvF0*uZ5*cA#z`ZRNG!=i?=h-f%+1OA<%smvD+Uxo4`7jzR|-pIl) z76hd+m~{GrcIP13zU8h^J{SJ_8MGCuC5+VhKZpq=nG!dLNF-4--FxMG!2m|mqTEu` zbIyTa7_n-OaHt~sNG2*3Cebow9D!4^85mw#5uA&L8Moi@iN{wJ7|ZJ$!6he0{U64r z@%Bp{{A@_&rw!DFj>XCpHr+;W4vj793BgOUyvbes*CSqLI%W9KQNP2CVJ@&lx@mvHhdlKultb~0|P7lOU~Hkzx+5tv_=V3=5M}qA!udVPbP)lJU!q-&71&ezwRn=#gRC0#la~ zf>aDtfhIj%BebntQ|tfUyV@18nRYc8E31rA&|asX9ny(pg1#5HgkI*@A;iZ=`IUd^ zJ1Vv1tzd_XXPJG(6=t7Nn|rgD_H!*c75hvQyCtH*S`tvr7g9PASg~UFMMMQ=DLZj- zY{J_=ezj5MYb~ab+gurRpm7Ev*zddw(Jn;mvm?Px9$YBY(zia(JfU4cUznl-w}@d~ z%sol;_q@j;x|mjC<>4c0w}IUyU*;^Pt+aHg%Lv=ltZDIE%OJJk-{~UIKP=f8UWueJ zIG`UU;J}e?5Jhjvvmk5T#z1l1PF|MCvlW?9q)j_xs6v&7oe7JG!}&V`Sxwbd{Kfd= zG>XaH*W^~np?iriDnV#w5K;Y8Urzb{=1w%Hj)w01C(}M&fqn?q;mNh2M%Uu*0Q7_s zJDbJo(frnc5^TipJQ3pM24attT_|8;Tv6;}II>Wgdba*rww$CL+)rtGjpCbO$%MR? z4hKlxn)?FT7j{QJ-ZYKqK`gDqwkD)HCXzF%-W-4sK6qiR0fxk(WGc1cfSI5g^Gqhh zu#G6oG8R#;x2bO^b{{w}Wzch9e_?bO^u*o)01$>l%%i)5o7|(kqU`aq?OnH5Tal=^ zGYs7!CLJwg9HDfhHy&zJuqA1L6&@exq!W;DXAaLYg*u8X&lMlDenXgj0NC;7FIc0p zFuxw`+$2d8H^P-n=Fn45fAk_HS$mzX=ZEwmE-6DrCyUUA&t1IQe|l+r7FeB zyD74$y#h9E(_`G&fBkfIrRq3^bb>x`wyETr_)!4Cce2Zr$WXV7JBDr50%X45^=_!y zFgbMhH%R?$0EaG{hr2zKVM)Jcn;DH7$AG+<<lb!v5IYN*V+j6lCj#fDS7rGu63 zv^;%$sa_pRk9c|Jp4LM6d^3_h(IInE84u$`BvnrmhPG1&gYDT-HCe`0vv?_4GMcvsV64^6l;;f8v_B3WHPLENADoyIuU$~lwdFs^fG3QA z`E4_sBX?ki&v!xlOQl41I@uH;Z2D!YtQqb^NhVaHt!KTi_8Xbrw)Wiq z)8HfJ+mgzt(oN}~L13Vw+Y_6euo1;5@imkB8NCZv%dz^c-fPiouLv5E*38)OLs zK|xgZ*}lAV!dhs|db%3Mv!-UX!5dFa)`}Kbg2!UNsV;NqWU3PtV#RGCo!zXE4VvJD zW(>i!6F={T3*Tb?q@Bg$YrwyfG@6K8ptd~H@cmR5jOpB-;cGX7d;|<>8qsfOy*Lxx z2S?+&<{SmK{#^L%QAiy^nkGAR*CC|^b7M&;yCy@4F=#B%qn-qMsqoVhx?4L&N{*9R zjIb;m&zEFK!@>z7Vo5>-fTdI-r}SLU68rHDB?|DseD&*Qe5<|Xj3RtnWf2v3`sBN4K_3)N0- zDgJs`RI>mx63Vl>kB_T;bg6sCgIZ?9wsVY9cIDx@t^8Z3V0OizZJPw*t~Jm>j{pT^@$2GOa{Cr-abpeTBACAdT}b|97b~Ec5&rT^um7w02Qe2_ z9zXkY9P3$Y*QuU(nx!sNo6x*b=52Rw_woi+#nA2Bn5EAzCp+Z`*yAwfQvGV5Ssl(Y z$JYI48Km4EOMjSdee+{j8)b<&Hp5}OvB{4hcb2P9~`62tEU zwY02ytM9r~?9(8?Y&2tCCPWBTQpvQ9U>0q=g(2X$w+7t&Gu1hX;rKxL%%ScMDehj| z;^s>r*NhJ&8pW(+Fh>lu1Q79BYPNc=iID!tp5BOYY+Krq*-FbdpImrA^l^~3(L$bX zB;HuQnNmqGY>_8ny^)458ahJ6@+JkxSdgR_O=6Fj_tV?FJg}XV zdbc+9(X9~$7Osk2gg=dfvK14g*>wB|0quFzB*iz0lhLq?{I*V{c3Y=9($s(|d+~}N zRAO4Pjk%;jd<3hU*A9Pt+K0=0rxvl;Sng98i>fuB zk|JQMB^TXb8Pzk+XAI92{&r``kqT`(YT<^WB_#SUy`_QLx$k~lekN{M+=oi#Htx8n zKUiSYsunm=!UTnnO;h%GIe*lunHVFA>z#C1Bw9q2}-L+NLX0sxJcdS#b-?bbTj*L?01_}!4Jnzo!}`7Ettn6B=Jnev-Tia6~e!GW5aiRZ$ zp?3qTC|$c$3`y*Cb@H3ze;(Fx<1BP~4kl5cxF{S!KuNn>KFSry(8UwLa-j{N{Gc!m>+3 z)ugZCF95lUk5lALN<8vHrmOioQR8CLcR@x z>7nOLNh^h0j-8dPu*k1L0G;tb@d3 zgEfba@79CH2X6Q7l_pSAhB3j=FIG*SP&Vu)k7KcNsHyf>rsW;^F(4FSY$!5ajmRsd z^z06i<|rL=LWp$|sA|fhBfJftJcqOBiEBh76i0DaWY+H^qs(|Qee>+3?dSci9u=N^ zGO5vcY|yQ;I5D4xNh1BGm7J@L?_WD|tYoeHMgCN=GPACVT1E)?T_3jmnXs;zGWJ^*mlG zp}J5mamR?CgVU=z+}35U4u?YAN$cK>CKF<#)aFHet!rC4rZwxsL{zVlCtyW#PgONV zK^Nq3dm?Zu&;M|v+a#m;2TL_Ho4kU4@`?(5U{)b;eqJLP#`uQ!sZrj&!gY9inn8a2 z0kr<<%}wRjiH|w{+Ch1X^@-SM-vU)IiKyBqnVt?~J2Xn8RaL!ns`D-4Lq3xEQr)Ef zO2e+YNyLdwfnY)~fRP;(i;AEUdy4303@kHWGS>HC|P1Lqs!h0v#q| zt3xdjImpd&&J1g**L{w7HBnZ^!BFv`1a@u9A{;ESuTsB z@PJXg{l^hi^2$}{^-S)#{N$pgvz)#IT~n}(7V>(>*dh}Q`W!)euey-f@FvDOuncC5IB!)v{K~DONU2B&g81>m^+V6nU{ppz~`7Lz5Q*?-hEM{aod13 zHKhhsXL9w0=>zn9F#Y(rs=hvzajZvVTa2h)w?ZKu}EcpVWA2b z<2)bK(o1|nQob_7Gi2i|MxgFaZzUw43X2hJm>i(iefTBXWmHt@LD{H&An1CWRZ(RN zw`GA^r~P-${)?!KAWnZ9_PwKT>F@L|`J7feNy?ZTJJ?dj_KY%%gqWjQb4~XriFzqv zbKeUBwF+ULd;%10j|!@ZimuTSuKff71&Y}I{bk_3fdZCggV!76iPA@fB_Pai4o}O7 z*ivRE#WBZHNux%w0MlWvQOppex~$A3Ex@2Wn0S#29ri2LA7B;(xijzga6>TycYsM& z4-`G2jwYd7(6V!s-l|SD-&t^?S8(wjP}a9>ESJZUiC4suxFJ{4h#{O6Ppv`lu@}gQ zL{6w2=%U@g>a(U+#N4fFMsPu_Ema;|vg_SUb?|$dWlQq8w|ZJa?uAviIOZOZyOz^? z?T0NJAn6Eu_BB6ZlACrDG3bhX;jgnN%+=Gj%Un}*xR>G;a$M@HBl5&k$z5AcYAjeK z_h>b#ZCR@Ee8W^8y7!upbXobJkyNv77iXdvvnF&Dq3gM zE#>4fHTAOC2LP<)U4Afva9qFtrV87z=RzB68%zx(I{Fz)_ti_AS@4m3Xmk&JjB)L# z7I_}V%uIiMv}5U%|D*CoXav4J&&c85;@NrDD!0{y6jO)}Gj5H=dxFBEu05hpv^u@N z8Y%O(l)wj#jX&{W+PyOdA+E+E&8*Sd(9fIxJc9^83tdb?@UxI)U1!)i!|%V%?9sGiFS`~&EbwR&PR#k=8$2NF>i?t_qX9&50psN0+Sw5fi!Og(xK1FO4`o0S)n(p*u#)kq<@Ua2wl{cKtN{rw~p+hfOWd7+FR2qM|6sv4&ZQXz09Czn4Uc6|kiM#t7SR zAl027^gHiAX?Mezhb30%0TSZgil3{vxp8k_(KhB)AZk|N0tP-z=cxXV&VV{Xd&d*l zYNV#;KlXJV;8^9ZE`-Xc#z=&!Lb_K*AnR@@H$;bVHSDR-VjTODVADx#OVZmxWcIx? z?6ETg+f)&olKX$SV~SFgfa>Tv?>1P=2BSETF9uKLB-d+w@b_(6Q2KfTjk@&?8X5|& za!{*+7|)q?H8qCbnPpx&1?$^{7Y$(^18eJMQCO!T4l*oPvtmQ1fi%dd)fZ^dYmlR- zR$kOmyokTUq&0$yQ5HkjEQW^G#qwX#er>7~|0|l`Xv=mY*O$}Tb-SCro`uOKJM|H{ z1e(`6xw(#Uy7z*MWXpR^@=0(^pa$vS32u%M4$++)ZKg=+aN91nUi-*@=efiJ$-f+1 z<(4T`8i7zk336)`?7$r#Wr7%WPa(^GR>!aw%ROeY-s8c?C|r3WL>DoUhcdn zpo>U+=)E&pxd={E^DViQAdrbMUPB~d#yg;&`aFu_^BOJaylhK#M3O7V60n_elJqmBG*|UQ^Mk{koEe{v$ zC^o_*=?rM=zfL`5gwi67AsaKLxmJ*H)0H$aE4J2lY@y*)yYJ8fS<#_VXHOWAX{ zL|$cM1d$Nrosg})c8XacMu~RPj`HFD31T%z=y%fyMecuMeR$&Poj_{z{L(;;a)>>l{(dM9$;JPN(}@ z**DW6?TI>($gE`KFQ8ph{CE~0w%wfg)iYhgmi)KZ^ShAFUfF>Z`1Mwd+Ka!T{mUjoO4AUByLR$gK758&S67S>xRIEZcbU z9?A z81sQGH86WGnQG1m%!dAN@H#H1kB+r=tX7@+lC2eWS+c&d53$ae0Nx2$RHXqp*69Xk z*tWK@qR|%7!Y3h5hMjV$Or`zzctC=)iFsfqum5C}kD(LI{@8cB1kW4Df$cFJXL0JK zdeGg?)xP#kcCedWT_1U>sC0)zO=9l_#5wAjYt_C{esR*a9k>ruvuV=E8P*_UYE-X4 zWbh%IB_<|Em)Gz?rVVvf&7JAAIvmd)wPgBC-~Ls(dq;hApjVo28(W9!~jr*tmRosq!;GA)1Ug z8!nr&32Bm2!}m(ClkwR&Q%AE&Rgc{;SzR1Ggi17+!agZA*7=+XqH!Cmh@c!-P!_US zitZ0i{?gChU_TDUNC)DVNE#zmP4YghM3_V^(HJ__rCS4Uju|8;tgv?IKxw*GYbNS({=%a;#IFw5awH0P`ru+w2T$95a5V*$?>$@idSNvAXAfo+y)kMwh z5e&{97$wKkV*AA0bl?{Dbc*Zj?OC2;x$oEg{gs{VkCIHlV3Chy}Uj7Q&y=CL#s`FGs zuUcO8OTPnM)mMR7Dm>Es6uu0vta!;3fYw%xdnst!0q>H5Yo_&YEbQh<-lz(*)Q%E;GYpWdpJl|I zFy{umslj>yH0{2imPQK=rNNiWv+@6t_f1N(x_Tyh9sf=EA~%F%a4I1V?#J_tpPJK|=P_HBy8DZ8Cwd~pjwqdy}P=mhy zNng-Zo>1&$x}r-d_s(U2_`g~(Nb)q`5M@M8h5pPwz=k-COGSLsX5>I@gUr zv=x0J_w69BOU5RHlUYU~G8Ur}5R*QM4s(j#oEwO|L_B zh=MvEDU!lGFhiqgQ3FkwX8rq;(e9H?i{U~jtkKs4 zY`N$Fnd0BWEu4tdU+R+FTp-O^e1A1@q=+9=DXJPwms^qr#K}6}=dxXYHz`E&?uh5= zUOzB?@%s(=^0HYvF+qLZCs#$ZFDu}DNZlsf-@wB)wiA~8_#XT-(_#ags!~R)0U<@KbL10a6*D+`~cUl z9S%=PLr<+p3^;!CE0Z$zR5;RA(hzikV+xgjE7~9>!)Qd@o?Fg5@$QN2qT(PF(Cb+z=malkxjBogwV+4U|fBqLC zex;w&f=iJMqVTGEDkd}b(ySsWN;aH4ZTE`}`&aL29fUV?=dL#e6jRO`o|n#`wjJQz zptIWpfoTJt)CzemOaZGLyF5YM_OBN*hUue^bIX#_`M`!jeaw=2i2^lms(>czDRyxk#r66q&L zxK8rS0`=u3=`af4)U>INuL!lsoC0eb+&GuKg_^^s*w2O0t#i zmoEJT=jpOhE}1HJiOscj8j5L(!EVR}j+!?gCF>xLE(|pp4Jql;-Ym!EYNvvD5&~*v zrko3X_f=G-VSxFHjjsa+8xDwNJ3*@UWmjZarn zDI)d2VO>lSI?88~9}hnoubZ4o71`WBx_(YbHTw1_OQj zH;HzC@u!~sa78b8@q6W6IT{t}xUuFm8%Z8H3K%GSpW(4x;7tKZ4$50Q%Pw7Qo_k4R zVhrV6gj)!3$QyjEM5OAxP#o6#p*k~B5y5YVD{UD_5R&G*63vs>D}nZIV|HV-|5DEG zQ43%j16bS)`TZf>sxK@FD)VeA36BOPMc_;Sg0cOa0}?tvsmifyOLq1J1LgTlMK(7? zUZhjyhA9a02YMPfz1^q@~E{=dudbB(}52vAkS$o+>-M!OXIkARhijNkVhz^d=f|-nO%(}cNV-~k|5zFPWSHkyZBa*q> zDY@(&V=dvJQyQ!%WhwCtl+u#1a@FU9nUJ_W?kGsb%KZ|C1CiBvRK`uFtp@l5r-HOD%REETRXvExQPm!VUVk0H&~`a z?H`cD#zbyIoxOs8mr#o}&u3NIqS+~V}KIx{>>^@h5xOiF#W@aF1lQUIj5 zZt0a*3KASVCY1!@v@Wtt$b`U)rto_+V#l9V*ybS-VEEHO_aN((-<@uHdmY+`Eudv3QkgxD+?j#*kMrs893(ZCq%7&?eZUW@-B2L?qvwEZ|Ld}3dP7F%M9ah~@T#>(5 zO_sn9mZMEE>(#kGCMh`Hc|n?bAygcCB>}GESXP>a?pbz}b&0pT(d7jdqed3T55% zUNcjRma`lqYpPk2%~CAVbd?6PR{bF5f~JIEamVqbe6gfQmeAH5HChgcg=saHJq%v! zPP|FgFVucEBV6dxQb^7>n$(YmpYgqn0kmlQIwh+=;`~cBMK85y;xTJ1n(7&MXaxkp z5a@Vn;_9NF%`EU6=7;CXz#?A(?9b5;hT8?1Yry)ihpws3o|PI|fk^S~?@pLV6PzI} z4-}mj>?3=QCJb|?D-1%eA3E4gm=DZIA+RRsUw?ELPU+Mec7fsdsjRr8IRoa6i{YA@ zwE;dnC3aQJh6n9)RG8?$%S@6}JpZ*oLxizZN5w9u9w`<4$P1%O7L2vn@7lg0lvE zd5t-nv_~X8!U1OUG43qtq^~#23A!&NGq=faN$<)t-;q*fTN(Lk@--Pr%F177(#f*z z6=IGDYHZ`Y)kIrC^w}o|SR8|#rI8UcOJBJIB*<-ucZ^kWbt5u3 zyP%u#U=RY`+H)wPa@1WV#5SCjI5f^wXYT2~?&Kyjt&J*;g#CyKjQ+m>mOyF0vkv=a z-je&1v_a}5KIC^yTWX(H<~Uto%yD2dg6S{zOlg-L20+VCKi}&{KBb*$ziVY;q!tS*5Ob;k)E0TWOAOLk6Z<=$m39CQ&ULt(q%&q>Ny@YY6`wNs}N^ zpNbg8Q^TDftcpMg1Xv1VV_|Wk1@Pe=L3}G7L~*eR+&3Yn!xRM5VYsSM4N_V@SAbv0 z!nl{6*9#4+0F&I*R?$NLNG#-0?{~cwirTod3cX8by-ez6-n3j)v{swm0hAQAR_Z-u zL51SHRQS1V{j#0i`RtB#Cg1{MJRhvj9XqNLpZ~wf^Aen&*$+KUNQ!ssx(6_$ruPI zCEbLD9G6ICfDLezC9vSL2)S1~#1#D#5X~4!)-`MHD|Ote1}4+}PYnE7-PZ`^^e14y zREQJTI-G=}Atp;o{F#6JnVuoetKsHzqAe5M(&gMPb8)N@p{54FKZrm+{V-LNbw{f}F`2=yHPqP+E;P zin6-PE1m@J8@-j2B0ZZl5=j<>*Nt|{&g#iFs$_Lg!=*9f6I6Y9+g7DUCB5by^>ZrL zvh-|Fl|>-LB)wpyru2tudh0dIX4tQBzSYH3=eh27~B7cCDad6y;(*C@E>JM**~D^lB_M@{4*)X}LGr z{(A-x9W}7gP9Vot<>X5NtoyMZzd+O%VBl0GeXn_6;@)2O$%xMK-aqDpKV^a^rqxiiVY710u#K4e7-OqZhCUC(ax4Gl1Rs&lx~;)WAkNi5y$?Zpqeh zk@ffmqP_qFrz+{Za9jagJ}rlyeURCRG1D1A=*LbqiE&sbI)^q&f{BKUE(rc>`!Gng zT|@@~WTtLd1?>H>Q&L9jl938h31cZmqEJXwL)>GD0Q{Lqi{H8h>3{56xBSUvK9p3n z7NPDY*lxfgoVeeTU)xpP71i{T*nWt+STPJrP1!mwvK~J{)YpIsP?a?OBZ*JqBG#-1 z$+!rsOD3rdksi}3x|Z^jb)wgS$#f_gE5uvfNdLTrh@v87Ng2-3?2Hl8V+M)RUEUt$UiKuw_|!XWFVR z+pIv0-0M?D?-8tN1x?iLhA!Yhr-Za7NFcDv#=zZ>1RQ9qd8N+Zqc!P7j)2Nmvmz%N70O2S^QoQv&`)AW_N4l;-_i`uis^|TV(L9* zS?#*S;|nk~!qIE_tKxCK3LU`YijsL+BLi}FjY0f&IEUX07656$(8ndE_-+b-z?xb0U2SZ5OLV0g8G1O$PdnH)!cX`qS^Lmj;Y%=~Hi zU0J2JI@;#@ovD#-D+EUx$yUHu0ya^vh>n~PP5y_iD*#(D9WhkbnzVx>FGW&nI0U9| zV<0t*#`eI935?t(LtYZ8zO5W|AE02y@C2JhAJzqiOHNVD|&WR~QXgs79o-I#w< z+bN*NgXx|f-wc*BLxN-vJ! zOdUCaj-G`><5H{3+*WSEV_m#sS|j_O~Cb7 z{06j4EsJZ`^TI6W%&izWNC458MP$dlu&*UQo9v`^wTiTxYtc#@c;4u)t7$!D9k?m( z3R{9TgVsRmuF1`HHx{HXx^FiZR__X|$fUIG>TBxdF-T;SG{DsLZBmH1GqDWAa7o+r zEp568tBAPGRrO({P~7tOD3=0L^ER;b5_KAm|}j`0h@N)jxwwCJ^wh16H&xQ|C$t zR%&-fXit{xUqcQb#R4plnRt ze0exXG^K?7;oL(8wd@M;fc`!H=)fl#nr3Kwsc$0$D1<0nZ>RRTAsVM83+)jY<^Vrk z5z#!D3Sb^HM-r}=a^)1N4Z=&7YDtz-?&Tc=YQYjfsiksyG>}&w;DR^=yEGEAQfv%O zlv5C|$|}*&PPKO49ePR({|vT=DtStPpcq~ikJz3n!z8nVL6Ih29uAr*Qo{aV?hcr$ z%6Ou+_j*SMKFQE9LoMH?0?I8B@d~%m_GqW6?G*KszLN}}x#x-@S_@MHuxsWd!8AQ% z%V|<=H)_jw){17i#5)GWf+?gzt=7t8@%C{dIk6g9ba!d=)l1!?M>z%Ys;nfQpq*^( z+-^FyGW;{(VmMeP6WBlHVQxbMx_y*vFS964R;eQ8vOkz&FxhW?C)i0FMJaTB7Cu7* zr{&vJK)EF$>VUL=7`d(uoxZ1@+D@+Y>wUSRy(j+yoMYzRm?$DfG1Y|;N3|6(wO2G^ zXylgxv0w_Rg&GcCj1t_GqzveNcWHF%rQV`PIR)`mS#9De1+gSWq*Vg(caRs9i)AW- z{Zk%u8yZl+k8ClAy7H<@RrMbO0kzfczQF^X_#&&eUk!rjI#WLU z*+Vk#vWV8U8&^s39%KC|KS?Dk#h^I{dz6%CLomqBNX?=x2-d4vbI_^x6(-ku7W^(t zPq>N1PU%F-DWo`hHr0y|l(BKvsZbENPJkc8pjlJzc@P!cSSN4PrGSz|;Rm9uXX;Q6 zt&&Dj8fjUj5pV#Kt2C-K3%=;soKH1Gr0A$*Bi?(f7>eZTHmXX=8ut(dQWbSxej8yH zk%c)!BDsr%@k(~VSS9`Q1JY=MIt%-PQ(LhVC6v$#qVa-riY}|}4PC4|5hAakqjOS< zu!~Z-)NXjyISp*vo{ANx0sITTYxR7GLX>t;Vp^f0Xhk^RgLIqcfCYIPjy7l#Q?j*y1_!2Z~}lLs_atnjZS8Od|$wTOk<;*Mg%6j}EA@z)VC&fvngQ7(=|)Z<=Hq z*DXoae7W>1zug+m${67bSc z*3S}4TCo`|uQp{p%D20xl*7bt(|K_K^J^J6T1{q8@AP8Ii-*`<3H;;GlzMjXzNATA zQ%LTBPh`eDU*97o6Gi`0iHWngg6yb9RXHny*IQVE(lVY%{AT;-yX^+XNQQMz{H^?t z=y~#$<2L(spN^&QOeKo@f#|4?jMUfYe|u5_IbqQNOiMfID8Yo% zYIYLohGq~<;vZ-$JwU8mRVA(K-Nd1W)#-W?!o09sRz9O2<)9uREu_YNDq_CaMQP-Y zlp8!z(;5mjHjYZD`T2?w=7=n}(0=(Cgfk`TABLr}ik2`=vh$*Ix;z>WhJ~HB{Q?r4 z6+DxPLYVpn5<1b31ME?Eh`_UphJ?9A*6*AX)67VD=*1<5rPtnJfXS} zfyV6Jexoo-#%IvC=Vs|#J5uWvo3O(ih;}5^)_K)Afr4RirnO&z28Xz4Cv}rnXNVTb zq*eNSl5Rx5iXH6J02tIfbeWkFO3Sk_jg*Qo8rL+sgx+5Yy#OT=63UIc3D9P&i}2oY$^?rh#5jFRyR zbo@SOxhsQIX2TKDs(l(@4Mj-NMjiM8&)P*)zY7CiA8Bk>5EO-OFm{^KQdltLhStD zSp_N>hah$9J7}la-m2uJcZGIR)eZus4wM}_M+B&}6cdE4v+>R(F0u4Xz*G#=AE+#W z?&G^}n|}=TFCENO8~RRiT1pkY(dnU47Q5e|p@K^a{>hUgs+!9Ic!ALKs6ctKY#}{m zQIb+)|K&{Uz%WU$ITT()2~-qM>3w6YR`nEbWTKR@m1g>-!5e|~6hxY_!E1pqG}@7q zgC$c3O9mHpG+=5(rNwXf8l%m`#DkYiq7aZ&G-A;TxsxQ#Wet?ShLHIO?oo5!8jAZ) zc0vMt*&Au@4{Rtt#e!10z4IxzB|)Yzfzb7+KzXoiCzGWo-nU03#St`1aB-?)V_6IN0Y~6>rzDxy;kOmet|}@-$iKBGg1^yJ z_vM{^(-(J8#UdwxpMJ}%0jIL=ZP$wpxLkNG*5pC0N|HeKlAX}A4X;UlYt5Ib>CI*7 z2J&cQJ=f)A#-f)(`|x0Tw<~7;-wb8CqOrSR?T!z%yF_Utye)FUA~un&XZ1mt`(u^r zy?ZqXVON_R(){q<&JbsHs9r2P^!vLSjI(Du~_zzzau1PczBdK&&Qk~3` z6i=g*UT0CDIDLA)&6}NUsmyqoMlIe*Z1dGG zt_s{6R~EPL7xxw6V@};Qy_LpNN%Gi5|EuH{3nwAII7E$9gJHDHmF{0*L2>$YUcFg5 zR&fn0)2PK8>CLif`siIDRUa1i_bKEyEhIxl-PJlxtcONh5!Gx1M(-QTOh~CiEIpIO z(PFdrxg^>3njW29|A2b?&DnS(tZz$cCIRJx6Tr^nbTmvSR|W2kEA#Ck$Ofe~5HbX? zww#a>{hP^xHns|Dm+*`wF@_~-p^D=oQO|WPEGXB>(~CFjAWFqGtm`!D_6Wgjnhw1y zr0Ro?g}tHwhyGqkTGSm{rxj~3ig))h@*?{7JJHs~C}QcJD2@X|fk=xjpbFUwq z`Tt%b0+^GD&1N@_P*iznOvRdQPv zP9iF)mhqFeDQJrjy1?qpoIbrzyjcfPqqv4OkFMl5`B5=xD6NlcT6IrHl$^0_ME_#4#{IV{Pr~2SU0;<$r8o2W5760{pl(#1Rlpq6s7KZ7WmV5`ua z>`f;pWfZqd0n~>?m4fJt3ksOvt2V&dWToFo$zXNWqg(o?Y>V{jcSs46&zSlnJXN)3WvS2G^HoO?!`IStV& z5feyniIh$)p8hS^e30IjLL}(UU8#e43P2MJR+>AHToUZ?Uo8_g$w?U{tiZ!QPy^+~ z0f{KahP+<1Bb1J~BW#T|r%`iU{y(3hjw=bM_r~a`O$|}>Bo%2SF91NrW6VcUWATWe z3)DWqW!+u%kHT$4*DXn)M;e)J9l5ZKWn>lcJU zN=~&HY)7B>M~GEIvOoyprYgvwIwAo!bW%?{MBGrdF!@PIm$prdcakQOO#2f+Jh9g` z!t|l!Tk58tRap17>)-<~CU;&eQ@(hLWsqlk(lZyUwN6PJ)cAarBun4d=OZ79aTA|a zR>MTgNup=F8a$uc?rzOgq=?O66Lg$Ezr5$oFT`LXhxt>=nkc2)X-!tdgd@Gs>!#c& zClWxv#6P=^0iq)Ya;O~<;+#gr=%7x1&2Vb@>*5BcyQTG&zs+gCBc*<-!3y^AuR_$0tP4L0d`y&NqAqVF7hx0^vFdpQYM15lk$yI-Z=^8bZsZ*rZJYehq z{5;nmWRivo-}Nomc>RN`JE~g~VffWrx!ok*AClygQ#sr!GTb>P@zmjOluHSG%>v3y zd3cXULqJ5vtX5OpOLl2vof7*;Q{&1cs55^nvNGVj5x$2KFT}+>xIvu6fJYehq#B(h&DSIl9 zw}avFFHYF*NN&xy1sTx+zYOz zg-mqdC;QnCpnCxX*kMe=(U}23bBDiCE+@EWxhl`Y+n&1*>0MIH1}PPkR8hz(r=Zaa zll8nslU&+zYn4=YNG?&IBbul`&WR^<0@0?{em%IVbZde4cPOCp=ZpzA`KdrQk8&Gw zq-znYadYx*)8H`c8n~ErzDN<{?_kz`)6o}EsG%E+az5S?S5^F6-Xr2g*Kn+xyLGFt z;^?{?4fsCsqWeX-De+EmPgRPWFS_LX;P>Y6ozArs?g6U)pOb8Zn!(lO=(~bh@_yh8 z`g;$#Nmi#m3NxvvlmB{aeP*7=Gj@klZ&#?y_L5s`a8y=4;-;j!D5g=Bp+AI@5bL0B z>WeF0Iv5)cn1gY`^>SM(Rd8gmQxZ+bZ(W3%g&~DgFmDXJWD@)P5L|$yiQN3WVPSoV1NKpY7NoumFOndXZ)z7iS~FqFzU<#^0yMnr@U>m#Cd@U+&63P2uGoX zkMT$8gd+j4!%&)|GtcrEy9f%QoeiQAIu1$%a1@uR0@A|wyJtJrfY z@aKRqXd4#HptA&k#}zBJ5h1pRO13tlf8Pg>iy=CyyORP!A4T_nPkGM;m!)z zH7$o=r)wq3T8SLzeeuw;7l*SwqEfJDB#1Jq6?z2~ikO~yMfe_&*t&XDcoWo+xyRx$ zSfz_XA=LsbE&~EIgC_|!r!z6w4-;Hs1iMoR`;$B^&1I29xtXL%h~N%kCvfl7NM+Yg zAb0Zx>u25DuHE{%S=Q7ET}RVb` zDsV)2=d~c0$!PXK!MuZPhJWB3%p>u;u#65OC>~~wv5g}V2Lh^Be4E7Pt6_KBx0@= z(-WlT_voN3#E|gmSKOLB*l}tZVFI(*NPsgkB1$@00NER~tFn^g+Y|bxa8fY6Elyp( zCJ3mWD%;-iM|D(WdvQy-JcFk{n51|zD82yMJK{woOx(1I7;<$KStOBOU=0q0vd_b< z#1R;oPTy4$;vQg%OjZj&7m!TPk=g<;n2vbHf=Wv01q?J(?R@mwQ-L+t#+?t@Bw|)H zI;iSt@eK$PVoV5?qCU#~8tpCz%we3qgNTw&7C_Do+ErPFtUh@T3kkKq(V&*Vfv z^;FpxsH0z#fNam^mXumCGpk8@^<*y8i(+E#*>p)@I!s|d_K=n=N~BR?B>ntZu4t*v zMVU_Vbi{pxd9pagpZG*{N>E#30Mi4*o17bhN=oPgX4_|-5=zn1+C6tVfp8E{xVANivCfZ(edV<>ObAjgzM7!B-16+CEZ zJzqzKv_)XE48VfYy?M!^F&LRw3gGfo-2>6IV(rJm1#pOH*jfRJ`r$dss1R8sl|!TK zQR~TV9vUKs45}*aaGknN;GG~xhoYP&)kF! zQ27MRmE*A?%C~~|(n`rkukke<)>5oPCswis`4C{!M5(=fY?01u100elu{Yowla{|2 z0F0EDs{*YiDx9|UKupV}dA+LjR7}8G>C4n?;u!+K^{i%ziW1H^31Nt3*+U(+EDzBT z(Q*Yyb#NOl7-PK@gfb3ub z$So#H7X|J;6QOH1I#3 z>WRb>C?Bsn0h_L>F_KEenKZd0ipqlToMK%8kY(ZE4Z!EEdFr8X&!V2l!$^X0Mgg6M zCGXODI$!9+>3m|k;5v(YdP*ujC(q9{tq-%vp5>nC!U$;!)~dGUrff6)yq3ABl2ZA^ z{UGmXw$>V^OW;6alJ)7nTMo3GVkS;xJ|5ymnf(HCY<&Y z)AdNPxTmM2;&UlvRZHt~X}Kr5FhZJwwW=;RMS04Xsm)wcNfCJBevo&7g`nzDZo%t;d2^Ds-~QKGMngCrK>hHEoMZ=YqckAyp9Kp_l>ADfVkEAMMR0n65`%C5jqLmz$zIB}4Qa zk}Aoe?6zEGdVn24weUi<5^tlVBoZqyVbXFj1+CW`$t3Wz*nMin5=mn2|2gPROw1ZoI+`bn-ecJf}>S-I*j2rt|`OBz|H4s?Uw$D=E1s>>xYr9Ua3GSOO;skb1axC&avZ#tbQ$z)k7Xee%n zQse18Keb2SfmZ8G(e8IxkFXIrHHxP8suUBU)28^RT(E*dX}hi4Sukr)EW;NqTi5 z@JF6_VGQs&L}(2T=`5BX`0#TUyHPT_beb2oO(fDQykr~(9<)d=4R?WGU+`KHy{uZ) zz5oN|_*SV;4qk`#pcTwG9X1$L(WS-Qp+bX13INL!0RnP#=xj2zYav3J1|0UOY2rL{ z_iC$6L8#k=t^lB-0GWB*^;-9~JwQS6ldPs#54WGdE&|Z)_MZhq!6q|<*L?fNF=O|j zgX71$PWu0?RDcNkY7B6&^v-so&=WPDIsl@;^5_3Ni2C#5t^XtN=Wo9@r!v59*GT3h zFeBFP0dKJ)CbX58@loy0miG41?2hf>ZX%E`H>D3ARzYpYw!9Kc<0FSuM|7Qp*IRu4zExla`Y(Io5gfMgSm>mf*wsoelmtGsV{%#?~Kt4PFy2GF-?QZ=Iv5h9sNI<*l~ zh^Cr5BV{zEl1q{y3ioxxeKF&L3oI9lM5opev==Z@aagC)QFEaRTGEN?0cUN>V76#n zV2B8{mSl2MbWk7y`j_dF5N7?tKhP?kU$iB--(M}nw6LJPp}>;~a498qJ~i65W0HcR zgR^KS`y3r5;mfBoh+6J5qaw*FIiow+Q|W`sX4D}jc^SH_F}i0bIdaLwi^;Q~v= zBGaigB<%%V7?LHV{7gXuI&|kmel3U1DWWu6g9YzZSe;5T+|*)-4AD~`DeNvNkxayM zwX~Qfis1=tXWXOxx(nJFiu2^R9x3F!QAyi{?N#%&j^ZR*F0t?o(pVqgdR<~O7{DK0Kga|(w$BxdE zzM;hg8bXt3!!yPKpH5-v7I9R4o<4dlKsTtJD4mK|U@PI}>&;O(kvsrKf(OP+2`2J~ z{kns0yRhU9$r2WBNk65!V3qQqE7-8za7CChPA&6ffNs1k`#5MP)71gj9WGuAz=u_~ zNOo!oCuJoibpN#C)Vm@ga*zF%4RE^*kMK#6V{VvKUcS}HSz?VNri!ZJ?=%2wrPVsD zj;!)syL}ljvBX4Jd##fndu~0EVt|te1ILfS!U;!3LnYK6&02oVBRnO_Sdv0P>bswQ zV0^+7NPc>GvN;}lK(Jvrsw6lm{(fb=3grQ0uwpLI_%H!jdIEShR;Pn#T0B@DOyQUJ zegd#ysH&(I%VgR}>2jCT0TGsnG43--<*c<`by#f)Y;qZX5Myvkr;WCGr59r>0h{#J ztUqku3(oI=aD0eQ6b#!C7>$GlGjbBGcC<~{^*r2~k2NB+940G(*1{vfWkVDYSL3jj z;?@q6!y}WpyWz=T%4L#=S=MYZ66*F+=yv-f%+b!^K6r42eVf_AXh^Jk+q9V5pfb1T z^8HoVjE1P*QWAh}x2MeUD!)lBcgdi1I9aPb1~T3@yMUFtE26P)Lo-+_Rc-=aT1$+| zvuraSGylr3I87h(KL#?==HGwKs!pYpB8hh67z2!o2)QXo5+e_>J5h`1Q`p@iB8V}2 z2C5CBv#n#ShwGltSk4mEYN;7IPxbBzK296{T*)6oz6J@0@>Qh}}VkDY7svfSk z9QLLkyF82wrK|UGFUkhcRXfFar+{ug~67L2Yk50=;QN4T{VM*1jq5)r~`B^UyZ z{1MW;jm)}FLHS(I)Qc)O4FWWUkunuU90Mm0X8C2>@i@BfQfV+;Y)024jgy~| zW_mBpQY=pVQF@Oj8yA{}z z>x`V3$WK8QfIQeA{ttZ}wwbOn4~!6hgj-8tR3CM>X|v+5OHwoPM@aKFGV8vWdtY-B z8cc95gGrK&lM97Jilurm$lj7at3C>*DGVHyhT(EDs+mdS2RGN(dqs(9Z{m;Adpucq zexwF6Xixh6zAlK4f#ADYCEeG*y<4_5jLo+hj!whP< z8tfN6kTNgj!!e~5qgHZXskYuGeFfP+uicOeX>Q7_^-IjX&p8PTCOFSoBb_)oDMF-J zst1GY3whksTiax_RxjxGpIh75A9~>(Z|8z3$_j{pWcI}ELLU(pqZW#8`h5mkYh@t# z-n5e5)1Th0+M0>IE;nO@n>q>w$1*u?3;DI&>Y4o81-V#{hZ)pzHP|nfkwiSo2V-*f zxNSV*TW!5f`URa2KSR1FEIt*{g z`&GIXXe(Q@CcD@E{f_6li2~}tWki-LX>wQtGj($hN#Ze3rrkU)lV|%;Ib(-{l@=Ks zsG^QZzw@D4S3&q>_anFi_^PJ?Q-yd8L8H^>?RJOPh2%h$Ze=0Rgb3pWmi8bGlC;u8 zoS+9@xV0}pM-T=YL5UEH?^-~%s=r6D(yYr-YeqK#EhKXKE@6fjdSa>ggE`*RP zI%_5AtPt@A;CO(Kc+^D#juWFzw=Fv#6f!qzXeI@gXHr6nxOLiZoX;VdIXj{wI4a_ej6=p67UEIrgBlFc%@?2+j$#pvK5lIl>jx zThv-qKx3!cw8)Ic=;d=oQoks9sgY-T0k*ss(o&X#V@ODzFONDEcY>kw!dE;=y6Vu5dc}Cy2%Po5WeyEDGRyks6qouW2lM2D;xLo(aSEr$sect5 zX$9e)w3yf}Tyh)sNoiW+Goj?wxJ;s}l(v$;3&moTLO8y{OUC0NuK#oN>g3i8bVWWJ z5^3*X$_mBYP2L5KoR)Kq9$O(81Gm+h5*cmz$L&DiM{8%@w#0>clVptKpKDx zGZ*9&)ZVsyyw==89kz3ET?3umtPY8FZ=1rLf&1US6`$h}=yz*%2wf?40J_}<5HMnS2 zL{fR=RIt>fyRBnNpP}6m{BuOy#_wLyV+XM8KnrP#Ht zO;jVMsY**KRi)hUi$B|TbsCwroa+%+>1}-@q|j1qI#gfqPjF}SR-fz+ol_qx(noKz z|K5^h;m5wmfQBn;rxa`PI%__9W4Rt@28*_P6}X`xOdjXQp1fyTR0gdS@8p?A zYvJHGm3ZV~KuyN{U#zz7Ju@Y6(tGq6*VEl)&jc*W$;hGhbV{GSlOlF)TN4E#6QQi6 zGF1xTWFMYbp;*7Z)+0k3x(FGBQ!Q0^F{-jV@K#YVqI2@GBB^2&-ibi4LbOHpJ(#=2 zkscSWtesM<#mlU@PEK5QQk)qq+HaIo`m+({64p5telxOkoyeUgkqO_!<9*DG3wolc zj7Bc8Gt8sX+Ip`ZySS)Lqa9#TPR58VLpJ44<&r|X<}^talwnckNIo(DOqB?@@K#Fi z$AlQOz-7>IO5TLv%29Zu@M3s?c`jUDEZz&}1Zf1AI~(sb?l)C0>0wxNw>Z-6!j-jC z%C&eK046kpofKyVi}tN@N`JP(T*BH@;PFavO!Tg-g3RKOK;Nx;8k8t1qnQhA%Y+>F zl~*bW41W(MO*NV_Dc2{4vJBZoacS_LVqdFCC5;A)Px%0zRFweKS`AM-PcxO1TTmam zp<9K_=8f#d@CnZE!trA9UOOjl!A&V8ZhA2-Hw)Mw!~7{)Bk6YG%DlDq;;t%dutXIp z*27UI#otaF4WK_;Fm+z)DkWMF=zXH@%BnlgGRFh(N(;c2aZVJ+XwS$&vUba;q^#U) zP^h)o6gFY(%2~`ibLbsv_}c$-JJo%6_-6U%Wh#hgU2(GA;tU0Bn2gEm%VM{17;>%} zDPiku_^Te$v#d!^pi@LGq_}lYQyr+b+DZ3PqCobjK~CE(UFC|Tr)ZQ?*GTUVm=1Ti zkKhPA+31+0#z0BIMR+8C%KS8t1L^%mSY*!1?VW;JW!(;;d#6K_MUq-&Y73?jaPn1jJgCdID@m>3m~5Z2N*khwsgj|me>rV;G;iHDg>ucmsG>xV zV{-1KuR7l6$0cbFxr(ZrrG5z~>P8_p3C6nc{+=0`R}eZ*$MVmMwo1(-&CZS~+)uwM zO)dWmZcB}&rQGu0PHkil(nwcCvMHbBkw&lSMrwpov57;V>++2TWPeE;kL!0u$=lx~ zUM{$MmR=7nC;2LWO_R`EvYPHeEgm|L(llQU%odmT(3d-RBhP~3Y#U9oL(AY&TopGF zkAyGlcIwrGonV5CSnIp@fiC-^vo95j#jS$uccUqt(757Frt~1N;48djY#s>YlI1hp z_(~zVg@ zcPSD2M?$*YuAug|As+-~yqzznq2hc2E(1_qVh%ud;Ulr(QbD)dwaD9p3*Gj6#e;}B zI>|Kv!~GgK@DG2)-vL_I^W)bFR4_;Au~}3YCu<^bd)i}%dPFn%{;<29*G4ceevooD zGD9LEqSVNd9;wFZeez?GTF>H`YM-)J(k~UgpaVb3sZV@T^%QT${OB$#E8SUC(L~pN zh4iL3HFhe>%5K$pQB+H@i5k&OH_F(byu*t5S{S9ce;xvN0Eb>|J~fXpJBR%0K~?Gc zoSaoH@DAk`P0eTh6=uq{rzb}xyP^g-6hNPo%YqFT;b~9p z34PQSYUwu1r?5+xbt~JPk#brV2@&GEd^=z%&Mv!0oTg;~zwpK}VU3ht3vh0CeI$AF z!WqLxy3oshnFsXZM#QFyj|mma8g z*2Bfb-ENTm66W}6U0Dp*(ogz&v;gF#ty1$S91||e8wJqkGHA+iBaX zw|=K0Q>BeQslU(Ra10fWPl>Imrqe;hDolq`pEG-$In`Jp9|xZ}5c4YiI9>o}3%m-8 z<#r-5Kr!#Akt#e`|2Oft`=&ioSNDUo3Co5T%p-u2Hc3**TEr+>O~FZ~ffka!sU=L4 zjDb0#3!;nK19NGWY?9OoqN1Ww>dXzcC|*a-dGNVM^+rkt7JE3^HW?io2m{=~j&T_k zd#~KP>xjY&)md*1v=D&Cpm@C`5TSVh9x<$o!kNMaARxIV)yEIJ){_9Glxn6>P5^7I zz{tUOm1f!|-Oq7PNpl+w%%E6b&zB_2?_!T`-^;MK!X*8+Z8Mgx>5W8^E{dm|ZA}KQ zCM_k#o)c?)vwThMClQ$uA6piPNC}o+A;O29drnP+DF=0IMn#l9Hl-LPd=}|6j`G1* zf$$kL-2S*Hc;V1~@uPd_Z52mAqdF+csN@`YkcxWAdp~(joCU>Zhj}`uLCnsHi<{WT z#Q6#O3gNFrtOiw9i34UmIS0k_&d@RM;hwT&+HF}+TT(ku0k%8D#qTU% zrF|j0^W6vBt-jox35VPBH35+t7PbEIt&7(Q?wq zE(3isKe3rpX`~^Ay_49<5<=;!*mUi|CMm5JwUqm|L?Sc~z#|5A(O(7YBm0&XX)~+; z?}hE?LrQ2s`Sp-a#!BzHGesN{N!#Q`3HOvGlP>LMDWx^iDb+s7@~Ad+qFoA=Ic^wk%m_sbE~VkBNVr%#|&Y(mBP*HERA91L8x0NIfL!v*a5C{cL_X zEbv`nlEU68*eS9Eb5(4bda#pJtEHCeyep9obmuOHy67jt=9PV`McOfI|8rq`n8y>B zW15#2tIb&HU3WGj4$3;T&W;AsC6g}gW+|mL!YOSdCAULV8#>X%C(BT9NiA_MR6n81 zv;d93p1Wg4*GLwL9GdQdEej#_79-cF`Bw~xHw7Z~kfhHNPO2T*{BT$xIl?4`y;HJJ z*drc%w^GA6Nwr#PsrJ1{qzmH{qf|}yKB;$k@=Nryp71E`<{NKY`sk?1-k}?+nkoEhO5PNR(Q?{a4yQn)lOVjlYDNi@6v!RvIgYSL)MZKy zBS{^@eGA&_oy-m6pAdfZp!~JGm2TFD<5$-4mw$u>nBTNpo^6?#zQY6Gb8{1=N5od>pM>C;9!k5#D0HZ#uC4;@9UE zVhMeUrz2D*69%YSMQTT>Rx}^6-1JVRqpe=*2!v9jp;4oW*(MN8(6NR@_Y`YCr%y>7 z0ru#P=#J9P-;`SA*f266pNE#+n5+#B`KvqANanC^Lj}YZqrORu5t5FnrG)H;B!s32 zKqnId^^6Y2V`J)l=!e*D*gk2Fm3>uHonH}PgKzr_@-NB6#wltnHRx%;t+t7<+V-pQ zI^nWP8j?&V-i|;nN3qCs6WZ5?t+xGbDp_Tu%)%TABa&H_khZEt zT`4q@NsHl9HwvivTU8=3Js;Axh|li{Lq90S#5QnKS`bGhqG`t^ew>ageRWD2lJTV7 z86ed3gLxSf85-$wA6%Zwv!Ix~mPukaq=~^w;vM1Yl$}d~W3udv3|Xta7Bf_7+x{i^ z*TI93uXEj!jO?OES~4nFM-47ScLbJ;!#IgTpl4c1i>qKl-HWIrj~NmMcvd1?k%-P% zA%Q3c*$ayX{IKvYSNjxE7ONf-T{4lE;dZB#c+t+TcQfpvw$N?In5oJG$r*aUe3!_l z0;Jb;(310ydZeP;?b=6YG>BczAWweu2U~UUuie+onA*@~Qp^dPg>0h&#~5Ju?}gpv z{wtQdoz`p|GURet@3{9-QYwv9&13*2EaO* zWMpFsb7U#%_DVML#QxxbMY=Vns#BE!I{BhF&h?VZ-}UFi~}dts1oj1BFcRP3ec!!b*%mpM|e-=d_rm)W!vb!BuI97B@C2 zh#mQq21b@Feu^jqU$aEGZRIq?D5Z>?G*SbCG#j?J2&ozx0PAGPC`F}RorcqnE)lS{ z+jB3UhB??*DYa-%zNj25UPvanAxo)^Iob&-3adx>J(Nag_2qDDxD;DCed0mbc&>se zs%vAbj@rUNnMuW?v5Ja|Bs1-YXYf_-oEEc`+PGlCD48@wiyPB&S%WeN+>s@VpCSsO zW0DLi)l&gLJVmVBr3e(w zbh-IRv$Zt^$@y~QN}(HyN^{4fzn$taVPuQ#x#iQ^S1C1xPq-+g&|pq1h64c!+Z>t6 z1OULhc4+~n+bSUxqrT^jVp-Y26T5X+d(={CXSm)ohV1^@ZnVV1z^>86&`mh zhk)SD16El&KSWiM&fS25itTbFi56_hC?!XMTp-5>I51WD4#q)V$tnX_Yj@_(xxFRc~BIHw_ITbZjo_C%p&iH#8T|#Wf9} zr*XTK!|14vdNfFZc)XPfKp*ce%oeySxn+W{yQf4tR-D4}v&Gjkp!-hEG%{boKHYer zN@;Q&U+OyH_2!O;4j?ggIFJB}D0no~oNS$}y+Xa|;JhHEa;(RaO&in*H=~ATN4UTQ zjco6^s4X*H#ae1&aNZ6P|Ke$PSp;$%~ z5jyf2+l?5Y$s6REK#ya&sw$6v_};<~oFmyb_-Gv-5waS&dse{;n{c7qK8LGKs?i3X zOp$Sw4Ri0Tr6>DPapBMe9^;`MdyhE4JGPmnOtYbobKcD?5@(!%I+8) zcG83E!YC*B|W?Mrz*I$0)6CUYA>l9GB{gU%Afl zR&%XYrYNeQxwnv7EU`g#vafXUu}ZNqQ5XV!nC(+GqT-vdO_uB3=sJ1FqV0t(iS=~? z9+{uH+7AU05lpTKM6HJ#TO>RH{qSv)n4+Nmtf4^b3)-)~4NDX1>y#;qN;He0kal8e*4(qN z#C^im3i^YIIwLVA5yjz+(}9D|&EKwnCiG@WnMW$oBqKdGcUta3#rO5zB%ri(#Xb7hrDib^yjxInu5Ew|UGHhraU0`CVCwG0t` z*rakArvr!Q&VNr^ig5O!rGjn*kbn9f+k|*>8aADpm3kte%9oIPOzT>-7Kg|gbwboRjX@)F8cK_4a(b~fj(2~jlHOsBD+j z3D|4q&OVCQP@koF}zs|T?Z%^q4&P>?Uc@s8>kmzATztpj6CF`HIBw_iE(_Hejfc{pdZ)2W3>l(ez+`xm2n)uCI0;Q)L1w8{#O~mr`pA~vfDwCV=n1sgGr=V3Ym}7V zx@^!8rloq6V`P|?Z%$LBW>p~^M@U%tL`zoB6a)7DaXRiP)FE8B7!G;AsIthMgR9^o zxA{bR@lb;|x*cK>m|Bd(1}6}hJ1uNm#RWlAiHUPK>7tcSDtb@+JxC`#iey#W63J_Y z!E6*^5>(5TYyr);W|;-^h0m0>3g-bV1&m;}+>&~MmRC)QoC}0^T$C3Ma&qLXn%oSe zAp%xt0_qxBlCx&qh!mIqBtUN^a710HK9f`gy)Hco^{^qa6(OOzIBm2o=h$K2s730c zBKc$t4*k8;%0YmvM}Ye5yyjscalCT(LT5?1WohN}9Ltd-enB0ccweDQZX$`rZC3I6 zE9XN?R^$**=v;+|3Ken|L>S^oV|+v!1HKf2f*SnQhWZASKyEk@nzT{GC5I}bEmYn8 zW_KLi$N!e~S{RZ8J1`Q@!FlI+*d6gH8j4p3B5tD#i7&t|>gKgU{qOS^zQJGMue`Rf z0`eX@5;Y$kwNnr$Z1-nucPw9RxqBPFtF_*UQ7&Ec7O%ax7QbzQzbn$JKsg)j-yGse zcpQgfy5&?!ky@PI$cNKB^&7>_+6l_YEgx<_#nZ{{pXTagcX>a>V8ZsaU$^p>v9qZYMp!Hv>NTnO@)A=%c;#i`ilXxTK#D21~VlS69) z015dfSU)>ENGvbW9qsg&h$xzVZYuoRgVzd-2<(;==SL__y>ESwlKM;3$>W4#S}@ys zaYe<4lTW$|1PR1El3On=*{2~gZtK)X>7YJ|uH5qm3&b&Ii_D6e>V+>z@pP+$8a+1g z>&J-WOHGo8Gj8Zr_u|Mdli8~1S?tPZT4?9RI zFVPEyZOU2`Mbqb|!mmAeEn#d9h*DhZM+_}<-yOb}+x#u+;&BGWv@q9t*`mtL9b`$G z?J-ZB)g8`-AURI9SNfzcY}g`t*H>}7BXJDaCbP2cSsBu)s(1ZhQt>EeZLRmUXdSk zl{`eS;#0keo#Md-6rpfVO{CRrO(Ka>3V;kyX(YL-&KtfML|E`*Iv#grvh2DhEc}%C zVz{KX5J+-}5Hd>u-sF=QfD7}2_j(nv=$nikpxgKT;-6I80Mj;F*)AoH4LpG+m^E4) z9zZ6O#VAZd5Y3rFn9bq{Jtgh|pAxMJ#<3IW&Rw)w;~{vpO<6vPotvY!F6rZxbZG{a zlG@q_VHoD>vtY72Yw&2Q33(?axF?#d;JU^(b+FAB!lh=GKFi_BR*7cvjSQfLd0=+b zd~n@Fe)3(r!IH%iR#(r^`G7#hlh@4a;`X)RKIqjK`P{L?3*IvP{Aw(QCKji4=0Dq^060Fqsz0H=gUsA#%Nc!gSZ<;^hK zqJSjVRqd--;1=Ove)z5!p`4hDiJ14>Y?-|Rr0sFk=t_;lzN=o*ge8j-R>UZo1Ef8= zZ+-&cj9?0$@MyGFG)*`Pj7+BVeF^fkGZLzcqeQJ8>PBiPrMgy^i4q)7+f}>O8n8=Q ze)XqZ0(2rwH3a*^V(9`y<`d7PQ2XPvfP2<9Tm&G)SU5>E#cxMb2*Y&E7vY}O*7&nP zIWdV1_}l~CiQ-i2rJXnX>xUylNVW1-A_1z`}RcQcF*><=k* zLl$Q>c~c!gay-~BJ=J2@lwMCNR5&AhQ`u}uU1hK@8+HSuW~*nq_eTyL={UAUGBKR| zPgb04vNVM-OjJf0=7xPb4hZGciIBH0)XFrfCV4573yj}d5)@qnr?qSz*TRlvo!k?d zl}4p;Ks;Cg8$E~0bQ6yjslVsuF{C_qZXQ4!8Xom!YN{RUfK+GE=+;|{LU~T1= zXK5{c2NToPpd`qRUBmtO?y4Y{jnp2$HkT&O#SK?e9;=DZTk@wr{kyXbyC6ZS9!P~i z2QIYG5uZ+9FUQT>MXCZ-{i;hqHK_7cgES)ON?UZIefD2cWx)}(1{kzE0QJV5;STY; z1%O;qU`9#-HmbHqX1FE>QDfOoao!X$)~7?#$7Zv(x*WgObVt5j9AAZ(!@So`)-pl< zrI0HlACc3*gN2es%9v_=UIPOvjwrfHoE^S1lSe?|x{zKKV=j*Bla4VHdN>dGa~>r+ zw`DL@i^RP;RH!Fkg_v(iC1XXMCBJpCjf6-Buzni$Uk-}2;MllhH%-^_w+EGVSe&e`hR?$SIG*aC9;jfD0Lr3T_C_ zbySS#W0(>%$7Vt~C%e1h2_6^+0qj=}&NJY~@&5Hd))nA~J07dic9NKfaiUdpyInuW zrW>R=vOf8H{2Mh@do9N(R7sbBt%B(5IZ>F%?;pE+n;kOo+4Gptrhb!c9}5Vik6~MO zrlflIoPd%rGt+$dY`WI24|g@b0oFUvH zGZKmFmxv{n~y^Onb+Q@Gsf%Koh4c{(ZT)YkQOPmoyHF9$BxkQf?$d*UIt1~)rob<&_c4(tSp7<)%eMZVIhqTcO=*BhI5J=Zog;eK9~w|UAWAtNSDnIN^a)2Eta9SI!Ftt^$ zjinwpy12ZU@lH6$3T2(%i97@cg$qThJUV!`tK@T2?)WH(W6PGQk+SG))-Jkg1eC!O z?{^%Xno1WXUF6uiz3~2S{D;p80W{*CH+0qdZA^w~3{BIMTeJ*uSJt;h73N+=C(Zq% zb&J=Fdp0#IStSBAMp~=G?vOMWJQCFnN>Xx6p~84i-Uob19dKG3tuVD!pTnxgSY2G+ z%-E1uU6kYWCUSzGBg$g56nXJbS~n8on4B?Ty&#D#Tc$>_Ox828qpJ?=1c?|sk#4#u z=_1EYI!q(H&a-{(`>`dlUHNlz(`P_F5tb4YHKV~m(S?=?_hh{-sxbE|I%)17t(zRv zkDp85!cS#4sxi`9J(iNBx!{p-T|SP#98;+i&)`%4T^dfQl~2`lm)zRHXZ zNlcdGsjWg{2#b`SCq>?RMkX-8$6KcS^7mD@va%))h|lny)HEjpKv*hd_T@t(rT@Nu zS)cDLl)TyX2V*`^^6-@o!lG?qt52*8*U8`Cv47wzDG^zfMIDrs#9C+yovaL!yGom+ z=PmiF9h{(+CiTcBguoY&tin6iOyw@y)Iz~O&GP`4c4;UP06erw=kn3j$dp5{W6$|g zB62D)M;KLCVAt#k_J%Q~lbWuGb0k$AdKcena5Viv$;aWT0GTAd7YU-EttLpZO`@v} z7EVZ2MxxECjM^;_I72}QCv209;QYmHW(d9=MB2-gDYfklWJXK30!sCDGELy)+!;`F zhhm!iq(XjxTQgO=Z0CN{ggRO&iKfu3!kW9Va;`)a!slI+V8_<^QX+CHa38P7WUgV| zaQ_=(-t-T(ZLD~s0^8VRl9J*xzFC9&%U2RgQCyxEqBRFwH3y1y5tcI(X7ikv==?*K z^auofRpAmX}bwvQcKsN3zmIFjYG`B4y{f5+~g1kIzP`~ZFG?D3M7 zbh}+^i#QV$nOk=PJH1K!%>Nr;)+AQ@gI{g_{nrpxz~2Wmw>-E?Cb-Q>8{pw~C;FM$ z9po#NySLvr`8yoh(-UvAjET_vhQBhm6G?BStoQ&|ro=UNJti>&TU+??YtigH-tJxK zCDK#EB#9!4n5wN*QJ#sZqN}2boBIfAsvLaB{0Ln|j^h`V+yDHN>Y3TfQ7~CsX;{P@5?vNeZjVLmkke+3Y(iHlp6q?;L)Y_+_Z=9iVX;qDRmdvXZtRoI zcxk3gi!H)S0ob9=HMMq$`qf{NO?fN?+k&aj@eOm|l#rNt20bQ=rX$GQG~6~TzT5x? z0xVH5g_l~(&u6721c6#)U6+CwQ+kLRSN1l=A|!_9a=gC2^b@LqbRA{M=H4D=o4oH$4o_oturRbkW~6MSugEv zkML@~hKd2!sdyT`D~zHJtwTJx)MQyKK^vhJl*tqObfnlc(7RbHycB>nMJHt`lFr)z$=kE$+usyJH6E$whtsG1=!rUFjOvYhaDm?kb(u3s zoantw`sc-64$s=QrSG9IW^v)5kWk5UAW**sUNXmmy4hjeY=&>aBAL@J4garCW~xWT zH(VeNTmJq6UP^b5ind(vgR1`5(D|YTH5iHp)fpaec z2R0-A;;C|dmDGiF_!`&_=!9m$P`%zafpEGgB#L-Ld$5wSu5dZ^h)GE zhkm9AnhN$vQp(Mv76c!=hc*%ibldGDamOu@Y}N8B%7uSIw#tCzgPfFnO7<idDkys#*?*JCs6c9I#@zk5 z$9|c?g>GA0hjhDr0kFVqmnwXZ%DT7Roes95O8nlE(rvpWiWGFa9Yp0NI81Z!W6Vmk zrM!Z+NaWjGXkrSM*^kNEPYN(34c9)$-gXuLyFcgo#MiPuUSh^!Xh`Tkm&abB$GT|x zKCrvD+1Y7@j-8UC^_tNh0?r8mxnb2RW@-XxE{&6{`I8rGalybRc*^?u_5+nrA308w z_|kcCQ)yCs)p;d};Tg=~i^*C%m`M&Vm6Ca4tHiyvVmhCj*;Ow54AYbQFGslz+l!~_ z^`|#q#S&%xB}`TRo2*IfU!Vj}-I^hb)|6}zR> zlkw3|hF&S#NP%HTJilA1jY1Sk>Iv;yq%+b#<4PTwq>+N1VRW6^~{R5{!x(chg zx++T}^@xCO(!eFMrFgk9fALU9i-=Lt+{H6Ol2{`I`H?$3Sb3&zGHK5wm)0#rA9|&1 zBL&Vehq;#xq9ig5tkBP;qTKUoo_bLdP0FW2hER?4?0_f1M!qR_EGWT;uTnofn5OiK z-~;*&9*k~NG}TBRsI_8>F$q7NkG(5w=!jZ9#Z&e2?<}l~*|{}F+k>2BlZdtp zwDM#$R% z%CZyH*A0TcIh0`hWiBG^Fa>pVkX5b-31GYsEm^sx_$A8zWq$~>mF$wu3MwjVE#tU% z8mXqQiI)Z-%ahbvWd&Dcv^f`@>(%10~2~F8YWyB zfK4A*sI{N2a}pR0_YSW<#|@Z(%9<1A27TmO5iyYmo2}r-dU`|L0A|Ap{){pvg;+hv zW8}J5Nl1=kTol(E%ki{A-U@pUg99V(=u#o*T}RxWgh*vWpq9HEp73Ju5C~*@n#Bmm z+Avq$fKEo+cyW$6B$T-g^Qa_Iq^jHPnpRe7HH{I$DDS#3sDKP+G5;z}>aGX8h9~&u zKTIC)8sY0n`Y>NcN9NRiR(7XG@~@)Yz1>=@TdK6SBq5x@+P6?yMnFyrJ3T2lEoHIp zfD-LBcGH|i1Klv(3imED{cLW#?{X1#YVl9Fpt=8gq}}a94@_`_?sN&M)qR!1hojy? z=Tr)(BuEUnSL8(imLs2y%!js*IJ&O6{UPYsC+cb~r{Yg**5QnZD~RpG5$SRaMyu#BG0z zBy+tK+)afI<{U&<&*fGKF9sbIsggpqe9i;<>X@)uXr$^Uu@((9VO}X|Fu`(boWen( z#{1Goy5;*cgAMY z;Z4g}Nin61iZgsmBvB}#sKRm7Qn+KQ2ARI=_EGkEIL588R)^D035sFb0PsRk{;0Ax8s59~pN5owulZtE@E0v;)B8qlMS}d3vIV~OM2Vs@^_nhSSkzM_JYLWwD#Q7+wx1QXSS)ljg+}fpoaT~ z^Q+r!!WkNaC%b_irC=B$pJdx7U(*jz-A%S*(hbFw zlMH3fw@+_(EZemJ_|=uWw^y6>LM0P|Q2nup$*EFxL6X2uPh{TiI!%#OjybHY|5Q%1 zY(28#F(@)$MxTXCoz%A$gUiM9Qc|3_VQI3iVl*87XK6zoT7|%3Ei7l(7 zu)!G-l`KmoDst)1pE-bI`0^0B-Hq6C02N&i82D$#%QCqqO@L~Zz-3Zts%l(CMQS$N zXv<15kEo|+H8elkyBu8}Fv;|U$+~O@ZDo^Ol%*O_`IGmfilYn~#35DquSq*P==0f3 zMq)56wqp!PqelEGsh&5JRNFhUO%h9#VUR%T2>>jUx6^zr!>YHeiDJ3vsUj*_dbC^+ z{`fNom>TN3;={nX%UDU6^>3>UHJv{E?P@B6+0GJ`Nu{Z>aix`U)Ky`HV5KLN1gvUG zlN9_jr0IS$MYY|q(IVpQM>1)bGA97AOx{lOwG6A?vL-U-v8SK#0nFc*qvc|_;<;XJ z(p`2<@nLMF?lM*qOntZ7AmFRR--fm-v2_6$QJEBOD%28#LN8HQg%y&OVxD$l2TVir zbJ*5``2o|l=@KFrw{;}SCg>s$1*rVFuGdFKDMfT?sDO!%>wgFB(g;{fVoj3Xj({)* z|Fm~9Mz!6ry|GXe=+Q34Xa&Ft)y;*w46B~3iK?=WJv|flCP`PzEru(eYwVArDZQq_ z&h1E;>kG5}wAwJHk3YIg9cdF=KLc=y%B0X#QcK9_4Uz6y?5iXz3^Hep-8gI9ZYJh`wEUnb@ukW0I2F*JkCc*(PS+?0XpH(FIBU310y3-| z=^XOMDT!Z~@vynM+BG`i7tVIu0 zc_pl~Qw`^6gG9q-7kWcHo}|IZn3m+h8J)4>Uyc9^Hc&_7b{x)MhkX)Gnjm6>5dw#y z77d1>6bVsEkWtDxtw9ooRV05=Q^{L}Ql>ihzE)haNbo~CWG&b)AxNK%HcJdDm(`%- zdl?1Z_%i@BN%lSj3XdF&iReB>I8MT5k!8cQu9JfFLFN1@_G>y=&}+#m7e$Q*$)k(N zL)|rg%WqAI-IJt_BTz9hSGMGCA}sTrHW8b z5oDBdzR{6yPk6nzgQk+V3PX7kV4i#GRFRQ?cP3#jkA5{Ln3L*unk!Sn--m0VqI6cVfpNHS!zX-2!t*ICbeV!&KqLL$3%dtDhmOh=`ZBq;N z)t0-r(Ko<8t!Q2+H>Z-;R2^4bIaEP*0?T!si|$5q&An~_ENBxmTEeBlrHi~t%3*U! zE4HsTE2LVW{>b@^IEd~=O~qxsaa55=abkuVfdljGfCv^QEm-jw6LC{m^2~2T6V&-x??J8xR#1Ixyp38|F^o4O- z0kTL%3uV0p2!0If_;e&pv|J(tOUNiyjowuuX^p1rmy+4eoKRCM0mdIvQ_x1zPJDf} zULi>c`NtkOqu5$eN==_~RFX(>VoRtu%sj(?f<=;P;flwYsNI|Jd|eLZ?v!6w$)sme z2db80ztZ>aftFGtfbQ}xG|88joTSOzYWl+k0l41t8z~SX+f$NOeZ$9zf>9Q!XrZjP z0I`@b3d%JF1FJF>nfS_On=p3ZwyuJSNcv5 z^utl#?)7T#uN&+zy?qW1WN$*`89wzTn}!3=l;sTPWfIVliP9lxs&& zHwh)9Zs@7IbeQKJ_N#HUGnp#slgxeRM-*5#OVLh#f3;a5)dE#?4fVdYQc7821k)R8 zQyS_#`*-*cwaF(Mc)@+zeG|4hl!rrp<&StKb(oc=*ssicQA~^da)vCCTP_kjou!^~ z5}4w8#O&pE&wG9&1w%+g*{zk!;@n}9RFaB%Q;@1?M4j~{*Pdll5=usmf0BoKDr9Li z;o5*7+ff>7>h{aGEhl{=bJxgqLjqy4tLacxbRFv5Yefo50A0UrlHKm-|NQQCPdcHZ z^AHQ?>GeAe#>CW04YPIvdP!B?uL`;)xZ-S;pqv2A)$OB`A$xlxaKt`@c4paUT;C)7 z`)pYyg550f$uDG|D>ltojqd%9bf0XfJjttWFqZu3={nr@O|>6eFw<~R?J!mO*5#5s zXf9rtZpCSDHBV>Z6nt0Vxf<8#4fA;pkX3M14Iq_M^OOm8N)xNpJ2X!0z0kW~Db)ps zBz`bx%oK^^V`9xz}WKyM6NJtaPLfR>ICK&lJI8Xq z_$=lqW0*H4T-wBlT=9(2x`kb7r@!?}uXzTZD9$OCDJi6!{#rFh z%mjR+elP7#`0aE+two}9$F?Hs*%Vz*1X9&KWuY@XV@}rCZ#cFI2{KdGJ7Ij2@kY)J zH)p;s#1Kx(b&|Ho*^_G}Em4ioC+=Mokr(mPldwW3ZpwFYKuRzZgV~2gP_27wb2iHsVNyKyZY*L0Y89?|y|6u>Gk}exRajEh>GO&FGsgNDA9{f{UzjeA7Y>Q7Ef`|V zMBk)FcxBw~Q4G;2QIjoIQJyPGmgq?E5ch>5;)VReRs~;X_eqgih@;f<2-kCLgNmJc zcrJQ>o`z{~YKb(iji?fEGK|2RnM!qOs*{uQ_xV}0z=X8~=2P$X%qa~zUWvsTnH zQ}8kouN;oMiXp_4mW#>}*yG#{6~U8%4vNSN{?bkbUuO47ky!|;5903;uIJbW6<_t@ zxi~iLUN1SdMw1yLO&6g;|B!F{cN|F)3^9e7f-3jcekHmtLP<$s5tm`@tuW9G`o^C@ z*edEJ?#5&_bzpmewyHi8P^h-g*bX4enEJ1j%_30s}3se19W&! zxLBoHqsa`BrmG@n3AgB{8lImi!A$&maT8RED5km+T^pgKq{i5sfE6YN8bNV0i!swt zFX4C5M|vk7eoYPytK5`S0IE81>71)mBa0r@(F5A-t}T(ox!XPU#zduW=`=G1Z&ajR zSAr{|uv(9r?AS8fsAk>4xG?@vP}P<<{b9TA%-VK0qbGWdQ{pR^&r%+7nQiI7mdiqM zl3OvI!%a57Gmb4MT*Pn7DID#-_PoMDY~~RW`NMiZl#B^uqJsT!s;qoT~V8$#)d30jYO9hFP&e#-9*QkdI`U{v4KOXd4G?axFXob;B zw?i2u+L!CEV(F@^e2vU&x( z(nzI6qoEp@D|AyWc=X30+0(OHnnx+}rrWCF#IH$6(Vmgz6=r%}e-7lyQ;AsatlCJ~ zFcAxfKN$csCPmpcotV88A?2XvK#WvcMi(-d3FFq`dK=AEuECdS7&;q@&THxesSGGr z6LTW%pc@q^V;nHppBU8%&*N%nz<~})FUMQUB19Mtqv6JJ!q|S~D%L=Sg&o6x^xoI> zjlcaz;Q#QW|0KMoLVp_QUZ<<3+^RpYYM8A?hkTU)>3%z$$=md!F}h2v>S%;>tl3+>&gLwY)B`b$HJ;9yCN zq1_{@bqLq5+@OFWn(oh#=E@JQiz$uU(5**9XeIl+#OB4p3hn=HdQ^t{Qp@!KD%dMm0ra z6ps?bR!=^HNGr+HTOG}Ho)laMvwU5K8+nAV=((G_(p9;2#=Q2M8u-;C7Ky`O-%Kc9sq=Yt>P3sH3X_^XcWE^-&H3*@wwUz(xIWwn zDyW|~LM$9FspFk^)+GrjB7D5kH|d@Zv8+(V&C-+a{|gjuf$j?a?X>JJt0OVcX2m6D zfKMa1D6MG8CfKRidne1&iI;1lBWTe3LhmTO@_1MMB8B8Yd9GUav}GTZsnK43#~SZs$uCA+Y}8&bSfp}P|)KgQfyc#2L@2@ zph%a|_Q-anQWAOe7f*s#XoAJF0`Tz&9Gn!l0bi;!ExY?g9kFM{f>TJED@g~X6)l%5|4%9_yrS=v#+>emNS&6a4 z3CCE2li=Rh^na+IrzKw7=NzD~g4r!P*Rsn~Il?sWeC_D7vO7|~|K;xObjV~mfOXd7 zhwf2~OWsp7g4+~e>1qreud$nofY0~HWdWk5Vz-8@NpNloL?zUt0!T~&jABTdj!LBu-=#;#n&Rg6kcexMO1B;EVju{jYV3{Thbz! zGCsHIo&>($f3y>TO0WAsTUO((wuyG_2E-zl3-di}c9v{&)DdyKy8gQiW?lA59Z5RX z5M{yTm0nD)ObF*Dcx2bEA@aWD)?pv%AO|q_tS{kfl|=t^8O*xul{%6l zt0i_7`vF#5>L9Iwxx#cs7kfFe|0KaA9Tj9$)38tuhNi!ng)HbE%S?PoMWxqLFI8-H zGArE4go@IvWfJH1Q-nskX^&)>AbER>_=+;qQblP+RBe{5?LadYjAP*NPs>qzf?aQG zt~{wE;5r0?s~e!jYP=FWvTMf>d0leru#a?*1DJc%mvpuP=${VTRi_$90J08J!6})u zk|d6MJsek$f~C0Ksgwae)*bl!$P`vkBRh5#+%eCp*LbnK?N{y ze%XHPQ@ZO(nDP^_R0s-rVzb5sDZZ3n%T0SQN)c6?C0p#w74EVI4*%q;y^c?R<6P&A zAi>orGp-XfbHsM-hoxi)UswMV`!nEl$N|h9Aig~O(__1ex{Ph4`58Khkj1QC61zo$ z4GdS9p6G0)RIZ|6@_mS`Y8ngWV2G6(=Zv$3Nj26#zY+a?8vxGTRBW+O4`4f|x<)VU zTi2dZi7RscSl<4iFZ~%bGrp6L>><(;5 zcQYBFhl3`?=Q|aj{wAX5eAzDTVpgHjWuW&!WSypADZ)dtUcG$rH#?Ft2!1F$3W5xu z4er#SG~ivo_-zPYvQMy8&2QnPMvB#Z;HZg=4_U=W6p~2q;QkNKZCe`Ji#h`(QmHKQ zPPDM$$~J-DpqaEkStH$=sn{yHCFm~6ETV(p*p`C&DFKxiZi{L7$GQ(D>Z3%Y zTuk(DB07>szeO>HS;=e}i0z{x3m>~uTbgP4wL{~Hu8Z%|I~_La-tef0hki;5LyKRO z+j!0&tzL}FsVzD6J*4-~n`#njD-Ns?9@gz3 znyfiN5i@n{l@2C1i)y+=#9T@wZzKc7f%i5}&_L(gRieBwE`}mOHesGXH4&9GutlVz zEs`;EmM1j7UK5lCygztJa!klipe4}~PnQ^r9u9E{Ds6O@KypD+Wh%)C6+^oQGu9ZT zNTslRTB-A*W?;M{m@-^y5Vy2G0(wh51 zUzqK-sK}HE-lz{6ApO>rpR!8JE9Rz6n1bcfJB4`y)kIX%z!s5;wn)avS)S1Pcug1@ zc)#$Fyb!e3aBwbGO!nhjBp?3=N1geRsq=79W6>X7>5wi%HGKq6~Q<+PozyGwCOqfq_ zTqd31F-4?s6nIdHzS*PXY%_o6XpRNIeufdxJV>>w%Y1+ z4AntHbDd1XWj#@4(OR9@L6V4QggS zyqC$_+2oK6M_I(0=&T-xNBJPX)WKnk*G@V1VoW*6kw#6(XGSR@mbxxi!V5C#@D0Nv z#a0_#F#b5qQxYB9$v!kOC@bnr6cGgcMLXR=_mI*vADxVqRM&oVw*W$IRTZZ8Kna|y z-jgJTd!fZ8w=>Ye1CjdCdi|5X6I*%rqxhaglNdu?>Y$mzK`4bR@?0U{gYG&Uk+g?A>u8pTau>*8V7#6Da6Ne$Gm82g zhq;`N;pkulN+h9JCIZnx#1G9N#PAdPa|f?0YiWm9rQzN8zNY^wyyjE^^>f+1=ay*K-8?m=bw@ktlw7QK5!ySB%kb2`U|0Y^@y}7W97ZBKZ17hRP`e zPOR+6Q>_Qgo#i#+K4EipG<1qC`H6v~*%Xc#nlG<+_yjh3Dpn~6){!DctG;QpmR6_{ zjQ#LaHMTV2NLLBqJ*nB5q<`^kSDcOrL<#z8I-y`l7o2?7! zp|g&K7m&`XaOC@P0k|P$c%@WE zb(Lk=Qx!)gq@{J<#Cs!uN?2)vdOE2!TN-$ocs>VzabQb2+NB_yt!B!tpAs+vqETcx zc`L*z4-)BnA~R1VB?0kbNGSr%bDvvGL5}T_9-Z}6c!Bh-3P-*ZY;a?m&{HBRlQJc8Zz*Cd-6JviQGV?l80#GkDQi?$79pHV% z6y(?*=v_3u3NO@FFD=eyq+GDYjc^$~B_jGv9adkpc(AjIp{;IobyVjzoO=Ep5i!5Gp)bUk}E(3 z9PJcv8{P_Uho{;7T$Rk}Pph3OGrYf?1Mb?R}{R{H5ZWL(FpqDh)~iu{hB6Uz*JN5oZ5pAS<->j#)R$~kpycMkzjE~;ckt*n?D?*f9 zK=J~;UR{`y;J5|`?4-OnnIMm@7#fdzn?oj>CA~!!m%_w4Z^B(iz!R`}Z`m6YnFEXS z&@kT|bJPeR?Nv34ilrc|I>se2G&wm-CZZxHC+Q(a*MvVq;z{t$5yD`i);aeu1swF5 zqnn}i?bN9yepl2@>h$S*y$`IP#=?k}iz8*io;ZAT{p(Z+{Nne4-MzgJkfmCbJA^wW zI|>lCx`kt^!sIplKL8-jF>|`cf4{*I!BP|%IUF}kyYwoOQyoeAPFlVyTwGP{R#rp; zJ=;f|1eqbrrX!!AY>Z5j2p>DAN22774pTx6#_z? zio+XuWRgU9AF@rNnvhA(5Ml~7rr@Wv0R|yM?%057#zhg)limxYUy?)9 zb@yI@|3`ud1qP zim|G;+RfGnd#^IJZ)BpxFr0v?X?;8zS4M`tTP#AqMLYu8f`JXYbU%6^{28<>qMQq0 zL{Q)BM1#p0LQG+g@Z@JliRQ@`Oy`eWbgOE!CRtnerwOiZs{)a=bKUupk;Ya64tiWw zy02~n|J8y~tLN|jb%;1C`=X_xCw%uzmMGwyFGt2FXzAH)J`n1LwW)64U^-(tok5rt zfAyn7UB(HBNxXE1zzcUbs}sPJSAw}HFBNbgNwpKi+8+)RiJ@#puRqp7IT|O* zsydKj95qV)%Syn=ctKSK3v>2rP--Eubkm=GA8jAaP%u)ef&)U`ngS#J9b;o1Zz5aV zQDx3S?}s&{dfQ1Rfkr;fCTZ>ghtoF=(&~O0EZyrx0DHf>qnNeCruRyy8&@?q_JZ^_ z^x;-E!m9El73P3^H*RH;B)&|7*zX1wb_UA~nSp_B7}aSSlk|9v-PEcfwLL)`1rx-X zgv41lrAI+lby(d@^TA^(e>CYIeh7u<9qRNUrs?6D$AlAW!R6c=$n-}3>$jjDK z4*@-cl_+A49+T{Bj+_$Dt*2A%AV#VOe}YKr4zaRqV3SsA( zuFv_Vi@Iqw6>|&l-8PQmy#^uKghe|6AB#l5w|tfF25-Tldz(mweVwR|7Vxr1ON^=c z1Plb1n~JZVo1_p16D9~Vd6D?9->;;QRWNDFRF6aOzGftA?n$2*>52T1#)`RMU&)r+EA@+=X3Pl=@i4GNG_og7s0idv#W}d^=8Ke<|60ZBXx14 z_u_4`Ra%X40xE;1*r=DU65aKOf9T#OQej^ws-p$G?9mcqYCZu2!R4mntLG*ugu#Rf z!c1N!uAWpq3bN|J3_WQn10r}|GZKA*wowVwm%(j4?Jmujff^)L{Ce=$mw?*0y7k=-ug5bWpcJyI7(dN1D0Mwn&tL_PIY zo7Rf%`oljoZxg9-U`?z<0hrH9CqFg7KybOKC|H#g8ak%Pd^2(Pq-@qCt58sqmI}a0 z&$gVD9-wVh^jF^&xAmSR{tI*E&}_Z@dc(RtB>^3kr1ew87U-TWgTQJldUrY%-DJWm zlyMh*l!bU2q0<*Y{N_YYq{2!(R-ypRN2QaW zI>111xv3~vl@vO3Op$qK;_gY=tXWpY8n{tV0-VtOnvujO$b)r@(YLxSEzviq(Vs8+NuLw>~;(CshLz@K@bVlt(a#ohv9AHhm~UQL#V6j`Z`+uGlupF&y}Im z9_tmDA>(FBwXsT(QL7k>r;5=+0bSkFfsUt22Er2MkBim1R#|lv@k}DlMp{Y0Bct45 z+9&7cAC8Jhx?eNrwQnmFYAwZBHRFTK_U(sgk=6wY6`r}do~Ps?8~*{${o&lN9qhC&#H6+(h3l~$?->hpRDNjP9a z>s@d}@l-COD{yanS4}jctWjcxs8lW9D~S#j6r9U7O(YNk@s^6RU(sI>YbEfv21`bQd_hS0t}D-Ff8{!BhoZds(P1>Dh!$( zR38esrPV&^x%5)sPy_}(gv3m#EXj8|SgHmaHx{EMPzYjk1U{$0z3yE#5#?x*YMkC= zkN0XKG7b{ms69D>5rBtjOh}~@YuPp^)LQu6q7>?xs4KxM@xUnm{`CRi<7S6+n@|}R z%MM^hnl0KF0*Xh!7&cbw#Yv4&?=ekt)MKm$sWkMROuJxQC7NCeJA_SAN2xoQQpHNe zKsjYvG}!z*wnsJ<)r+SxtHAYPcbOakN-(3mtbdyQm%oX~ICM@?dvbz8aCSxTG@ykx zDAZc`2$Y9|4!L#Vm39Y4X#{8E?Me>aAH0(?oPk<^jkH^|KL|QJ`V;F^MvX%|A&aAP znzV%*W3@=7W$$F#1>-8w^il_kAy!AJJD5^|*>+Q_OoOeE%FzT^WGcalr&{K9E60{@ zR3DFEMoE`vd{e@HN#vf7CYUOU4I(Qzr4o)};)F!y&Trn+HO5I4RQI1&rkyDD91 zBsDpp8yY^}J55(`>3+3l!jioJ{!-_PqRj^E5$4n>KV;Mvk&W4R*{6oH%WI_Tw_yvX z;efQXKg~C3;$XNyr^C<6iV4Q;V9JC!Y!**irGobaMe#n-Mx`=exjaU%M9J`?pu`^v zssw}V2&si(BBD%_5R9Z zx{F;?RM+K_Sa+eqik0iN6lwG<0 zd5}GRE`CW}a~DT71QAmCBz-3pkznys!}p0^B)3u`NT`PMMOXcxG#0&xoaEE~d(C!9 z9zNe4HmT&GL@jnYm@8p*Hm=B2QwHo|IJQ+=!doisZ{4RMXp1f&gwR^%jGK|tnrJi= z21D_1PsPLmWQW3s@S~l`kYOQz8im3CV$gQ`YS{r7* z;s3H;`qDriJit40QES-92H;=*6>M3OOI`~%2Qq>0$6%fpcLgu+?~iG4l$%h zihbIg*Kl8j*6x5pyZ39QXgHmFV#Xce&y-P?oeXF92{(4WX{Jan(+2wG3ICV&(#-^V z@BlMBGGm<`GrzT>!g-g}keVE_QUu--T$&eaMSl`hK~+Vpt?(`zefB||d#I#tP_bk5 zn>j%rI44x|+`hDK!&OOXX}HUfcab)m(@+d6}c-j#K^PH-rl+T>VoIpBjMkIFcFx7l=fg*Wu%Oq8Av`g zh@6IXZt_ukE?3Dho$M3==W(@_;@Z1A=5Jk^3Jc^&_7Fr<-aeItr<@z4lGIPN#h9w6 z2TJSn<-xIGW98n#)Y)z+Fwu5JMThe!aM^qlGa*|KHDt@7TU6@Wl#0Jlu>U;W}F^QiC!QsyHgEqEU+rHpSq|-a+j}& zCazsiALwN2jQ4#+)*m5~=bfwyB#M?N_?jU2^WXiy9%{E7d&kykT}<@~6qtw5p|G?Xyv)DdVY*<<1=R0N^?kWs2^;L zEs>ntog1;rmfL2rGYLl$gro%O#Z_HTYUE7n<%-o)b*wZ_##xkSO3KS7F%KkDmC{-v ztF%B0vk^$k$(-ExUAmv3W5M2=6dIOXanp@5!oY`R%noLNw_~`~!BUUu+DFMA{Y;pR z(q=(i91kTii7Zd^hr-kv*@X;(TmmT42Df>selR}{K2}VzesSBabA76l*M8)vrI;fCDso?T_CQ4nqZ*11Z)==8@zqP71DW zn)oWOldko=OPVU)#)7>!DPmZz$|~C^BaDTbY>#jD&ndAmWw>SU)ML8#QM5-3)&!dc zadAA9!o&^bX?hnVlTii@We|hTexGitAIy&fQ0BYuNEwF=SFxp=in6+2zw?_c(@#Yy zb*9Rw_mI4A7^8|5Q1N3!V`=~|;fQ*y7SOeK0=YlJP(kKE%JmU>lxCk!DzXY=WO*ZV zI_cWZyW}N+qvYP3v}0J73m9Q7R~id7*&g5QA5+p^PKI0dPCce$A4Pk#U`?=D5EsWo zNlYM1FYONKDHC0HqIivvcVsw@r7fcIb}z8H5=r{aP;Z!}SJ^#)%~>W?fz(3Qsg?!ko*c zm)1u|3Nm^p9u|N>MX90HMoT{|@hbgWBwtwTW#&F!$_A(3m-uVx9E|4FvO!NejQT_e ze!C^)L9yHjYwR#qCCVkMg2J045RgbByqwwk*Uom+(d>LxwcJ8rOXH;5iIyqDG==Td zz6@Eq9jfa^HGSes&4~nPpQ>e3Q6Q-{jMQg&FfHHLByU;xh}!*0&oo5?8if00c(n5RpBX!;D&552#i_GG0HJggxen=NTwHk(?EDQ4mP)*rIx2%O~dJuM$az z{lSm5DmIx|b*M%Tsuo3rs1ptY!&McPkbPIx7rir8Ttv~WR0}Qi4)hVNjF$u#bdm`C zUe3?Jf0z!8-sf1jXGd?4RiC>h+4+`|yh^U+ny01`HX|anR=;|YB-tPUXjnCqq}YTB zO($Ee8JwM!=l&2^T#!uEP#YA}`c>zGNl<&323(NvP9ri#sV;7DBv-|x{Ix_9@$m^- z28vRs%OwR;4r?`cmYp~cma7iErO=G()sQ^# zuO8|8U#1pwbYcC=wbexO?`2!|9wA6DL!4KKHQ;}|6Ic8w?c{U^*Zj1fj40Fk<#XA2 zz`uTNNBbYFVeSo;TPI9WB73(xllFCTrtit{kBpp%kz%a;ZQs=0!2Tg#%16=${fiB2j^-O(EmEu-L(++`vZ zF3O}mk)0JrR5!rKwXxz9%US`SlIwhr+d$De5%!665So>&OfoK4MKHpv+45cXP-Box zqdkqVXrAPkE>}nJKyiyl2}M*8aHoakl&*w(V&{Z7!pAMf$}mSpiN8PmXKdSOTBr1$ zZX{wy<j=Lz9C4LUqC$|*a-ehNs;shax_|4dZcUh`YCB)lAO178Z8WV@dQUeJv7>V6 z^u5h^eQ=*eGsQXiKMtC%&a$TWBGUUG3GgfKdqoyrS(T5ZgG`RqCzkcz=QLJiCoz?-7h(o1M6a{HVya3zhm2QtF4&3s0oABs(3p0Y{qM# zw>l6*Bl(0;K4laTEM+F<{*{2LlKWnfh1Xy`3fSYT>XlP+YY0q$b_V#k*QzMOs9N;H zqA!}_6t{u03WF9JQlD!Z=K%kjxD*dAyw?p_r5l7TXR&PP3eewXj*wu9^(e>#UyDHB^0tkXKD-= zL>9M+3hy;*f0rj07vQbCb_FIU1dPVf`Q{8sjipq!bopFP;S(tl)!fwAkQGwvhI}}1 zui(36lENsQV%4OIv}e!Ma30jG@j`y z+Y+U)9Invo(~NODuC1lhg#T%z!Aq&{6gtXB46k*HX0UP8DB_0! z^WlPYzU^H=?~bRRiKebhv@>tE*&E(VKYBUQe<-8)Y1jYm4Yw+7)Ksc>yW=Om;S}eZ zoOC!94Ipt*>Ld9S@w2`!4OY@2qY&T$SQ{`b*Ps6&bUc-t# zG9g+B_$_pCXhWJ$IndZQ=@=w0%~Av!9#Fs;AZb))J`5mE_LN91cgDGYZcEwPoTa|# znIwBk&vk^Ukmw^Z7|l>X%Uk`5^={#H+i+SL8GFPQRc7f zrF^1^9!4q(Oc)q%v-f1&`DpmsaGz<(a`>8V41cD8lIplI>f`7>h!z7bbU3sZNM0Ye zQa{ID40?)Yr2@rC*D|ap;hmkBB-hQ6TE+}>59pt*%~|S;p2@N&KG+e4Ati@gd(sSj zf!-sz#$)T02CSj5gn_Be8oU->Dt)IBdA~l^w*kj@hDGM+q=cdl5{==RaEm{4TC_YQ z%cvgUPja^5QA&#n8UWqc_%q>sZ&@MzQlhqEsnk=|T8yQ_&-3F}>PHTYV(G}Ngc^z$ zUCXe}y7>|WOs<OZ7BV+C~*Setq0>D{bB$dTQMu8f^t=hfSty7o{a~iac`)FEz76 z=(JWp$rjS+3ja3?n_)Px?HfM(misl|Vn=D~pI;h51 z=lT|eAyQ?AD-$=c9fMkSt8!1(zjg5Of^C@z?j{d-IX zVUaPG1CA={8E`UlM6Iu}vlEtqFSZNkIfSAIxDVHUg^CAWw~sA}BWZpNhIgT21Tx~j z>$$W&J)`!-Qc(%`tQ*mb964#Vz#;iHx}~uY)zqSb+REY!ArC;vDBlG3D}KD`(y;*f z;EJCol#3HWmg6-{H z_AXxRD;0i6D~634yc#^;kw&E-8aOPYa;h+keFN&DisZRJd$j>7$wNm95Hm+)bRz07 z_M=punvc>om7HK97T(p7tLsSMDJSJR68%@Jy~L0LlH!@7-y6Kz;d0yFKG-CjRSG#n zzlfrVpiNq&d|75Sg;Kix1!FeQR$Q2;TMW$h6G!kuoPu1OtMmTm%DM^Ws0X(yx+}UA zQ{};{ZgG5moY&I3s@QGT_N_CAp(@}g&?y{1r8+a~WS$%bw>qY}<%Tr%OPHvdv><&NLF%MWjmTlaVo-spiZXYmHO zD5jiOho5r|zcKjkJF}N>H)l|%HLGe;)lOfOTCVLUh|r%dZ?LCQN-{S(?+0ew?pQJ! zT}GP7#;z%i5HfL^2&r?V;Bn)m-V>^P=WEY0H0sfI1k>+CFcBx+rK@sctzL{#9T`x* zZd(!%D#K8ynexO-9nDr;QW8!0w?+=Z1!8DD1(N%foYvXeI@{t&eVEP?2)N)lHSW=Z!JzaJ~AMXvq#Bc9; z|B&WLE~cIhk!8k#-jtOr7{HgH!H8gQ#JLgyiwD_#Tt`CEP+8AOe@6uecrZ11*m^8 z2sO#Y)U#pC%s9}oO$;Hs#g%v%k?hUUZHdK$?0#KGieTc`d#}aM2?52AShNEB==Xar zvyoXg3XB&lVa%9drgW6UTttkq|>BbriIf z?oGsFSn4e!RyC%Ww~0Y7jmv)bi3T#Vx&I|G$JUB+4z8?fOJkR!D=og4g{V7~iJlkB zMXw~IM1<87&t%dBpha(AUvg7T z=5B7dk~@;>%Es%swh5Anpd=2xgFE!jnGg?{Q-}sfg={J!C6XC&R2w8#OYvRAnk3Z$ z`^V&Jzm0#oHBp|eNC}04n*IWELkAOtC4SUkELd@3&|9=j_ELpyqD~X2JlZ>YHEAsb z_ECd(`ZM5Jb;oHm3AaNf%4^veE~q6eI?HvZ7aZ3_x_kVdOnL!`XLviLwtE6Imj5BI z+!4*z@xjtgOt=I!G4J<@yME+u6jQ@vWyh)%mgk9cija$1#3_Ztmn(vgLpNi*op|eN zI?PDsL(LJOOHw|GHJS*ew9@xq9`AWnT#eRfFSbqK6zj;FBnJ)&Dy^bhRCE2xzEn@& zKHIjOC+`YuJwH4;+`ZVDo41SIn6yX^+b>Z}Eu``NEW&utbg@o2v<%{uvf(`Y?%JLC z{r%&PH`(|vyi6HZQ` z0KoGduCn7QJn5z%ITyGMlU^QGx8Q60Z8;vPI;tclj{u)bPth(4$902l$A!z0)a9uk z$c_$8Pl4cr7qVG$$cKc|V4NX|L9awty+0NMZFDptYM$LS8~Tps#Bc63bo z4DfgxcY~@~YRH>@QwS!bwk*=qwH+`96Cq{IC}K+GCcY7dY;jcRsG75?r--m)NV1S* z8&Rp*Cg2vcWTs~>WsGq?m2a_9y0SMuFB>MeP2_VWwY<)5{PQj1>3#$i@dD!+ygj*Q zPS;v^!=%fk&BS}*sqA>Z+#uW{ETog^ykAiYGRNF;>2xHWc&4@oWJmW!OnoDfKD|%` z7=xuS)JwfOt1xhoUR~R`DN?Ar5MU8gDmU=!&01z06}Btpj05JXv<53RkW8D@5tW*4 z0&X#vZIU3hE~VT0h%e;ZLT%vDRjh8ysNJ9ic)+e-p-CI1r)v$~ zK~mYKcrQE^y^@^QVl5vn5~EuusrrBJImb~>W zZ()d+YUnVaNRO6!ULOQkJr zm3_|6m#j{mUW~3pqKcK#(SNkrsH;wzu_ll#&lSKEy;F2e_3(*J+9!}`gH*4}xgKl> z>gVu$D#6K_NafyIl>IEbtgBwbgHD25aq`W?6pmd9>J*2&_WUrI=m_Wv6HgjRDRopw zY$*Xn=8HZntT0QW=)gu)h@!ionb4L(bgL+KsSZwfDz}7XDa|w$*%V6(!sZ-gksNOK z&W=+wH*HNPnDqXjXy}V#ll+nQN;MsFMBusho|Tg}DX)Epq_%48Jz^`j-Dc=}`K8RO z78)&>)`#97B=AG}=ML8@C8MyGRLMBil{8n1C(YdzCZ1`eD^iqJG+i9u6K-vzI#h&K zlB`uWy32%?RjfvB=p31irJ|sl@L8y&LX(N!j_OHmBseE=6=G>Et2RYT@2N`_Toyl{ z68L+(S#g0SY|sQJ^+JvaTvB@NF3u>>FS)e!8fgZm$9(7G-a0y*puc%6+;xM045xei%y0c(qMY!nFJ(J#9&}! zsVH<4K8uu;N=6oB&@ECrb>1h~w)Cn-r8PLJoj+6iQHXm#0Te~Oi??kPkxpG{gSyC|AU61>-WnGCIpLx_3ija+K*AV^AO)x@i|}do z%DwH-a6K_z0C5O`ted0BN%X0eQ)xn#O7D-^1o)BUx4otIOz=DpvP`_8v3bneWST9E z9KV#&SqWX4nrvC|hFzjgO-_Gal4*#o7?V4qLSZUr{%&8jt|t|Yqh*r{Q$@uyBm)W< z)QzZhETwux8;V*&iJI|Fw<imb_r)kISrlE80tpSIy@92 z>qs?eh$re{y~?*XG!*mD9SIgiBW=!2bZf2+%E_1FEtHnnLPDns+(B-IjufKKKqCdW z74H!CC1)H?Lvdxpf{Pk`N6{rTAPQqCyO#7ECllSaoGO$y>FAxr;21-{eR2Nk*3jWr zsn6ifGGo-kskYR1@jr>NNq7^_bCQ#NE2~P#QFhyZ8zfvdPVn%Utg04LLayOS!AsTr ztNJoM9qV~I^K!H%7q#9!eHsBgfyt}05zyV;V`F7&^#HST0lIBDRX7UVigJGaa2enI zqwY@A%YVdA-e5nM%ts09Do-6wX)-Tq(x}i04x$-6>%~jqk(QtSF(>Jt-sLZ~M3zSi zt}Ew8>H$Y`Vc)u2wFD$vV;>MqdY2wj)E8pwJ4FJQp4774k;l2++iHA%mW!X|b27%$ z(FIskT_ss0D;owxJW(^=<*g*XoPgXBVo^{HQ;}3+O}ffr=^UCD>YL@L)TshDCAJeqerHBzad0Fv*+b|5n8U3N%OU!$HT&@wGja@FgcW!scwV|;wNCRa=ZJ^G1R z{3wZ(WRWl%t>4Ea>Lwf#Urs>oXsRzYOhq+iu_id0p-$PMb%{*d!DO+qLD`T1fp;Yo)#>LMk7V81tKTw&hkjXb<25@ zX?ehr*Ha^f3LZj@43hrRd$vbfsAZir)fEY86|9J-%#)IAj1S}TT_!_z{Uj8nl#;B& zp=7q#5=zt}@P2HuuMy zj|`F?w>4U6@l>j>0iV$=NY8fcONu8*w%cmXcxFmcI>OaYLQzUZ&?D4q%Oz?N`cjgD zh;GT~M~cciF2tJPs)O`tof;sqBhrJ!#%TZ3&=CBGCEWQ6%kWj@* zZtScJL8>;@J*GKkMG%r5HRzVXmsjE4rL1D9h?q~sAUY^)`h5z^Tb`35kig-529YVL=yx^s zYT&nHQGl(}XDjuFhU`$IGDJ&MQJs`brl>1VU5oV~$VwA~1ud`cP zc%@4)xJ|<{sGOvf+Cw6qT1ThxE|^Rmaa6H5on^CcJN-^FYdbq#2KeP^1>Cp&_oi)? z)Va|6b>$+gmZ!U9*0pzZ;f1u-{ExptPfPW;ZVNsDgFg&L%jk}N(77r37{eSr?As!- z=i(0Dl5011{8%L)oxg2c#QFBa&&26}_HMQPC4cLU^fTv8IJ^MSa7V2~E3;Q;8(fBd zCr&yIVk7DSZfE(E-d_Gow~ccrMQlY%9feht)wr;>s2)KEE%!3kNSAx@WpPmTRaUF0 zCn>4swpt~DYsF&7#{P8cBt4mQSBN94tktYi3f)iY=Eyu1Cx&o32CW#hk)icr(PhN@U$C7FsjWp0G zDKY_0Gos}HwKdOU9a`EtyLAwZ&RBv2Ijso5zmZBh7@D5it~U$+ zlNVYs(+`wL=+rq+=wG&k3|rqpc3F#ZSqWhbKV-xSme4jb4^Eu~(Ixx!NDIBB>J@IV zCVO8XHvm>sobN5|)IA%e;Gd+x4z_31WXlB>C7RMMUh7b*_x$^%1Qi5GjH*NdZR5s* z-f9>!1qk76l!^!Zajz4ohAX5Y@y!Hj0C`nJ{V}|Q$e|$}a%{xak!hOl&i^NEL)fLB zu9zUbI8WijM+LDZB}WNIK2lKp&{D1DKK&!Pm@#J5S(uRykc=YSCdX99=L9kWKrYQa zmXRi;3#Ll|rI>m{O9@f-&}dqYXDO+8n+QXp$=E)mroGx~>GVleo0?z>z-|@5p{$0h zyt{3RjtzQ(OoIRu(!3_H7>^q@SMKZad}q(bo7T|bUc7L-ro`v3Ew}TI_3C!roXk2_ z^6`J3wvWqVB2_ZJ#ge;zRkn*>G))0&{+UUgHRPGt8@1DvH$Sh-5XB}=YNSLzF{j_hio zzV0e+;Yl`b4uy;2^2NkG6q*u9Ma6M)10f&C@6RIv;F`N%D`&ggQ3xo`JvZ_m-4Isk z62u=X?S0*go08Bhnus{fj7A6& z+f>Z6y&B@j0#{#m5*AK>cq9Ngrpdvwv+Zt2A)waWce1jMuK5L+U-;|w#Z7oXSbc~Q@D^Ba6%=d&Kb6?a}lEJgy zoH9xqr9#quffcLM3Qk^T?OHJH*xCMwf`Hvxf0_Y(u}t12+jys(iYZ=d>75wrtz}e% zFw11fK!*6S@K0ZNk}RC+ys&Tg+H5J8ojtk0RI&hELh1Y3Si&KMkyLaXg^ht%HhO#pZ@Pa1xmRrX77 zG}5csv2NqX>Zsr*JQ>kbDP^#>-=ZL3w?Y}*u}XQRwTvcPG1UZh?!-`UO{r*qJ4ueB zPO&v1J}f|d2oNi6I7MA)c0am{WoeH_35~1lD=FX!GxS0>3B-9$c`M9MkFMsz)sA#< zV1dizTFNFC8zQplOi27hB;8?Yc7iScl9LejJJojifSz|iDF)=Nx)C{H71l&vFwXLCcsKT z!GZl%@yPqX@ z_wyhWOZB9Cf(Wpomqb-V22K+jMnRVWSWuk`N*4nmdh8js04bZ4>Z$ld0rlG%j%Y`1 z%-T!T5K58EPFYo}-}uaIT4@QM619a{91>(x!(K}z`~}OwmemmIMhPMA65f_dHZ=$| zQid%;)&ma(@oYS`f<8{j;R)VLP)m!a&i3GV2@>32Gm_5s_1(hxq`5v_rR6KgHATdh zctl=>wvzaZYOY`MFSUP3p8ooOE-JBYO=D_pSVwo9#w3K*{bZ?lE&d#j2ghFtK~LF4 zc$bMARHq4ql=JU%(eeu({NJzLZA_T`I_!$OH`uc^mufD#$Wlv>AHk61Qqrf6m(NWO zdh0*3mr^a^k4~0IP0>Tq?ju#!+oc&be|ULxQ$$qO?0s!hA*Axh(KQ+2DA^ui1`0mv zRw}pLBeIDlD*LIhRcsSgPbsc8?#c~d;fCFce+XqljupMau+pUBlLge~ssXrUWf67U z)j}vmGP~Gt^c%Gea4xWw=$}EXE`_j9T_lJQO6F>?TTQ<=LLpGfFmH6A^gMCHZNT*!%G5=>&Bk)%_7m zRQ6M0tF9eYNHb8f8zo>v)jg09D2ATE3e6>kr{a?Zl$X41zHqo9qTJO&C`B@R*jW9h zwgKlo*r672oMlQ=aaDsAJN2kq8k6xm=K-Qx3;)*6dAwR%%U(*ggg-LGBEBT$x>DU6 z6jfLVgX!xr&XriDsZXKl$4TC0kP>~)3_EQoJh9w!SjXO!gmS#ZEfA_A4*E(Nq3BA!G)Q^)m-KlQ~XB91Zb4SUf&fs zQq7qrjhE7F*F9lsLuNLP=GTgfNMM(~)3>FhKML$7N}tm%((~&slmaS7@D11`g4 zit1rT-B?8sX2z=Fzes1GW{Fh=_M<-C;y0*iJF8|f8&l1C5&Pxav)+B5`q`-W9i7k;@+5?0G^FxEsjd`OqYQs+{B#V1`j7UR+AjqfcdX<4Bf3;{B+j5M5uvh z8I77=U#$;VJCF{$QO6&2Te3{Vpf<9Ek`2>qGQn_EV>1&*O-?h#@+FE^Krk!vQprQH6A34yc1wmOS*AKHpTb&-C>?YY#E~r`>B0Z_-w%m;(2FU4XIQO^Ue;gW+^y_UKB0xdsbiQ;X(qfW8R6tK63T-QyAZW5+ zn&`L;oR1tpUP`YA=gf~DigQ1pRy4^lH=UxXYo-hvHwA6gnUS+H6EMmg(5^5{Tvm-`sEfSP>+~)3(&BjyD8Uh$m|)plFLGpY>!^ zq%L`IyZ+y!Eh3bCSR&D)`1A0mXZ{^`9}E6hZ@lMN^AdOHcziT#gp=$x2@M+LuPIVa zf$cYk#{q$W;$!O0F_2R z!V0P!us6nMAy%PFLMvKMP;QutWY!wXvLPo{^Jz0C{t83nIDmb>D7j=VZkGWX_KK=N z1$b&7ulW11({UMC)~Jk^3QGbL(;`M7JqV$A(gJ*MLL_6BpzP!D2=d^Xob^7fr0Bo; z=NK8L>uQoOAAvZP81`Kq86rwaHGc^6VF)ozvL#8pP~=utQp=`kp)eeZN%mJkl?UvN z@hR~J%%tg}vSf@RI`p5`SHo-}^a<$0$GD61U3$jVeHT4|BI468~N7H#}HS zy)s@dESV@wON+6K>mzPko>gx-eDlJ|paw{vTWz)1iG9~0$rIGumWg>+PTV&C`YeG`t ziv&}Vt65_ixgq5|$Nr47dEU=ST*tk*BrcZ$8dZS!9_Ma9B>uCIPk6APx@Ei|pCa;> zkcSvQq!slnPg=lVOLzcY#M7>~QlkaYk;k;5j|iau>hEJ@n69fya9X+}nF;G*c2P|P zdC0^ml-x`cOy2wo{4^P-L22_vOFd~RK2;joe`-Z4zH60FcOkTH>K(Z~xtbXZER%jx zbtwmDvuTvJ{FLKvToRYd0I`Q85jDA9YOkZA>=98Vt3|4T|q=(+5z6LNN4M>ThwQ6pUht zY!_@x)tDi(p}Iw~r8zpEoS5vkmLfG^nbv6?J({M`ZVA39^GKENn(PT3f6`iaC`6g? zMOm;t>!L5}1xeXC^a86YBb-o+W8%J5PC_B7x5`X2ih7tVn2%(KVY4?Cmaz@b@#UCc zDVqHob4+t;jec<3f@_&|wTs zDvEe&?~D2o&=G@v3Svy7(ah#&vQ*1Vn99wN!;(9IAQ~cqTvpZ>06}3u|M05O4c?98SM6lI(8V z8Qe$3)!1D-j$`aP5XYpi9jUMf&7UZYAWzbOAyzX89e zvI1(Z?(NPza|-=40f^I&U_|sOsfTi=?oB^EqP)R|!=V$vKLNF>E%Xo{_*Fht(>pB$ z!5edg=F0tem@!jJ{U|RL1pvhu5a09lyNwW9oYhBuqQ;XQfiBY60*O3BY7A+%U3^8fIM5Ks0K=pv0RkT|YIydtcy^g;U<{)a7V zmiyQLL6gWp&rp_17{jH~D$SOQ<#5YJX7UDtME=MH2yQ!_{A;|B^nYJP6AgBh)JpEgi6dk3R z%KS+6b=rH5YWv-t&)-cUbk`9RSYO>4(h+o##ui8%7l@Z-J8|$yGBuH7)~x#wCV%}8 zn#7O9f}&PpLe5>PsU9PDf%-N|>ta$Cy>+r^QX^HBWx|w%>n3T*1oO?{YDw44k;ZB{ zVDSA8lI!1lAE%VWtQ=q`g7*FNKKlz;to=r05Z`esn99v{Hk_DU?WT zC`qL;KbU*>pGc9rKz&wPETFW91~TWt9!3NJYC9+2g?dx>acbM z=Aul+uF`jea7RD4%u(s6+^%AVXIz-B!fAo;q-xSW;mFp9A$@mOt1*T4ZWzx3K5`q4bdb-!qC-8F5Vf;nsRPzKSLStUVF$>}8W;LeKj zs=4IG3RwjDi830vgzX~Hs-cG2)4RVDLT#m~l5{Dz-44!aRMnUx3p1;%va1AQM&WJM zK?3qf9XcvuV$jf70AvuoWVo>IWptXyoK ztkss{r;7OHYv=Gu5s!3?$TZyrTO7fb24LLXA-KD{JA=dE?hxEvg1fs17zTH@5L^?2 zySrN;I4t+>?mu{|s-LH;t51FBmR?NFDG&eH0_(iRK7^)VadJFMc)E_>DKGPi;X&4} z_KzFlPR8@ya;Kd6Nb-DBD{oMv^LGg67TGDwPtFov}iDlY#8f@!}38p@GL-%fJYD?WaC;7>1Bzrt)D5>kb=H&H34+#wV zXbsq~?JWf^@=q-&Wq!oOiwdU|wDfDfp*uX+Q46t$`rb;CBApzXFiJ$KOOkU*4Y^EZ zCl0`vwb&?3bKbRDPaVGcOxVfa`Nw{BEXiT(lB7tSCuOjAU3i`p0rX3`YTMy}92ttC z@pW%9pHN4bxJ(f|t*K{#bOtVn4#V^mI~R?Atc?-fBhzdzKKva7|*=Ag?_v)Do1T0qMC5vHuB6OuNag=J3H%xWE4IM<1bclEdH?@In!#B6y8->{-4%h$4c6HkD zjCakiP1JkUA13{L<*3kU);NFHvHGtRs#Q0Sj^|&b!(WW!jHlyJxC#_x|5-E0)qdKF z+CKSXMZ_6SMdV|4>-RuP^;o8`&J7?iJsXCM{IjRVt%~onfHVyhIN~B(^ zu?x@{at>(uD{TV`#Xo&v-Cku~UtI5aGjP96wte#oMIf&sim~bv1^=HAZ~$J)?2nj* z?+&Y|5dj=bT^R(bw(sGP-6@Ji&Ccf4im++G)4o9`Zm44W`mkRsOg&^ zQc_ICQIJq3b2$j>dxEx$+{I=ZLmqV}tw6*1=&N5+KjUDi+7CK}*y6n~xN%-MLO9j= z@JdOmlOoCJy2c0kvM-1u8O!zk0iGu?#5-}pm2C9e6@dDEJ9fy>zeU-uNZVxcTk2Lu z4(uYRiRQE!xqdmy?oo50@KSd4OprE;cd^j8Oqm7Z*v7i3eQS7zMMdO;riI8#Eq0Ys z2jMvCE9pO|JB{5;SCXEdh4cH+2KXO5!$WHYl2I8;G5A$bD)ffGHEK)=l0MVi%;VSO zTU`#X`Tf~5J%UHC{$MVU4}FtgWLc!0*O_=*&=RSiHGos?4=O}n_fLdLyX$u6-Xxfk z?JtRUTP+j({4jn0`|BlZMdoAR+xy42bDQ@O?=`R6tsm#VQ+Ct5S^6v9aq%cnP)r?&OT0;Ze^)S_pHQ?5aK@ z$GbRmSbxl=Z^#!san-p~ebvU%pd5H?TxUH*7Q+P{u(a5jb?|~bG-stMz*UHo4JCrkyKOE{z6qLu7w6n6D8F zf}%JltKi)x5m`#yFtt*V*Qh6pZY_F6CppfcHj6Pd;1oi7Pa6ozj1mM&2B-ti)SZ@~ zvY}V}aneLc2rvyze&GixfDYuOrE6OsbjiXEOx)yI7OV#t{Q;V}TO~u^|EO7ou&ydS z4G;Xrh`#2vzY%S;M)=fB_RR=1!Q6JP)Y7V)xAiwva8F;Xf9N7w3?zO zRLHx{JXS{Jk|E}k@3|m#hwy3AELp?wg9|MTV~r9HU=)<{7D4NEuTmfxdxWV_r`sp%Oa)QkyaE>7|2q?L8385pep@tm*O-voVn*gXl#^yO8ncPf1LOBz1z z|E>z&r`&oubKxCeOpg+G_DSR7sxRo*YK%c-kkTuRmFbRmFOA4jnWlyy0u}^lvp4S%Fl<7P+tmT&vX1Z zZ^#xN2`1$=5dm}Du(nhmCtQf4nljcOI>~xjdl#9!(M$~HuyvT^wd(BVgU0ew5ujMI z=iufC`~#qf=i_hsxr!NfBSy|1Y*uF3)7lmVHtDj20WkSyWFl8za^VgWz6W_EEl^Y+ zoWVD1!}P4UM#B+Ws_9QfcQLvVg_=S?(NXo=wJu0hr1tRgdyNSL#`SVQs z?S)%OECxd9fC~V!#UTF$m6HiwpCt| z5QdN=7&oaeqO1`eDRyH5kqEE(Iwt$b7UVfAQqa=rWfq zDkI@lNzVv7EjrG_2tV^rY*K&=P^@;K@BzQEZFZVyzsLSo>=&dDF9}{whS5r1A`|Oy zyG-CVS{~5LQF9;$Rm`GX8{XOT9sp4$}MR z&$oAz(H}O~1TK3E%l2y1L<*{bs0FvBZCaGtE-bb*ed_kH@yM~I*Dc%2y%#d0M-Q@Q&vfb`X$T>rvQr&ML{mdMp5|*{CVJd%et!^&)2~uFR7jgi#!LSG=6$ z-#nZW$t@@yqAA6UVH?V6MoW0Dh!Z2Le`0hLIK+hpGq(|Yq`l12E~gX_H4bDd1DGxF z9s&Ryy4y(YL;Gy;+2cPuw?o)P0WYQWw>R9Fqb3TZPjnz9<$ZI-grVo?2^UE^TE((2 z@EI=bCr##UUA~f$H`vh0!nud^&55yczJVWu>6qEpbVLe|9ADHu%*8H$eD0Gf6 zlazjch4F4A=1K?+F)0CX&njFAUQrplVkli5+5;zf=vlkvXoJu-N;3mX6Z@y8)#NCL z)fL21olc0X*v)Ch-21V2vSdDC6UK~HaxeR{^4aSe*qzI(Dv5Vfy91)ii%rf|VwA*6 zgGQ6B4uvjX-(n!eUpApo)c)nr&jwq1m6olS@=7My4<4aLcdPSH35tB20#1&xwT+%+xlw`Rm$#Z z$tFQ9ch^5sCa*&zG|#~=w%>7NRun7!#MyG#14}I%8y9}3%&R+lq|w@+@GX#GvMS90 z`LvnfF2Iw}od~eB^e;-$D8cq#bHG5pPsx` zxtMITq7GnP%WPsZro%2Se81*|3Cj}D@C?W4{W9hJXGMqw(J!uu8(0ETjm_W8R??H4 zMEe_Q;}Sk%+9vRdnU~iZP`D?c8Lu^0X=#gX-`iS_NUV|8{-SW4&%=hM!|~WP65U07 zXS{G*3xPR^1^ZmdGRk1g<0;J-d#5T7whFix2_3}C^5CFM0@#Aoy^bx9a{w%)*p?dSC#jfK$;C+)=Y%${ z)NwWv67dHtcp2zQG$@6?^v}=U{XY3w044m`#ck;8Gy}!=EAe!FT+~UQUPfH(iyoQ; zZuI;=25K1m;kL{X+H1aJEL{21qsl$RiKIC-?ME$hXHo@HSM9wcD_Pw*{kD;=mJ1`! zwejA+hhar=p5DUkw3UvbpLtr4QRZHwx10JE-MB0l+SA@bjo~Y0Fs^@9g$vev9M=;+ z&SWJY8hMS0Hi#2p_w&;f;z*3#{`grlcz?LO%q3DBMJKKmRK-`tE&%uEm@h9cu1+m?)JPw1hlMYN{q8pHS{yeK&+w8GxIpQ*c1dS$UY! zUx81`Z{d$~_Ny&$&a$d>2E$)_!+1IM)4z4x0%|nX{ZaFAL{ft$({m@+y9Uk5E6^@p zh6R6YxOF3D3_~BV8sWF7O_2XHZcQF?cGF6;l1}@TvKqiCA8Z^;>Qmw3kptoTwDNiJ z5o1o;VmY;MD9N6gPTMcDuMF@X7Q1l7^i95;x3jr`pW{3(7djjEf%x zOP09GBC#%D*G-1b(T6=QAFoo6PwrQdu1avoG2@WZh z*lxlwRv+>3Gdtn|GPldV&a$G1t%V{LOQ${?>`&o0TU}*HXtCHTb1mGfD`$@g{3uhl zzdr7ahNt%J@Y0l0z>QPt&;!HMwKC_nWa?JT2KXrI`nHYyaM0MA}tXT}r_{?;F4MriZy_I+}_m{`w$i zf|a2eqfB^PV~_>-xk0)9nCtIGv6m}K%g;OD>9RYO<7k{gkbaG6+}#IruqvD} zDPQsJv~Pt%%@|Lxl$ySkRCJMQM@3y)D>Ad7550^4ZkG90i3zDTobW0KkCA@GCX1mM zrP<2818zKjeCMR6teRp{%VuN^e?@ZRRN8sSTEsER)T|EIBOH-xGz^YRx_t;!?oXY< z;JiDLaGP1$ET;91ti!OrV3$+Nmh?vr`^_Rn)|N_fjK9Z} zD1b}p48SF`@1|{%Hm55ZG|ry-FJ-_q1b?E~>gHl}qJOM9g)S`HG(eZzx-D6eN z`KXC60{wfBO?oyLIlUw=Pjn>#cIKNzO;pUw@n^LD)mT@ne&W}_b9$|lq7lAQmZQdb zEk&Yq_ra7~jfmn+D6{ImrOL1-BQSN^K+so~<2=TV+q6kUivThc>Ch|#EMu-Z-6Py> zMr=V9zQo&vuG9H)n&9TbeW%Ui$<#tZE5zslZkhULHS>hnpovunxg1&#^L(Nu>uF0*cXIhw<`9t zi=~N4QIsog`<>TkIHY={8UnUj&@5e;eF-?~)P~f(eV>m_-^sVM)XlCETtcV2F|kaR zW#TB`ySFs^Mm?%T>U5s03I)Kg5c70D0^^yiF1^gk&%hWFRW=#!jLZh`sho~9I-1&| zY)OYN7vmpr{dmyMYtzRea$%%D1{EW8-_`BuDdCednBKN|!^^Y%ph8xfQKTo0Sk-oh za>o>NmIj*UxGkg$R=XeN98vb?M;S9DRMeu*%jps|5GpHxB7}g&h@z)^9zBK3=Sln7 z<4Nn;==HTcUwg=T)k0s3cNuSFsziKSCK6O)-0bRKzu0eW(y5%rSQwaA67-&6_xnrY zxUf;2PJ0~K5<|W;VQKk+0-(pG`uVnaUj+}~lFoM0& z8*HYY1eG@aC0)aLk6i7}zLWKG#ScKT*Bh~I-FXhmYH2K_4a-fTrsNVyGM$P-1<^m6 z{6Q}m8(f^WW##EWZ_8>07e<$#4N(iB)cnXM->69HkP3;=I&in+!DZHfv7J@1)yiAb zutCvk#PF=A(AZ-qhF~l@cqz&Q8W4k2!^v_u5KE@uS6IA6;>`j?h$NE6Lu!*|x=BpD zF^#kK4lPSd^R?51*H1ytAr_M9H7`}Eh1_saNEji7UDbTcFOlMberY#`>Y8li9Po!| z*dT(w^BYyEIr>TUUw_~-3a}4Z86uAvxdX*$*6lqE8&1eK_fv3ZIEE zFkTFCUo9?;K9h+6>XJ9_PbMF-fg4%I229_Vc28{3?>vKKttm_KjAqe0Au$+MZr9!} zw068C+~0dH4~aKbi%5O(bMureqA(Cb6RYic%O}3nzAgh&s7mtoJbuM6tt{ioo8v#+ zHnM|SoSd6$%IZgqd!-!AHP!~QR-zuXClG~|7&B?7VNkKg6XeXu{`pK8V;llD$=jaRjgT@vyY({h|#mN9V zdBKrBez^uh@ElyvZRofEth-2Wx3SRWq=7JgON_wnd zQ2u3Pxac)4|9#aSWTSl$%-T$E5P+rp&96f5>l6f5x)b1pinhbpw|&D?9z6?zO3Jq` zMqIRKeAQ~)=g$%5lHkN9-S6eU^{4Oqi57Rn;lP>}+`H6GNo5MY2sI=1%d4({SjR70 z*q9?b&e!3GRC6v6l+!XLK8%i3y~lL-_$tRkC^1aH*46(|lo7Xof>eS2j(5K%hzSVJ zv+0BWOVOp?{4YhF%?R62v2CMHQB1^;G9KlilNRdfn$|uGyt{EpRp_PJ^T*-%@~&{* z)pV?UCDI7ITv3Z5+lyisyRJ~)#d)b3NIm2!$vqB*gN#pvyZRr>X9tzotS8ZrR{6pq zd1p`jJe*Ry)~A3TRRxUiRaay!OVb?H?mbAm8Gel1Zyp+rfF8(FdT7#dB^Sx24e0uk z>eE9kGfVnEJeXrqe0tr?ut}+5(AGVFoQ^O5{jX!=KaQ%}?6W%-yNOOra!)I|S-MF& z*tthi>17DdD4b7;(nU#aeuz$fH2%MfI%VJn$qs&=W+|X?WljF-uQkH1$?JUGkFlbf zpV@@eb~=pQwa$!_I4=1H>a?#n8{>_=gu(ff&S?AQh~0D~xf%u7B+B-u zuMU`fd8h*Io5*|{s^O{>s36wO=&mSqgFZI_KAmBInDG*}*o3^h%s|awwE9|%QRD7j z1vv~nr@s>5H-grhU_A*C@SbV+ZbmRjy`xwnIDjLp?VoG&YwcBw+$_oa%bQlP$i1O6hJV$+!*>3Kq75`0g7zBpyFZUf^I;T?L zQ5ZfijbYZmv}iSn``-|=y(Z)nuc7pTQp&k%75w%yOj7?oO*px~-BQBry9gx?zU)={ z933cAj=AlE^EnK0P#%fY(1qDw2$9P)fmT)mYhnzDZ|6%*_i3E;A=!{4 z(W)wSJrG!A7DaTZKj?nUv-b+uev8NC)U}J5+C>yUzFaN~(YrjE?52e0M=!;M4+p4e zdVlTEB~8`t>Sq<9P7Ya=?ECfF7ZOqvT^i;`Ntaz{BWKk<-Tfe$RjHkc%(kK2J0Tdg zga&O7yn+G(_-TZg`VWYsG$Ux0|EYj_AVA*p)3Yz_^o)Z?m+!_s$(+j2aH>!LN|$R2479zPkux4M%2t^bN;rEjzGr_XYoNUPo-K za!nhW#~CSx-}CAamRI4ooV`sax?BixC7c21HglE?bKIua1joNk5g)i<+O9P?+S(1u zx^+vOAxwVOim@-+)DDWq(LpG$aXb93VNz=mtPPWpU6MPDei8VP>LAmlGZ})?WWXT;Ic)<%T&)3$)K>R3mqk z2qY5}xha7tI*49!F>phGnlxr^AEr>q?cE$H+(H{E)n0N+OzP$%JYj$Tv2lZd^ql+4 zkQ+}nVxte!5@gI7A<>mlf1gvdSH*ej#@zX@H~@TRSswsT4Y$U>qNXA^4FV~f+W;;= zSKn1llT|4&5;08$z}mQKtOA8-gDwH--)R?_|RCEBCa_ z`e=YsToltZwRpEG#n+wr9t^Ni`6=g!SSqJS>vzi;X#1IFG?g^iypAF=V#AfG+L|=l zB?si)B!1u5bhnMDR{Xbn`PT1YIJ;una(`1nq^NY1T^4XZ$c;4$&RU)e&d{Y;*j5g# z%k2h#x1NBqZgoi1K8^o#hCEMZ#wtd^(xbf!WH3s0Tr8lTBrv{8@xhnKg*@JqR0`=`)3Cq%S$VRWF{zCs73|!hbWy@ zJk#>F<9|dxv+y28I(4>!WuVp(txjH($et*di73#cGOdh^vs;xX6A7AF#MM*zYyL$3 z8Q~Zv2d-g;Btp~^PyX7S3XVIwI!cY=QyV*9KtQe9TpL1lL{C}*o54D@(qhl$TV9*H z-q`~D2j!{o&&~Dvv&BR(=r!5}PfeHA+l9rqT9E~|D6RzCKx0u~)AUGIvR)!CqI|wN zvURsXwbasNiANs;Cm|G!!j(`2fL4|}wch>ikfO#bSbSgqOBvk}8$y{!;5i?b$a2o$ zM4*+|lbPqHGRpq6pV6~(9g2|EHy!}8GcVu3xj#_0`Ilwzg?PgKq*R((l_$pGd^DnL04Hlmf)pq;8ah~~a%m``k+GO+{ZdJkkTp*Ftb!RJ)>{CH!Wu>0E`4<% zFqhXMCdTbmImR-$?Mt3v{1E{IGaVr#IB#gkMN_MXw=FX_E^`G{Q8|0w$2-=3`~!PK zQ=S*Qh`)|+DyDaLxl693E@AQo8ma(>I#}Jr*wYtma#rEPBc#hv5)CM{!y9dTm8Q!) zGMs#${z^$6@JrS1NY}-?_-hb;ZdFSr_gZ-Ce-mTrHCD?r)p@n6=Yo*_IcYw9#5*>FR^?$fw;|=l03$7 z583aNGzgiaYEQNPrDi_gmdPPw=73|qd=(V+&pzOdAcY$TuLhtrCMJMYmVIY*0EZ%O zVWuK&C?@%OqP9Pqe>Bv;WHIX=HJ7m^vuqTE46zCbYjkS;-fiou4fkiz$?3$rI$aIh zTX@-)PcA<`RGQ!vz8WtBTyEAC-U57}j{cl7JHb8#mvac{``p2w`Eb5?KfFQzrSbis zkfCFF4g}F1Y5hgU`Bs}MK8^b9#uGGC6jIRHv$u!V+l$9Qpm9Mjp!2v7^iBk5Dhx$wE|dCZG}_rdN^?? z>6y5O;!@_p8TnA|0lKt>6Phl1v79<)fezltb#D=IgE?Ch?#867M_l4~^dh(j*6 z%A*vf%HA*LtMN;~lm(l=^%2$GKetAc=E5-3kh5u4wH{>JlS7t$#Ud^Vr#p_{j|<&y zAYb*JAUzy(YazxJtY|%^HqH*}lKu{ma1$W4nU_?qIdsyFfd{QRl<{f;EjMa!(=v!i zuo`Wk(~0D*A1^QRO}mOG_OPj^hxQ=Hvx z3B&*byZ_Mt?G1-reRW*lZN)dq+MW4U_n?mbZ?JQ*g6qqyL=&-%7?+ufkxIC_U4`hv zxHzluRX`!eYliX8!U{GKiaVq$Dc${sgaA#8S1_>ku&vWTgk6=_#I<5ezqkS%jc(AU zxJ0M+NBz1iVo6Gr7D-3;t1TJLvAYyHQP=D)&sb}6iD2)0#3J6qWGxwcQ3EFOo>S+2 zShM8DaVmY*v?hQ)f;hwPFMr-#T1@?(h3ljIHZyH$BJ4PQsEFz@4$rYy#{NK5-14}0 z+k>^z%+%k2t)T!HmGv-N-(jws!Fh85k@GxN?HJGUud0Y2f*V&dr68O2k4^p)tu$dn zpqI0^g1o6}e!zfC*q$5KUK-J7$APhkqbV|6AmMj_i|NApk+BDORYlBPWJTEH4FQW|*x`bwmWQoz{Ql@;FLa=3$hR-1IMoHPtqzwED zi3q@d@a%bH`^Zmiruk7H&qxzU;Cm;P!%#5H1PRn8fRj8p_{;38u32fz1+1R%>+9oV zq#;5a)Z!^)3w1BS*H61R!)VxOu$3?6VX5y0;ULeHrjQ(zzEI7z)~6btS}Y{8vB&fv zUCio%GJv4D(@2~m>IfG-iCjultc#1zZi`h2wC7_f3?^^xobb#{Jfs73>SR&{tNF~` z$D{OomXiWbYamV46!LFy_!C||%xCh4BuU_6Q!-H@zKoSJjWGdlAkHH`emW^=WB}nv znyrO)?TEs(+iWfsV6U$qC`SluX04*c=~hRG+}Eq%X8WyXHEJsApDYo>p{R%cMl#eq z4IC>I;9H?7@naeP(Vv#dRHi)U+VxHVjSOxQj?lq-h1`+^|4kbXSa9D#{tv?*=G%Rn zrIb5^+2w8qMCat1NA(|lBH*BV2W80Z3)-X(<~_{&5Ujwc46!HKl@Dt>X#Cj|LD%W? zZ*$B%0kjoPc#Z&v{LxT6cy>TXODbkj-q1rd4=Sd8Zk=Yzx|xPG4@4Jw@N6eVN7#!( zkaTJv>;JQiq`>ffPhCIq;jK&x$%)QDgt%rlSn`$?spUwWd|ad*#2)b2`Ab-d-iNDoHL)!$WP#jFf-sYD`8 zW)7}Lr3YiFa_sY@Dg$9!Gb_C82kxP0gG@lEB}pl;#KQ-o^%?1pra%^5LqgQTrNqAq zyWu1!%E_Y28_TB%#A(+Z*JlN#`{WEtt+N5;Q*ho+es-AUJU9O=_TIv9njE2E{rxOtRMES zZI8i$Lo;)+5q1bJQy=(qK6ls9Z6!9EO#=>?Kpj9N>ezABZd1HKz$lysk+p^7RJYyJ zbCBlB(#t|)<_jMrUwUDkFcxznC(K3l#xJ&ec7qy#|1&`5d~dC`+_(pi?AiTwmohQ- z>IMpZJs+%^YKThf!ND(|1175zQ<{iao|E7WnmABSz%Y z?lzOJrPmSjqmW)FeF#c3nuA}lt+hinLs@!r(#SMIVjTMm`e>lrnpq?j%~0#_u~B$E zwpp@oPlnES_kr*Yxd{3`N%kk4GPJFMf)y>h2v&u*&*cG%S3>5>MCht!6$%JaLe#8z znj>0BI9c5SUulv$_cBW3G8eU)?4C8UaG2%tm?1-9L^GU3d5Lv4FdfZ;B1|w$b(zh# zK#`zZ7pB%TFPmM?Qd2Bh2>S81o$Tnc$0x$_8qoILL}&N$SEh~@ZFG)H%g4+NKkc&3 z8NVBVQACtWs+t^+{VihMdBTN4=|gH2>NKP*$a$>b#>WBn=wYdAK1J;9`}U~}@zBJl$ZN%jqLQ9GT}0HR zK2h2>)L5dD1K9CKhdgZRaxYB@{X%*XDY~x2OH`;vWTNh$mo7yora~W0Nn5vRRA`x=S-*==L55hcZftpC`$!O^B={T5+siyC2Ardy6U_&JFrJ3Mg zX+0i-q_ly(!)VMn^U>UXh1(c1?TKq;jLLYB1Urh7LakmM|A^WM!J zXw=|xBnqC(%R+x2V?fP<==`PBtD9Sgy5DTa#stJQMWQ2K5^2KRaW}EX=pc7uDhfz# zr;F2CzP0`Oke20#Ehi9MvJG{~tfi@cp1)s(jSK9FXgI%<w9lidXdqav`) zIeLSiS6#&vWOb|QxZ1Neet6yxI)??|$LqMfKeN`t&ftyC=YF++7& z>MLPL#Uj`*i1|o3KfrK~FikKzFYzkd|DnP2O0KhC z;$SnXg6cXVd#=WYN1A9L6LwD2BPFw%s{FBKjCv!Uh1}ivb$Q~w*pq+AFc+50D zLZW({fZl;+Dz6QTpign$J>(nRcvJ(*ZDrWH6sGz~i+jK)Uwyxo?f9h21Z^ESuwit$ zUt6tNUy`X1i{x;tp$T`UVP9mZ3G)2u4l`x-{+AzmYW(}g!#zBx_jc<&At~r|>;0^c zr`~@q&bvhPkVdr}Kq&I1s-xZX3vwo%9PbP8}Kz|F5rN#;PJSk~M>L1wyl6 z@b5EBKuJQ^lyGZDE6#aSw%09pV`HpWot*OUJoWxp{)Lf@Oe8tx;F-T{JGJwI0_Fg9 z3ELB*dFZpxUO#XgT9px}DIFUiQRAO(!#_6UJ2p~;J0Z#CF)|z?f5R*37?sY)CI~(; zuaWhSsYPDHTqB2Tj|FCFnz+DlzK?H343XTUf6OZn8;F20U6K~uw>ZN-Bi}Iwj>WlJ zt-5ZF@M9UDWpjl*ldHtMn{j;rjBT|JX_k4+BZadZ{WN1N$8Z1;4Ov7!d4>s7Z&q{Z zlh~_4R?m$glcG0^i9sD25SkMvZR~sq4L2iwG1F9%e8C9}pA5&yItrSPE{&b&EP$eD zJ2Cp)0pL-m-Dp$N={+03>2x02 zpHVJ>>Uyc|vq~TUlmXht&6QS9IR96K0K$zK>&&ZEaLsfby+FKDq<7RQmRm#iHLlug{yci2>gdMr%&r{LhfDC$f zqNN8=hU*uUQNKn9{7{sYW+7qDWr!qSkj|mD0W+pF5oebie=)n9QKmdtafW5J9}?%3 zX;Q|saFdBbM3YdF;1egP1xQc1&rTec!SI-(>AeI+TAyum4?rGiAiG)`%wwiBcUQq% ztfeJM!J|Vlcqx9lcfw+39ZkVyM|g{d zsw9)}|2z>mQwrv>W9%{ue5s}ueDZNHe0Y(s1p+(W)9<>Zyeh>=l81Ua0et&tFtd5<=PqJ4`Hu_Ze?8GVR3lK(ee;qsZt z;cx9=^F>s$Q9=p&D~XlvYWhR6l8t9Pppwo*%Bgn?BtF`9EL_2!aqK>Rf1cD}TKtrv zO|%TB8tEF9I5VVj9E$DEcMEGmla~3J*q1qh5>&n90ig`D^QeNOjzT81zY zP}b&GqN$L$kks=i8q9ezMl&vkHC|Yp00P4BEhXK2i#l7_37Ce<%%_yS+7eOWJYQu~{ z7Jq@29xuKYD|4@PphXi4mQSQD#QJa7H@U~lpf()z_v5UfmzR%^pVv#SA_A9WMQR5! zf2hbB(C~R8^?nj&##?@1_CbgB{e+HmS+ZGshv?&rMCae48j4C`GfRGkek}SR|GM{j z0r@%%ct@CV7Z+&V{fOLoX#eJDvJ_`BUI0*iUHtecF0)nveW4e@8K-*sqcZl`NY4L4+bY<8)%V4f`D_C!O~xxJ9yGupu!j-Jhv*kYVOlgE7OAIJv*eF zHmMN0Np&K$nQ56yD}T1gjHt8GVMWD;Y)vg;KdZCRZha3~qUFkReb#l_Ae?`oGgHyb z66LirEu0XM#*Mp`qaoy#h7wWUf%`L@hIxJ85im9M%OCLU`#jG+)c(>gH0~*;>03FZ?xqBvF#2jiTK?be{`Y#$_wMO*@Hlzu_*u<9PHH*~Isc@2dH7C_SpZYzKiKyyN>%}8f&&8j|kDLF9 z_WIrU^H!(=fh-qFNArO%@zTazb{!Bjq{4C^H_#_T%+Aq|rt_*9#mUVm)BPxq3GrR8 z)9K)lQCEqh!g?cGL+W^<2M=3!s)bh49MNpQXTAggxJ$KRfa%ytHnZxQe86yvhw!`N zfC(6Sx^W0)oJ^cs=`{Kt>~r-IT)5=(;ml&BQmG#}0HEHhMVaF4jHXlM<6KgA2{TV^ zJ#k-0E-XC*hFsstZj&QXx27^!915TcBGyQD+Ql3fudSY_gc+>_>&(Og= z!f1wFe}v4Qfdfp&U7Yy~gQ*trL!AHYg3@rrXY0?G)Wa$1adD?=qru4)*($A!H4yH@ zDnCht8=_lm8)IR;^QHALLVyx)K$Wth5gsYJ@L0Umpc1obeIR*LOeHzpX+ zMDqk-VG97&7em=K7-8wx31zdp_5`d@*S4HCzcvCD_30bD?d=Xe_qn;w0;2%L6y6P; z?cxVpMut#_@6f@Bhd}enk{ni9+6a$d``QySDT@e$JQ$r8UF$le%TBNh*Xj+gzUy&_ zqr22jg$qCF0YU87XzNyO87;{ z+Y2;=Vg|(HY`IOlisDc)g7Rb^iLY+vVii+kD%0Vn`gC28fiIb1jwSCGDIV@(sPriF zXw7?w%%PG{ffDzlM_8_J6hCjq*OF7ihKraU5x(DLj>$!eW zE6Xold~Xp**0FCZiIA`>y;dG7pI>LYL(*cE40DhklGJTlSav5Q(T6jUb^NC$TH7|Wu0{s3rl?R9Om)|GJt>eT1vmN)B;*0y| zditt@S1(@%$exwXoUZW!4RhiM3~l zS)pwe%)%+}@?J-p_^m^_b|(i7~&gpyKaD_%S6Q!hmI%=o--XS==xi$DCtG3XfrxI)5Iv;~i00UNr% zc@+99Tl;!xlKr7AO4lEvO5i4~E5`A&>LHdWvy*4q1HTN=Qq+BPZAbz_cB(L|=TD4$DxscU zUPttg7Kf~BbGeW7;O8=Y6nGW8hPTSp`Q(FtSK;ryHYnw)W!+b&?w{MlhVOm`mWFpg z={N`^N4pwD)nUkoBzD+XTeNq5Th=z>W<u6P{+n9B6U2-@`)M`t>%bBu_zZ(I}}x<(S&598iZuQf)pWxOuHl}LUkH}6{l z=cxRK8BcQYK%``3Th+WZ5^24^a%&{Rw5f7q#tKl6^=gq}hy9Hyom(5&S#Ou^vnDIU zt8x!7p->@BiIkYd9tetHj19PA1xwxN&n_ps)jzp^xP5>*#LYF^D~c-GH)SdHtI3mb zyjqecG$^;=g zTN?UxQT^IQ1U22{N5?Rfb}%h&O-zQDf)*USG=6|3AqlMC(#j&+MZmK@fK5a^8?XZB zuN+Es1F7%j%PnJxnx`DMS47m~VoLr=1ElS7VSruKkn(}! zo_fxoWpoNs0Ua_)^V*Q4|4xF$h0oW9EHHf8ARs4Db`H}|yv%wvxN+2d#ega)a z&q!HW;vyn|sz_$Vcj*1*I#wG_#Xtdltor__+M8~3=yghjT z3yN`Fpw?#->>jntHd6{k-B2JxMqm&#U=y$8Nw_*RuIfjNNAj1U!o=8(OcaP(?Rv=; zI~L`mP~XI{!u+o#u|qN2k@Jjgoh+p$mkC@Uvv~qjo)nU+#|H>HCT+A)V~Q-Ug-(kk zR;v?s@$w?FOqC&Umtz_i_MEqs=}TP9|Q4p(kUur$c+Tz6Waw=8jSxXlzY$xGtU z;ooF>EQkA;0gf&CxuO%kt4pLre)HXOZ)*jSYX$1TGkrLG)MG5hbe$1)0*tq%n;?rw zbmFho?V5o6sPQ8zh^3&KWZ)JJvJ)~b#ck(9A572DH-iphUB0;0(&zoSyNU8;FJTNt z1{Rm+3KB-qgxyxeeNFtFcS zf74s{Q!@1taSQB-bt^?IgZyWtsv$Du``9ze^VdvCj`Gw6H_bbQk*hds=*x=sfV`Xx z%#hmH*j4?)5vNieHL*_-A!Bi2rYIRpu1(QMKLAW1r9Ld;TMnpXvuQQnzEh7gcc>_t znSUOGY4K_ifl2u^(RiKI@+7#)L=%A%JzerX%Qs)%6 zhM4l_x0?L@yy)M%_e!UtWZstIPt=0QO(KRs^*vO1Qf|gXBqNdXmq6;TQ*Zxt%w|Ox zV10&Jf7~-(k;na-K@9XL3SV5OYwEiQxK&_U0gs2C+M3a>rygO)D0P=i@Q%Nd@UK|? z4_oKhTv^z4>)5t!+xFh^j@fa?wr$(C-Lb8XJ4wgt*iNT&@;vXUde4XR53U-u>RxNE zanCX0(zG=sQZ^cWHz3!RB0P4~3*1SAZ_kU@>m_1=emSzu3P!lt(8$XUEhp_A1!%sr zAkebfgEopr)CeT^VtH2_OWMF(GGfrKY2QbAwoedgPNO9k^FvZ0zlZ&VBHDTboMXsG z{I<9uEiu(Z!@MjiZA|F)`5opD@eNzOQzkGb);2aw`$I2jiX}~T{;izX-@9g=Tqd$Q z`|8_zlfizQj@-844(Je8xYOq(P~p$u7Lc50Gm{}$kRo+0oO*ol{-rK#FBRs|x~{up zG08i!SE3tNj{LSBawPvWuzg;&pMnNTOpl#VmC`3KHr(cWtrYsZom!lE&mC^>v%^(8 zS~;E+$E$X{Y$IRk7#7p-Td2yQpGTdOFBS)eqL76d71l&@!zwQFya(~f<1Ut)M9dZD z!-tsx5bK^*Z*7EU2filJ^xlsmAFQZ^$_7z3a7;sxDJi2?A#Q7+O zwIzoLBZKjNBbB6tQrf7|=kt{?u~1FMO`5oq_u)Cj8S0a5CR7fG7zQ-4(!>eI<3JAy z()LB=wzOhI$l5#tc~v^vI-yh|Y*4e1Tj@LO^;lgjx|$o>x3HEmTL(V_9Z4&|Dlm<5 zDS+^0eEtl7{n-eC@hfuMRf-qIcM9*4+m5%bpP5?!d`y9D3=R@=XP4k!EUzPM#P>0zjK5F1xs11^&TbY^H$lTd`QgJ%j zG*W;UT!S+2Z5#!xD!&GHbZgU0B|{mTP{w*R&NMUzxi3#Rq5G%Hy8-vr>iwS6k9?2V zZjW~Zjw_`G^SgMbAMHE8$G3`~M^g?^1{>V!ro~CT*MDjriL(7E_E!E&iVuG-*(Y3| zGraerlRRy6(Rz;|m8QTf{73U0tKn&*%#+y9if?1*t@q!h((adsa>o`zUMaqtLKMaW zuJMDGCpvWselSV@^~^4h2RR;oKuDWWUZXt?RCnj343u+EapnNJDkB*!sc#AepBK$+ zH-E#7x3;3mI@ucin22Q#f@zXIl|pSj4o!WM2iw$-)05D3a1twc;mK$X#V(SQZX4lZ zp@%QXp;K(nEOel-)NRDlP*G;Ap$ZA@H<;v*nP4UzD@NkLVrW+?hvGYJ=nSDs?a7i+ z7$ZDw&8x9QH+~X{w$9>Vc9Sq28Wf4>{<+~izSEeZv}2&KgLWx?EHEIb1_7*Yb;F%Qe|e3lLrp{ zp#k34;9x$)1%sp}YvYQ~Dl1%ri;Ekj914)YoVAFz9LRpLQ`7z;;!{jjV#GlBvz(Vf zQEjhm+bT!Tc1bL~Vz3ON<)R_FP;MGqp>e=gk&#=ckschB0AEqRB&Idnk?Nvh8#1ewURG7k^4gO;LBTPcbhm4xp>QY)8HaX9qQ z<-H}9-p^%9mI{1pr00j5ZH6O!$Bt?hj%*q_6#dCEc$qvQ4-Z)K{&eXUi)3xv%Y5GS zK$2F>GECt_dTrygGxgSDIGuDvnmAuyq<4Zm4{J*q9{K9z&Vh|z}^ZHfez{g%VZN`E0()`1%C=JjeQH(E>4 zuh%}#uR#^Pt@Xng&s!(hbzhy7QH`C~{9c*5xE3bB2_*~#L(_;rex5x8WN2@y8u7IWam`R) z(VT)H&ts%+8=_Qi+MYvrbz2YqobQUAU|bdX>@@geQ0b0Vi1);5QAMj!-ScxXY1h41 zT&QYwns8&PSJLXVM;0boFZwj1e$s;8l1@bu^>F~{mM|Q+Pk6@S?U7}+mS;<}O)q+$ z%QD`0RFAF^<>N0Mi{C^nMUWIWG8`P0b(nZKTzXU(mpBO=qcfWFxzixg z0y*`L`o6*?lXeqXvA=fmxLs%7w@7z8I?mpG!w20u*cqGaw`13>-yvq@4&|oKuX5af z(CnQ{DK*q%gL?n*w~09FE^k}@DF}GMAMzy--+B0qQD$VxcG&4#BLBEz-5W+Zej;%X^$VAxb8=e-02MC?3|KFO&G^C^dGKLo)%?ew;OW! z?0iwlepP*Jn8x%^lYimouW&_KHhE1ET@7M}!Hf|Bdp!ui4qa1{Jq*}W29=$3K9`{0 z7cD)B2F!$M1at>^{~;OSo^qxPmShl`RFP4LS0?!@_YvE65+MSc(#q!*x_MES{u4ts zjg}u@!!7;YC!E$)EGP)CKr)3x_1*6PrJ{RmYlH1-HKBWa%iF$=LcO0hp&MK9ea=ai z>2bcJWOL_!Y%3}v1+lBEb`81J6DXuL^6Hi$RFLq~XSa&smBF{(;fg=*!4BS@!7zqN zTYy6)z|`048$o?JY~Js@!_6x&+BnSU@8_%)IRHrIoqxDyf(ioVK{K!E`G420uBog# z8D(ljlK_`0f~q+U2*#i9u7rP5309&cDaHvQA4!1BzXeATbTp&at(SoH^fMU5N!LFV{p^rf5so_UgDHKk95A(5?VP#HuOj_vF1dV|U=U-#epsF&Q*EGoklfvzd zJon0+$`vhsQ{8{}u7dOu_Xm-Z6tHur!l}AS*AF~S4-aZqCOJl7IvA72JQ}Gd6=WOX z{8-dj_;{8z6y4vR?OgT%wK;G^s2Z_^>DJ^u6HjuURUKm8KCls7#9vUbm%$B@)swc+ zqV-W!`VExUncEuF1An(`qvw zVya=q;mKJvU)EM=qzucd^=|?GBt1pgd#96J=@7qP=yW@p zJ-<^DHz=%ky0{hBViFWhnZto9jm0MNP&O7pAB~k|n>@tOeV4W<0-H9ig#ge&QIYH`(u#O~nZIh=`aT(!?h*j#!p2 zhpD>nxLE$KkTX;@drvXOM=$#!o>BfV@4g+r7#(c<@~?kBCPViOQEn<*5^UqQq*kp;{9e~C*%d$3kP=r7cHdL^u5OcIlZkSn&u1@VTN5xU#g}G1!wp`$(v9N+> z28Qg%+T-#3$|IKI1Aq1>8j`MjFD4)!KA$<7X*X<}QU$gOJ6M999)`zZgAP#eo%U2> z^7)Q2-lCj_5wVn)YSQ*BcXaYJnP!Gqxm=@$8sQfl3jsBl_#4@z09c8kHwzy%f;Idc zJU{~uR9wNX>H^V6L<2T-HzadGST{Mun}YBL{zzvRR#%$Y69O3y_=r z)+nv!nZ(1BQkkLsEqgcjF!P4?*D%iBol}L>!SdoppJ%8^;IXRe!4$IzxVb82yim33 zzEFkl`DiIR_TNDjOhUOv3@jaWjQ+pj=AEK_O~c^Ku7N7dui>AhK3qV5v?W@;B3jHE zhS(|AG-Zz66oEY-ei-Uz-8UJpffNg~VW_{=i&^&{6I~l zZlz(k`3wCv(Ep+QZ(H>B_h7_lL=y!&zHKFjgO{Sz&&#>hytqQg6DqL~O^ z!ue*D8sDo<->yCtHcYLuMb!(Qm?qm%1oCsY>t-EkfA@Hv`&{oqecRJS$9~Z$74ZFBkMGdS$51m{B6YSgS@jWqI+zn^Cn^doAH#2SW!^rq3{F+h<=iPK zGkfp@w7RCE*dZ**Qq1y}u0C<^R%Up5cQjdH+&apo*gC2H>pjY$>w0+RN>=^#`${0i zQs`$nLm4*Qwbay4tp`mTT0GkDz4?>+O)MGB{gSmigS~zjR*X&uaTt``B=waY4_9;2 zdVn{sVjp>%C-!FgA2o_pZX~-ew!_sGrM=#512eT5eHuk?8s^MxI<#-&%74i=W4mHw z{Yx=e3Ckq;haZ4c$`%zgKUziMH-CbxY`G*y2on>J>#F`sw#}gi-L~!iD@*FYYoIXh z%-lzxC4>^LvVD>-WlBbF3bU;M08 z33iA$v!1E0`wVA}ESW=$otviDr03Z{dQXva#fvcoP}9%EVJdj{)-5)gIrznM79(Aq z7p)5+e1x>bm~^TnSLctyH!PeEG%dl`_4K}U+V8co_IRa z@XBC>%8G>p0`*CQxGKY)EFbc^s^0U$)ohE3Q`Nw7`!RIXTroR2EP++1)Y3_V${Nx9 zV6RZQai^UfbVaqsJNNIJ4CYslhSTgolSLVcw#8Qah17D>jr0yTyV$JfgSvCxbj&eU%V%5?)E;J{ zF$USMg!fPQIkIxpi@KaQBs7N(%JvRDmN5GYHIlSNvrwen*DG2pnOB?{JlO`j24RMPl8 z!wv84Dk;c@UwLFi0PN+5jsu=3ZL^yvT-y&U+qJL@w+*ABzLfc6X4RPOC*5dl=3$oI3wh6CeD-vI7-(e*Yr{>U6mUH+ynsQUqed)wEug6sIFOS z;6%{}-EwgDQUl=Alk%E_Gp^Vnq?3 zp8XPs;yldZ!;gZQoCbn%P_=2*QDHYyDMc3yY%!T9>aSQEY_i>8@73N#b#;nwqk3it zieBpOw`C&US)B$A@*2XI$%U~vRz!9&JDXS@!ZfKE`_?!W_#pb);m-2Rt+Sw)2Mm$h z&jcLxvD6HOZ{q0k#DA9hlGos)WF!X^FpH@9h{V@t1xWd#EHTu8FQ~@no$Bk#p+Xdc zVYNKQP+H1eP?*MncLwtIk*=5JfxQuG(H2$e+Y5pn53KJqj{SYTWgbrfj`}Hbc@|zp zU~71QWK-wdOqWuhlpDscOv*Ew57o~`nkJ>6`_*_#(pKPnQeXkj!ZGrI^quMIPDEoO zJajBo<++#Qi0k6d2N@RPR#g-oK+0qA4Rb$VJ_ist{k)otdr`%Aad!Hj=wES5j%0;- zbyaU~@^UCK+IDcA{Aq`>YPd%6RD$LgjKH#F;6B2|!oviOQ(0(s_#Xk~PFnCPA2S??^wpLpatr}GVV1mlngl>?F-E-C5f+4JPv{Cpy1EF zZvXc$10LqeqkC{r8d({wkFE}mhIJIQ(v_EPwL5}Gt*h89oUEs=vzG}ad?)oD0>%eu z*wCEHi1j+ETDss4Lx<{@W4{M zV%dBviF#k0W{+-!#9vrpEah*^zo$ut#_3M$hBR5u+_yxyy?WEIcXSlW0z=-sc9+D* zbt4U&pO!0|EmjIXB0v)h3FD8}OtDQkOs6p(r#eZZ-5`Pj%hL{lg2q}-zqLnup8@KE zo40bE+4=z>*QA}U^@D2Pxb!C4L}S;%P2f|v15~ZUO8YG{o~{i4NPkuqKgeP}16Vx^ z2hMuX46GS|Arxs9)rBYgMY<)yKPuMk%7Y?x>lO)#h<^(5niF0PMnsBr^!#2KMu<~9>qkqFYp|m zB5EmQ+u}c+xC9T3L9x2`dV{WPp+J*6`-V8HG$I(QUA<+0S}D{`1VjcS7_b8q_{cUr zVT_%Hf0e(s-v?lhPA;or+X-F(MdLgH)cbCGT%iaH$qnRUQkSVcmetJwsnnun2cvwdf3-44 zYPaR5?;9oM%X3Id)=aM8lOjM?^gA#ssX+4>EagC)&M-9!8O#0>pU^zy4Ve2Jln=cC zpY7b~D0f|=4gK}-iXvB|^BVU_4b4P3p+DFF$x&L%;nK>8vlY7zlE?uRB?L~o-kB+0 z9b57tNU8&g64w+y^(X>3=JTa_z(14pU290o^m&de`mjfjH>m%ClWrM7?)u6nl~g;$ zE)q)MD}j=SqB6M(pD0t`7#0vg#lA1`gm5LRP@3S*Y{_#>pnHbb#mve{d4uiaT^19l z0+$}fdcFnEUyJNiYrNCI&<*ioR@72mreIa+hn6*mkX$04-S;Mg5ag@Usui9jaq1

o1ef#|6zt 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 Xc20C9?JVdLKk>0O74zQHM#^lScN>HkC#wjPL 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�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

j$vFXJc888D=REAq); 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

b;KMSu;hn}RH(5{g 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%0ASS<>fvzAzK``q}}g5f$th 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

7gPSD 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�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%0AaO%r>ZGpj5fhH_o=VBleh-O!}eZ9nc0{C8$ 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�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�U(#BZg(!)z6N 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� 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

AtU#AY-P1a>CpPmEFBAg% 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%0Ah>8DQ`LnW1h2VM8jigi?!wYSV z>=AZyXBOpaUctdZH;0#7IT=XTXhhRJCfr81GwUc_S6_|ybH>e&h5hQ=a4?ojkzs`> zh>pY>DS4)4Obl+#YD})93X=8I)=I(5vdZNkY5WsL*74lVk`B3FgL`zGjJI!KNnbF_+RPX8F?gXTw<~kmhf>`&J zYGvp$WpS5va=LOAVU}RmX;3eUEBxtfxE_1pY*L(n_s|qwf3QL7dL({Jsal)6heqQ$ zybA-{1jV>(Wu~ldfvd_uweBC^o*>8cdBIHynAKL+rKP zq%O21wTq}ICQecF>za`*?nuynu-!JTL_u_?1EI$K`HZ|emKd^%2rXp2JrOk*L6CUN z^jS=I?kQ`0A!zv}tV+F;kR`A^Vk@!a?4_AZAF6QOiP|BY6+Q zItAL|$##)A4AH-fO`#C-ot>}!aE_7Z?6(NQU`cfpiY?mqH2Ks$$gIt(zuU8C5gLLp zkcay1dv_FONF1U(S!Ed|-M8D>xrKD}YV~KZEnB-zI z=8(UmZB^B>sINHrcMT(nX7e$PQ&Rz1*$FN4ve~>Rs)=12)=|rC<_pu5VU{L*h&v`4 z?}J^D5YoCvv-%gIMDNhY$bAi<7EI0(Jua?rhKH~)!M^naC~Mf$PoNVRT{nL++qQn5 zCq@8PZ2RT@%`wz}5`1_ZO&sMlHWB(by4O=pF$y6gOKdz)yk4IXck}LD5Jal$;Dq_` zO*p6lDj^z8d>r*37O58yKrx8;| zxMzBMj`nm|Vh%}nL3DH2wb)5GLZqY-Wsl5>&|*`b^dkYR^#wHx%KJmU?Ik6}>oGCs zWH5!o*#G)i#P(?H>QwaEm#gnkGiBQOE`n|@F$nBrY*|{zU4#XAL!Gb_SKNR^mp5sk ztEwZtK5xu3PHBPGe2-H5wJew9JA|*(xdZ$-1;UR(RsSEB?tweArfC##Y}>YN+qP{x znb_tX+nCt4ZF6E{;!Kj0=l#wfOD&sutV}WC@!e<-us;SxhN=r|hGWf+O=e zk`D`+D#^0=P)zgdwMl~f7qhr&Xj)?Zxk7>*-@e_Gm-!?S!tYJ;pt!Xgw>Eu{bgQ;} z!EPE9DckWv9y(&aRQ3{G3POGJm;>ATlDB}PLtPTCoKO>`(sB%@6{-79|H|DOch@7iG?-aK7Q9mZ=JiJ0Zcqdh1VuVN zWVgT*R97WCx{n3Ud7=V>fkzZCa2a#WG;8911Btcrk=3S)u+w>5Cd~GaP=TeJXfUKP z|K@<*#)uYpM*8bs5<+wZJmZLgFNMcp+HCwTjj53Z7Yu0>9$)fkg+obfv`&{qhYF|2 ze`x<`+GQTtr-t1Fpg3`AW-`!%(w5}_2HOmm(0F-EQWN|b7A)ANA#9bh7*>=98Vu}X zO@FzL(6#cSNe3&=F-dOZZm2;~UtBTao}frv5V9XmKQXzZeJH+i2LpQ4AZ{fv5x}mH z8zPv8d=oS2}rC%H}M} z(3vsjnJg&O1zqJ8e0Q=yZk64i7ZGyKxCI5FqNIiiBk2g1HwQQ(7-T+{^r0B0tfLJyc$%)*z#3L>x1XUTe{ zZEneQ0{>sKw)gb(4%(9k?@&ztGBi%^^5Ed+iO9L!*cI`tymKnzYs~<0nxE6iXuu_n zkkCQ~Rxx%{$MkBE_;{cAV}bM1TL_GYWkn3SN#Q8{Lh)`TJhAL&G`V8bh1iF4Vn}Pc zwqEv|M=VoWhSSf%ssJ?AFmlic#n@fy9F7rCnl}m_peknvf*07(@MaPFXOwJ`Hpw*M zWB+;$E|IUesy-|78rF?F3wc&y(oz|!MZ29uPq2gnSHhI#0mR7fi;OWdb|6O}gcTIRsAgsQvdP59od8Sp zdUe>mRdF9Nz3RN!zg}V_Tks7(_3=4(?u^wgyPR~-y(EqHpL{(p;wY1CmwC^6oS^Ge z+}?Dz!4wii*|d4}m8L?OB?7-apPK=R>#U5IrJ$*IqXK#AwE}A|M6G;Ar}>rqrb{0P z)688N9uzR%&6L~NL4Umkc_%t?l}SscYeKNkr`qOFa*h7F4EpPJTTqk=a=5_b7rCv! zMQse1)$(528l?YNR1Vj}RX1U#=o_95bMndwci6vxuRTv$jhCxmpEx{_Xmu{6EYq+FdL{8_k5S7QM0rtky~EBSf0OTUXiG=c+f^{fXr%p> z@$dT;7l)JSA-n9q%j~5y#J`0673H!%;Wl{`SRPC|uO5%i+LfIJJzw8By5Fq7CmvN4 z!bi?TI8ftmP+nj^*khS-;mx~3bw#Su!_Q^`j)T9IOe$LJ;+opG<<7-)XbOLo^qN5Y zJ=D}kX_JrUhI=3`_$`xu0;(!ZETXoBqQuj9p;PEyn=+Sy|mIXri%X%M|pwU-FHofvTxDppc~1cIBWBRSkqC`3*>CeNnxt*a-7@-KV_|)o}0mZ zkk3$l>1QV>MdOpR#L62`j7Od1c0)o%@Th3-2bHH9^ITKqhfd?gr@64v%K_wAOS`I2V&@w*n|Z|Y|6t_ zd(=`9@_(K#2pWfL(r(~dqSw4~y_k}!UePePk9GjG>+T}xkxqxTXrAyE{KCX3T#B=r zrm9a1q~pqxg=DEHcXOqLwVSk<8xiXoWUm-Hx)N7oXpVdpqDn0x{MvO;%o;3F zPFg9-h3bhjMQh5%3dEC}30$WvIy-Y)Ve_F#yBfg80^*SEcn=71_EKq4IL+MIeOf(c z)JNv6)CXsP+>%_K43`G%`2~T=@f_Ht2G9QJH{9VH<8;y`;%a|bB!z+j{~o|gp7@gr`21@w~WVs#$973ELyGE)&@OWPa97tu@LEUusZ zlziw)yp6G}7Bdf!woAjMl9Zbp3`>9+^1bKBDp=r(tZNGziH*c*C2V~F}WW{7OerhgG z0dt7WcazTC`T;BZlMlX$vE?$_^d`kTucyfTEx?tmP^ksIqXe#NxuXE^K3FAI+ca1DBO)`c8_%WOd= zk#Z!~kFyeB;JX3Uv{jDkY(nqE#pmHnC|#S%Y){Tir8&8Y^ZxfDeAHhI zUJhPA3n1frh{Kh)9WQ71z)hcuf@TDlBykPs1I^0_lknLWb$C3ZX~n+9y_B5muS&HvMo`S|@o(@^il0g4AIBQ2Y1! zwDtWy;U=nG+;TObd$d$i^Y5W<3WJf4n3X-#9mCeA3<6F@oPEr{LpEpVvtr zR|m%L$$m^ZY65}BeMmx|vzXh{zNe7^#IBL`ZAe6XAM8{n9DHYwod;ZMDUHyIo~OTG zj9;fWg^pjV0b{v{|D@0$q$JL5-?rL1u6eB!AU);MrjpLj5AF~aVjEjjoS!^5H{w=w9G`}ljY<^A5n>4yDiW~3B z`MO*4*}){mHhBt~m;svbFIGvf4CZC*=;Nwk5Fv#`=xj8>gytRWHSDHxe{vP(l){_? zC`a)U!_T0Z-69yGtDyU-pi5zR>&=*C!ueL6_M(nmj7eYlC*&emq-+W zS)gg9zn%;uuETJD3XD{Q5Wc;bWKqaJBM?3%?0ex2UY~z`fVpHDhjxa;j=WPS0~xYkz{S05SO&-9i3DrqqI6N z4=Ykp{&AO!YtXycR_gm<|J?~)J&Ek_UUk~|rII$&0H$S@>f{0}Efq3!17Qb9i2PTZ zB?jKH>ZGP*rzO5bGoj;M1|}k1XO4qzB=trK9L)d(h@8d9UJ>%WP%Y=CNEVDZM5fV$ zp=22qcV}m-g6AJ*6_0uu457|dD3^X~lC5}a+j}Q0L#92LrlK@~wruMdC5I8nQ5~n5 zqW37W>p@}*)wp0S#Z409kNRsUK;x?cmA5&Vy*LTafX~S(qk?_8Ge)5-?7*G_GYRbp z_N%<2=I1`}e8dRiulo3FIZ(I*kkn6vW>}D}KQrKxnUSp|C&Vk9#JSFEUiCCZi#PM? z7YyCp5|r~SWC|41k9Hnj)7(r#RAoyJ|M=W7PLVHl>u`>7kL-kPM{llJdSh16#wf^e z3WIczHaGdI*|PBb$1!yYksX_fOI90s(ER7IP)}KvtI}W}F;xn(Cefgg`=3ahIjc^* zoZcG*s}r0kN`b|;3C`?S24gTo2#uT$mO%%`X>&(~HGC=mqs4&kQU9u;i* zu-&qcNM0FDem8bk@kqz+K`9?iKv@h`^s34 z&Nz@%Kv1L@7`O~1s6LRqU|7i-v4$4&6!t=-?cOK^Fa-T1-sq~9ga9AvFNii6*pQOY6+&K)WsY%AN{T`{RrX9)2+~rIfak70KRd}ibSdS;L?K7v!)h( zZd#$3{J!?C6A3(WN8lIqwRG z)!QktL?9fT1ui`$ zUC#cq6ZE{&Caay2T001O!-)KDz$)w_lj?``Q|7T`g=<+f&kH)>4(Vjxr+hz05kg?) zSd+QtLq{6v)?<`>{F^Uoy-77m>$jg%PX7jieLJ=^1H`W?rZ~;T9ib&5c4kqoQ*zAW zerowrfQ#9HpRyXg)1kXbgjp=ykmM2)X4ZTd`GHAj%oUc>GegNwVfJO!Ak6;1Q8U&fb^q;wKXQ7@V<)<8{~s+Kg!U&=#)C zC!e5Z;EMPZ^LY`tSj0Az$Z7Nz6KLRZp4}Ke(!kJ}*GE+xH0Xrj@PX>4Kq!8S;SGN1 z`KVRP1+yi0byaX(i4=K=UD$0aG9fev19X!md?8NOmb3a}D~@l#WrEl+PuP_jG`~uG z>4DS3A6rA3;+;a556}0s%|=Nb0m|v*z`*O1M0TZ^CWAUmDcrydE^P>GWN^|G_Ia*C zo!X8VaF^9z6Ru!N^-;GH3h-!r;Bf;*O>l7puz$|^p_vHv1qNl4>U z6^cT`y=dC2LiDpfJqASfKnjllx{#j*f&3RnsuVA^Yl0PoYJHTEjc;H{ z5}S@^YTm1!sPk9n5dm>n)l~f?3Z6=bTos)xVMb<>#$Xhn+%yFl3?c7#6Ls1dcPU_?oLo3BdRd(za^D;YLh#w>ki=;UfzrrVh^{5)ru3LjG0V)7? zah_lqkEFt4W(=CnA8}%ENA;_YDZY7gND9>CK^maw4aq^Nke7d_3K6#~6^4O8b}SPS zMod*+Zb45Wf{gtzP8&e+kDlt*Wwv+56+5`tvMV&x9a)k2Vj6}^qiQ?e%b5CH9Y~Ou!ClR%WzIb z!Jd+(tO&>DQMf@|!@Nw4s7<+d6|kNVY#WtFZ_6%~4iQJkc@Df3*O)AYUv2!mwdP_t ze-*r3w%%m}r;$YI8dwax+=jFGOv!4wrd|?#y_ZZ<;K6$+^9jS6FO&)Aa$33p*#z$x zLpQAFCW7Og%kx$qAju(qhB14*J<4nk>Wo4#4 zkwJk^za}*^I5I7J0tEvYSKk5&5b_!9!jU6 zYOb6#H$cn!&mO(fpko4RCH8Ap9hQ3b=Py4mnEaG^4Z6d%Y5c!CyLu$YI~ftX7hN)i zf^j;d#!MahOcNTcF>(pos*aW2Ij6v5 zv0BhUU_;G0zQWcerlgIOs{IL|t*0BSvf z49lyjUohRS#VU|#t4*s);HGW74sva5drYpzHUBXN8|0k2#9-Dt8FHz)ZwgNEc(>5E zIR^_oaY_L(23Q}dbFa*x8C9cy`JLAc@YI1OcaUGUE9>+eg5aZR4s|P?boidgSyRMB zk8=Hxu#?t!;jJf5O$M4yX)EH=#a>wl?d+<)r`?T$#E;t6E76}Xcu{L@28hiUrzr~# z;>3L|uw+PWv%Ga|P}{CcOfqzAhjWp@w(nVT$RH+a&oCqt0LydIaEyPScN#>|>?mD8cp{f!u)c=l^ zqxmhM)ISCaUsM}LZMsq;?k5j5m-A?T)a*r0vB$S%~`TdP5%uS~ZNTVwbOC`p~LVnHu; zZepu|0*a_l+w={qz=sopB?Yh zHn5?4ZjMf8pkU9KK3B#PixW@<+Ve96d18>FJYT7*Ve@#x(pFLgu4Lu*S!Wcu->ml^ zdr8!D;&~NPmfl#nd;>d4Pd!CX-)c8Yv%vtvl5n-1**Z0t1k$KZv@?ggE$Q>xlYb+=0ho~O3+68qY!c|7_} zH7@eridN|rtHZkiil!Mbo*9bB%Z`CE7BCNx;1#`5p@_25>e>jJ;iA&0${j7+sNQ;O zhuA**5v+$rNoKh~qaJK`D8LoivVA?&-xECKuw&{IDu@ZHMK4f6x=jz5`%K6N(Ezwg z?7iVGoM5+c6?I>C6`bKTy@!mHKw8e$d=ulQFN!dnoc=YVM_So{n*D}#Irl%@U>v&4 zi564p0){}4P3JfZb|sV;;XQ>lfzRN(tfi&HlJAIiy44~};P1X3RmNsWy{Rc$xrdgl zFIUGcMToX?13j*LM9Ke{WiPAT$%mlZKD<_F?uo;ZXIen@JRya-buHgx(L5xt z2UGt>_K6{WHxvmPC-*b;wOen6#g9$}fRBqw7Mr=VKIKT! zX9ggcL&eKp2fD%V-vPJoZJ7^Mg&#K0(6YmVe)h+j{!gCz^ zz0N>pV7(uzl7fohAl?zBdK*=ILFs>-$i7_)c#4EjBdxWC#j<{Y4CmOid3JMif8UhZ zLu}AR5t_aX%XH!hpU_uOI^6?~_L?M`4Fw2WQrz=>pg72QZjm=t$+I5O4hRLC{saJm!Y znXiAz;S1#t2BlpWYs{h9uaET~OyY77WyE z1_kTOm!e_GYR1dadz(5zY^tupBzx|@J@a@;Gf$0*slaP4?AcA#2Vq+|q-;1<@lTW5 zBqF_2vLgoeYu1KYorq8OV2sJrBWL=?8EolJ*S9Iw2%W|H)FUjf%O=v+i>YaFy+G4b zAvK%G9x@aHhz{_FE$6WQdfDO@Om?kEQ;(XtCGe;qphQ5kv!&6tblP)J8vf7LjjEQ_ zc%6V&1zyd3#|qR}-#oKxqH4S3jH>Tzwmg|>tuuN2FxVpbkW|q_F=wk6_{v?pWZY^N zr0F6yu0A?YCZo1)(B0C9t31cYdb#d5Fw&BzpFLKryNF<*j~`CwO~(;y-*0k#0K!m zdEu;ic|Lotk)Yx!yl?eaw@Hw1AKAfjP8C+$ok&hA`|y~@{Fov%!Rlk}o4j=hK6~&_ z7c?%Haf6;OXdHU#%~(RNk6QbKbWv=~U!R!VvA0w=9$E6>OXU}1L(0wC5&xa)8o5xs zrTU$)50IO+X5L@bQ2L4Bl|rxRu{gqRq_s?vTvkO^U_=4x zw<41js?0>3$Mx51Oq-^Js9h7~Hp@M;3+d2UO&*8xY%96AnJOVK(0g<0XlC^t1davB&iZEd;d3_nRXRJ&Poon&G{$Y zA>~b#8ZQZhx4ep2rmJ#zyulDqxO~xZD9M_Gj2TdQi_xb>;v$pqGPS*l*)M|iX>j4HGc#*T2EN!%o>Inh+lURXx zo;@xHIGhEX=0q9of%)g(p=Qf0x!plqciIaP3F7Uq}vufgU` z@b1Wj;Tq96pp3DeY|(&e?to5I|EB56Yryr*vy@yF5Io}Gu3k$fFiSNpym8Yf3U$&G21}+pl^u0%<+b>Xwd3b<7F8U)D>n+W$HFhM zUE+0kGFRY=a>S!cx42Q}McK?L%Vr?$>F0 zRuA^8N+tOIfr^x&LX@-7L3C`Yis3O@92T%o`U+6!vrT(ze-jxwV){}8)V1ABUs-Q) zdvQD1=9!h}cV(l`Sv25Dv@2bhbu0rBtp!YuJ`ggubGq=6E&0sSbekAOLhPU$;tX|$ zULn8o1ODA=Gi7fXNHba%)WGVKgKV=0PFYeza3%WAMz@1Lyaul%>kdAtNbJdd;Uf=V z8#BD>b$47v4wFDM0%Zxt0qGGgqmZe+BJ*t(cbCbBpBj4`Yxl^k=r4*q#d7?)FLQG~Br?%+>`;C9s{fLGJmYiK5KG4Cfvj>CO4L2$rgd)u^$tKY1oO zY^qx+=e-6$7<~2ZW#vKd-XxmrdY5UGXOBwXZdAx+QN)V;;5#3ptqJUy9VU0yp^P``T%tGmUG5q9LWe8fLiVL!W>-M>Y*--cE9LYeq4o+Ek++ zrz=A)YGgM<*i)e?q8JMsorNrVoAdqcL3GD$Rqd6< zp?{wws_bAubImQtd#F5_bp#_d1;G!Vg6t^UkpB=k$(amJ4>wSZV5G(YiGR5TWK zBCs_MD>JWK?&dSexn3~+*6e$`@l4tKE0aX-%hZ;$R5xX`7`Ih&m*afiOV_#Qph4-f zD$i&3s?rMVS)uZz23Wmf9+mAzxU9>(@MKWDek_XWr&Q_HczdcF!&}@Q81|_g6+g3B zFi}%bJoXZFgX87>wpJW{3D#kpm1#<|6oTf0YdUaQ$2(Bg2%(+mHA@`Hq=BjF7Uy&c zH*UqH>rjuTrjt%4L7UdN$4S;*rS0Ophxe4KvcPuV5DjA_n z)q-^-2nk}W-;Dyr2myB9IDe=TvH^tfm#(W+J(fAyz@yydl&g;rNuDQ4^Ka3~E%=5o zRFY0g8_H{bY&T<>GOv(iR)SZ#R%fz>Q4P2jysJ|q1PHgv;mVtzhtV2TxB6t*N|N=& zfA+IziD1cw70&8Jcd1zS67|=c+%8{?%8V8Or#oy!mV^yq_Xy9hJVpn!YiTOl(lCefX$b2~~7wU;C&#_^l`LT|ecXh}9|E5ig*z`o_8F{x4Fw$&4z3o!=nw)lBHAz@O zXEt>gg&8xf&;`nQyI5QVh(e<@DO=GofPbZ;ORS|-cZHJ}I%p;kLdQq&;VTs9hFUwa zF`qDpDu!o?(zu{IKgzqCi&9&}c>t8?G=q1AijvxoZK;}fDu#66FcHmdI-?I=4o~FR z_sCZ&i%=kHy)CuqBeK&MQPKjl+2zqt07%wrr(H@~XNBVU@gYrjRaU)Z<}K@L2B44H zm;p}oMDQQW6FkQpH8a+V8$C~Ei@b^+zx$*wlURZ;IslA4HvgwjfA{0rU zuS?DZiWv5Wl2T!-x=42=z5SAseesh@atItZaF}=*bL%F)2oGX1IyioFSe+@r&yc58 zcvm=0Hbgd(?4HvhFY2qPUHcSuy{gYGnnmLcF;R= zX|&*8NtNbe8F{NUXKJ6cZW&N_!2!(3pOZ@d7ClQ$TaA?JCC9k|5M>LbWU=+^Vu>xQ z>P{GmYcWx>mS(YpO!K(p870j34-Suo!zKqay{-0P)!Z7i;@q@I9)1D^U2u?%Ft`g# zbcG^?$F%w+RVVZpdyKf&NF+;Z#^IuZj#X3GUy+=|CGpT-1Td5r3>C~oA7xjZ%mz^9 ziHgQ?Ksw~4CHl{{P}0q<3fChhffC^X4c`hp z4A<*C_B~o>lv_lY#Z>7c-eE3(wsJtt8=T+s}< z7%wkAJ&btyeSL{)>m-8^wlqL~>UyY5QblWlVQE~_p;_=$XWT$h5DhrTi*cCP8Q2XT zolK2J{n9yFmR4@0I(Os$lfsuRj$W=#0{d({bej|AX}XvN^QRPYln~8ErSZ-i@T!V6wxE3_2_nxrMEDBF11R zoi|hTFh!%i8sp2PAm{X4&T&pp4yjQ;X0UbjlJTFU3qDm~gS5}MKT3YZ^zspS=`tM% zp9A=k^3Fr(>ptwdF&PYicW(X9;DLDvoE+f?yP8C=M3IB){ zBS}PY?6l-8)JzDav)OdDabOUeL>aL3D;Nw~1JI(kj#lM;%6Ax7* zJsf^B;kWiM*|SO=ltK@Rb&$oa_eP8)gBjdN@&&$M^;fjCXi+k>x*4+Mo;d%U=PGc1 z`5VJU_^r#$JHtg(FDtleG}Ka)FC}{VjK1UXjjH@_UUzPXtZiZ4I}b}2PM@x(jxKJ9 zKKUE9SPexd$hy6XjI%*2z04ZbaHZWqjCb{T<3gBTn9Mkb0SW zSCw+(toqhclDy7+d~z>g}(K?FirDGPJ=$u>5Gc-c$yF2i~wJOnjH zu@5MEb$oROCq;xgZnwCAaVACaga~%ma9M>-)bxDLT1F(vQhXa%Rh@Ml6J{3%wS=-L zG!I%h$Rf0=11Hg*B!4$o66!%TuCCZq>L(>;@gUYf`~>lYSLqjWF^z@;Tv&b8lWUPG zSNy4zVncc<79$$6jijwkl9*RC^*36UR71VmjGt=^w0K$CvLCTIlhmr}fI51T+Az;_ z&#I1Qsu*Z&svHD)y!8fJjm^2^SyB0!zH$jd7r!=&JhBCwnoj^kn2V86p^|E+iQJBZ zP_)JJI`K8qEOCbeSd026B~~$-#1;FD+m^M;H`rlmqfOGI&Q0|*;0!JPup!TckyfL( z<7{{{Dg6X~CrL3d8C!x+O@y}fT{`Q-?LQT1srzW_6#@jc4^4KNiha12>8(wKncHno==sN zo2lSdamIt90}1d$WqwIVp98aXO}39>qq$IGsT8M2rP^sl!Rqdcf(+F-P~T%OG)b{t zc9D1u{zJaFqF*}B&kc~co76p2adU#NBu6Fnkwzox!Cz+RTdE!dO`^HYDBb{7S?DVj8H7hGL-FI{DnX2qx zO1c!NG>BX(7r`ZZO1%5hjdUv<>N`?wNuQz|HtRaQMx(BgEIy(KhMj<69r5zeTUNYMeTnnBqO9g z@sL4JQQ5dk-&4NMLNu*no+_V0CR!ETD7v!Dy`qyi@d692!YL!xAZ7SM+6R-Vd#esl z94)uyjNsM>zu4%unFr1=k~qIR@Nb|VUu1~GL+)|@t&G`Cnap_L zHKs$nJE&)S>%(}FVPglgbTS+@j18Vn@?SHLoxviQ(F_9$1CpQTXe5qA@!0B^i9%kuSyPDV(Oo%EQY$+MSz{#!gj?=Uy z&8P`RsO(UMv4<(f=m*f?23Q$b@xPHOAGxKB0Yhgn(@aqyiS>I+)^Q))!AJNH6$OWR zIc_!<1|DMSRT}O6I1A!$=IS!(F_MYGy-wR>=W?ijn53E?C!T4zccSnC`Gu4=!VEW- znfezPjrD0$08sL2UR`kfhh8H12>XO-^-+E<{ZPVT)ZVE-^(|iL)s7Os|{uA18K z^|wQ7@6S~jJ@b_v{mq*Q^0kwL!V%<;(bH=m|2ovEu%2}{;+I{> z#Ls+Z0C({H;6ybO#pCzJPOMr+SluINa!-v%n|n74&HcB~bZOcG=cHI+tF6;aNC3j!77^Wc52ExAO`HXfICZ$I}}!PDh9cbf3>)3NwRdLuXUiQ zXIWh<#k0X7CW+pX4JI1o{o?9vXSuxHoFVG-Zxwfx`U=$)M+Gl;LFWHb^am4Dn@`_G zSE5i^;=@p&VwVsHa`$v&R_FU4Er&7P(8O0Rv)jIV9uGB8#0WgYMHyMy?qJj?@#L4B zBIQ%n7+CB9rxh`ZvgQ3RzK$)Bj%LF;UUATH(y9iS>?D;TCGG$3a<3|2!vP+WJ$m)+ z!l&z5)Dgv8mUGu}nL(6Hbd~x7uhXGIYZalyBHxDQ8)|ynJyG~g6*U_*!E+iIVAL3I zCM=CE0YfWka%j0bb8HHSqZV1~=4r-sfh{U3D`z870NDkR3rE4uuK;5TGJE$bQ|Kc` za#4MUFHwm)KJWk8q59bGbd?0Qd~AIzFq^ve$!VzRvuT|^*Wh37d3MO$W?}{xS3Ug@6U!JS84OD(;swmfM`Q(!);Sk zuf`?13FO_k@k$t|PXez(#i$*nK+BnTG!ITa`SgD>8#a*e^znhq`6xwFuA7}xOh~)$ zjc*tHc+?{S zPp5a^Opc>>VXj*Q*(GpeNTya4oOUrJ?_v8%iXeaErKS7)>Gy?x?hMouDvm3n236=G z-9V50n(hUGy2Lh%(O?oZ%2O{*t$m1_!q3LW+-i18qF6wN2rrQt-G|bV`Eoz%`@C3t z*J;F;UieG)=g!VV^FHH9|1Wl+-Wi!h7RXBJVo2L5;?|96#drTGUCA6V(ZlT~q@Z)Y z@V*EGh(^8g?+lky;P(EczK%NA(?_3S21^QXKiGPsr$~KA)P)^EX{?aiaMy$X(MC7} z8~3v~-1`q#x=|##)m^PeD7yroiN27YfQ_ClgGx_c7SauP@-CXx-dRufz4YV$@%cBX z_G0T^mdeJ8pX?Ha#@@lktg6|u(Kh|12@ z)=9NJcGH{jZB(;H#9w_}y_sg&U8Q6>$NI=hMi=9G78qUy@}S$XP}~{vsG^>XEr4U^ z;q8gZ1f#sR|prl$tLk%nA@DSDrPjz)QpatD;Q?zO$6RyLCj_FOw z2_=%lMCIC%pbwFNphtA)xAJfn{!Qp0{H8GdYkfU^Qb3%3FEKNJcS3w?e_e8!_(C2` zlp?g7U6$4FX4>XQ*#If$HRXAuc(3nk@HFHXu?SRAMEJb({@3rto7Kt{^Xw|~CIfco zT!*P~l66NvkJr;)A1>T_1zf36(tnbv*65-V(vQ%eKYN3AI|6oS6dk49h*>2e_yyvL0X3z!$*;T?ctAU+XId-LYTh2NfQ)bdA=V)3O^ z2Aw2bR3w4gtDcEC7tlrW%)cD|y$Ofxbr>$?blziHAgqg^L|WPtz-(;5=mK+ci zge^#Es8I}8VS0jR)YD*S&mJc2>9);-qc)mdbTWFnxY}pY!gabP)W0b)9aqIv8Zm~5 zPy*FEBV!RRYA1%;Xt=hom+0f`0t zc8j?h9}|>>o#~f~BD|IQk0oOQ7vv>-9At3D?p=huSCongN^Bho3H%t25={RmRE@cj z$W(TW?)1a>I7e6hi(Yo1jH;%6)MwHWXNT$b>9eP;hp~Aqv!I#^`Uxyuro5kv+8nbM zCWG+{Hkk3QQmU&Wf5$ZPBC=Oiv8pt**^l z-*x9}n$-Q%c{bH;ZmD%QoA3V-br0T=E#dy~W81cE+a24<#G2T)ZQGuh6SHGyl6353 zVoWAFznpX5d*6Sc*JpjJdau3fsj6o|;s+2DJWAvW7}vLCJc#K{NB)aKc@mrQ<``;K zV;c1Naq|u1l!VQ^8lKxjucb3^`HbYjILJu(?W43I8>^;*$<|X*wbmVH&zfHe^9zOf z4>ULi-9*g?1{iRD%+c1m-@DGFFPH5JV-nvaSL(IuL)P>_l9ri9VNhBsM<;_D(hqUo zi7Aygp1T-f`=PDj4?U`T@%m9ruw)U>t(n9=D1`P_Ria5cKbcWxXBxh?Dzp1z|Lt_V zfhOTxw~5~$uP#aQc`x_XBj+otKgVsmK`ug^^ex2K=crXC1f|d~OjWkSS}E6(meQ2u zA+GuQp@Ze75Dx4NvcT|*8h8!X82d+-7?R0hp|*50Mqk_d+~Bxqj+-oZQQo%yFD-Db zv%;#ZFhL9wcm(>jMuE+hcIfNZD>B~zPo*t-=^}=W6f7$PX8tr>t0)LLq(;UsG)$CJ!jV0 z#wlNMoC5Zf-89b-W8=&SLpb@ewD_YVX2CfKM)zwNRhAMeAp{!IkC4q1szrPl{96@9 zaosQ|%Zqo(va=5a!cokp37lcC@Z%OucNV0w&->Izph+sV8rIsoeNjS@Ypq5xX9g+tU& z2t)5+Oj>Gp@9kogUZ)~nP2$c9qRutFUwvE-w#hm~yds!!_Y{$HM)Z~0<$8GZvoiUu zO;WMj(b)?Ke?Edu5S51bD_nJDp?DV*bd0KO~$9d*TOk;w+*89t;h8mQ;f^p3!19 zCxs|u=?d{~W1o_cW^$ZG``!#7n7-EncJe5JI0_Li>M$Ss^YMfqZmNKjfpy*oRs-s7 zc*F`)%Rq4HpACPA>R`am8ck$TYjDTeH|3-wytn+@W%3^iz7rsqx~%blO!JZ2xs|gl z{x}rnC%S#}_p^WUXGu>@c~=X;X06tw0;e*-e$1wnCfRSeR8rN7arI+f|K=1$_I0ib zJd=Bs>Si{@qFwXW`sguge@g1YbKtR&cY;XC;v~t48Vo!8IQl0S%KjOUtR?tjH+Vs7 zFK1mwPDr6nPkMvIpiY;^8<=$!9QMfmft!;7UQ zMw$B`I0y;pJ1#YJ!wia%{bAsQKB2rqK~xZdmmo~L8qROkK-PnUETKps(VoST^2U<|5=`|gGMF}FE8BVPXls)eo6!b| zkI^Q4kJq|8lFm!RrqelZKAUo+{2|o7$g#6&D+e=B&k7XQr~3L9L@p@NPX~14PU-{W`zn6Yd^wgX1-ZhvW1pm zVMX~E(Jbgck}Fc$ukxva1S4C|7H#HFFp(C6u9S%!6{tdL1f=Fn2L92!{gn_0jxauN!Iw->sK zK$%8Mp6XUU{YJ2M@Oe6lFOveb6RqRx^&~xbibdSvfz);!f9}q#=$w_XR3A zdKcNcGM3~@7}+9*I!j01ut4_))iU-0v*+*6&=!q0er`-ri$CoXDHlfXm{ zSp+AJ%IHF#$gtLiBMBO=pIMme%L)w;~ga7*FiM<|p&RP1;ct+B%y=sW_ZOGJiT z&y$3+Celqk{ujzjdFwe0OhqM~DI7Jw`R0ftRb`@pIdf@{=;3Ey{@&c%H&QxlWo#2;S-Y=q9V-`zRyCe|m~W5W z^~51(?Fbl7$GM+Sn+1USN6Amx#Q?vMUZx8e7+YPb4*%S?pPo;5 zx@>q(Hc$;i_XByR4OsNJBTSS~5ZK@t#h5?RUzHK|o?K$zQDSG9X@F(92rHqQ5J_O# z2rY6K@u`S8(5WZ(NAik#9Ezd-q8U6pLs)0Aj?lLZlT1{IjW12*Zy(pKUL%2MpW$iC zbXqu1Ohue5+Ov%JTrERopcdk?b_DB)cc|ZG=K8oOxsvCV5;n-4MzKgOM*47_5{P6- z>$!egOc)U%xp1D7;@~i*+z(~-o}?N-ygIxPgf9IgMJ*@k zxM1SBvNOd|20J`c7wc}p*0>*QGWz%FJEvQgP$n3Lmf41kzJd82{0=fE;bm6AcFe!i zr}3>?Wsw9`R6iuUEd^n|Yb8|7KQlrt#a*%(b44vFMJz0}@K{D0OysycCr0o z;g9gH9Y(hn`w9!8PH%%23$s=nLz{eaP%D<{l*C7~v)mQI0z(&^?RLAmweU*?u(pyt zm-@Ox`RlU!xdyOZ*m5(6ty;Jp>Etmn>5h$d*XvV9H_Hl&3Qbng7Lx^l6gQON_xj>5nyIRLgjI}V`**tL<5V(4J_K8SKqq{! zuKxXm5_#M$08nNgYpkx>F#iT~hK63)jZ22OWeoad){tlpJ{odsbYnnTS(NJ)J(^ZK z8oJCcdG^2nu%w^f>+AY>YUM6D*_D3N z;oY{|rQDhhec%kDA)-yp#uhlo$%&mfbZsiCB%R+J6dO6S+4?>KI2^O1l z-2d%ZO0#10bt$vDyL5q9ICQHGEQoC8vB3i+qPcg3}F0b+};<=B*ml~ohVOeGBspM{R+0yuLr@&`otqsW&_duQs5*VyL$h`+dlP?%rJm6 z)pO}^A)r|YyV^qrykt!i{;P_nw5hvjDI3Tzcm)^tn_2#CknXkTDG*@OFo3|+m9W9BZw1V&n z(%fvzKI?^Rgh*l1LK4rVwNoLy*PZqxF`xSK?39YW;JB&`pVK!bU}@#kQW#`>BE7Q3&Pk8WO4@a+wSVat~5h zfTJxfuNzZEd}>*NDYUP)GNVz51UYns^je^W$c;p~N(YNyLEdoP zDbAs~6qJ-?T84zcK-<68Tv=UznS7>O=(_E);>*)Y(jP|QGoWj<9D@u2Y4UH_w3XU< zc#GD68oFuw>-Fvl2BrEBrf&N6dpWj#?_wqS?e>zi$~J73qoyR&^wMpjatrtT>$IEZ zC_9lBtWdmVHCsXozN{zs@@^jd^Mq)|vLiV{{Abkua8QP`FOM2R<<$*;u9Am?n;tdiP%!>iuoIfx?AMw}%PcmuQaOu5W(xdMPBjPHI{y z-wEgh@GjjuX46={2UoQv)IGnZ|K-lx0=TsBR*|oCw%&rPV%9{3>}Bc6nfk9)&y)AX9st z`nDlPosIbm0`V^-++3ZhOKdFGlH5?n{GW>kOmht<%hjwRSqzUA%XI$kV0s_S3Jwzo@hLIP%#qHb`$)?n?ijs*M@#nGa(aR3VEo(*f2{Syh8Q zMuzeubC3it>|byyWR6f%=5eerf&v3}13MmuS!I_b=%kruG)M31c@zbx`%kCMp+(=^U5W~O=ccPV$e0tO@C>$P~*2)3`Cs*beX$*=SIKSqz{{c)f8 z{fJ)=ty0oIM&3bDH{Lkimyf-d4j!;qWz3&QUekkVzKcE5KH52~?FRKZ?UK^XKk9-o zUtRY@c{8JOx-~LHmGYL?COV!gTi{d+i;iyK3A(HK%Kx;F-u1hrgsGG0gF$aP-_z z)*Hgm)9jeiDDTxo@WebR347&XXNCFTf+LmHTrFZD?|OZP9AR=v;VY!n!*Bbaa2Eey z7RH(nDQ3czotqWJwnSis9Cl#hr=ai16jY}yA3|3Pp;O`pi@ID_(oh$8nuRNx5 z5&RJ%NU|JLMxHIav~z3xCdo)%)vl$d*V7~u%dmOSmZ&es+3_AGYlduo<5s_h7yX#3 zg=Q6&$J)}F%i)MR3nruEZ+R}H67qM_O-l89CZYFeQL2t~@A)sm4?zp}socFyvt5xW zwYup!CQovIhMCnFyU)uAjl-Y{Z|a zFFQ2Jvq&bB--~UWztZ-p$%N?!dynJH%1!s5t8e_<2HBDJ=%NqlwY3b$LH4}Qp8m13 z3o~=B@~Anwjzh;B7sXmJa43#0=}w^&}1x% ztz7so3Tkcs_pJ+>5!_=`yCVrAgNmC?NBVQlT`cwy(WLq}B(AQIJol)UT;9t=ZSWL=m*L^0f0I~n^)=?0h)838#KK^X21c%I$fuDHxhr+Gk`5$`5cig)-M zX23)y=$Uv4AiCpa@b3~F^49|}^yX*(gx3-0cFn%e_K>J7Z;@cJc$J`QrXV_B*nPE2 zr||FZSYrL1=YO+)(Ef?K5u>rA8KFn{6R4bA>3A)+_#OM+CyE{}JB1Y}qDiQ0E5Aq7 zuKqHMoGkwLr%i2S0;MUEUbb6UhmWe&ke#%2MX2ih>A>i81~FkwOFu+WE)##@&3Rk= z#Z|{FR&^X-Esp?C*9*-$Ko}>eV_tl#(bx(*-+hhG;oGB%f0)=>9 z%Si|hZd10voRqY-?CNH6%4c}hsph|L3H56|Ryi?ayu@SKopFz$v*MHuW(oIl(|pB+ znlTwEDVWQe8*TojF&5hl8C0~3Bun_y$0GY#-dH)AP}Vw{j1LvM*~zYKhjdJbDar9% zdX#0*&0Ld&RkapbE8`b0SP7!_xUpgt8FD6n(=NBy)aB*R%8&1c7eK53ibjJGEM_?Ve2rd8UU8= zdZb1<3th=IjW)_lzv9^VCkLHhv&ciGe$iE>2GTAmq|Tm$srL7lwo=|bzV6}6uddVD zY3H*nGoRtEq_0yey4TmS7m9SeRT?OX5F!jG%D2IKP+l+aWSK1Y9nTPwgp4ogtwX-_ z5H%U&xmfq7)4rY9P9-MH5pt$fv|UPIV3T2m zmQ9VSqjD7y5wt(nsj-bSN3nqcH_)a54Av*;!_O5;idvT*9|T>A1N8{`H)Xc~NUpByDphFNXI(!Vbm6*1 z1d**zrv=Utiwzm!4Bfxn_$d_eCdgQ=qd(mqdgXR6l#A*;?KqG=M~C>JVx<_@yr|zy zEcoGz1p6h`cmw|Qyaq0NseL`&I!KA@!)jr(s{M_jU>c(1kAoOD;=ah`=|@>BY9O~> zQ)y#w@;As>MqN#AV_Yu>DM_6574W5^sSB1(mYQ)7c(iE0v^3&0c&=~rVMiC8(X~1h zLgZ@JZq8dv+fhaOSon?%7Yaw6FU3u^h-pDGj#*d3hx_wN7#Jh;==uh321r2C#bh=Cmf?31=j;<5schvpQGJ6rrC;v|pw}YcbXnWP0p-g~GG?FI2tL`D%WFNr~MV zWnJ0d-0$ob#pBq-r6w_j!Fde)*TC&>XameK|6@|9_#aa+B3Yutlo9ZMNdGMSLnsE3 z%_#~u6Eb~@CRI7*>=l#w^+Q3U{wp#?^z(0Gf2LaumS|44$Ca`9n3nbIs*Sf27RlWM ziKOpu9r*t86}-IQchx3g2KmL8+hRg3cltKlH1${LxUpa|$%y&V6l15yR#72~;a}K>pQ6bgXSu3k? zX1+y(sI{ zha+vHJAt9rmIAkN6#Z;Pb~9b2P16;!qgx@Fw3g2`71pXjC|ybaB#lt+jnSi?dIc{P zh$$&kHp)GB6p@Ii50Ebx-Tl9+jqMvmdrn&9mH$-w!USw1&qUsNxH-19q3^28aCcLr zF+t^{Tz~Sc4e2o!T^Ap*q+mXmIE-GID$U(}sKZgwSVsWoL*mW_3toMihZ(KDjM-#y zX0b4W;vipcaG$bTO}*qI>S&B9IaIhGSwx{Vljz+%&Q)gT$yD$^x2tOaisf?LLaPa^ zoM7MR00?X_d<>!?)GO=bWQ9((hc?8xm#;^=n5>5{&zFR~anGDXY364$cGkRpxpWfq z#=?~}i4RfgY~;bE$?>a?8_GRUdM5>k(}%~Ikw_^Oh|ToB}d1hy1D9ilIPT(%?}9bEX5^SL29LfpoT@XikHkr02n zrVmx5uu0ecyIC<-I0FDSH&oPQ+^4P3Q;ih-NLZ3}!0>a3#{xug{fcs4;oEW3@i`Qb zHPGpw_0)937I@$Nmj7|-mSvqOnB*a|E;AtWVAbVSF&qaZc85^S6l6srmGpAxkL{eX z6~4#W{FZGG)aG5Br=rGpwf)#Ww>&ED7jUm`GwLGsqpiSq{3g7n%14b^L=SlRh5AFr z>$hRTua>e<{D)ZbQZQQtQr zpiQ}$JO=)Q6T%gmprGY4O?FNl;yM$y@{COVoI@8O!SELq!^FN%s@gkBG#JJk>y{_o zV_8Q1gU=mPn&qQJY11L(2YfjfgS?k}X;UdSZ$zDdbQe=t?KoBa#dF^njmLVOL zp6zjw`ci+%s0e0-Dxl&?&jWGKh0|^(fOk>IS@P@R8X5HfB44ycPQ66Edi?i3S3?5% z0;*$jSc^HzUk8^?2Bce!NFd&Z;9lupMflTiCX~gMc9EwHY~Ae*cWqdCOxQIQ;efU; zNJ>{I{bPY2qkb%%|7PQ0G*5ICAv47J%#+kwT7$|~Ce)i3{W(b0tSCmE2~hD`+XIic z0f#M8tRkkdrd6X96s^rlEZIoi!LO0=bJ7R* zigOOMVj6%U1aB83Evggi;^oA-h%t>+B7{$~iK#y3aDkJY2WbVhD;EnQ&gw|5PaFt2 zw!xLZsq3oeod-S20-F9wPklzNIOF^%&Ct}(8l?)Jn5}*Z76pfS86;m%S6wEsZ~Z^W z&fbuz5IpzNEq5vtq~r-m7Nc0_YbM3sRA4(t^z80Fm`#KVL&RbRIc*#aZE8k)sxj*@Ot_iN-X)r@~=AtU!}cS>0bIAsWyO*lg6*N|n_;$sf> zZ~?|Xy`{h*ZJP?j8Qju3N@}6(@yl5n`Y`G@@5>!JcpMam6pK{!6>Hy8hYn5wa3LER z?oJXgO08YFMu4iTT1>Zs5QftJNK2|k;W4~q2s?7?{COQFUWOZa3V%umT+r_ysqkH5 zrV%Ib_I?2P)uj&mI}_#dKt#s&nSe!^wtgmM?#%`MLl%T%N{ceemkW zP*}pl2py<%;#6mZk85@4k?ID6=XQd|jNg|I3}Ea{&U%;Mh^*fuBm_^fAKsJmLM zhF#L+Ct%=#WlDuqbnq7BbAr%*Vg&uOpGdpM@2y{lGQFQHzdHy3-oE#+J0H`kw?W za8L9V>8~YG1m{Oq>UyFAh4M>v5zBPIYAbTZcTFnX%=or4Ul47^S(diN0f>heOK8Zk zx^O4%JM5VU8q`cyA-ix~hX5&0J(-9@uw|u$B(p`Lhv&)pL^`ZCwWhWoxy8|@5OoYE z_+GB6LZc}opq|xG$9}0z3dVl+q4@?RhbumJGMYupU$9hUHU%f zt3%BD-a_ghp+Na(p}D>$)1kT{Xl70=0t7a(-R!CbXLX75!C@DAGWFdnMo6-OM|2`K=+eR^zV!U4=YyMo{X~S0Z-b9Yq_R@vzaUv=p<(eUyJOI4^WTvB>z@th! z;zh15H5$RVo}1dH2NTR^aj8N1D-XlEDa^YyTS{g&i*t;*QJy2a z&{buI5TDJ+wi;7Q4xIgd(=-SR%T3WHPxr%DRpBP`0CWZ^$a9h|Nv0UUWTX~P3r*FJ z&)Q~zD2#;F_#SY;sU?L_Y!uIl&D;kZXrnOi!A@#df^3ufe|6zK0qLPSND1dp zFX)v+?Le4N^N6C*8zYt}_~~k?bR9@<9A-z)P5|2zNpHG_R3rv!@hl%r9wmQ-GAhd4 zimHoG@A=NjdW&fhdSI*7<~&MZ2CIlVRdwJ;IRx`^Qpp3;PsQ7G;S2?*$-^XN65gd2 zwUQEDC9^3Wm6HA9@X!Bfhy^Jm-)5MFRGc@XA}(U@H>h9_qxoDYs^APoPb5WL9HR-U z6a6G^LHj&c#Ci+}k{mJ^W0}Y9k~4W{!W<`OC6mk}bky5vni4!^HBOFokQdj{fBfTS z^O$YXiC1>o}^I!5#}7S8suuy{>VG%n0=d=|BJ-Q5Mws| zirizQv{t^zaQ;P-gi)U6RKjS%2NaZ|=T18{*+YI(&416n>UTm=(D0{->RSp4xm>C&Vd z>3+au3??X)lf|zB>x||-X>uSlX|Bl63LbF%kS5`H8w?p4L!ZbFd+7#}Myd>kHRHSh zhJI5fGaIWU;u2mW?HA z{d|ZO0i84&;_TE<_@2A56r3fmCW~s?2u{AcwcUsJUs+i<;^EjSlDl(iPI>()4}3FC1#$B*+}W?o!%pF?-UPqVj1=3NhHMy@!=z^cNq@2B7#` zY@$~z?3&dW)dP7CkmFfLF}G;hS6tF}n*$Jt!(VRYb~N7EFtpoUbx*2RW9u766k7pFt=EiEbfP%z@{AB3!1LCsTHq+O zsOY5*QJSi_SO=@WDy1V{VkON)-G3u7ROY)G{#uaG)D1R`qHPaLY>V|xjo0I^iP>^w z-3^0N7#PKh7J{lZFz|EM;`-uTN5MUH{9rYp8Z1q}$iKB5jg#;blO;%ar+|=})8xhy zq*-xKGOU%wQA{Iu#8z#*9TsEy!`%^hA?0YalgYB|FV+YG`=(}&?oLxIDa>V{rf zsWW{E1ew$pqa)kHj8=&@XRn!!D6MJ=-r?yDft>T>0x;_4f??Ebe=+ihYSYCmXd~NEkP_X=EXrSiBISwTr*vE z7NWm3S>_gjfvCspqvDCf7RN^{VzUJqMERmX#*YfG-<3xdxXqH1 zZgCaoW~ZZDlP;pET8w%Z=rXE?74L5?!P@z6 zN|(!=Ih_vEkBltr)V;}K2=d1@Z7S42lOi_gN}eR+FVx5l`pNVK`WNbXl`5KrC|l#- zk^6ZJjv~h$aM;ta8-3hw4S$E8YCgFJG1%ngo?&Hs9s>8kDC(FcC;T_fU!_wH-ITQI z>y%MQVEn02M}`Cch(m1~w6IduMPnR_Aj>KxqNg2?|HX-d03!;`fFiZMF#B@}P8!H} zptJw;n7>DW15@945`7ak~+j!0ddY)3M zsr`M?g+J3CPNB)N?@D>!<4nnZ(i&Drxqo*ki=`<}zbU+^LU9j=KSroQq)DkLx8r`- zQ+No$+xLgSG~W_tnz_MSI9OV!b|28KD#;vwU7rC^gP|Y)Q_XwGgmj+NQ8xXq zRfi>xbL9cKS;ViZyzY_p&xP!G)kf4E54k7foTlm~cf~ALzy6OfvREng&6mj1Mg6%o z32R#pBY$!qv6GPG;Hw|jN?c;$;&HS2Gj=La!cUEe((Zz}GX4UoO=C-u&*WkSU0bSY zsThZpzO8K>$kg-5nF?{&!4}8To}PipsGR!||D)0ob8xvQPEAhksGBC3ib?IZe}cbI z89qzJlDuJ--Es)P^FTLKWydSV!dg<@G}#+^beEO-YhIDyG~${fty2Et-iNtL+2l+1 zEQPoq4heC5nKC{w zFG@`mS#JiHh6N#(D}{$MRw}o|ojAYc>M_Bed69Al8vp%kcMz5)Nwn~y_%CNMF(H`Q zJpM(xC)koIPeZ!UE%Xlm3@8)|LH-SyJv-8ZLJc~)$7p$dW*ah}z1+v?@Kb@fdkzL3 z_#NEgvLw=76oDhTur+Ps%EMp|EX-r8^ z^t$R8L}!KrdNPmN=i^N;Ihcl&kBUJ8CD)+>MeF40Vom;w=^oLzUorb@GsZ54H6Dp( z`0t%_V?2Ku$DnN8I|~rhmFN^#fEFpzpiW=LATiBsKrB^rAhoz?#jL5=N{L29+8=jM zQIUQw?E|9&g_ZdmRn;-E_&4aF{a_r5f07Fmy)Yo;ZpphG3*mw82|V(Q{k0IZZD><8 zSF_2=4RnF@6XqeMqs8L)XSparLF1id%v00Vzo^7&Lidh)VSC#h$`rADctorp6UZan z(YY_qDZ>CL@u*bsD*vceCXoA1hk^608o+~0mq1l=78} z*-MK0jezlv<&OH|(u=OzjBGq0^qZRT3;7)J?)D}G$xzgu@00?DG7}!a7O11Q7mX8c z;b#-0b(pTp+c^Ot9V0#xTq9T`c{33{S?g8e85_=3O2e%2w{fD;VT%q^t5DdELJ}cI zW+ksP(yvbUm^(e$fu4@NTIFZ|G9^o5-42EGrfzPNIaPMoAtmFL*V9GwEFBiWqqYjw z!8q`flSUuztL8s4mDno>38&7t^HjomjA58A?+QMb$j)*rL=x)++2|sg(J2NomY^i) z4UH!DK=y6!JZ4)ThQc&A9vzB;Z=7m1Z&aB5sPwCaPP{d79Q%Ff^UyR5L?4|rzSFte zH>_56rgDVHu=ov6i)1YP5i60vbrW7z+Jwb5;myv%RW;%L5?KMEZ_0Q`*{VOG(R@@s z>-mVDOJ6>Efj>uphvkqySJX)_0jW1L{S!g`Hys0GUW=XnxF20Nd{1Y7%U;)B0l1&Z zH=!(E>Wh*fWI~htp}@_pL*)u%RA*iRR*W9Rx2OH09L2yO3917n{{V0V#P1Q$f<75( z81N0zq9L%#>sddn3ALM#%87I`TO5C6Cfi8shwvugHpi6X9070(I$cT;DG1LN)T8dz{e&O_U*eY3Wb#)b(g+h9%+y|*Q@s_Hc`Y<0FwdElb|3*=H>JZzW zlFQjkavF;UIVvi;`fxlhgYQe_rL;YT9&yEjG|CosCEt?+2fuu7=5>UY1Gvq8YN=x? zN-q6fhG`@ExPFQ%Cu0OQ5{5=MpF84X=;5s`)XIdCW&V*|l?~f~U+S@7gj+P%>-V!o zX*M1iSdD47jld=jIHmNJG%!t`rQ+mQ)H!oPc_sO1OtnqTLgORX*)yf9QSc~S1AQbt z^k+F#pLGX#&c4=d1iO^E@PyQq++?kPRo>@YHm+ugo^rI>?d-G_8cv@Un;$#3UTs)V z?%Cnz_So8ZR2m+9kJx8Wr;~gJRHid#u|!%%pu5#HrXN^y6za-9j>K_+FU+qfz;>eP z=a39Csxyp^A7JNX{B(1!z#?ao|HAS|t5A!Y>bPLY9^%>)B(D>T&~oNb?Y`uhMPUUw zwykKg+NZ~_AnF}A8JWgr_0J*zTz)6p$M49@O)$n=Z$60Z&)d|joUy_0l6i7^#GfA3 zP{<48*(Qvl3Q(t))X2Y9dU*PC>wcabF5tz9L)y_mgR$7Gy@7Wu39?=H}Cut0I2 zOodF^o!viD>JmiJ>e_`Cg&=N(p~_ku`&nc?4-?x=_tcOnqfT4Tm$?)1HBD8cX2hin zx`=w$UyW?^`@EWRJ?@FCSPAH;E^#_86wT6{)SG{Aq}5*p^$|h^kcJ1ue_LH}7N%82 zR|`Ft?-}lnGuzH&bEFU{))9~|?X;^s|7*jXpk`QKX8D`2(UEswu$Os5suOG(#$_5f zi{>D@v8ajVc)2H*?wLUw-hV-?*HlvrZQxc@W*^g(t_Z{6wOzTfFPH}l(C|S2CZ{ZG zo37O|hfRZdQ9ctuIoQI3(vz7`+DXyDrBNb0Mf*<7jJ-dqW5fadm~1C(buA-x+)NvT zIlw(sG#*cn34GG_IW2f@OlV2U5zIMX)|cM(>66QWD@g-A)EtxXgJ+(qE2xRaeyjc< z>;(EBb+E;NssKZ*GzyngO3)dtnQuenYO;$MwhC1EbZ~U=R2fClIlL{Ep%>~xc=Q$* zBFpR8G&JRD9FqxP)6Fgm9`;y$)F*X0vB?C-n4gK6p~WbzxFR@8*p3J!p+B&8%zqT4zvh*9OhL)8zshI@BVMVd3DRV{EZ}|< ziCkUNoFhhc{~#Tnlg&u%mu^G~1_5J_Nm{rm+QFHucRk-#`u6}BoN;RGaAt?Ryx$rqMD#_Zu0AD;d zp$#q+{9?3~BcmTgq!)HUEeDcIHT>t4cdEYw84y?%9G>!-VEcAM|A9BO0e+R}N9KUZl0Wtq^ zUPn=I@fUehzJMK)%pQ;wO2ETANg5A>m$cYdyS+@ztWen z&<#y|!0{c!;+q4j&U|y)OYPUVXT|8q;b~?md)6=ZTM9 zmmED0=xG-{waX$9(QvT#wU2w8U{hA)Hz2g;v|6xssi?M(;J1SmV%t`I2Wk^no}1F( z;G)<``nBX040SCq*VXg3-;TNz7j0Qf@AuU7@E+u0(~MVd`+l`l`3^)3YO+jSWw=n; zws%r6cqw1k7(SV`%ba0S{UFCh)XEU;438Ka{!e1vY4JgjrNu(mG=#XgNXec;0FQ zjY1Co&wbaq((&DrpuibJDzHotf`e0430?V$`({?C<(I>Bw?m!gN3~>-d~S_{9~<~( zxfLwp5=tLgM$Hs|1bnVHizCs(XT(3R)3b&5s-B&?yuRX^*cGxz;JR-#8j%e8q04lO zgxdpE@|kYy&L10)0yNqPooyt0e^|b%8jxUCmz>RS} z)NB8bsk7jUBiPzC7Cbn?gKKaJ&fqY(CrEI2Nw5HeySuw5B)Gd1ToMTG?!lRvzMS)Y zcisB~daY;g>guYl+WUQJspPWQbdq1Rkv-gY0`rH>XG?N(I_eQ_I36wNLSxpoU1i2! zXF#k=nOLgi*@jV-3B( zccw^xz+%;i4Es%1F}%8!36p<6=~U9DXWZXNCVk&24&Np{;Qd%@+mJT@%VmnGd!2ocF@ z7srW1o`vM|dMfgDvI>XpyPHBoMRKfQmuqocPkLq%N8y?|B<~WC)nusYqpzFENhzPr zKTNnwYLzsjFc8AxG~lywX>wz}m(Wehh$+dh#3bE%DE>-t-&o}u>W^~IwNwpojG{1NL^U$AkxQrO{qV1lsV^D_S}4l>lL<~5N-??mTAL$|Cguw@^V(2+b*NIJ zViD>!=9G!Cx3S&5ro|To%0QXmnS45$uLbE=+issT#TPnU)k%)RsUk~51j>-G2V(|v z)e|{fC!_F<<-epz1}|defG<&E)O@@Ya3XR4o!=2xin2=CeEGNHx9F_shHFip=1G-4 z@sN2@3@6%`ITy81(X@;;|y-P3EwG^TXz z)1}Wj4I1;YGIJu^=RYG2d0NX_`hA>7L^E`;F`G+}d+n1$r|RB3nnGH6%wI~j4qDn* ztBavWOB%jcns5pfjiz$HXIWNV7dA!B(7H9EAc1mSiMq<5RELifp=yMa^E27*XW0Q5 zG2v#%JdlssAOx;(Os=%k0StdaCdq|A0!(kC6?mhnE?O)ZAG}P6NXX3cm7tGO1pO+N z=m}q<_5SUIL6=YGK7S>qvc$IL^PUpvO6a-HI!MQvGZ&cGOqtc*dnpk*Y|;9T-&!QQ z;@IIuAcsj&+D6Hi9lTn*+%~<(r>nQi)POtE^N-)V`gqYMZC(XT0|3=-B*i zVFWQh!rfancj=8#3T<9^J@xI;b19d`3(WILSTZ0f9j?pJSUCu4gRw+(Gh zX2A>3>s}(&!7nY~2V~(j7nW(7fYd&1){D*Tsdvkyr(>sR}PfQ@ai`~U4HI4$t zNBM!u*ygDeunKIA@dSl>AT^@l_9mFdTW{27E9Pb0cC+y7QeM!h=SM=>XecO_li^h= zHMn6KWud@-Cju6gRj{7?bd|xcLfbXOY9n*h7}@^)GcOBmlq;-E;I;}iffDXR1Zi3u!JAS3`DD9OBLluOu17h3^2h%oVb2nkV?P!X=n^ixHf-Bd zAQMZw-p+2+lA{>7SzcseOb#H(Whm!5U^|kw6o&v`Sn$mX_?i>90}2*uf~m1q_M+LDg#Rb~T(&gi+D&!;j)5v?YZ( z$d!X}z9rE8Qq1ejL~vS))E7D$e#02ne9hf~Z?!rvu;|X8`~Pv(m2{9*5a0dCElPP` z06Js@fAe8M`vFemq!8v>EICpxA^IOK@86MMP2RQnkut`2J3b4Ni_0mk816iH8aE>Z z==AYE14OCC9c+mNc#%g?EKTH=68$3^%^>OJCe%d)2PxT9R6}f%r%;a28VglFSr%-b zI{b#jFf&ZkHzTP*Ck|yr=(_8#oY_38 ztt34$ZFC*;Y}BPj_>xSep$R}x43QYnD@wt%35^;^?gbW zHA3|&+n^uCB>46vAy(I2Wv04lKsj)R8&4xI(j0bXWN;AV{aK9^xC*dnaV@Im?wd& zG3tc-M&{6qnqn)>JEp4M9+NsSWHcT#%M!&F6sk`SQY`VAV7fl_NyULhU=8GTjii+i zWe_oou>izoym+yH@EFQuRtNO2f|1Ob1*-oJ-Nj^r(_a7L+*2Q=8<=5;JC?h<!!85}*e{B9TBH?IF+C}nkcX+u7{LYT7Wf?GKe&%I$49VjpRK ze=jy4%@S}!qmdp_md^#SJ>!*s8);DBlV-){NNH1eDJV0axhfa1&?ua za=ER8ptDqLL1)HTmE;AgLfxGL(y>x1K9_x4EfZ}fV&yzRLZJA2mu(CcSCu|2ebnUg z2PGZ*`C-Z*O0;CKKZyB9fpkWYKMCQzm4uzXkDiO@J!v_#$v@sRFI62co;k%jC`~^G zuXrw8OGiG4kg9+jH%2PK*50Db?K)gl?)7+okH8sE0twT}(8U}h>#6a?(ulzfHETjS zuic!}p#Uaz!ESS<_59o4*;QTP3te+RCkX$Ap+wu$d6HY&mCg{5ec`tTx$6t?v*LT{kf5IGO4+`sPa_>7~m@(fmq}b4kdD*7=+$i$Ce4un<5Fj6ufrql! z+a^PlHDy0+sTV{Edv=Tcd! zojf6PHSbQ8)Knc*3xS^|J6C)d-x#j>XFlaBo5pu@D`wU5zhtu)u}XZyM79@4XlMdV ztRypEQ?=nuFFB*sc@x@W1n%l*bBLyB$|^2yyfQd3O1P}1w|hVJ_L|u;NiHS*mnyVD z)^~J(0be~E8F|4@GY*|IF&d_$%@Kv$*h2joThp_Q_JQPiWLfEZAJ^n!6Wv zmQMbXd(*C@6w>Jh#^lIdxR!SGhaeH@#zdPNk8pI1rTv()gQFGi63W=Q4GI0D`%*t47v-bGhqa# z$V8{i^n}Fje`_ktdForfW={1ZwsvIYN^7!*OA~*!V|1vDCx~AW+SwemVb(6tDL=k-PGY_fR%e^nWvZ5D=YF_8H9cxsq4{pbEji@M`4VU@Z;n{fP^?vw&+Us!(UY!A>elY{rZ-wU`zjNGG zH9a-0RBjD_Y4RvxD|CH9VMhr2=4SQWxaX67TiR$gk0dj?{HLSwHx~6CJNyw@M}Rywn(!A z?0A$a#(o51NpAgVos*~`3ZWKMR#CYn^GPgj{2iJg{YHiaYMPk<^sVYWvk2?`j>B%E z8QIc`d5yr)eOS;BVMOE&MSjOX6H~VGs#w&MPO7XG9(j8nG%{$d;mqkN* zW*L8^%$FwHNJ%eH9in^cwG)3be7sVp+{7Su&aVF5 z=BO^d=dwhe75Gm=4r6(m5}t;pqUN%Fzk=|1*dT_tw+MOGs`b(PKN;=#2I$|zDVmmE z(-`5YwJDG>J#O|^xAc3w!fLhq$lfN9z22bzRL2ETX4>g64#XWqXa1g!tN5HjKPI5f zq!h=QlRhvB)iE{$@6Jz0F~Vx#{UxtVAKwDc^c#BgTRjA~B+&uI<559~aukwUgbLfA}*>JKb7!ihqNxata;sVnSp7FEucO@p_N`6p>uJGi&Wzrr^9 z*}?|y#ps+pOk>vPtTEnPmL9pI@7=cPM{hq3eFtmPbj9%@Rkc0V{pB6$l2jfyE%m@UFh$xYnEsA;s- zs(S1@HQIEEfgo>mV~wVTYz6O!OE=LS2D30s1k8Lrt#)a7OO^g8&vo?r+!oq57`-Lm zPNMqK^7xvDdW;YQD?4mVX`DKB;}x}4q|d>E&MDWihZ1UqC_=~P*hF;&j7$B9E48h4 zG)FDDqv-LHP7JoM62nR42jI(JkT9-=~mX!x3a+N zwL9%`@YMDxPGlhtHxbA85UqUlSgx_wlu%@dtq-eUJjh*XcpX;-RWD8U$hexKQP=}N-hkf~z~Ki^8}NC^ z(<1z?1-Tc1!Y_b3;GqCS@NwS@`3eLi01l5p0O{qM*Ui8Q@Nfm@M&EndsDWDleZa^F z1zPZc&8MD}Yse2gsiX%8RJ{#Q5R$$F5xiF<$xjTtj*v6vhv*MNHVYF&V$qwCc&C^X z5rJMJh-vmTiUcGseF2IHV&QHo zc(9TlsEn2>QXw_`)=kB-7TFi!pri-EmjHqY@3*AAh1_rrMx6D)f*x4i|TB(bA^j zUlPtr*$DPbESkjYAna6u`vYHK7l_n(hd3h$K!w!orBvlE004sX`74kx7QO($OrmgC z008-lZ&dtObe1ecAPK-kn#(xnB3bBpB9xbIWq`h;{nf+};uVG-JqUUH;0{>5BsK%X zK}&th#32M)z~Jh%DbcxU zNQwtDpHJQes7D3iS$zVPCHENuFUdlLfq*R*Am#J5T2n26=V)&mXzU9JB3*-apK$@Q zB?8<(uGnLp_XRMDOr{jr2E2jx0TE`S1rrRX5k_^1G+hDyxd0q3DN>Q3Uh8%kae7d6_AW6P@e)5Qm}?Os3?jdA{kmx z;?|B_Gz4{dq`MICV0cUboN4{cdofNxP?@MF5I5u+iag?`oT$u5t)Gd7SBkw0lAPdx z2|}JX!jD}fVQ19cu<4#qrJ2&F3pg6o7QQF_@8rbfe2^PDE>ArOX_M)zEk%FsdC2IM z7JkK13Iw0@T_xzyeaDuDBB%8|bG0%%E5t+WCN{*!U|gF)ej4zh9>oV>U#>B5agX7N z;sD-)c5UW&7y|og34b>)#wrQ@iOaH0gU1K`!h?L{a^k*vZc2Gh0n{xW)rj^y1R%1f@)d^NkhD=zf_Mqctnjv9lt$MfuIjC8AW5?qT-d+qOE~h| zM1YSJn1CAU4o3j8+-tIkFa51Mf1(-#F;hh}HzT9(F+BOR>$l7vE~!@|W)u9^BePk| zix(7>Ej1Ap+|BQH4p#_Yl<|Yq4H7Q8{q-Fk~n^hoj^I6?SF()mk{HoF5 zRe%-!W$@y%EcjvHhIxjkc7sPnV_3q-j=a`Q&Uv!?l8Ucp~(uiLh4!o>tn7ujr$UpN_`l0y|e zFkHsuWmTFHj6UiebnY-c76>7yyp|_s)zOp^3Sa%*uP`3{zEIg){1j)3(d(EuFK!9z zF6v~Lr9#KvJ>v)wi!7w(*U71;2AkFhi@{G#Yj&#FV^ARfuxIIUV{!}NLS6&_paa<6 z0f8o9`zHDSsHwt70i&yp41l|@C+?ri${xrqaSw9EWq<%{`5X+t2M!``fXoaC?7Dy{ z9YDBJ#;iXA7J&lxN3XB&H4s1W4QNIKPXV{e6_9HfAL=4Zq7Z9;V+$5|1aW*SXzzV~ zH-VJc(?1(@INkf|S7tW6?K>nffMw$D1JWmphX(c2A!@*D;OU@g6OPS)k_3-sp@H@) zK78PXfBA6$Nj&M%M^S^fyuv;M9)9*jLSRfmC-W%q=r;96sEIl}dTFDFn|@b&7?=WJ zn`ll*Q_K$+wU05WKfC&pQCD2ma*}eqyA4w_AP>nVnrY>4}6r1HIfE8!p|{$JB$={1t#q9}1iu znURp86l#boPN=jzc5MTJ*+AawQ%IMa0nd;`)Hq?+o~VnjkYQ6uBCvb|5w}D5b;dM4 z1N{P)r5iN?N}q+$UoS%{GTDTZp`vab(vST?F?`Z*f&x!y%s*!m94M7%E+@pq0a6A``x7E7FUX45CYN|KsyE; z9s`$)%nvSQ_i=$l7|-{s_haubsP*B!?(!$Ai+`j4aY4VF0}mBbYmGD;(=h5^FDv*i z$oCxK(F!pR!>0$>?RiMZe5RwZn*J1t@;t(&iG2s$Aww56rk(*DyxyUG`0dUU2-pY| zXIBiA1X@hmK)pent&CbYG(a*Q5saP+wMX(RAXo@}0QOAS9kt*~;W4MKA8mXAl4NKO zowsunJ@z9DEOl5cdZa7v1rbGQ2EhC{e#|iW6Ic2duIdZi1LDB1 zzmOa2C&?sB@hK13z2X6xn{_|ZXwSCW=*w=z$}MRO1&~p_FzIHGiRr<-Tl82r0kif& z0v^UhC;g?N)3`z?Km>zoAnx_S6F2O)5c4$iY%ln(2Y!IPDG8g$4IIxP?|YyQDOd;J zsSm1aJpvmPbfEa{J-& zwQub7z%LSe`3X^lO9_u4aEI3Lgw^er+&syG(K97Z@o-Wn+BQrRGr>RyB0a4ZDscn! znd=17@_;)7z<{S7?@XV~QWqShOTh>Dp~vH8r<k$o~R`91K`s!%Wz3B z^^xc(qVm@nFR|^HU35wJj)TqDG4EBc)c~*3MXI*mPY3p1(W&rfocCBC)W|!Y72r0! zZG3yOp%mp0-HpvA(Mbl#X*bjOcQwq$>EJ_2+7;ak=FOyDb!} z{-iHG8h+R1U|Mxgbu(gP6Mbfv%{&C;(7xc=xsHya>r%9UevX*HU^}GUkjo6%mdR5D zxhuq^Hfcl{Yz)t|PAHWI?I|6P^kgs2+9RwY?-9WV@4F#r6NWB4y z&>jY$$@1|EbqiF)6@Df8IK6QTOuE)X4@|jEr5&*Wxo`k`6!*CYe$oSP@a}{|25;ZZ z{kkCmp~ybWgJ9GEKW!fXV(X8vlX^MG@xzB#Aq77oUxT-GCYoxaI)nX@0?B3|PeHFx zNa1us60>-3@p?Z(p$LI+8#&3rx03z9YqL?zQGgTbfJD!K@XTY^Zh|lcE7*y78hX4y z9B&Kp*Mi3Vg{2cow%b9rQ>Y0%w+n z+m#^$1$_MjO@UGg6MSne^o!1G#U)A0N`@0W<-Wo6n9m1na!#ubSlTQay zhXyr6+v8&T4H2M`p?evm(8riq!tbvif#(=2H3$wPDa3g$5O@rJBrygK2I_iG@gTFM zACr&{aneAn*cjtc0BB4% z#Sj->P;3t`=UaN%KM)sNA@m;z81JV;^G3CvsrL%RwCC2`gM`lj@>SvF1Y9QL`JV}| zJ`8YWN}1X1Lqt{XFeehWL1JxawhwSv!jsqI1r~G#0%}qz87AI_@C2GY6d{V@0Rh`f zI>oS+JxCICBZTj7-(-QzkNbke2T;(AedV~${!@g9)+^ zT!k)~%D`gxWr2GqEYYUcjQb4H)r-b{%>v}E13oiMTey8MKfxBP{Rr@et{fMMr~8UH zNIrl(`|?05{Lut9JxI&?uDFC=p=81Oa&D_1c8L`v@nFLU{fO1eu}~WFd+LLq`&> zK>;kJ#H%Bd&Tm7ByU!TNCcfa=PzJcu*oLqz(+H*Y^Ri;Qb7Fh*RJcC{%S5ZzXP(Wt zy(iU@!E+8~$RbMB*q4u$GC&u}Jk9#76B#8C6gOW-U9K9JVy=t;ZcE_^YYI{tmjo@;s3?yvqvRa z7q$L?`FkbG39{m2_S>G5WDH?*)4P+SZ|MwiBXKm9$WzDHSxU>2TKfi_;+GF6`<~vz zY??#3@@me)rC}bvCnI~l>p6#?(bFA87_Dh>$&4?KzxarrQCJyCh&wBhJ1bo5%q5y% zZ&1d!P@*k;`E!foQnYWRfZ(%fGFALpj9SZmE!U}oixWKE{MkL7q1EG@33Dte%C=yd zlqC1a7qE8(*IjQ9)w?ygy8IzR`?~u&^Npe_&j{JfqWs#DOg04v2aQ^J0yj;j`G>O2 zt8d9CTYi$HO7|>kZ?_^NeyO1au=U`Hyq|p}V&{s_Bg#bPozlRF*!aV_%0(&o(t~Fq z$XazrziLu->MzViF!PM{(fy~FH&)Yuh)90ISNE7iLTBd1$-m9d+sQYM%FAw5=#2@s zt20NL$lP5}nQmAJpyxnOoX<`%9XysJ;G}jJDf#c!qH;T;ztcjTcxlt@oNYkM^a~!* zvC8G8)kpVVFlY6bdh|2TR$Wgg=x1-{)tpfT!3Z(5&ZSqZqoD5T?(@k{og1#}EN}S^ zoR#Lb0zwSg4%GIonx8S)AFWrI39Xfx??rr_8^qh>MxB)~YEPSC=`Mi;eq7VG@-zfu z{kf-~Z;*Pw|9ti?0Bsf6JC$yySe^XoR-WLqTVzC1?Y-^R#3gOg6ue8cK1Cj6y`z8n znMGtDVi)?O7N}iG@e)4%Krd-%MRLYVbkD@wJDAwyH8;|gfcjU6%RecekKCvDVy{zE z%zA1K<$Q}a3h_q;Tq0sU=MgpA23f6}&yRuqxn5!Z{!``u;5mBwr&9+ee-*qXn+(nT zjKd&Gm4|@$Y~@k`0t{=;EXYYGv<+Eb|5G_@mo4ORKBW-oonhXBt#jWYZ4+HR!PYfb zRIr;^yuO0`F*`QSqB>ki2&Y_2wf_sK9$^_s!g#U@jyRAYx7^W)Q}vLiKj$^!_gcQ( z3}E&VMJ&bvETC6S$9uLqYaJOj-ASLX3)rDxC zR&tbwE}MZW1rN2C&YacP-m{V#vb~qUYzuT?X^~;;r3#-|2QzrPr#tOvOzvG#6Qg0O z%`yDg8u-$^dyAsDs112WNOD)A>)2yg!SngU?BY7U-oUoUztXcxx9h0H>LU90Hl(T4 zM12%Ch7MNi;FlbD_yrZKnSVxuYuCi-pnX5^Lj`KDG+ha7Lt`+Wm1N$UxmVb~NTny3 zRFy7i8meHw`nCRC<%M~FCyz_jqDmJonNUz;PEn?|~HjH{(;yp(lzO#wlWJuIN3^em%x$SZzC0~smcbXT4D@SLG zU!V;?6keFWy_Z#v0(c1w6&d6(q2av)A;oph5i#KS8IMH0=G030~&RL zv~Ukmw$@n#LYY>_hDLd*KbW`UeXrA&j}Chq74ThzxKc)3g62Jxft{vw{#kQKEW)ei z)TPY;><7ZNxM$kU;jcqH%>IMe!tdkl23?t1&|;UnMH`ps_n9e$^1m!FpG6LA zn4u7l9Sz!eilI`)?GIS>Se=^+eYmKUu&L3CSBrzlU}vvi9fs%W$)|ocnOTZg#Jbv# zHKF2oAj@c*S7>0_nK)XC>gbhrd4pXd_8ZQOAi8Z=Ff)=8g(vUUs#*{(SEAmjoniOGx9V?x#<}?F)quKGv=e#CvU^ylWG%!ulqz; zDi0e2W;T-PDN|thg(eyj-0siLebAc14Rjx?F586dninAA?&Ns^e~gY7p!QB^Gqn^~ zxMS5ZL)YtA@O8JC%{UEL(E2j>;7pbt2}~~Xu$Gk7HlQzT-o|b~On|Y@?MfQEQPc!d zXE9FL7A9JK#J;Zpgh?LnuXdLj_{}?qzma)=U^?yav6Y#5KSJc=+f^-*8tR+-iK5e& zy3}-`eoCw4UmAG|w#Hn6>esAyxB1>D8aMJ$TrUQa>9tr_GUW*_J!h;L&64HSLOf2o zYW`CA$Hf8j{@%$Yg_SN0o@33K9q}%1NEOU$xt-<4s`Qf__PsmXfIZxlP5F8Kc>tExQLYvxWS%Moe4XOMP&dh6|LGIMc%XH3U;5+_iAU)BLC?i3O zjrjPdXfq&KNwHQ#?%nq{EGqZWkqpa5%Sb-z)i2*V^}cie$9<2GQ~mY~Z}W2nT78@5 zLvHI{n~LNyp1q@;{|?*V#T>3P1#U9awGXd9IBxmNdbv#%5qsZMAQSTh0-<60- zxe~Z&n}Y>?_|I`66t_BX2x&?RZhC{#af+ycF{+a#+~jR;a{Pd7$nVyTj2e^ zX@W#0Yl3(gMTQ&Wb!5v;;ot?=IqPrt>EouLZl^AxUtj8FZq-rx0|Sx#Q{kHsvOeVN z^3Q(=uL3XDZxhZ$KS&}I-_BU)PizhjxRCRUKCxnXMOU)fGExKO0& zqJ26TV)kV820X3*%)+soMHh)s30EsY%}tcsExTdO+P&(lvud|!V`NPKX?D-2^S0ef z%s8^Of^^5`-X;TG8)0lT!_^l_;A@^TIcCY_e~~CMSu(FNFhwQw&kZzcGe1`lo!K{Z1m-5M4OPx(BQobuM%!@n-b>e zKFM5%P}+R7ED`iY##j zV@#Zp(~-9CMZ1f#^~+qLI+-+ClpiQ5ium}RW~1k!*YXKTlzS){+lsc>M8+|r2P~z_ z1-|*t$w}%ttx5m>U3C}wy9kHTM;I~JSNpxR$fjZ`E^QzT(2Lv9mNnKoNx9+&l70H1 zB|pd}zIUB!l^mi-DNwZchg(@9VvSEnf->iVOLjH;p^V8uHkMD1;UNUx53p&v2^$+n_oZZ<*OXmfSpr6JGH#zASVp}5O8 zne5b$P^XFt*UVzOXYW6w8f)Mol$J-tvR4#>aRr!LiW_)m7Q{K0zXv=W}=u zB?z5}u;qEcLOuAFW1|IP212H!m&ajcD&v4#AQXCjpWISWQg0Kx?HBm{fWp#muhNCD zg&jCf4PC8apqxSPVVv^1Uu4HWTB|L0(D~K(BZ~xdgEOT*x6E}f6N9@#Nn#f-gcg}4 z6g3Z>bvmZiSeNV%6C!Z!jrEQ?t;WP0zuIGpsv8rRYoCqb8hyXukD;(+#G!rzN-4vs zwD$hxzwo+>gSm13 zQ#||89UcSOBDh9LkdfV^nCgqR+cn(gMh`Mf@5f+qG=j4{XiaoZ|2({cC$K9n+ppcAoI>7 zjUXLoVdx`@@%`>w9S>GQIxWt$O&wdoBh=4mCfAPjLuG6H4ogVFV5~4;O6pAK>kvR_ zC%x`153=7_XeFlfB>BVcU>z--oWT7_2U#5VnezaD<8PXG^xV$BvWv=ln+InQXx>YC z7`;yYipt^Ux%-(iLv(IG9{J@$?#Cnj+M1Q0o>yQz8e!QEa%ijWej#1}IBEOkS zdO+H*u8fPPs27*YSg*1Fn$%3J3zZ}?n;Mnaj;)AV;Cd6EO=PC#t;5fjB0G>~kNG}M zMxQN~UD)eQXk`{ts`mSG>2nQ=CM5cAD=Nh}$s~Fci{bGi)R=Zd6e@ z5J9#oJOXLVbruyA;8f9|=}Tm|L@fF;S~L1~L;;y-S7uE%-Q}(RN2X8OwhMLyCcQ?) zO|xz?%_JJ;5achj7C8pRmD!3Z*!$Rj6>_(@lbT8BVp56o-&GN*AIGJ$|0Z%IkKm!T6oS+=Nn-^psxGMS!>$Yb{LBAL!5^ z??Of>K7HxfS*HTGL8yJWmpw>e`dC|NXdfeTKjfH)S(sVj<;`$TLLQhuNR3>t+o;k= zEsDr^2MelCc`@lCrr6}K9?p%br8JuBu!-tK|1rN$gfg>h;jJJLMoIY#rAWZ;{7MkG zNVSy~PCI^*J|8@LPrO8v_a7|d|6<`2(SEZW!#j#lmlP@Spe%6Cp)>h&NOeR!?IERM zn0KE$9Bz9Qj$`gk&kjJjF(LO8Ce@IC-FBOvuL`U(IZ1 zs9avG)onV3dSi&g3Ff#Hu88J#OgcYF@x`j-HmS9{U;7CN3*0{l0xoH`rMZrCr^yVl z+egwtx}@Z9jr+zpYSnl2NTu-Wm4dO7jGDvV&En9XWdoE;{M4AO;kCIC)0EH7M8wyx zJi@OG-Wtu>@~o$bpjLm!lN6I?km|a{NX2eHT{BUjnpz7$>$gj@m2N{k8dGf}B~~YS z@to%Y7rj+%)^q&o^d!h5iNLyjiizT+}Q%6^El zRt(kGV_g^hf|q+Em*94j%%4^%mmj#QN^lOkedOrJdqUlj=ZJ|9G*70TS!&Ud88E-e zCHKB-7dROjSK31kLePq4bYUMBF+XX|=9v|oKVX>Uh|vRyB{{Vbe>@=GOu z7~RPO!f%+(Z{B->hmM|zoV+XZLgu~!ec!c6$Q+LM4y!~di*;J?Q74+*163oE4{F#d zV4!mGDGsw|zF}Wd#A2O}*fBTjEul95(SzT*FlwDTCnO@`5%*Oj?wMjXizMxN$P8vO z=dUyb3lx+$6B=5GF?NhYoa{mfNqLj%Q({Nl&#hHhsa4ORHw%i$v!V7&bVa&)~PK!Be&p8W^*vlg5_atu}(2&bE61?v8n?>t6BAzi@Yc zjwez6fcvcG51?-R)uO(k8U(ML#q+ntAQPw0=VgDb@mM_a$}rlASL!E3LwX{Mvo}KL z)KV+j;bc@pVg)}QpT{NQ$;xY7! z+7<9(_m_3?Qwiurf3+wz{pgt0k~RZD(mVa|yVPmfB>H{v_u*&-Gz<&tz;BAls`K9t zB_ET_=`4!N;$_cV`Y6-ca{s#6ynw7`_?l~1RGP$6$ZEZ*A=ql=2+j=DQvGL249;Vo z6K<>gD73xH{rz-g_z0yU4BKyl5gNGYxA6zDXPItQvi48=>W_O0!cgU}b|UuQiSCCL z`)ZeXyE4#g@(>ipt$)j|5UtME&o|6|yb@zFo4|Gz>|(wTA4UAdIOI89$?&8MI<4kc zz}uSWj#D+iX^qmth*ZDX_6--TT!rlnd|SdzoD+H~AfCK^;SSLTmJ1$F%J(*ZU{l`5v>WY_S09 zcWEU7xzyhuALU?Nkx8>6H~Fg+bZ9KJL+&Hx7E#e6Ub?{{__9I`7v?FX{s}BG7JC5_ zf@#$hx9zsNp@S3#oMzX}flY}bMx`Ft8dTu(0xPPoBl2hV6Bli=EezN)nl#L<47 z9dsI9;y$Oa6b+@qkTn-zavYlB!qMz^W9gB9#fZFmE{;EzP%5| zEH&c@=L<2-3iYL)(nPSj z?-m#Ma=I3>sx8nIc;L~dNm_%7FSMy ziSiml$86u0QQaC(y_CriM>gt3Fwp-|*x{m0St;Y__3x|Zj`Ct@-6>Ia>-h_iJ||tB z0P089pIhcd)y5HH{^3I`Y(agi+M6+(JcFZ8jSM=$m;w?950=Zr9;uhhM_IFJtSXE}iz{G; zX^gv;1VTQMq7qV;y^Nvq(ZdLaGX}^!$6L^~X3Ef@C}l@t@EUONd!;QzR;t_PT*&z+a#c77xoDqUYX!j>G~-?cdmWVpC!)aW^``~(%TEiR zHV|bdKTHys`25A5P4UZ6XxlN~if`;i$CSsEHN#GCl zS0d!BELAER+v_5WniKM2S3yxKPtH+9aw%fwlUEDNIid?wJ9KN;x;Dt7(Es9q0y9)Q`TGYwB zV#F$|gsSIER?1@p%I_NqWR z1S;zPkgyJJ##B3o5;YqX4Fw{Lw6jVbodtG(6k^F{WGjj3*0lY$Qxv|_KfiksE<4Zv zP=Ubd{RT{$r*Ztmdtb@mrweU4j$vogM_p95Bzvwod#JGS1& z=(NV@--xr>jl%`oStV~dRXAUlDVFFL^OE1hA$<{EpcxkDfXFbMQ2{#Gqk|H+8X`pt zU*^8*5J zv`Pz`6ODsaDW_J@YLMu*>{HI6;w*F6!*YNF0uy#zhK+|^4pS)JhTS(^h$uKX-WgM) z3rjmT9NnX)gfne+Xq`nPqYSm~{Aizf%;_Qq5*_sjj{?` zYDUu1!KWE0*7m#}ur+Gb;|&6)whNO#_oGAU`i(xwrTu-Danz0O+bd+0vm=C8#by?F zH#+Q0yW3ex`#JRpAW&EfF}{Y5k*q_Wbf zz`i)Y0Cf*Zg?arKsQrhCuHnY@paMGzCtA!Bi&H;n$WcPB%WiQv!QJ-%63OFbAS--| zE|BAw^NE5q` z%h@>cG@3{}OakD|I}MJMkHL;sW4S?L`{Pr}N;TOvXlmDJHrt#ASmmYd?S?0{3WpDW zlzr7~o4#BiqNDM;ZpLJZk4%Q#^-^c*V4Ugv8&OeMEV*Uzzu1});*D{((k&(>pCc3# zmH5km+82tSZ=&)8pIg5T8^635=Z45&7cTJ6e;!%Db&SCYV90k4h>$m-ShwZZ#ST*kf*UxuDuEs!z?KoO-{ykIU)}Y% zl(isR+Tx;rF3=2h>D5|h`K^y{G(jBasC0e%+0W22?PI~wVB3eSPPB}PaIC5_)Db)% zA$ZLLFA!m`fTGpt`GHEVj=D=&%vk~@p_HQ`5*jt7o3%*9Or87Hg zCdsgXId{g^xFG1-vfLE!L3UieS1~lR8Tt5hU;7$nUZ;LmMK*BGpNIVr^4C;x4q{SR z&o#}`PdAU15+yHTj(I*ZYC2BfU_Yh|5ztH`lM1-c!#o$1aqHMv!700CWf_wEpn>$U z=xV7{vo4541zfT;^3cO3YIhA(MKT{7ttjny-fb+-Wo3K(+HKNjE}D==Hzhr z;RE9fC{ehMZe@3&G8=*zm;eSkHkVPzwHP(F3GLU!11qTheAPPll{-oEUXVqU(MxCW zWz3FjRgd7tjbykKV4DAsV%GSAS=#*zk?%{tqZx6oPzlCWx@$e(RLB4 zv7)#bz=r#;Vqw>~N4no*hxg+vIZ!&~+eCl^vk}dqTA2HtO1){~wzK(5kWtjovgp}K za3G>@7~7UV5|3%<08Kp)|AT2*$mN?k;LpP>2Qa-Aqx^daUr$;kdO2!Uhp)amaYLb8 zcuY^GO=PV48Zcf;ayeLJIw_H~^oG#*p&RP6{9ZYiVkZv;1KX;)=Sh}KZS#LJJ{yD`6%i%h4vY~Me&s#gtkcIC79kZ#r( z8A`%gpm71^nCNJBa&wZ)!Ne$3EXIJp9{!_M>0?z~;x?wY-kRbtY;=6u8Apet8c}?u z76IZ<@2{}`HuLc;v^aAuTbkwxBciE#xKe4zpc&n-L0Rb8D(^@Vm{J_yvAxgoo6RTj z3Or~ESuyj8P($b64bv{QH@D5kdwSiFsd~WsOIN#*Kxy;n1<_z^JEM>M^KTj+73H$d@wL0OW6`Lkt>F+XufJ zdf9J?)}aGrx6scsa#(zfKLZ6ub;M_afw2Aw$zWvzoE8>9P=LCI@_>g+jja5+3(wER zaH+pasYE3Xe{f$wd^XTkeg9G_37`z0PNh%3U$(c=@?yG5RQxFwN8WAHd)=S^Ef7fI z^_Vb}8;O%XB0DXsYH5TNa%T>>A}OfSS}n<(w;{1o3mofS5D!YMWuM70U77kO(>DK1 z^;89%J?_evTLDKW+HjgLojdKYX!B)DH4!(#`!+k=XT3L{S=*xcy?IR3~2TUHTbVz!)bx>YrG(PKJJ}l5YK7lk&ENG zb=$7AZCsF=7`S3Je8bO;#t`YW-<$$eil%%wGQZDFOOMB7Ui7pcB@Oz5s2_o2EVuUW zz#=)kePA-_gXP#&G}(uni15}~8pxq=$D$0(8R9M9$m9Y6PxMy%Ari}l@v}nT%|JKn z$~f^^qd=fdPXAo77Kz{|X_z(XPukLgRoWQw$B0;pKhcc<9Xh|CdAiIeWyvPT@&vVf z&~i{v{<@FxJ4hCbJ0A&Y%hEJa**hrIp{RxgwBv;@nUsMs49N*eHa{)! zs|Z7OF4z1FY`yPiFSAhL)Dad(6~GT5pG1sI`!Q(9_KK8i5-7&1P|3Pc%LKF~A($c8 zk6YkEysXwvn+U(*BmNhaP3QuvP?Uw2YiRq$J1hj+*i?b@5Ode zO<(djB}mV2=skgR;I<16jo}fwmjwMW+>wDV{&o5{V#Xf&Svh+Q+1TksY6t>QL2dkH zBFT2h7gg~oIul|9?lM5wn1}M9^VC%z6>P#;AFT;tf0SF5TkM-YY!j-dt9~lHET^5D zPFzq?^03Pt1%;~(HW?QX?n_RD!1B1(oit(>GkZi zM3_eqLWUod&ejcl48`Jc0j0 zdi47Mjo1Cmq2Fd1gjlA+Ac;*al310jOK(vO%)iy0YzPvJj?S8DYo<`0yYwHIiil+6 zqnmYElCu1}*zPc;4$m6V+6kuP&+FBGryCJcnQIDSL%0+@3s7*zNV*Msjkq{W8+JB3 zTlt~B`i*Q`eCTQo%wpXAHL52l@}_F5D^hIq_dpCh@{6+YR6z{K8UF-GMKcUh>;co1 z{*jUvSyO?`A{eSlky`jS%!J}1mPP3CoqS6HIo9L~ zt3wq$6}HqF17%GG>4^UR;;6kIS#o}K`!Br~@LMX6P!0dk_v`B!$!grSXN`Q(_V9cDo>358UXW&5(kZ=6P2#2v5Hzc#Xu5BRiK&mLCX44%%NVLZ z5jppuaen_(H7`OdQClU}Nr;DLMHY+#?FPD45({RmilJWhn}0nSw$wqY1ZM?Z#de@& z24_h6t4zh{^?^GLL&Y?tBqn-G(%?O!#W>4&h~@jz4Cu`lq(=p|K%5OEVx*wWc}0$c zbMGhqnt5&vIIY!)7l;GTKXz`40sok0RutkAo0 zmISeF+IiYQIV-<#SYuZVx(}B1`Uvf(N?}k!k( zuD8*DA`}`~IS>H?7dBHhHSa-Zj%=(exsiu-vK1}PAf*;ig_$xn7Xz+50uvHgp=yF| z=DRYxTi8^Rx)a|iYj_>Cms>fXy=a6VRe~F(h^2wKG;3g%87D3v(XC<9g2{A<)5%I6 z&dnqHTJI)6Wt<^jR(uaNuFCYA>g##C(zbB4=~=F*wImqr>Bfx*Gu{0f>V1FS z%p=5Q3QcZS5^isA^qKV2A*jsb)TH zuPl*>DWSS!lrt~=%!7?jDuV|gqULB$D+2hd+9dwr=e%a%SpElSSBD70YsI05>wUKM zY4(}4|IcLFhI}{v|4?MPN&5zhK;aX2ip3XXr&a@1<^DH{=k%p=fx>Eiaw*@eZI;cv zqslEgz#N~l2Vgg&0S6qb9f%Qnt0NGw8B_UWK7B4YdjAGIpm)R0*z$bcoa~yHcI};O zE6Qn`12W^!;5}J1Sdi4|i%bWbeKk3@F!}}wjw^b_sMwzWHuf$H9krcs*fHw5aCl~I zhVG%uN-JuXEE1@?ajE_#oT}jzFedIyr&uudt`a%|4O&{qk*8aEtmFB;;U&>0ddty> zRJjI!S6I`7T$*8x7{Sfgv0>OLO>HEk@ajhxeV7HFGO~8wKKvh5&s>|wZJFGwaZVrS z_Xd_K8nOoFF-Gpu(u*LUA)XGC3eEkcn%&Rd|5SY^Ty~6EohDz$l)aP6wSGaW@#msR zu~5q?ZO_e^!^EWeoXJ^)m&n$dop0u;=qi zt{R-aF%kdm5I=5iq7kB?e$(IPL9+CAVzI+0s{pnyeTd zA4Hm|8m6I7K#Exa&6$2F*w|01>V?GV>uh2g33i7|Z-9A(B?dpZQd*TMN(GokJrIM@ zJV56B`7%p8KpBy;v4RE}RHl-b1=veu+79h&#=-N1va%nIRK_$ofu+-8HwLD=~%m=!)?HuS1#(nt)aZ6`|jZmZcc`+<_1-5K%__n9FygBu;SZ zW2or3mg}cwP`$Uda-n`j!_FWOh_6j2*}RYDYCk0)xkTZ79q#T5l=q*1e+_U)V`fms zaKiY6#y&4+LnRl-pmPJrYhVI;&lYVP40IF*DbG+^L&EA~TtlXun`({-JIIJ*>fwXF5zTP?>_wnVOhghuqMsZ zO^j0)J3#|5t)gj0$1QVmG@Xk>l_~+rWr~jP1XwHKHgNAn|4gq-$2tQ-zS|eF>wO3P}N#RG)V;*^<{a)mA)aRiBo$36xo;@54W$18t#c^rzsy@SOG`#+3Zi{>nW3BDMRRMnMJA8ofj61!*eYND6{F>V96?#U;(r- z)tRKjjwf7bDNk!DXgG&x`_SC;ds0e%NbgPG@-O00*Py%MI2)r+4Kj}rhAl#4mZEjW z2C-?ru%xId3x!(h+3EhfNICq#s86O^vdPgv zm=JFJ;+M;C?NBF8PWkdQ8;sDqie|}9JC|e)-SytL*!BY2_D4wt@eyW=T1MNv4#`Qe zlZ(gM)UNyHzQnB(#m8zsuEVA>e{*HkgTySEwZ>94j5?2jUk1f_3*6tuUJUFQWmP$B z)dWVFIW|)W$H3333V!1*e^>ut2=xiBINRX4$1Pf_YjqeYF9QW_7^!ukKPchszaj`r z-hRIATXY&2U*gg?7CSa z`L9o+`S;$#Tm=$h#+uCkU`Xd=CrK^z=gr9Oi_76Us^yB~`2#4~GW`Z}syw|352t+N zUX{)`Z@(U0cmI?t9Hi=O6q1Y`?cTyLL6Q3=qlDijVJZR}y6t+*s|d^_kxTSC@_i~Q zAszrxXxSn&(x%Y57?1b#`{MoP)Mwx_Sh485J^=Z`f&}xX(ZFV6{=c2>3`?U;S&piP z^Gsfv{|v$O85WhzEdfg&e}SiywCARLJy;xC^Fvk`BX*Q}O4?+Jp+%?3mzr|M`12RH z%7sJK-}oKjKK3HhYl7*{BIZLN0?OG&B;1%##ZcWO{YHUTc zkt!xz%k*z`%O#Q~`$bApVY^bEhQ4b4VWFu#Kk`^{|0`2$AA`##a1`hTL1+y~U2UMT z0F#e6HMiBB>!Et&*Dh88Hh^>_onFn7_|fX`EMLkYPE{GhZwU`06hJg@AgYQr7VV&7 z>sN5@QLa)?Ut|4lrM0clAFC#AFf5|n4q66S#vyL*eriM9u$&)Ppo=={4us-vtHVL| zu4uTcdD&B&HHW9)jlZG>wd~cbx!-e=?GX1##w(%K;N?P!3qm{KoeP7)8zV2b*Lv4N{Lf906Lau^RVJd>6u`EaQ7?11;N8ww!cqMWCJSD`c zJXD!jO0lGeZkcfNacFJc;~2)WdfvJ7I_OJO>I%sJ$0BY$bU9q&E|PF3Yg9x#R5tt6 z_YRPgCNS`uhMQLwiot+I2k0Fph*zhe?i=Y9^C(5Rh;0&u&cBusAO4xU!I`0U-VG(B z1gTo?ABfFL0LDCHTJ{Ga*Br92O`fDqC%X+WDDE^$c zhRuAvPG_3B$oj-mhph)q9*B+C0WSP0iQ=+pBUraK*q`4rUzeU>_aViHcztj(0z6LhTN(qHCHc9?tIAwBw1u|VU`tv8x_U}I@q2UB*$2&@*hwJO$iYt0s zI96|OlYu3Goe=8&{(2+;4J?%6!^(>w@N!!@7a*U?z_V@9S={~qH5JBU22uA;d-e59 z?1SI_cwST0LJ5uGD89mBU#_FN8~>y4Nb8LD{z-I-;zb$YBZ9!%QXEX5MBdg1UkjTd zzww>GG^R;S%0N*&&dEo%_A|mZz`0eCxiV>QZzb&?NX|F%QqCr*ASh|e@mZnYHy>PN zNjpV-Ke8iH=33WJ=5Q|3yxgU^?7Cdz#|YM4ipo!O^+s5Cy4m5Nb`b+}2o&_g1^FiI zhuVkIeB;49CRLm#5vbKd4^_v8Zy)sWHv7VX*v3}P5xTP#LMd3fe~=TOcw=vRc;x3A z3{$Sq-~Nuo+Vd-WI#@efObt>ay@R;m`=x${RDg4l+gq`G_pVI1oL2GGo#re| zL23CmQD;x83Dp*pD7<0;)0xymRRBGH3@00!gYECLX(w+~NJE*wSKyiCguS^rkc93Z zjO|an4UM95w{}FnM}Ho&Eh|U@aJe8jPX|ahsJUxW6}@+R*lGmfj0Zs<+9fY#bybs+ zrlI6qbf((nxYa+ZLrd&$ne;^4Ds%MBh@s#M!WdA9V@YMt5c|sde1py?I~&=iiO2tm zNs;1;;ZeyrixWmzSFgaP!tAylI)pH+AL}eU6|Jv>Z<#SY+5JLZOav#}!epqtJWWn}jgiE-i$ij6Dc-0Ym zm9@5dviDu8&W&kPcbP2pVR;bJqe%|S(&Nl!bz_^Y>kWN7b=!b%tMrzr$T4C5E;nIs zDfFCuQl;_KN62<|qm9g-&{z>@?Ht&lxlWaPuH2fUE=U+;Tp-GPVb)JoOfiR<0{n#J zHW7I!AvTCJMa?FAk3XTV^DOo}9KdWX9DKloN&yBldKly+pP$tA;^fbF(4S5JU^mEe zBjCV?5-SBC)}!lQBNYk^Wyo>Z=qF*JSV*EAK8)ye#aG0~- zGOQ-*^YX(usmUT~)(%4=O&&VDSene7asEU!?nLs=l5xTKd!y*(Xs_M5-|T;=Px_Q` zG`0~{_JM)K^&nM0Kf@xAv0~oMaB>;9)Wh(@KD&`BGK-Lj{Pvba#My!*Nr)@>ynhaD zwyve!_(m)8XBm?11xa|dm_mN}WEqT5dwk|{rtrSIO~yr0ETYG}tr{d%bXgbiy#ZMz z3VAz)3;M|FO8AdDarmJLjiUMRe>%jvDxuzw#0$dVC8P?FsQq%@HE0_tx-znoz@g)& zkz>xIW%MU%<2jS=!^7k9l%B>k;Y7QcG5C^{`vlQCk{ye9rNHSRFK2|_x9vO_HPr0s zxvYq?0AUmdF6`meq)88yLo;kPMi{n+X;2s%1?dr@hZ|L{?q<=3O&^2xVOai?9<6WrGJNG=w}j26Ho6)5X>6d!L_<0u#3$6!3U8Ncn@gf9x?RGYly zLO<$V3HFht>W_q96$X$NWe+O2mV*3SuM8()vLNY0wfXWrtdWdF1N4ep#ro*tc+!Y1 z2ez=I?Z{8NBJ;F4UC7+(cL2$IT_O+GPjN5+JZm+ECPsC zmFF?UGQ}Lb(y{QA>-YDaw%_Qt^Ds3~bF=`=0+>raMRO>OafaC-epbIWf+8>vUMnN# zXs@>&-j4iZX%}W*UhSOthhUbV2RlH7mt$RP5HX*6h&1t8&njrm^0nz4Zi#GA57zA* zjL=-t8WbvjKsI*}b?z%Y%1(?)N?b{DoUH*&{yCGP4xvGG$B`=Pl_$@SM$7h1)Pl)a zC(JRW9B}^)V#}25AOngFF0{z4T%Ld|w%s}y-li@)m#QPQ*!G7W=cFN(ho-qLJVeV7 z{oZA_aXc=`n;|mN=1aDsz`YW2IFYR_m&*bUYCF?_6rVLxTKeSqmFG5{VS+c6{;d9w z;}#-knQ8$`dY!lPTiYL6!XEYE9rt6tJiy@A4pFStZ}qWBt=rtcfiKCcLe_M1NgWy< zym8rl=q0Ta$-NQ;mgQyDS@vh-Pk9i$E*2PEFebk&?C&HtqAL{=R=UXQkU$JvP|6a- zF%|ftKMx@OhO10Q(lbcG6mG~1gSdc7`<(oz4)N(Z*CUi%F;lcmsPoYk_!1$93)EB^ zPQBP=9BOj8-2Nexyk{6nVec{&=F}l`(Qw_fQd8UxGMR88N1>Wm0KL!~i4j{AO_NEA z!JY}4PJty0nlK&1Qx)yn;sVZ2u2fNPMr@UN0Dle7v9NFi!=0qB?aw7u^&8H^!HDxb z_1X^6Pc)FHjs=l@)C8BEOsX-2iC1B&K-^NaAY85Gl+-+a+9*=< z2{ypKr)I40DAW+X+8sNEy1k5C_G4+tPAMl13^g6)AW9G|Kn5Dl|4jUELU>f0KzXfM z@ViXKZPnzfe3(V=A%$O<3)x1)`yQj2{Hz&tP+$G(5=5>#$td&6PxWl`D$eq}!nE0V z%g9y>l(OQCu8Dw+_%4?%*WZ;X)nNAR=6Sm8l|Qo~yq8NM;D#uIInl*zwXu1oub7fP z_vNq3dJ7&7>Tl*(M zK1`(qE`BkT20?W8=yO!%n7p>1k4dhLx?yKrjiOUq{Zq^0MNyl1Uvz_h=sw{SH6=hKHqO^R*1_Zn$b;GIR zc-TAN(9%kXfRB+*AH5}Sexr!*Kg_N;c%eW9Z5q)kB~1$tol)ee78Ti<#wY_<@N)}D z8n!Ul5mZJnip!ZaU6?he>Ou0RL1oVo^u$o+PDR!+E;f_gNSry20i7vVcZ8eMMmlc1 zlXEIrl?^OAjoT1+9JW1O*`o4dqqCa`3;1VD^Ee^I1kFCtlwFlQToGdkrCohbY34be}8 zQ~Li*%dzj1rI)_0%YVhhjO%9%F?LFD+|Jmwo0tVrv_~fe3#$;j1Yn&Q2Z-YcTgtgH z-M>8Rimw*TTNFRDlG906+Ib-0Q9U0F-e89aprt<8_~>A-n$B=v)_W$uJ64s*HT$zf zmgtr)o3XI+S$l8D5q6V2G0hiN>l!HqoLgll9Uo7cMdmW5EBPn zXj=jxrt5v@fpr&VFDmq2C146@HkX?^1pYghA+vq(tQ~-man@K#p35cNY_cFqrL1`u zW@pU5Xh61oq8wBsd~|v@frs3^5x13^X2arNp&TlVib zB6o(T4y%|RLZb%4=iP8G$oU?7Mlf=bJ1oe7BY!c`1Zl<`^uA3r{0kmC1I@TqgT><` zrQbWDfQCM@@UOXv)Le`hC_+&{DfZ_arAR%+7s13+N5$EbI`4&49^k74oOq9Ng`Lw_ z@h|!^95Q0q96MAurUQuR-O1fg|JLo;Qg=!{lwbcm;s{A0?nT_Zb5yuV?5=gwk-ObV zrENh;fQfQ>q$)C*k4jF0m4WHaP6&2Ed0LhEdQ&y)KT1Y)F5;wGAC#tAI1Qt8i@@2D z@K=?0yuGEqL9Bpey(imMG|@#fkO5VB7!TUaB-_B*gNtc$$Q$6VcgezEbfFvQZKSQo z$hhBg`Z;fG1{^9|ES7RarjjZjn0tLdj`geNXcD|5Y5g$KZt_6$eDhQvC3L+JR4_t3 zhwtl{(Bc)(2*&UYM>*5Q6ax|*N9kJZQyMZM83KN)k*s|%3t``I-Wq;zGmb3oTiY?D=?4P{^6qq}qElB_KPfNqJ3dgMq&M$ut`4=JgpmpDk{8vQ2 zOwfCGiJ*(NVV_AIL6aX-Eu4q-KWSzLHQ@4hf~d!PsyT{Wgm0?n~iuwe3xeO_h_f3RRfX?z9cx5*#Mgk z!J3YKgkV#E>9W!44O^3usDrI#$)W$DjPn%t=yb98)7kt{d$u#OD;<0k=CTZHo-EHNxh@U8j)qi; zo)882KvZIq*85Nk|8{^s`teC z>;lZU<%Gy0UR1gzKMHer%Zxae?J3X7G}D$}e(7&cyY`{=(V)PZq2iJ&ak3VkT`83? zAm$iP<5h*~cWt57rzqIS!12@&5HB-&V6Ue`3?cU`8pnFZZ~3$=toJ?1=TFi&SjX`D z!TVvD#BtOCTKZG|mL6-)kxH)d0z~~BBL`x-EvqxxrI-()ySCr4VNcv}#BINdvW6ft z+Bwl(DPN$?3BipgrU=M z;rOBPyr|)V%jIB$g4%4!ny@b=){RYSr5a5VuWU`N{nzOjG#VUml-jgll>Dh>*Cocr z^r3w9;=9GY0W%Z_G0xuMJE2l3F4L5GUGoWpM9eS7lIHH|hv8&CTBD4-+U2*6;6B5* z!Wdhn+Xh|RM4){o2+6g$*F4<=hnVY)1mUeMFxD9;_*p*OB0A&T7aww=jyxCdD@D8? zw+~TZ)>86ldh#X~dJ{Fot=XpeR?3kO?}Wa>pe6BW z)$!wvB@?MjZu&Ymf=Qk(BYW+MATTYZh_`*F$XgyebjRs=;h*JxsOF z>R!@(inL6p9q9iV53jDm%GcPc+cnp-#E-~I9ZpSW&EW6K(~yL586*V#&aWdN!esP~~H%yS}nyN%}U zqsL$6MYog3BW1_HMsp$pM!wB_!sxYPH(=Z@BQE1PW8I+8h1R`SxE~gr2&J!gg@*_+ z!G5-T{w`_&j4@=k2UFHmBm8WH58OOZ@YBp5^LoIU{$G=2o!`>?)V~`0Nja~-n-S^k zuu&BJ=^3=uyu5B0H3%m>32Jm!UnJ_wYNM$hxXRyCRGGO;s5~gtv}zYe-e04;3_h+j zH)_q~#U^b#iJ;37j;}RW^dGBnNH-EWOhl%1P_7&VmXrohvM$HkyIT!vZG7r2(=?h^ zBm?57TYw-=9Xbf8N#!XpI^;cW1dto*PJj-__r}t&M1gBlhEn=EPr9E4A~GpdASojE zkq`%n;+zc9U2?0yxeja8-6TEMq}cn&w%|`&Vg;3wm8qlYw6fToY=Iz-=E>`@^*utfaFQ9T78Df9G!L0&k@;ola5&ai{5Gq>`6n z)5CWr^A7mwB&2swJh;znRiv<+xWtzSx>ctkuQ#|ZlAR8!9Bp>2r`Pc8evL(fFLn@w zYi^^#%?V^Qv>#%}n41xU-b$z_Z`tX*1+|0p^RzIGU8=T3{bVlnw^=tc=s=f@$7duj z@|I=-|27yhym)zWtK55$IFbx&ofi9~C56tWUlzhNaSEOw5wl3F2@WOI)(hj+5a{7u zWSqg;brN{kRGaPg6D_SXwk`}r#RE-J`}Q?r$)>bfJ0*u~OHq?7ubXoN&%72KHsfSp zWMIO=y?^$}mPJ3EZMo}Z`p`>-|HK-9{X|;M@+Mq`r#M(4vDk35Mg4(sEi|)S)!L zG*+Wa+x9|C?5%Mw>Atx@q-xa~L3$&kGmIMr6OFFo>a=6_i?lM0T*(qV9u8zB+ zMT{0}6^5VJ%2J)kUp&!r)9_H`mN8c5 zuSBymu2Fleb5~x=5Ld86Mqo569>WMuRJGb;q7n05lP)*vW^L2p1H4S)jZ4KldP}=k zV8FKS1Wn2_E+`fq(ZE(0thE9s`Kd5*;xTi6(fv}Py;+x@02qY+tSQn~gAj0LNjWzB z$0YN)oUlB_G+bixce?a9-~W?=gzb{*CELTtov)VE3eg{egR2}T-8e1e4DM9Jpf>G( ztW#Ikf61EE=k_Rb7Qpk&mknZR+`^C_*N95IYtt;BBc;`L5>Loct!6<67sy{5^mqvF zrL<0n8`UR6gz@QH6kTnaYAMe+f5}$d@QL5~i$qmsN--k!2JF;v?q((u_bk_v35@YE zj+U5o9)oU;^At)I2>jjE<>VUyS{%Pvg9%PseSq2bY5r>1gSB1X6HS5?&nFCF?P;Eh zn_|w>^9BLD6uQ(CReZ5D<8`IP1S$FSVD@;!>dfnGOf^8*cA>7b5%CIpobfBO z+m|HRbls%Nu4{}aJ5Jq7X+aD0wWNO9@;@GWhs)1y^M_9(9M0*kMP_Q#gyyUqxj&ym~_|@jWxj?>WtX2%@E#fEo@{ zy9`q1R4&4oSoK-)73rZRcoeOw)3`9Sr=F|~Xt9nCNjuK-ZXg)fEZe7^=;SpV{F*d3!W+*l1yjz%4J|oobABGrMmy0c%r`nDU>)^kEc9pXiv#b|j zpTU&E;~#`pqkogKT0O-6BCWvftTShDXBGzqHXgM!d2%ipudb^IFUsN-7bNA`lowg$ z6%b{I&FXCBa8Y4;OtZskL78N!x|1C)DSUlr_t6q@z9Rbg?BBl9uTG9%Hgc?U@@9QyDcLd>) zKgZGc@e1VBs_4e-9~qW0Nj_W->8LkG&TH)=v16B>QhrWuRlrC3X73AW zX;;V|c2WAnY<5VGJu(EA7=n$82Q-gwjtmV{-KeC)Uj~ADQ#J28hdbZ4Zhyk`!+IFN zt=0L9!$6;r>!QEw`3kR{YXI^wCEV&Da4f`N|o1c5ShWMGEPYAl4DzsmZMBF ztbr~q(k?4sJ6{D>FCF|C@Q1-=h;LO@51p&Jj+AlX(ddT&LDne9$xqfxWyD@pl_t^V zLtQ0wQcwmU9lSELoG@E3Me*=lzq0?6{f8ImpKI!KD9apt%Fn8itcf;&<)%gOGS zi!U9F)r3NH9M?VJG6sXv{=`96^1TvyUa&&!~?tU$zDOc)=Sox$ch%+$BW_!C8Dh& z%Z7K=jA(v7r`a*YEe@OqkLy8Ztc;bz^Kmw@Vt3E}rv~RySx%(TGC@hKmWB(}w$M^F zx?RR0l42Ht6t@0~QD9+GFw;hYG(5rguZ-MTna1M$;I$qmEQpFViWP?4sZULT?%5D` z`!Yy`+;Y}S*UwLE4^(FUJKrn8BU9p;($2g?l_3kDVVk9P^XY1QTQ!%JrW%poJK5Ao zQQc;H+fEs!PAHsC3~00 z(}YcUB#hXP^E)`iar20=r`&o6U?5b!xgA9LUuOhQel^bjvc>qaLR>i!Z;yxDsSTF?R$k4=LdIZm+7KMx(yi?OYW5pkMZa z*cM%e&=sF|)$HifEo)QtY)Zesob7JwtHK0R6bq8NV&GaMn+~ch(rij}(RL|PFNqdz zOG1xChdp4^wM{J)!)kp-OvX;7Vq~v`o*grjFyHtCJYbIJ1Vjr&OWfIJTX^>teK!;k zARoo@W2PL1?cUa1W@8%TSFt}dRC1St?_wFtqf9QDOrc758L(264IcM~VyB#yqFS2O zSxH}%5?6P|UWCEW+`;(T23Yw*o1MKWZbct4_#CCTqEC~ZI(s19byi!(U6L-I1z?Pp zoT8WPSfe@V>JQCl95Zd?r^W-{7at?qE>k_YRd()XYT!_*ofme74Lv*#Y66=%OudC# z4Vi5EqhYc=MqeFc#kBG&T3crZi^lR`9+onV_hNoZ2d<9#Zvqj1{q~N!u1|F!P!0cD zQHpTy8!(&}f{DdtP(KyV;1s>xYMa{NUQ_NEvx+Zgq_*t^9a}8^NR}kT2C`CE_ZZd~ z5~;r`;%g)4&IF@t3MJ!ljia_59M_qU#2z{4^7QVWb}K7N91K5+_8UzX-_TK@AyN93 zTT_`0T2hlAO%woI=OBdsSCD>D`I-l&Jc1KlQK@=``Si8fx?R42;KKA3GP1~yH2S4I z8U>rS#fGP}{?xu)v_RMP5vRwQTe;!Gj)Bq-ob%dOVwM7NPFmi!jJ`{s_vhU*MDZzi zgd6}Y47gOvot$vqRXUh;_KGtq z9_Mv&AScvSHYSz!VjF;sUwxz`SE;?K<;D>1FU=B%l2UQXj}Y9G6b9yVn2I+iU5d(x zX5Xn#m`cq`w>vT$SH5N zopHYn>N1j5P33w9skY_YDe0h!UC+F%I$a6|It}Shf~aJqNPdEra4S170a$voBZrH7WeL~enh_{wnnw>v3&w&uE3)(l zi~;8VNI!lY*o*r8%W#16xYJxwSh8DESjbVUq&t^HsHR$j!oqNcR{9&Jj}H7=qVHWs zE9=r}sJn;6<@!$;#dv~us{N9r zWS4sf`n>)7zmw*Y%NAQ|uIwy2?sDo3B4%3zbVkSQ7Gs3`K-j(y4fkA1|1#QdsgSFj zh+3;G^#om1fJ(n}Vj{}=L2bpWbRYM zIjw22E_2ClEib^r)n@3@Nk>nvVFT@qbg>NAU7XooV^wa*5uVwGvIq39N~Tbg^6n_o zbF)-WR}DU%VvC?u2}63_JP{L3RHhbk;toOXe>4n0+lkyioF1I)Ur=mT@)$0RLW|gj0$uM1WkdI*);7m$E zW!@3<3dN_{A|fbBC83p7VSEjxjOapYLoM6HMVJWzUW0JEOTrF#(cx>SiPEkinvl#^l-afIMyk=2;+}g=pq|o)6 z`8=?(f4#SN)F`SkK`v}#7txnG8dXg_M;c;TTGO?itIEH7lHN!Thq|bVDewjAMalEi z52MQ@#x^MC7C;z>Y2#MT=1h8_IA_pE*@55QX-Pnol<*9L1h}h({@pquvRDG@-eud^ z$dV6#Jml?IF_8*>mC|Tt^7|D6A>kiNG7#9BgUvmZ0X5oEH&Lw>rw0>olaYE>&{Qw` zMh{H#!jzQ0^Wo#$gl@0$VHHsRAMty4hJKNYOKEJZOIEUE`sU_$YmPWw!}TOaka!fo z7#5^HL2CU9eeUI-VPwgQgn+88l$GHS0?B!CstSrFFy^iW04%Q@g%27m=XfW}7O&6{ z8jt0CGBqhBf8+S*`Ts}MUADy)Eo-C3-DzBcL*o$Kr5kBn8h3YhNpN@f;LXZ0I6} z5%6+cE!o`HU+&UR99q}xB4jB?KQ0iXHwKU|#Fi-X7b_;^Oy3%rgt}pRtL2m?+0l$0pcR zk)|Xf4pWXT3X66J|UGl{YC+h)_ooi;@BgJLQ~CEn1lYXa4O3o2ZD(<7UzUn=7T zlbDL+uU=}|zoz13k7Nc@F)Hpb57ZYd(uIn`9I`bRF8Yh@w#`2{_O~=+N6Mvf|7h4hptNNorjB7@zO8oCJ~G`Sj54 z%ghxmM8y^YpPu*oKH|Ci-pFzURKl^{DS zIBJcKIY7ZOe8k#Q+bBCJdNQhlzJ_5XAqF|HyvNcdzP@6KJ0?Ks=RtJVAG%N!_=ETJ zngqs!!v4^(^`!RtBPO=cg^#_T;7o}%epW%^&gswjPuhEHIs?VcH9(||Pi59gwpckp~98z*vrNd0+h zt_Nc4`DQ1H@Q~CavfE}ahRpIj{ARPS4`(@|BUy8vW~IXqv3=}|%`BwaHGF{d;tKX| zvz+@%q-H8-!*LZIgrnb#A8xv1=$KxClUei^bN5D>FUC@u-j94Q{k)2FDTk=N?+$#t z@@!dvkyY7L`4Vnub4J8mL>^`3=dFtW;pM;5EzEjkS*&e@4O6f{d&p+ zg)Oy;5RHtNzg5T-u^2R{KoYagw*q)8(gU9&1I4%iHO*I!gW?9fO|BFggq*PfwdyS0 zUeBzeHLOIUoI?xo9`+e4tLI3?l*h>&aP-d0lP6QBY)s;lHHzVtNaHIRr8Mz zJUix5_6k?f{YytYIFdC2SLLjY)hZuOias1NxO8#|wh*Op%-T7z!od~>Dnc$L|d zP;*KPB+gFPkVuncm1Sh*#NIN=neTnBr_s}Up&EQiOmXfK2XE;X{pYQ%A#gr_whisV zZ|0^1p#X!1-iuUq;ZNF9gb%*qnO`v@?VN;fv|pW8KM`nzIv}eus>-P$8TY@I3W+S) zIh8VCpnIEwr!;r4+dJprclTtZI|$MbXIwr;di~RSp{>Qn#WYsQIY(?Kbt zaqI|C7tz_Ys@i{=D~H;*I#skT(iTS&WWzg2)l##0%IMOW!H8v=1ZD*?Uwx0}?NIwd z$Va|o6o3-Z5;t7;^U0$8@HL~`v|JDYp(pm3!wKe5hU$5W7Vbxd((Ki6Q=3h(&2Y-6 zsA!|AApGJ4+rVNBFRalNG^siI6+;jE zpX%itT4r6p_aA2}Xy5Qw0W>k0=jw6Mir*7u7dijykWHuTxhR{c@lP(Z&SvPe*(mhN z*ZpGO0%O&HO!^;S%o-<$aX396@{HU$`~veZdgPSgp3-O3i15cD#D{98bhSX@D5jxP zs3VWDEcl2X$lBw|P8C*NoUqbN95?YlFzl~?{$W0QlOu5Z@@F0A16Uer_Z-TZwt_@| zjf$%GRY_Q>p23J!3-VRbXdE^9ltxG8xBeaArX8mQuSS5$m}Q0K!!W0>?KXPJRnxtp zHED|}8WpML(d||Pz8_YVy-nk4QY@oBNM);6!Yawszc-|7x}1Ggr6i<<_=o%!!(+6N zY6x-2jcv$aAM7Qp_X_zOd90$vPv;b`r~=#dHw{WhxNApCs8&!BsBIE}C1e(6x=$`g|qx3w-O?mH?SzaJI#p{fA`f@qeVy4ehJ7X)mlj#{Ohd5qgMHVRAMI1fHuhV>7rj2QSoF=ba~J!cTAvJ*3w1qe`M zL*~9RxdY$Ekf%m*MbuV9T`bR8oH#0>W|&Yv(%7(;Tc=&SSu=Un#*+^L-q+NR^MWC- zVt*JZL9-eCc@^K!)Q0IG`c!GC!W*9>zaLW(HmSu(_nF@azwiC~sY+IjNWE`5UX?k+ z+Fd09M|Egm*wqBD<+u5cuAq>`Kq^9^DUS7kZ>9O93))-ZS2k?k30bJJu{u*RQ$%UH z!M%yxTT%b1mT-L7@Pd=2%&M6(QPBjelT*E2om9pxZm(o6s!Z4()UCp}+rfno`}1z8T+Xj9ZasP_z*Z9QWb3w2NwO^d{?Mt_UBwxLrPU46D?>d-Dl zHw=IbWqRWefXgDW%B|wk354JJ(X0#k8Wf*1t0RS?D&LQ21E5J+&%$i7?w-hB5zL#< zMwP$@!J5l&D&kHTA5Iv2Z6(4t8b8%E?%D;Zb6{rmi;znjjdP{u7`kHkg@Lqm`Ad(7 zuH8YnFrt7Ge=`Q9!=FZxtrK|lI*LE3-f3WzJ|YGL&m}rS1%(sZGd`gGD7(_gXs=6@EmE0*RTi=?U0>ugcizkT^*3o#XoH4y zx^8Oa1E$qCSbmNbm8d63KbFeIQpeGq%XSCtr1)lv+kL8*PSzS#^~5LhYrn5aBr>9` z`jL@I?0Q6jy?pmFsx%qcUBG#S`LILG?edmHubAwb9G30als<#Tpcw5&Z%Z?KEi}6m zI_Y$1A2@H+#{(X=ba6w4UKboC;rOn*Z|xQ>$p* z0c6No$e1xYA$e+@aiEyZ0?Gk7QtzX)^8@dwm6AbNdumU0)d;IX$sSdoekITCUj zoZ>+m(2d7>bQ{IQ!$06L}$sqT*^S5z^zUt!7t6D;wZVpi_pnFD*JC-hW$e-^sUGaX#TMA{aHYV^Rd7 zF(LU;Iq1p8&Ee-mM{a$jKk2{6uK&T}8_*MZtFaeXEmftBfhr9_M2o7|wiqbh9d#Mn zoO98eSF$lX1T4OD?(lE?i8JzgtDmV@c9CJnqeV(foP;HfKWZWH~?D3fq%+t2U@&lK_7TJ#Oj}MF4?@ZyvXUy}Cbq>8kGW7+kGYVjxi-P_KCDf00^qTcYmlbSDWi`uti!c<>WDwTF7ON9=s$clCnce_p3h5l@7wKt}c$} z_BX2n8oqw5UI`43S8Y`Zbx{O8{uBtpFDLR}$e*I>wp}sY3^BF%-Rb%$>d3^P592(s zQHrxTH!8c_ODP~Kjy)Dtf}c*FNi8ZpAIRDzeDo*oq|Izgejs&` z>T}gn+VW4a8f&)T`sl8R&^*Z_?=uj=_@G3g__Fp~<4V*I4A7+0headINg5b9OC3kE zEM*LVnKvt?KH*uW=b@WmDeFMbdOoBn^;MAEDq-#6EGl}$EuzoGz?8a5LKRRN0iQEo zp$iKjdD}L?e&ZC(J01EDSypvxXO4zaxI!Wz)d08rbs&@>@-^t2)At0EjpfCkA__M0 z-jin4`b8$Pt)M(VmdXf5U86zNZ=ftN!s&N`U5GHp70(>>u(LgO?IR zoG|~=)a;hD6Lv|8d}GvEx@(9jH#et4Rc|&tyQ0oY=C&Qp;m#Q{h& zU{PB)^3I3i-HEBNvoEj0L>aQ1YX*zj%ZqqV?9aRp-*P`o^ZboHO%^V563Y{B9x*p=Gtwyj6KaG>%6OKr*^>?S)lzmK>xUY_wKI#N< zDfHXLoyk?lqfc=M3+^YAF37&US*qcfl?ll(3z94F_7N~1BdPP4Y8XO3eFh9BAAvL1 zPe9D0LZdEFrd)U#)9U)*GSH-k*MNg)8;RYIsg2@6$sHJ@;Bx~;Jdr3bD8%m9m()J& z$w;vj7wZlQCCcyh2(AX^UhzD%Vcfy7*CsJdIQn8}`$(N%&pq%|) zS8S_VR1U=;rm3AUgzM23$Va3jHraoVCx#Gq9tcl-H^kYtW2RI4i@qy-ua#srY_*q+ z+V@?+w)@B3d0!dQE(#Q`P;ILd)KbCEqK{4PAABD=%a)AQJV~^+$r`}FPxIr+3GgL5 zk)Ao5e2c2mR8t&Ga&0&07;V~0Y%%|_HwhkknXbk7i77>({cBAvFzbyP2j0pE#PY_& zd|xHBRYbma;BrLNyZmBFW~qKaNo0^^%87d*|FbP&QfUOKqElD`+1@EHm#T`Cr4)&A z2f*7#2y2ZX@h5H@=B#XoEC@;= zf1Rg)4STv$9XsB+Ew@jjE0ZNamF+XlrI+IVDI3T9{?V@pVJfRU9|YyroQITsFu66X zZCcehp_7CZ+@d6cWWUjBFXeL=H~^Ccr|gCQ{5otaw=ezd$0SpeKF3ndjGJ)E|F#)R zZe-nRSkk!WszAz8I8xV@?q}pb^r;I}(aG}{m?@l&`=qo$|oZGEx+ye0;ONNhixaEI{S|=e`gaog6 z2LvTDu4+loKFh%Ke8F25&c@N8Xg{LIz1pfv{bzKwj62z6QK=42?mNmRb|qqqu9C^B zhd(jMf_Q3E;G8kY?oE1flTAYPL6@U8ePoJ{2WlUtx>RWJFDX+1bcg)CrR(-p$~Pde%-cWVXIHe5BmF)X7P$OvC+{COpP{0e)EFVPNf$ zY-@k|z!wJkE{Odld4=FGyRG?Cl;SEHLtwU>h6&9dDr5PPD6M#?f|zI)tqgNZ+0K5X7Fi7_P0irUx#(oIF`3bn6>F6CuNjZTuYK& z+LhG0asfM zUmwf$uvH#rXp}-h4_bY1$cUO7hcce&pc$LE3{Pfs;0V`kDh)J-Hx^M5sl)ih20Lyf z6(Vs?jpQ5v#!yHaSu5t;Zk*6wU^?LGRxi}0Va2cM&bHxwso-39(nu_0(NaDWhyFf+cVqa>OM!lnLH+qUY7A`D$1%@}g$Jfq>bbEmk`5S0-(6Rg^X!}W9s z#u?y<#%69L;B(AcfMe+2rz=)qDx;q&ZAw=l(-Ik0Trj>2Y}_n*UoLRq_}u@qCzGlX zMsaPzT3_IcR)w(m4JW;@R_AQ=5XbYqTb1hG7s-4)X(~Ube`-dIc{>$*RG)5e40Fz1 zUSajQ(`iMu9RQ^4+D}qUg;$UxH)qD>^53ljdYf1sj=RoHiAxmXg}CJ&_>&)|!Ss`i z=d2>N^AZ>f+71D%dg8$oUrD_T3M*;+PBCc*wh0@`vkXL8S$LSd?v9fuYEEjn@KIRW zcE8onctlsknt-(Mm=dvsI};6^Fzl?d1xY?ulk~`BG|9zqn4IEIPP^vw#)e!V(atV% zu8b*6v($H?Hj_)%52E}_YVtJ@?(BEH?~l9FnTe+5kY*5x>}IDje&!%aWXP_rJ*|^@ zj#&`G6)DC}Q#2K{PC17y-qzy=(;jCBB5=0>>Qh%+c#^));hq5g>=D?kDlG)$ckoV& zQvp?m@KvO_vCU%G`E`l#{N=vBJgB~u;M~j0dN{^@3Ouaj-NJE!{TJqxUDp~TEB}b{ zzpmS#s%)rhzf{QT*Zt5VNEg{Lb|?=xA@Z*QNa~1+oEo|d`dz^c#v}go@QIA+IYw7$ z=bLlcUOY*e6YqW@-S%;>XkbH}wnPU~wEnnv*pud|{4eX5fu_YEESn|=rRj(8t!Yu( z)k$?1>I=Fj@t+?C2Q3`O8W)d}~>yks~@<+O_BSCk#0;E!sBMWV95*72QccDt@yJ z7byK@FLbfdY$#2Lmg4;wpbNh-@fCF_bKp0=WVK!2tYPkn7!`0f#Ihxf+kTt726FND zF2gCh?Aur!(U_V}Tpz3g%$xbV?w+??%WfgmKxkA{rvi0O@X9Ka*+%_WsZxK0T0uIR zdbQ!82Tt4Z=;^TN?`X=Rp(`A~On)ofqJ0C0cn?!s-fZUhQrXT(M%%@$bl)$~q$cAWlW$h}V^B+4Lg9`T4TE2} zdudl7UF#EoKfsk2-(+QxE?4JTl!mYQQNxHCO)U%5#zS!U7Ju?_sdDu$Tr=U2<#NOJ zgl^KMYsZks7k3pOv{?VAXl-#Jka;$;JJv{3H*qfR=4!QLX|YF|7k$1(*Dcxpunf)f z@^wFFaX+%A?=$az%hrQ$d$YuUvXLLt9>fq2IYR)3qr~yubeb5vtof*!dO-*2lMhus z;OklN>}^D9;c2++E;+N$?Qo5h$2eFrj2OBfNoe!7ARxXQ)mZ;LJ|!HRs1u~+JcL9w zcaV0?x*Xb)rrPs~fe^T#=Jp76n4NvT@HyR~%SAd}XR|Ct`_I?xtkQg%55K~hvlqk1 z_>ly7PpUa#KlTSJgTLPOwWO(+X8WYR+jRJE)R^&hbU@|fb5evya&@E@ z&0ndBCOLf;xd1vQX?)|10_aZ@|97<&{g#J{Sg`=?2=+vIkH0k*S~Sv(wQ%^a4Y(f( z5{A?bM~o={)c2JcC#lDO$W=e=D7n5>zbOq-|CJfb)Qz7UM)s}dmRiqXs0$;Y>l(>U z-DoAgYWrWYEoy{xR{jjgIr~LW>!@=mhbUMIdy8-$M12k0h`*3GJ-d;4m#SmnP4LQQ zfo{msNyyy8K!e16o|Cx9)_UtRhW~3nziU$DKZ8i(w=8(&`}g9L1Qq!(dW!i_l69NO z2m-FUA!j7!t=q(ryln;2wiPIR?BY_~Y<1Wvu67?pnkJORt@oRs{&!Mp`g_6%T8)x^ zwr6@F?-fHCu?u)RQm58q4B-{1Qp7F`aulTgyR>GnT^2DsV!8zX!1^zO8UiZbYZioZ zUdiqH>*LFT(4Lm=aLZ8U&Pm7Vj<;!>VS}9cgJ@3Qt&=3oofD8R|70P>UZ&49HZ$o~ zW{$2Gj{D&j*{ec7vK&#pTKjvIKb4$*sSf37NlHs$n_(raple(gmxv&vc3qylezfHL z{lWs^#`|FMuBQ1cnWEbo$0R&FcrSFfW!Xsho^2PC;r6&Ttb$vp0b39j&6V>DHWE6P z<^qq4LCqgH@iX5!Z14f*xU3F`10=J(tBE2C%8joV=6M^7Vn+R#m$gj?pzbYCQ_(ps z`DEeGSg?0mE$|lQsPFGSUAh9cNSah#wh?jR;urw}k>N;b6YPbk^b?^^!SGK(zEn`VBcax zpXln-0FqWLQXxI=%FMUF1#{d&qp70!U4q{7)%Jh*3_mMAraVL_#=i34OuJFv<u>{-=u_28+CeBdtZF z*KFTD;Aw_A5w%qV9GxtyHfDLxP6-a zRvASFUP08Puy=G=DdhmT30iqZncW*r-@5>T>IJ}4%8$|$87$dO=RCel9S3f{^b&6U z!JSc_#1GT=r__;9qI5YYIFa!dg&pkwQO)+k@A=g(m?r;@4|-Y&6(cw@L6nz<>S5=X z^E#0X)?kf*(NDkYyF=R-(?6F17=aG8iP+)E&Bb|2@@;p{&Lh>s>!ak<-mx?8M!Bk6 zN~m|8l?p((2eN((E!LTGrozXJm6 zh)0nCaAevQ3SP;{anIj#iT!Q9A%sK!{SZIoxQUr2z6y;7H_HrdAsJ?e@KCC+G0Gcyq0 z3m;eKQO>FDoIFYtP&>H0$cCSU1%4nJ?zf{Wr$l1GSipng8^G&+@DGCMqG~H51K>Ec zg(trIy-t5&zfVBx_<&jW^hp#|J{QD|+n0vY#)*<1<{@got{lLTlfxon(#-;od2_#% z7}zXyXl#z-ivilm>e&JKbqgJ{{Ak~2JFZLtYswabIC&c6`Pa|eb*kP`e2W>a(=R?V zCz}iY7vHHg>k3qEL;3ctWS^F!O#|s75~2XigJT?BPSDER9kKdllTpXc;beZDax!90 z@{=fb^Knc}57j$pgo>!2gvRE>;dl)KRRv*n1q{k&v!~KBjJSk&DaBsOuZMY{{$whV zx+haGh+)Mb02B+O&`BG8VVg?H(&o<4?qtBX0L>Qj_?*|D@R0*&P4gCa|{5p&7ikDFHlHY2^WEuXgn$U#OF!^g~0;v8D1HNbS z)b3HB4EDCQlRS=+7`C};FN-wJqWpeCgsL48w+q8g9l4aTv@VT*(F{*$R+%6n4AZua zgAm0$<0p|Tz{E9O%?w2Ur(aG(0Gc;SJ(TPmX7IjEYy1O;>4~IUJS^Z*_D&|RYr$@? z5R72{appBLqVCL@*a)6iYDG@BbV;d6 z9sB3;5~NZWeLRfapZ53PPE#OM3v6V||D}-p@JGOx<|*!&vASs8z!CG{pz))g9}Efo zf)%ip6|cV-KY4hTnh+ETxe>)^{QN(Zmz;s@Hor`pEuXClzQ5hPxJQ6zejlu*!-P#6 zk^Fag4CvzIS0qqt!ZXJnMMtYm*Jja(Oq}#MgL-yZD-q5H!yaV(uz_AMcWrk$>7v1% zzQuK^k@^?XQHy>VRjScy3guSeWorzoE{>ITP^kxEG}(iXW&^7-7t{0?-|?)kblL$` zhoGclawDEwc?~s?e)8!1ai8w1$a^^8&i5IBJSyaq|14SC?8ABV-}U@JzRh>AI3|KQ zw8=_--m8vvs$od9BADv`G|wOK1|b~aJHi&A4{JNdtU___bH9LcjwQp-TZH%)U&X9HfO1W|m73(6~;GcZoZGxNXFa6} zlpYKIqcQ4W8%&^-&LmIgt!A3AGF?4vOB>N`&Fa%ii84%kjh}1f^+HA&JY) z#7b1`NEFJ<8mFx1Nc;?1LxMJ3krl{jT`PJnc6z`7>n`QGOFN>9r#T-n35*D*hcJiC zlZhWV&Q^L$*C8=eI>`8BgX;#-O%mfPXIDQ`z!No}eRu-xb=3IB{*es}3Q5S*&KhBK zWHN9d@?*|rbs682XNK9bIt(U(a8?cQu1Hi}4xLHXCz17etb0*-=ix@IJZ8b&iBd>Y zxJ?DaoQ3Kl0;^UI*W7;!6y6J-4)Ss}<}QDgD3+&9^{ja>oolYgWVD6qSCT5ejUffc z8=4-XG1_!j7R6lxwd?g$movkrxwgHhf;sYPoLAdoY4X$QN{5j)L_=5nik09c*cx{rR&+^LFmWjBD^czZmnLP#gWR+uDiTG8WqAF_*28wD;5{+!`tP-ror&ZW^e1-t!0}whxei9-B<6@0JIW{350b2R1qKMIKsz+=| zfyXtHxYx;DWwRG3mGCy(v72!?xNw13Ov5Y*zZ%a7A?BSqH{S$1-yDR zxiDAbm(nsnZ){dt3eEl0R3Gr>9-GWoH5n^aI{4+;E|)5z7YMKc7v%> zm6Q5r@=`q*7*UUt1z8_5G~Tab4b$FH_6}IuC^d_^^z`qW^*ON_uQ=@#&h3mmXA2rY z=KL=H!F9|SUlA@;SfmFx>!kn25d1q~w+J>ksf>6a?_IXzf6-RhW9k=)@}x^uy#SSV zD3eC$4`tJpogQwV)cv%$zWJh*2kh9x$ztxw(35`!?UTHDK1b|t??AgN1Koo$s~++E zx3_Dm4NFrN#0YAl(TK5Oz`wET;05m7Au8GCAR2lxYZM4lpa zc}ZO^>DhWT5itozC$EqCw5iac`!nmpm0{7D3f&9P5fXWKdYjGCE#xa)`xxC^koC*u zX&StbBWrC>s3!@F9n|`%WLK@4t6h4AdnTvMQGldcFF;cO0-FrGnMHix$0ja|bKLQH z#l~5kZeN7Xu8!KL_Wjq>{!iG%0U@MSvf0%1Sht>t<%WL$cbU4 zK;MWMyQeIdWk=J9^o?Z))RFt;oa|o${B-BqiEmGBP1aCi$~xW6mZ%&K+)XXHlewfb zeITPFdnRZm_fj13lc&W%fJd1g8|`kaOn$2NB9yB__Ba*ZKd@SaH`jAgI~wGb9B62x zruIOH48xsr(G2FmNwDze!DzYY%l{yRzHRu!3s}ieob}Xl5O=FBDN^IilxY{|64EMRz%PGKXKE@=tnv%+>98 zpTM;4`$GGJt$Z`m3JA&ZXO}vhCL%_%#o+HwZps85%j1%VZ2MgOV`Cj87*cuMU&wrA zKo2bO+*0ILGy0`C+-dCy^~7ms5tugj*w5w&?NT!24|I90m@B5@Qe3_YvVQ&8A4s+* z#y;~P3t|#lG!XSvRk}6A%&O1i=xINGU%b0u(kO3AZ4YyvGpU?XN|a|9!(SO%Cl-p4 zX2k^Rwb-F)sf(M(`V>Z#t)jh85teD`ne^&*vMvWPtzli`EEvyuFtwZp?@I7(sz?G0PqxvMex#NC(?dbg-_qPjULSH4R1i?F>b>Eld zMM9cN8+2vl7y2kKqDTcT<70hvVR1ay6v5&`y}GnX5m6qvK8y#>-sz?*5S0~eq=oiE z4jc|szt;{#;K~rYA!lfXr57%FfE2LHZrAYoa^RaQ&+$q08dEG)P7l4ETi$+$O@`bA zlo@S@|IQV4x{?I1R#%smiPk7s$3-&*HsPxf&Fu$FIFT$=M*4HVWg>h%cc@cGo zyeha2ikvV4&0b^qdVBbHfnwT5f)&6%R>t_vJA8v%Ygeltrey5d$3CRldHM@0E&579 z&`Qi7?i}z}55uqw+ZKy+Mbgvx;Gv$Ta{gs$Voeq~4syc5p=FojmjWjqDA2`F?jeo$ zial#W#12;87#NrHWJBJ>DVl4_T|+(eKr}N=u=Y0ihfwaUJ<1RuBj?V+_v?7bOADh0 zQmf(EkQjd|?T%fYFFdIYl&E6r?QFe|7t|&E6tq0d`C<_ zOI?I%Rfh1!ZF0&psaa_O(ogFZ$v*Q@?=05F$A!XL$=kkdcE(Vb;{K0@M}l2zFuO1H zYKo&%$#bK}`V=2)TSM_JONMAFc5JG9I^{z_?t_?lFBVcZN(lg0?mtJ!eEF2=tvGMN z#|)Ov7O(`r{;Xy+7;WJwfj)^!Tlx4Bup!RU-JENg3RO~zjP>0R?aHL$Pv;(y= zw3=|WE57&}->~mpa>%eQoVjntr3LexpH>o3q7wdnArVRY?a>C%uQ=cAk#u*P74C~Xl<+=2waJizuk1lXeVhrZ8O z`F+Sfs%d;WQn$&sNfVu}F`SanJER?poV?)@q{-Qwjo_84 zBgJ&A`6*!6uM9kyhye4}aJZ5oi{Tsq>tW%fmy@LY}|PJxTvXpSH;O2@Ojp z=dr915W&!92~y9_P=FlDnkcq9D&b&}#nrmlQg$UZB_f$NtsOAHkc!^eUM*-&Lhg8+Q)_8GmCkC^6! z#aJuzvwv=QD1K(V1;XA(g5W$mTSwRk@P@fQ%he&Fy=26cQ^!sUD|3I0KZYkT1@|h3 z&nA8q`F+f=0WwHulx8a?8st%K8nFJBKeYV%e9uQBHyn{DjXNy)QtNX;k+|To@QFvb zqVP+_F#+TSY?+kra*ReK%b(J8G!)t2)c~+iLWu{6fJeU2a}SB(k6IJ&y-(oiTGvd4 zoe4azrciPM7!?L063Vp#FHyvRuW|YP%7{<`dF{_`Bf{vyDNw`H9=z;}tX>9zCPA-^ zE8K8Vqt{`y$urI{2O93Ukh}DEzkS8$b~+~kYM$e@l3wyXqGG+~UgMiSzIgOv#HPQK zg2(Y~_k@3)nzOI0+bvsypI#Jc{9qWBOb@oIP+0?EM8T~}vJ)G5*hBoLg1!!RAZRUw zA}5S)GiQvEhMsnI`YE2&d)kbUNs*pX{u5{m8UGuNwOBAw4uc$iMzD5SLmX=}miw-N z(YHkrxUn6q-M?2Wm*34@HE~RcQ_e-!N2E@s9r@bW4Ixx6i4myM;F(lV zSQ68-nBm7oHBaNiSYbM6yo9VF6OS$R4Knb=6wMB4tW&iJ@A*%`S&^J_j8n$SAwPHIF4$##qB0c0(f(lb6*CNgw;yA+uqs@VEk zm7MFmMgoKtk038L>A%afN2q|DEwf?RpmsEA0chYg!5fqNMK}@09+Nrd4gBU#$WOC)02WC zByRwh0VpqMPd+fHPwk#k@Wlk?_r<$UR{NX*sqJWkaJ+9{)^F}DVS+n zQ~tr8SRd*`$Fuh1;7<-slss@rh#&SaQ7RG569pI`uLA7LP*~?g+(F^%`N86& zRC{D0^|^y)RS9w`DYofT8!cT%IDJrMlrN9Nz3PZ>JVgs$n{ENBWA{xm*y+?||Ce-q z7v0J}?`#U~J?N&6t?3@)b@&p%e25ZSu@u~UxNR^_you?##;4dajti#3PUWNqSxjqh z7ojKp7)qSs<&ZgpkL7#DQY>adSj4PqRpeq!Ysbt&!iSnhE(|-@OH2)=oW!J|(hZiy zGmIb^yF@0C+amq7`u@l;Nsmf;(e|HOUD;N8{ag4hi}3tc5AIelfP3jT@~Ull;C?puiKFd(?5okY(Q^f}aKHtzxENY2w32*SiM}L3 zAh%tpNIEBCh!$&+jhjQIAf zDZa;inVkE>Fqw*&@Mr+a_J}#Fs%&LrVEG)W4EqLn!4@Z7!ecB-bY_#}^(R zhSfGr9*yh}-C}KCB6nQ^8iDqwI8RyEYP<`abZvqtN7OiCCTCe5q(cr3?&K2`yO#W0 z-yf0;q3iXr)6)DLW_i9fka;C1*5%;WIS^3=L0hPuy|R|8%i9IC9WU<+5%v`gm5_&= z>7HT^1U5eVo@0?VvY3t)`-gbI62Pnptlz=J5+4bFiW0!aj7WfQuUXWU93y^dxY0c0 zP{tWM4n5l)eMGKVM9JVgA7BlvL7^j%Vs45-8ox9BX6TmKhzQl$$t#%7xB3S6p4-iO zSQ-B1K|?#r3YBY)92DGC;mBg|F4`lnh#ah5&`I{}@>6yLL8XNCaVTWl03J5lNp<@! zde8Gs6nw z*I?3!2EpV0dxq52{rSWl_kB*?F46PDZ@TU#zTP)D0;~I>e=e_i6K~Ej_xvl)L_3xf zk27j-j*Y3^MvJ~Xa3F-UMvi2r5ch$NV|nncBKaUny{TFvCbDoR`bAa^$=V*je*z#m zglLd1?rM4WP4+m4Gw=Y)TVmRbxpPZOt}e~ol-1cTA0gpNcqA%adFI4kB zeof&3j@>wxCr0qn@5*gx*JFezHI8mA@kc8_O|MMK6@6(z6bnft{TzaSeYZr9Bc{-% z3R9Jm<_s$8XwB%EPx?)s>^Q*QtSkuPYF>Ao(av^|Vf&lTbB+Gwz*jOtlV(zgjNb2) zhEgnJHz#`a>DqoyNQ5xE3h{}SPz>R62GJU-665lC&!gEb%a+1F&|gjvY8I|Yz$Zu5 z1nne~_zt?b4~h#9;#7c8I6NHBu~iK;CdDz9N=@=Eu1y}6s){ewAF4ChGwZr-UY<#l zrjNZ8!^CbOu9DqGzZ?8da*`GY<^C}CfsKSKt{_6+r7cezS_l!FG0WA7U8HZ_*WQiv zp4G7rGZZg29^^=MBh6a@KSiYrl~lqyLyS?h6#=+EhmIH&K7#to#!GWOEEsY{dpzZN ztRD?}i8N5`{m&QxRhw}H1D25l<397~M{1Xk|))Jalj+^~17j7p5P4P^f$P{!ZV zf68N%3$U`~vqcw~`dbvc0yyV#&q@X|RL`Es5rl9J6g+9jSRxkHl{AE6^FE-soM94A zHVlR)$N32{Nru8tME;pt!fz5o;Ce~QwF+%U8wX`SkXZf8as|IX!7VzTez$oQD@`7O z#$%=JsEDsZ`IP2czq$B_D!0uczrmpW)&xuU@TGPPGU-)3Gpt;%5s~@ip7@XQs&hDM z=yaw&Im0t;@hNpwR{*H{6<)o*^u@8MumcddoVG8F7AvJLf(7OPA22v1CUVG&*GkAFFddjnC=eneT%fWk@ry%Wg9`$fDTh@lTG`c*$Q>E<( z9p|$bE3{=;El4zyJB{rVdF|(K@YcjO4vBPi%j5jIQ?p5IPV2lPK|W_C9;%uK@5sJB zUM;Y<*?80{Sn?~Bas65r^}nT*ddieKBZY7%!28pZbRCODL6E}MN0{(qrK?f}a*L;Vf(%lZ=!p(~ zB2=TJLRH zMEh&jtyxDqwrFIl2h#U1+H0e81=ZB5vtrko5_GAM>^I!yXSazpEE;UtYuOb74;oAyfPq3zPU6Uydby9Zft%?St$hi)<6gTI3nVy=WD22& zeKIMt4Ga$!HFmvSt}fh+fHoG6~K7npz-abSnuuKZ#NGyMh|4ZJpwa>YIed;EElJvHIag>TN=ttL9bg*yV zX#ex=3Ef~b(IbI@7N-*Q?*thy4YZ0uNmr zwAXUQH@c`Fb`>h zW;xAkbfqEHf)#R#Itjn4J|Yg9(!v`v#l^+Pp=+X%4kmg)gx4bA58_Ii&(o4yrK8ca zb}J~3Z|eT-Z@$!&Sg_c~P8v^d=;^|fikqITZJbX%z>{8 zLRS_aNHk4=eU3UVmzsZMnpio*48looI3mkue!V})ZjSoyxy<;kBOHg2-80)Ig^ONX z^|W7?C!_V{TSH#Gt}!y-8;P~{STCvgo;lG4O_TGBXhVVL8Cnz@RRjSm&ZgLd0YqR0e~82TyQ;=UNN2`SUhJQS>o@ejHgC5tr(#mh+UW%G!oo5n=C6wyF=Z6} zLW4-gGP`|u0B=7MR{PY&UL_@`1oqkxUFaP=y(vh0ZwD(Cc}3Lt;ttGwI?U}%<~3YY z#mp+%5LtoRXkxD@j~bZAszV3(yj3K07^G3Jf6I|K=vByP0?5j4tvF5=q%IY(#r0YE zD-@_Nc283s&a*2UV#njGB#xqfko_-fjfk?vCwX0H@ws7|I5&JnkGW3e)x%De`FhQ8_I z_80yYgWS5W9*93S6gp+HsWsBX8nWLm*a{G!Us~uQqasqUs_Kk_U9A*|L7$}+>$O4x zlq?*DOhkKK`Q(Yml>+qP{xsifkLZJQmZJGO1BV%xTDchoUD z==7Uszx$jI=NHs9=3F&Kja75qbCy;pDG;(+Gj$m9yF+L!?>cFRWO?to5>W@h+Crzp zfW|^MkYb_M$s+()^X4FcpwLG3?vd7BEW73#4Z`E869EB}{7r(0YveG+j0Y>YI{Ogk z{Lu>00e7qz%ypHg#r>NEEH~uSRw9Z*nH^ z&NzIZs*s*l5dJSemmJdxRdVfH!K$$6IZJwvD0ac7cF`7rcl)G2lNAEW>)qsJ1s;1Q zAA1xmE8Hn_C1yToU!shiaYa1Y-n(t_+XdB0^#ctOvIb;2;ZK#|Fp#gw-hI8d7Y^be zJ!R_zb+^Hb*Achj=^^S>TqY1F<^)44Zx2~aZeV})^U=$DylAdoSMtF+vY|rrr~}wW z)?VgrVAC9Slta$&k#o^EfvdW%^1V^ul%mf;pIOu;-ig@On=16e0T>Jo`-_LQd(U#} z>TNt`uWZNqKEKLHm|#o0EfvS623$r9s_5zid8!1MQ1uia=Ymf+--T4^aH@vXtq+_R zzm~n$N4Zv8>m5AznH5ErS5;lBXxA_@W5520lcoevrGyV6Gc(GZYBQw|-#c{X!jZ?Y z`2R2G2M%Q3hj#F%48r?f=lp#| z_-naCX=x6tL?4@~2r9S_MMt3)PAvQEsXriFYb?^aplCl@Os>m3GX#A*)cs^E?g`f% zS6}V+&|#uxoyCvFrVsiJgun`8y`p0xl0bCCvnaoX(x{5!f_&TWj{_9)os!@W0v*JK>8)chm z*SIi;O^WusWA$R!dW#n&94@B^4)aJdbA?^>-ehJDn4X6cX;N%oBbEGrtjPNvK=`YQ zugYG2^r^th4T~*^w@v0ra#!4q*+w4VB4Vqjvh_jp)xc~hmC5LhQ_Oc7f|!(e$$&hd zo7f&}MGCBFdJ?#8Q{znxX=(iYwZUMw0K9y<9I*W&$ap+;S z1!;N8JfY?!Wb-bjMIHJTIXvmTtR2grLvN&{r{5OEY_h+Z5kAb$Rmo{X+TB_B0V!xs)EmvyKOttAXHSZu1MEai)`wW@xKW`je*jRvtyZ z9!F4%3OO-zr|Dig*T*xu$)z<#!pX|sa%Dt61dKZciWhl}VN|z8S~Cq;cy%IY)Ce$4 z`v`iaZ%PA+3|G)?eAXSctY8v!pR{ULfoUph`S+S9Bs^K2%#8GfD$SH2+{_O27KQ0r zX_dGUIiv)hH7KLc1jpwgy-lgYYigSJwQ{9BE&)RhE$iI+)$%^ z91`STw88C1 z8nzE~P|M4O(E#5Did`vIhm}N_I5G1S#}A-Gf9-ta0wp~Ta~ukG6YWT1($(4#Hc})J zr5>C_h*9t@$C|fj(^I%K%D7k%5aEv`E$${5s*Kd&3q+8$OFEZ((u3a(@@M|lmydGJ zayF{L^g!r6>5O7_wWw;bt{{CA%kMH^RfpT0a`M9E%|v_CuN7zXEh$s2sC@$WC}LPv z2kWMalTJkSRt0U74BB>VsoE#TG9_!*{^3!U85_iWL|YPRtke$4Zcn!C#Ekx5k6bTq3c!9rkX&c} zTV1`P-9^2B5*!*@UWC>`5`XBA6<>z`^?WL+?*!Cq3dj=0Qsmv2G^8&^Mov4>w~k9! z-445sw0ZM&YIr4)m~P5zVn=(q<%`19K_>-Fy+}wB5|3dY9(b@z-?WrL%1|Gjn7xCV zRxt}pbXESB1RXhwgD*O0Gw4tR+(#w0tOwYi=cW;0;EA67wS;mccSx^{@Gp7sZd)&kxUpQr%M}04fQ0uNE3YIx!(+VC z6#eGS4gBnHc5seA3K>1m%EjXnsTtA$|&tF<2%n(kMbQynE6kv!Ej6s~cmywpD!q6Jd=h+>K^$tyyYm9_$wg_fzqoL)VLEQWAyCS;0C z1)g4hSH>eDcmNt+CHa1eC1dWeNiSR6Dk9667DquhR8kz%AxYo5Yjwu?J`f3g!!hae z^GCbvf{7Sxj=qdrvvq~h{7E?aE$Sz)$(Bys3TO0Vmfu&-fcBpB%1CuRr*0>%uA*rL z&m9URK#xo4SXP%6SSY9vk}e+Q4*;8vbX;W4!yj4WmG zS#8@89(*a~5WV8&S>2s-kqCLs_MyqisG~{J6-A`f)cGz}5>S=?5rwiGWq;~#I_DYB zaH86+nZ7wLL6nGm@cEEz*&D^P1@oZYp-Q55q^L?_ihkaaxeNRZJVPdTq*x-3gI%hV zM#HUQ1<(sUV6z%UrHl;Q6PenC17Ta%gVmPW$LBpe^(L6tgjF5##|d(2bqJQ7OipQo zGLl2h0s9FL`v&eNau43pJ3?fVwz&srNP5l&@#m1p7LC5QnSBWhx)h<*1a{tv`uX72sr9S_doWuj?QlQfpRr`e*oXg*IbL*fUA- zN(*E)fT1ch8Of?Jt3g>?%m8V7T5 zL}%(LZI-eglXY%3FGmd;_V>ljlD7w*^{{v6XdE#QMiWbbq%cm~cV64MJ>_3((z}c$ zrCa6=M6SE=A*5Zpw4{&v$EBYiP*A&NrhQVV<~!9t+MDA6Fbbe`K5FnqB__rvSiW#3 zO~r#;!bzp$2aSDcw@4;Xk2+Tn|2i9C9ZiDfi~FRV(TVeD^cO>&ktw5h49 z+if~$#RwvkN{88a6EV%}Kyzf9ZlUW3U#N{X&^_?yNo?JqJb8JL?nOJHOS-k`4qR>K zFl$XI^YJ+?-*sEFd!}?Z{(;)}k>$UgdB0VSCxN5jfA1&d^^JM({m^N825xex?TXy= zY!|dULt|8x?rr)g;q)b6^^WurRB>VcGt6$Y+V4Jt_6Zums`3hMJ6AlBdI%1caoy~PD^P`HzvVgj?tnKq)QE| zZa(duQ5A`D^W2z7_Nt{a%pu&F9cP}Omx=|Ok{2k(FgVt_K1cNy4v5R2HAhC>WN5rx zeh2nQVP4X=SN7nHB)hlQ{Rq5_u-*8QxC-Mc!neod+GZnM$fi^_fAqTe&p@zA$R~+9 zd?o+zJXKoT$8rp^q$+QbcMHdcxspUm+ZTC78l|Q*s{Z=XH#5vA=ozvi5NX1C&66&r z>p9~%aE|}1S2>q-PS$#VN!ngscl_Z_W9Jo+-=+ac{MDJsCfEbe^ClMR9kDz!Ghfly z;i&S6y6F7>&&JoFmJ~?N?zPv&iNkofXvMW^MNAxXM3|mKc%6>&>%yp+cyMQ4A6-QJ zch)dXRQ4ZDSr$fOf7G38%Rxk8Pq?Z}*=?{KUKFM{>tjt=r5o4Y(h;kZ7&#tH+>>^j zA$o74x)K={x4vu`hHDH(Zx5D~6~pX9@=x6~Q-rBT;l}M7UoX3hv>YcWwU^>Jr{`@$ ziWyeOn2hGlL#E^@a1b|UT{^)TFdoB!W5v~e0tLd^RRzM1;(JomciGH!WXuSk1&vw=8L;T&Ox2OXV#9T6k=ZxeZTp4)AG#s^d)Qg8wrEwU=$5y zLD{TCxlRrv>lzl60~9r(^_YA+ooj*H{>=^Po*@RNC>DC?t5q8vm{0T>)K-b*C4Qlj z9D7$#db|^{gV+1m+8Uzkm`d#Iiu; zE*xWLjQajAW%QS%v|Gn)yO-3+G_|kXbtjo3`h7+4bC^WHxL*r;$tLgP)KSo(yMG4v z@O_jx?tQ;#QOL7&kR@%{fT2JjME%#WkmvIC;#u68BWYKcPe7N~yytQIm2bq2iTLAa zaBvYoZ|)J%uIrv`w>B=aowKQ^);YM=N5i+MZb7!+qK#Wz0NH=hc_8Q7qPet?pf8y~ z`+^&JEFl3^1aT1VIiy1PywYMr_Pjqp3)tpVGeJ?h4def9&#RJ+t{kp}U`u~-qRufZ zN8LgKn>H8e+)8xDpxzR95r z;k{l zzy`kQXzE-qaH_<3n~>6_-KFKj(Oju4tA9_mpG`-C;a_FyJx9eHmx{#uE8^7SO|5f+ z1yrzhk?p3Guht?Te53@5+X|OaT1uy}bIIPin}0#N;62l6li!chopO&eOFDhF^@T$V z4hNxf(o}D7Htm#Ka1Ad2$Tf4A=KFSJbH(0X9Ma|f2xJ5d1_|5AOxf!C-$G|~N2)X> z*-YZo7FJ>Fd~9|^XJjMZRKcr0Sph^E< ztU?}JhqirL*q{!);aXWLZgu^Cq4xP*x|h>~YDvnAH$7aXMyzM0t#>4Re}gh)prRUU zEt+JxoCEU%?PZ#_@fHT~`Ce=*T**JLDkveZ<_kL8x*Nm)kvO&?RUC#CrLX>7O5K*l zF8Rr)dq=i4?Dr5)zUljrksjtlL@>h``vKues5TPmFETjMMM5US*d1GVjtIearo&#i zlLoDkUo~;M10m7BVk3H^0-^Hx zA&(0Q4By(+&Ua)8zNa{-qF&jJ0$L~Pj0t?PLVzXXEU6g-Xr|gtf6B7@qv{(Uj$PK! za(y4T>Qot+%e0%D%dWdpL5IUETTbyPTZoET6Lm)DW z(%46O+AGhC0Csr%>h^)ulA2649bByHW{B0{g$?nNBw&Gt?6vR6taUE41J3bP%EhcO z`}T1ORu61^kVA;>IIjseL<*W!NIDD!I{_qGvD*>y(cJGo=M<@V8B9oBQ|pqg;Ye68 zmqhvgZ=B{ZexY`SPtt`*XM>X@R9(sqxNiJFYlv8Y-i4q0LZ<3FhV-&U@`cR$7_dr* zbp=N3&ynQkH`!-X8z}rm!fo+@1JL*Js31P?RQ z(9mQ#VB=|c*NBHrr9Bng)0I5Ahjw^6?f%qWkni1ji767t)%%$H$rx2Vb80czNDtZB z>lN4zEic;$cDp&2WT4cPE67#s`)nKOwiXFM`gl6jRu4S@m^_Lm-H{e@aq_H`eCV%4 zSyG{aBAr-J0d5f8L)ec!DtxmoFWKu~VImn(=^W#F>$0B7FPeqo_10yOy*;SIoU$Ma zT_pp&(KAA_yFVdL$wgM@wVU^ro3_}Yh7{GQDIaMf4PY(EyxG8PCCt9jRz0aus)xUP zVTq=V^KXOB=nVStMXb;dQ|95AHB!tGlk_I!2SrN59aBVswVq!jqMtcF@Uu3qKP zO8qd^O_V-IxT6Q< zL7<2C126{B*?jDWKbCyFEuziiX<^4H)mf&ylR^3{{2#M>O5Vg-OcYuf{u>X5hyOrk z39MIy>n~%_e=3t3#T+xcaIRRY<&Vx%Inu`mhDId=)0$m%d6jw{Bv{dL0{!wRU5FsQ zdKR)~FQ{1MzD&U&mHfCogqNd|@ZNVr)r!sVQofF-Td5R4!a}}H$a1fuqN8Dg3lIe~ zJQlPzOLiYppA+|B**w{m*UJCmx}D#%E<+dmX1^IpYal2R)9zx{VdMCMf6ROp{rNg1 zc&kBs0@hLb(qJrK;%eqBm-#ZD*u_1fW?NXe9Jx5r_UhRX68Bs^>t?PLLivACDOA=( z4Fgm?*zbZ9qHqNpIjOHGwXn8?lEFobAuE>bNd`l4WmkBm(cu(l$}TFa$O^duP%02*VNIC^?&7Nw$80lhUL9 z=8lsVUBbGx>c<+Oa-$PU7FK-z7)-8%O$oiHnZ+w56y?UKI6YfI@qe*N#{G$D!)=ue zk;8@VFn^Sk!~ENBon>!-=2SYW33Z+&YkUOH9T4*z{f~W7yNZ|r@i?u+Y#{2-sw$Vt z_ywnI3ua0_}Y{0xdua8%GF~l!8TvK!v0^P?M3j*_-Zr#B5&H+mytnn#t_B8klDT zThV2`3UdtDT0}@NKTaR`H^R&4wn#jKy(&wRm?@3cZf48&g7gM>A3=R_$0&p1gtpg> z&1iff&M@AEHx7dB5Fjl-o*S2Q%y}&XG{za5gmtVG*+_ zy-fSu@Vw(#+^Fc3?3z!(0YAv9E0cycG!_A1!Q8jHUWramzEAvNf5^VAhc57Bdq@>j zhu`Bb4x-{7MknP}GqaZ+HZ70S0>{(J8Pp{22uKbT!iyS8>kyw@e=*(r+AL2{JT1D> zUI?K1C7pG`=oYgr`$~EyzWQ_VG;YAx^Mc{*mPuWD@08Gzpk`-e-9UFIb%)ry`ftG{q;T^aiI$99B1ooXeD2(Ptl~o7lXD zx1gCS0@=3xBrRrOp5SvijjP!;9ZR$Fw_B0NN)u9O8i~SI zd7>20X7=Pa9|WNfFHoUvMO}rbdEIHRjfTyb{hw?OMNwegSiLn_syV{Mb1`#M);&VI zacjZ>eDR$_31)cVNU#ghqhTajNFmBl&uxHGnp_4P`mH+Scm1vCR^5{L17*>vB^2_! zM;$jd{a@1Nz4__ZWJ%|+Kk&IM{6f5;I-np+`$^*32~PW)85aONuNC9-KDJjijhq^i z!s0#Dg1mmKsK3h#Ro^DL{1XgeO+ck`9HHj#)>GAGrqJ8BX7kE9sWIu{O6aoFLzk`l!hLy z{}Y9c1u|Pr=kd<>7#J>M6#SG*wiff4cr??8QJnf?4eom&XPmX|KL36M8i+4KBv3HV zB!5~al-krckv(jov4wroHtd`ekq;SN+_ovBVg3FPZbMj6k!v|UB)*WwZRg626s=yh zp(@zo>>ee7P**{ps=nT9A0vTA4)r+l6$y!cibSQ7qJepkx~H$9KE)qSKvI7av*GVg zo!_QsxR^v(Q%tf&ojfUT&>RzwQ;+*~tq;kh8GZSAfYuYiV$GJ+655y-^lCySK=Vci zD5a6J9UAb+waZWCZGn*_8|zWJKEu`PvW-0A=0G9HR&EYNBk2#9h;f#g_P_OJu!P+KfrKx!YaE zj)z<$E`Uo4Mvn!3(XwFHb9P?vjm+Ow4?68^)I6Gml%>E}ucfBdD6%AoM+o7&IHkk> z^P$eM=JEqd6v;pHI_}j4AtTn`%73qs!==#&vAFj6l61B?*NQOew(`LEeP$e+RE$yM zXixW5CMARyrIWmSXvbp50ehV}{CTC?u-A7X)24OYcG15BCIlooFzs-TpM{WIG8=k- zs!{)CQRNqevv&Eno-Uz@S3O8qORNz5J%PX_dIdu6lOYh_G!a>xJlW}x5jQEZKq%Q* zQDc~rbZMI=)ut>cKoP4B0fdb^bx1~}X+*H)!Sh3S{zYu>)mh3{3;F$W3ev&TyMK(i zV8qawaVUNLMWPAmx**NW9hb&aD}UZ>C}?4HL86Rih-g@Cuc6D#HGPtp`TEQQR$g7i zbCI!=F}>^l$GB&3FYmqbm^`nzF5(Vdclo9=bbW_GVcB);vE1+9%?{xya`^m;;^AOW z1mp<-0a>5O(X&)$fvX5EH%SG2q7N4R(SX|ktZjSwxC%J2iz5pVBOPShi#Gj^3hN;Ro_~)@%f9I#6d4<^E;fvzhjDtk(Ih9Jz`|a z>4n7jyex9*>NP%c!EjX~_q8p1kUQsjY?%*2#l{`}=!(l^kK9cv_8=>b+XCgBhg77>>IZ+Q1OKvfG=-a7ZZ! zcIuKv-Zvl^LOMY1j7mHJq@ZTLeP%a6a|eNWmGBrXIdUifEQ47IBp%TeoYw&F2;rZu z`h%`#&WP7U8%(<rl zFQ?ex_L<1p`4juJnae_#FF@VucS%Kt34;wtd#gN_@co-X+d&B; za$AM1_J1?qDH=o38l*W%Cj{jmPU1}9s=+_FX_~pOCSrMI>i*WFfl8q7%z9e_yadL& z8JW@&;em8?qTV&k5!RHMzseCxmb)`1%Cmt~aIlMPyX@Pnl4)vtxkyXASX; zD^dob3k7jW5U(N+-8;aiboy%X5C17C0=18!y0d5MEdorAa7aq-P+k2x0yQ~0cy*AH zE6Lt0#ziE)x~6K1O`|H7bJkDXjvn=DY8g;6hO4xboUnJ}u&-bxfwHw5M814+2{7fEdc;yaGUG!@WNH0A(v91OLQ87ieV zKbbjVZ9Jk|7YfL~QAXEPKaN;frKm+=B_Dp z2^>uH;l-N41&9ddLxwuAd?r*R;SWIHT8?`5Vin4MArXeCDsi_KDy(STW>J~k1N%f& zySTs;{Y^t{0~^nUkzDNG*g%o4h~#AeA$@oS(`3>{uxuIodKYY*ppDU zUJfT-r`#(U*SaTOj>(ckj4@ber0lJ(u4jtsrj_9s6wGE1@x^V+3)($RbGPn^D(u=w6Rp%j1V=-i0>6B>H zb3}^4BYfwOqfROLMg4$gBjFo4wG@|4xl;(f`AsCMZ3%n9KJxOn7dQ!_)+5l($Qs{U zz!WS`B)o!wC^3%-O-0q_s*l7R;_Z5Sk<1$mwytzu99}^A9C;;z zObM<0+7bS9j@ySE$skHuttyixeXKfhVQY%PXorf9C=x@BSTjxgnQ%>nJ$;FJ{BXff ziFziK=7Uyky!Az6LRxM|&cE}9J{Eaorq)$N_kOPw&~$^yOQTk<_huy5m&t}PKu4V1 zTg6)uMiDs6nA0iApZ`^87^2(cD2n79e|a#xF2DqgH9t6}MI|>&_52Y*xdl?-CjzIyUQcQK8}Dk^vN@ z$@?nEV08`cQY{K;ca#pJULbfB+p0Qk1qL3q6voSwEbHlWQcAo(W_m*IAF{70RU@Of zOVC&ed|@Os{Rq?;;><5<3%yj6e!&y7ga)2Udo_lQ_la%zXDos#@^7na>7PEE>>zTc2C~u& zW1+>+?9K)Sh(XYh&Zr6-nLou=4(`T#c`Jq!`I-(jhLqEy==9e($A$G`&p3-qQDe|^ ze0N+DEzC6JzLy=DN}@7yjEQ8RhTO{7V~Z- zrM%r9I`yQs=mQsqDv>Q4d=jstMS;V;EG90EI?_j6mJ6z>5NlI_+-s1Bz@HWc0eU?W z+~qm(FxsWq^K_9lAYPq)UXU?YOnf4lj}gBz0Z1;(z1vZ)H41mi_yV)#O+NLQk7sA^2d zOveVKSMm9t%a#GnvgZXrMvR{->p&V{=_f^$+|hzh&nqqUDCT<83_x(9-RC?jyyqTA ztoa_A4s0YcE#e3*{)5~G2we`Kr7Lyd*Mrx#m8>)LBl~9XoFP{E6IgzvPR9JCF>3$v!U+bfXh24 zLMEJbFB~J^qL(g&p-{wPpsPq0L-y?JrW6RW9;)aQGqkIbUsG{>vu0SLuSkjFwD*;-D^JD>YU}D!VTm1?KBR9%Q}vgFN})m2O_J8*u#}6^vM)w>`LK{F-c_S z&%%cF3GmEC2K7WQsyWlbjpz_GPYbf+5*HqZA2RB7vi}}SvC~=Jcl-7D@a&o|+V{Z? zUZ6u5ezSaBM_iBp*lQPbS_kX0<<~=wx^?jttd|J6j$6w$l)mpeGTV72-m_Sb+2&KB z7QKPn-)H66apO1hOdW`ghR#5?Y+?UNEuT{fSN-FIRm{~Jblc54Z_#ifjR9%hM6<|Y zfMyiriF<}mXe&?LT<#hb5^#T@(5#d+n>2yMtGHj3M1=qRsxrHCO^674=~3x`Nl_*6 zhe5p0VN0$oCiL^`>-@?pG0qXHnXK9pCG8=H=;IIjRo@JOdk{#~IGwcKM)w#(-3J_HZ`nF86CPqja;NdR}azfuxdsPs9Qn!O5*0G5n z^(s}w5h|uj$PTC1bjzuijG#6#EC!RmNGEW8gwSbx%8W7^Hrb8@bj5Y>hT%EZpzP)a zwV97-v{r?}m69hn27(QGY)-gr%2<-Q+7|Tr*fCD>f)LdNzO;IDi?Ez&6szwBD6T}X z1S!SOsG3@kn^!A4hQG&I1Fhi;iZ|zXBdY1ywD=4f8S5W)J+180{nen<%am@(3KIa9 z6v4d2MLD-LeG#DWHir7)fxyyehipe=^@YofvMzVm1BacGHlNC@e|%6+aV1HrHUE`I zh3cv3DR=^o_D>EEpR$A){0YoL=M7f%&nwb9KFjc?tkj>bL{JbzqC#`}7ohQ4_>5Vw z_pbp=N@}n;gcZOAJn(x}NKBFEQkG2tm$1p~ zao8)|eDNUx7?a3FN4;wGBv0{`GGBl7Pp5q(AMwq%6KUu#t4)5o)Lz$NijHia$slCL zRi?qmmi&oYJA^2g|EZjUWsA6`?)RngULqQY5y6le7Y~(v$yfz1i2gJCh0>VLm5~60 zKjC9dicXD@gVn%-)jD5IJffQ?IQyGq+FP6gUugaw>cjwR?LX}v-ffoY)!p1#T6T{> zpm3u`{dCqs#KX*T#V7dIKh+B7N0l-OB8^09f+y8Q8VJkq0oDW9=-aZrJOpSi|8GHk)Jc$!ht)Z;wK4;#;Ovz%O3cHaO9Ei-=zHiW*c!z*{IN;Y>eqoO_>(#A6-D;7Nnu6bx9U|_Q7u%F z>h&I1rXQ;XN@HzWSpom9{*osiI+6s?!5Uc_ng%<*E6Gl3|JHU*7!r&iSfS}&vn(U@ zaPHGm=;+yJbD{-8M8bTqY8{eMA#Od;I|2)W*)=7|;DyZiJcXz*DyB_AYcMtHp=4ns zh3rx$A-3$0|5!ex0t*;@8BcZbnM6!{$SrIj;u#D+ps3ydimZz~x zgP#K2?2T~)Phtw77uTVEbTyLuUM3co5`MuH zBh(L@>lzjkG+_sjzYanir1FL1r=J==9j<#SRC&YRp)INz7 zUDZxs*T%^uihB{hIc7fe2+lg=8hXx@UR!_H;@r;FKC4w3>E6w6g3Ex@3qyEOXFY0%df>~Q=&gbJO9Q5-qor1QsDNInhXn)%v!xP=WkM;+a zT)hUC&}}bfT$zuTB}-=5^6wKF-YRSIsg8725dEzIw&mC0nsX&fmA?okp`w0WY+A=G zRhC7`Fy2V7eI@XXXl_sykeE8WDq3%+$cm^466{~=J<)?$7uC`o;xvt+(~J@P-6^r8 z&k&Yijb+hP96anHCT%jaVb0dpxIERW{99b5=B$7^n>1B*aZ#{MB|k+;iN)WV1I?C7w8c~cI>>`IEZwqDKm zv*Ea6>4yotJn->Shq82Ma`xw;-8I$$T~;gQCB5I2I#(?=sXzpZ6(1oYsvdC*6`z$9 z{M?xw>S7zrZe2MEeLHGyyxfV;&-My%oF(cgnV5d@Qtx;y#NFcD)aNfpL8rdaEjvny z{UZyveaeKmGGl(Pz^`9tKOwm0oxpd+H$xDl{lA&dIxo8+TR@DswK#B%o;zArl1I+x z2?z=6CxZL2-6EQr{~e@0S#C9_--JB2o1h=AH7Kr_QYy#(mMyml-N@L8sqi^o_wQfq zMQTKX%H{Bj zN%XNCg|nCd^t&`&r*IsB&HmNmm@C(iJDGK}^{Zfn5i*_Vs@j!pnV=EQ0DcA}W~D?hBErq+oU_g*h<-y`TR88ex-k7zU8E zLjSx7d%|Z;Wv>&%s$_QkH_L*4dW-Lg^sE+TB|Uz&GwCjI^>_-F=47p#IUe)nL%)hp z%|>?``gp!BO^Gnv-A|1(#b+Tr=mEUt71>}%m;dtBuMksjwm90f&X4PY zd8dU1s(6nm|A^{W(ot(bEtzZ!6*@(0WMRC)(`4iSGtIJf5Q^lPn|3gb?^tjHM1zLr z_1h~QdLA)YCgrqf^u!p`Mf?-YQN*=aqB?>MxXWz$h+CVBf|_;JQ!E&}^i|h66p(_+ z@3Jc+O{3Fd7LFspyyqgH-0JoJN+{y7M=41JonQam%kqWlG){o&}Ti}Y}F)9hIs+(Ma)E zJzQZ}e2K|VU9hljnG7HGpErbPFiyXIBf>3$6ErJ3??ZjdS@Sf)uZv)Xx6T@avyqY& zQ!(62-cUe84977g_QaBGa{Fc|P*E`zBZyhCAJkz%;L>q*_|Wv%bqny1D&Vn*8;+P~9Cztmn?>`3(B zvNrX$YA0mULx0Im;=W}J8CZK-g?5=2ba`}5!Cx;PUqj1kOl;$J zJRspY{X4gHW}q=e5Oi3eH!j}2Qc<^(l{*tC^yPAuo$y$(ZHI{Qrpx=_WwS|81tks7 zqAz2{s6wU~>N_w*uYK@~3MdOhx4+bcRuKeS(^prX!yuGF{fLb9m~;sIsQ9s>*9LPD zT?jFKJXvqn&Uy+|Dga_GB^==^;;TSp-9|53LWT~w1DE9?S>t*)=)Qa<+c@K>p*W8?HgRPWH1a+%bF0$N zPf6S*ZtT%nK+J~ipqxe(3PgRa2usmnT5F6?yE_y;r7OIN2!~lru@AchDfRX>$1_1D z=o5Z_Qloec(s#B@hLjM~>#}9ia*w7dvD~HkoRAolVd}vI@*8L7l~t@MY=h_|3_tIQoEZ316*4pFZd89WqH5+3fYyVtkL|X z15zOtSJFv}gg&1({U6kamJJ1W*gAU>I^xBcZH!T)ek64WA}`d#km`KMgzg@Sn5(Ku zd!z~Uiwr8We@3SAJ>QwC)+g}m~VU88C0E9wsIlEFvB7^ zBai%Sf7J{7|D<&+<+@sm?wL~39jH-Qb;`c)@WJk?ak(BoC=?QIerDN&%6WixDt@!2p4DNU1OL0ghO_QlaP~g zZ&rFtjC}y~b|mSPkqH@?Gx!%R-6#t(7udir%xf2=!q@~El;ey2wKh#UWBIR<-+uxE z0POxaW%&$Pct*ZIv+~Xr@-?cS=$sey7QGUPoZ;vw0d4~*>_D|tF4aux3&HdheRqVT zC+gfr1swG++r1HPHR`@KCwtPC2$zhd5F%8q{F|)fxZNs^^uw16Osf01ymXmlCA&7! z)LFl?oU-WF?Ks4ZBh0By4>&_Mjd*T(n>UA^5fF(Ul@B#<@^@y8kxYtHk?>gE_i3)7;shJxX!6I`)Of=L;x)Q>nRg8ZtkF$ zux$9tRw`|;*jMG)q(58R#ItQEi&g4e!9xbgxe4=aahodOK*HT-cj+6@A<*zQzIK*KuxFspO;3t( z6Ybus79yX3rw_$RCXl?s14u^k7V=Y28p3NvKtZzEt;#uAsj`717#5MVt=Ji9EtKNf zos$$ze~rbp?!J$R9~5x!tBI-2TWo4$yztPBVux((XHm4hF*d`MF~A4Fp2&OleGIT7 zus|fa%84Q)-M+1_;C_(Y3}iyy2ZAvzhbvl-L{J7}J(jPcak+zQD;)DC8q?{npb4p0 zXk-=qlLkA$U_^>xaQu<^_kbNG6PdZ?iB2OiVVF^J2Va0A7#;r#-gYV{E> zbU=1jCm{s}dD5>LM@^FNaI2!y!qFPMTpLpi9u}+V<)j0g#Ur&k0c$cG$3_U5QJGnM zDeNdaB${P{2=@BS9TxS;V_&F8&~u>5tz`90pXX`X`LfbCSkTtf#%+wC!(8TA)QDW}BMb#KWoU1Z#6Y4@Lga`DMmxuS~3h z3OOMLqiB+1fURdB+*)-CNWox#u_LvD9g7OIRNM7+7T<@kztqX1@&XO z^@w}uHJXWDJ&}1mv@}p7dhUVQ>@63LdoUh3IqF+Doh)8hpMq3z(}wT@3p+mY*1_6I z*rH`s7r9(FwN8nPn!ZjuS{14ZM38 zD-U$J$$I(xJr(AIp)X(4TO)R|cQDQ%ksSJHGz!;Do+OKp=tenN$ZFM9!M-%sT@8-( zs`|3^VF45-!6}{|lkm4Id2k-n(eHa4zy=dlbQX5=mXHp41p}T?O|9|ki6=T5%9rb@ z6U&MaKVBc2$gn_kQsM^>ZSolwYYb1rYl&h=Y{nv|gqZBdYFgER5^nB_!bvGv|%;`xcVCCRA zk=1jlCf3Q*yWA$HpZ1TDD(Zi<84u!!?BP}(tUUAnM_v?LXr@Hm*8_EG{YBZR6NW6| zO<%a=mq4hd;z1(2=+a&Yr+l-wU^s#(S(FP-^6!Z&i&3lnD5W>5k7?5Up$Uxd)o8aH0_UqK-|%W0T+kKS7@LCX5GdVp zHqv!e&aNqAPIf+`v?%{+^;nA5g~hKdeo)9j8VqAS+o4Fr6psoU=k*Kh^D9psY~rgF zPrUcXZK$~P$`6uh7zDNjbOpv26lNS3K%M?>tw~$mW-c>so>vfTFE`GzXR}YsT@>)C zpi;~ZDgJ`BUf5-JA;{g7P7w5VY^x}Jy`z-q&-bS(4H>k4Qc&8V1Xu#hC*<49)h4Uy z++WZ~?;U@fuV4W*kzShF!o!>e-farKe(c zsyvF^*vLGElr@Q0ia~2KIM-j|x(gFlqLoDZfrk(HWqHxh;;@?r2+% zD)2=$A==G0s*|4k`dET^t_+zW-fhnxiIjm}0zW@HFSvHlx%F3G4}wx%FRn+Hs2f}* zc%ycI^?IoH&A-v1Z=@qQgvMMD_;)d&TtI4Ohom74gWi8#w|_!*!#fr*RNY)l)hcWrk=GRRNlEWjKhhpkN^9C%*GO8>?+GIIccSrAXLRN zqIiV!Dg@^dF+p5lAP3X2;5lx`DM0JMO9-M018aG6v~Oa$4B`^vfL2^id|#5fKSRh% zHe}Hl$y+YL7OC5=HbXKut_?yYP!@Cl|7bc3t~k1;Yvbr~a=!8AjYvat1L@=(OgzIVv-@Q{>0NqYDK zW?W8_;o3&ob#syYpylb~BBB23JCJf^;?B-*p5!GM6=)A_303XIMsN&N=bNH$vDi!$ zkwB6M;Ow!aeUO@_6i(hwI!ehx4T1-iI!^s~U$-N=sm(*%TV^`F1CXz%^xeqX#Q3JW ze6ximf5H5jt`QE5SNvA)PRFd7Y1jOslbnbP?KSe7ZOE`tn9W13q?5uT(tcAS_V{ZA zrirKE=Fs=+#r|VG3Q+>EK4;CN7E##*1@i9_@DB&TxE$@xz68fmv!jHXntZ(|&Z73b zTm=1PdM9;M6FX*oE6n3vc|bqTDQMa4eYi8%^LP3wi{O%_==h|WFA-ga{BWmISY7l| z)uf&I@qPq&fuS#wa9rEvHBp*dBsiz8MJ4+cxrf7xwP!)R0Ae72lNVvEM1cw>g~nX# zv>cVq1J^P&UNuUIsl9fKPmx_Z-Sd!*&NANq+)jwN5^6L$S_oLnT=5f}(0|G-feon+ zE{!k#s6v)`Ef3i57D{W*?fJu|AR|eC)2@GQNAZ?@06xbW^KPxg(9&ZqA->KNabU^Xu|u%Io84SD+0j`3~9 zQ`P-z!sg?q8Ot%*H5Z7+{cyEY<3BE<1Dd`}F4E>X5E65B${aNK>j1haN`frnu*|!G zxX5dZFIWG%*yYqQWMS@r-(RIXXxysCAYv+(03rj;Y@nFp3u7z=47AIuZCyP8cfB5@`1Ia zwLh6SzKr8W1*WwZx zAJ024Wi62Q5Ny*`SYlEXp9@Z4PRw+}6_ZONwGoBE=_;J^0gK7IF z8b*p3l+?`Nl`2VwxGH4PY!m`=EOzNS|82Z{0~G-8iqfzfI*-yPZ)#zH6AZ{gJAg?oN^-Ec)Mg6EK-XfLF6cuPxUoOafU9#YJWtbPcY{ z&t{v0GK~7_jssTBqp9yE>1mRCkA6_v$(UFgQbSoXdP_t-_-r_ZKNebVcEuj4faY!El0Ay zA(N)4Ozn&1rX7qSmnYMuLheYF=&QpGa0a;!b@cINyF_LlmV5XD=;A^hpO+Yu6VS5= zmvnBoly-!_m42>fMT&Nf$eXdyH9Y}#B~8^BVp=^A=U5Fo)=5!hXo*q@fNG3IElXK) zM`}g+VjF9W+^YPlgY@BB&UDF@gsk&IlbciEq7;M^6f4?2!cI#^0tXUp`2{$Pg5JUhmB zj^zHm#M+vLlPqV4R9`hLH|b?&8`!sOQa* z{%|%D77SJv*69=YzZ@Az%}#f+CE;6kH!6DYcM`-c^cyDnSvC#Ejxj{ zjh8N~W1-Lr;A4m6X@#!|zBn7YY`kOoS+q9~f2FnMAaGUdNs~i~+5QC^^UjMeTe3dK zD=QSZr*}`Q=L?r$?X^>-i<~$)DA6mcnf+0VWHOke8lQ}R)3cLy6n>*95wS7}PMYrv zoaAP+x91gYiKI%B9K%eF@2WtK0~ceTt8W_$`>F*}j}9Cp_R9t1Ov*+c40!TJ?|1-i z72=>TdFPF^472?fOID}dDgoQ$EE&GGv1!DHJ5VdwNFhx6brHxtyV`M~uhA2Fw{hY^ zNTo7mOO}GB**xN{({q;d@=pPI0+oX}R)An;J!!(V1rwaPmF5L>uJMt6wB6tBoaX#& z_WHc2v>%@?fCWsXerno8woVm4HS?*&N-iEp(IOA1C6KJBH{)W0YX$jpwGPDn;+j@u zJ+`V8>hq4&Q+{dc8p*lFYSI%myGz80HmEi?E00$`RwbcXFaxBz9j|S*v#i8fQ?%?1 zR*KiSoPuSA!;QJBfr^JTeYmW}u@@t7C6UT2%EoAJe`#OfQLuMoZz~`xei+d7FK;Qr zz=AO&}O!X)U{9qEyt&2vsNC|H`*DT1b7!myiyy z6Kc`Yxh1P!>PoL!{5*@MsDIO$3pOE(M~-K<%3VJB7OB#Hq?9;?}MbAlO5hFDU}yIL?|(W z`1Td1qEtc$7tz9$A*ce=1LoK@6fBc6mSmIbSCl^_##YaH7DScEx@gvPPcazYspNtjOmEVwFce9$0 zQH3uFcjDg>)Ut_H0!;p)*XVg>VW<=GXFVzYUQgNhwc4^RtJnv~Ywezr(q{cI*ZkY{ zVAmXSM28)P4BAo8gmA!(=>C#cfslE_izZRp4e8PV3$MJ*t5*rph)#WFnxp+&WW9L z#(Fe!kW5QNm-e^TpjzKJcv1;b3bu&mBUM38rMQB5!f`3PKP%0FK`|@Hql7^I{Um@% z1&mx}TUI0jH9a*?+XTl{5BXyn@?G|uA$ojcUTGxpsa14{mYS!()0k$R2%CtK( zC751w>LdG3)`^*yNJGPNkddBH>qU~?)zA;8L>fX3#mA&T*g}fI*afZrvn5#-(|Cm` z#Al-%4w`E8pe(LZUQnX6ZH$l?Z8Qg40t*9=XF3N8cAXOr^c;E7t#n6W_FV=yAbz{k zDZRGHIkMAu9;;m?yVYKsjHEoHAyS@8)e&zZb?3B#QX}8^BH0nY8LMm6f@?#0aDN1{ zw@J#?tU!TE)j4{a)thFiI9$7m7SKSvh^6r#Qtk#7&{sJ%_kchu=er-3hF4G)(-C9m z9biX?T=21ofht7~4{2(N(O0n=w=SM3`vlZ5k6JbMA&??1Du~e#L-AuAC76~9YM&9E zShO_54)a>}Qx*+*JN=6-V(yEQOpW{nd5X3 zEEIA{g=QMS@^?KmCP)SZ&VdQ7WO&Q*zF)C_GKa8z?hyqRoWBu*?W>kSat;+V(NtVM z7DclLdBr1xLQuoL=tAyfZ<_*GXZ$v;GFuT*@9l~x3;a;i{x~v^3UyQEP4ewbmFwF$LHf8 zIDYu$mXfxO!r8!K>^CTuD#ni^MJo9Iu&26beX||--?aTy`Jp&yX9VnGyt@5=XH7F! za3B(8zP(X2|hy*mtCsT%1T*kM= zF$S?3sKe`wG0g-7{Ru?wU6nsk!LV)HdepcF3-Z)Bx>K$+*9_+ZfBK{I%OVY{aI`vd3_x}R*V}Qaj8c2dF@mFS`c?oGK ztmp3rbnGiDggJE)ImNt5r}Iiu1Ic=P=Y))1FKt+5`l$DL!B6!I(il1j^L)IS!^5b6 zh2m^BM;TGaGWeE8mNL50$pmE*jlqSShyX%;x)TaAx&{;Sh`GlJJd%<6_0mgBOy0U9 z_M=si+f2ycJyJ~aTBAt{`#8YuY52d0J|wN>EcP(Si9 zA1i<(RobyG8?i>#h2U|^6U_3xgvPAZ{4^v~A-R(F6@0Hl5Q^RC~- zpR&=o6GC7c))6vr_StD2^8}tuP$d$Nl)V;sck$P^l)bItOdHn-Ue8sjk6qX>MFD0H z4nx5*=^6wXDGh0bBKc`dBc2jHdfLlpcOophwJElUuExd_&G@`ukm@hRG>`6b#_u#o zEY_)8^lp)Kj(vWwN^D;U~sAgK%Ob;p2M*u z``2@VH+YNm>>-jbt9!-Y5@0K3C8L{w^eg?jF85~IfZ-yHSH+E-%IDanpKGO!^ZM$vf2Ao7S7WhbbW3!s zn88>t>AX$|ERnUqzdCArR8N*KjH95y;5D}q_mAyzf8e{pT_C5bwrR^ny1Tk4y2h38 ztRNEVHxMJ;#%Qq@pLJR?Rgl}=I+qnvE5D)tq5>!XC@{M>BQ;$BiPndwj}NvYAxkpr zB$xgDSP1Hh{@MLBLq}1aYz>S}*|6QzV=S)mQ88z6B!k9{7nLIO)o+Z5WtL*V$DkQ5 zMwyKVtV4}tH9@*Cb8jqhBl~$nY*u)u@PM|TLbMiI8$GKx<8U}20lo8&*20D&WdD6% z$&xO+BFsBEVSllrMSzx8X_vNCDOD0cW>}{bzF#v*JpwERU{F4*iWS|^d~m1hHvpVN zM|~IGeIaY`=B-&%TE=4|xT;Q<%{}h2&ZzlmCdUtU8F}zN-r@Oy3QRt%CpVF$<2zZO#G46rF`wBY1>0} zxGk+DO|0Y3$aSWfm|0=DpAdntgwE0r2wXeAJrSt=Rx|)L4qR)7u{fN?JHvWOPl(2_ zhnx6m%_3+dX2qN_6TJ6&W#niby_(rSIrSq z3*}ofaG?&zJZP(1Z{w)Z8~<|35>fo6$X{{~@Ge(;3S})c7_is#kbrzruu6ty*OQ-_ zkBKkq)Pw~pF=cj0uD0Qagvf@#hC^(I3X0&%W}O?Q_fpwR5sTiS^t}~*gExm@*`p70 zvcT@J$$J#=FOKmu8zsAmY1DIzB@E$5(zq36R@IQ0R&}JTCJ0OdQfA{Y1z$}6q8WZZ z;@i$~jzr|Ew=s#w%ZZ!BjOfk8hPw*?Sl?kQ{8Dd7v-tcsevQ!8^hlOjqM5Lz*ZC3q zl1Lo88IlNYqU6&ZiO7*BnEqRGa{E?HLv)(t-J$&p`tX60F_NgW%C4jD7h~;O!zMkH zHAo|CTtv&^FfT?$$L`}R5Td)KMsVlLe5>FS`OLy4`>R?7{kFnIao1CLrYg35D#m|F z!ctleuwgt4l-ugraT5RO;k;fZ*-n90J#EqvqF;mahsFn_(MDQYWHp@=2yd#7!I0C4 zAYe$lC;RcP4?>v;=Y8W<* zKKxv(+TD<$!%sEN+zd|LpK}gt79Ikt*g&Onhqbf9CegpZExPS+;%CMyWo5{6bw+n< zs2x4wOxVK@@5OIuZ$?BK^dqK?!rIjh9RA5x7LQ8KE5%ibz=N7T#hprD$tPQ_flVcHBlP*mGg7jI{C zsoLR1As`ZZEEHYGotqAC4$p%{eqKg)9#wQ9U%gGp=}KBp9Lh2Q?d8+AGg7?-=^s^M zYr2dxH0P8kb9^Ij&e32ryf>WBbT2^5iqhSE?@idZj!b<;sg{d|e8vK`*&_8v;BlN3 z$^%8DCT}o4iuu{ncn6R(L7KKFH7Vw8zkS;%UIDECNo6v?QEgMQo145%R0hQl!+@m> zLdP*W>59(+=BN+)T$vh`MPK>?8SWO0#U`*`Nbb-&dXihdCRhRk%fqflK5lIDaWPf z{d`BvBbP0b>&~)jwU!vsLq*0_p@gn;TRda9REp~^KeZEzQ_Pp45^c(IsW2!0n-~&c zU366FgnVltk*{m%WR{=Gp>-~8c0=2&3NCu$%$OMVXt@_ycJR% zLbmlcN2WTn=u^yTKM`5(P6=9aUs7bP!WD(a|3T8U-R_fXlbDVPM{O~FTk;>K!T-Rp zGN$^RP3iFTow;iVe6ZS%>w3K_naF?MeT=EeG-XjkI?oxcY-?0#=UrmY+nu(paF0Kh z{%{-Oq#Dh{|ebYY<6-h?jZHUOt zmesaoN62J?Vr0=TwD$f#*iqQL9;t0>l$K^D15>e!-HVS{@C42ofhG!DPRLHbV#Tga znR=S8O7JTS@`aQpVQ+fEpc?921vO@&NYKAuoB%T5qb)I|IYqhJ1Nak5h*1Tzl&_yv z6Pxvg`D3@6=9!FUvcjx^s_QD|r3zR7Sc+!A8$*K45s_VW{z<+W;4CP_3=B9~AHbi$ zYg37>R1ko}GV&{`GpO9kggfPfhfYLN{IV0V%Mm6diyJcWd$*MXd$>FcsQFt2@k)@z zBz2grMZ5GG zQ-d^V)qeIp6*v{3%Mpd8oqoEoEL=2Zm&$J0?gacH_CX^`^!y8_9LF99CPeY79D&$r z6CEM*l?%hEl>qtIa^T_VZn#AZee=2*#Y>fwFS_jvoqQdKS{#!baWWs#(v5qHa?#Xh=~NR6Psb&MN5 z2DJ1n>v2hirS3S%gyAHEM}JHV9C66tsmLmYs$MI)0(`gl$9_J>9gTb2@!F1wvSgyE z8t9g**wj6AThZ>MG#DXay1Q^iqi4!gx$b-pW9}lbnovTawK;Bq5EMC04mTs}_D&xr z=n$>sJuzvY$tLQS-?!NBwLl9lXpo?GfD4Lv2&9 z)UPCtLbbJ3=s!Dw7aht~dDxSkub;h3{S&!&kXN1>UyI`Y&@a&mBA~i7Zr2U=RFI}t zbdxp=^RHZR6lOO>N{4N!PW`COiJ!lxLl{9PE$Oh{H-;lWhJhelEJo1ss$`m^R4j~f zFyKy0k#4W5m8j;VmU8(QIf(enJhHAkvn)kHUYmX;RaiVTaBN2Mn!%4m=@SSksHevS z(a%Gv`D@UW=Hs@?YBx%zH*Ayn;BSPs7XQf?y7k8DB59;bDu-&){ENTDP7_+Gm;(LK z$ioOKK`hi$zrlGEmLF&mffNQj(~)vGT>_P> zC1RP<7(SswAr`HGAjtcNblA$yvtAb5FTBjMvkPG);{kg!Lwvia{4IRn2_GC6Rb&k0 zRj_{gV}7lltOiR3?@7xIV>dSLjerN78 zq_M*BZ3rSNqy5naWq2l|)7;#QN-%m6$B@?RqN?m06MmlM=a>xAOa><*_fM+~{&^!* zb4(L2%B=n}4>NjN3u#oL494A-n>s?NEI!>T_3BS}Jl)AAMxLeU%E3rJjYBc@Qd1%n z0^k!X4jg<+y3Df_T^+L`vRiulk({t{+P2<|tS@@ZMAnuQ8%$hsq@!XLBLpQ+;5bw5 z$!jgi6EH;<(>o77ErQ^WaEzQ*IYHIIfDSIvTWJs{nZg7LR%v?9e>90q1wma9?4U%S z1^%b-Uo;sHY+b~Eh}%=SnN25um@jD|Btk}<0VEMidSL}<=WIX!Z|CtV0gOedlNi`Z zhaom54TIpVesp_{710vJ*1Kq+)A6fk>mtbtjy2Vuj#e0pc?E{d%66m}13`br(1!4) zYo-n=-KpWy+-{U|_;Q0n_%1lzu`rTBuPx2Fm#r6i3EuouA% z*)me)h%h=m@968QL@1N1{x(+Ti=!dV1e@ZC1Ju@8BOw&0v&XEc%+<-Udx!5u1qNhFs2z?G6o6>~cqS)eaXZ zeMzBqD3g7OYL6&j;%;(PRtl~6Z_xDR{P;{zSX}$OOdYcv$W3^s)vxS#TbU|(lt*cz zrZyQO1)hw9HLbr^c2#F|t0P<5xn(-c1-^$nJ}uAs$shwJAb0qMsSM@?Q=F-DWHz9V z71RS`h$0~|`bQF1X@%i0>Nd)U_Y=f?U$sPsv7~sok-GR0uOajh<5B^MDL3zYLK(&A zLO4L@vI2!-HbngM7QDFGo!$BS|wl3aoh~-0LZS3n59&Pv%8y#%0M()3p^O#CfD_4JhXKSQTY-^Cj8^lt~K>zt5GGJf(c0BXp8m8&XT8dlpM!Pq6@lWdQ#If-X*@VFsY19)qb&dC6})34 z7Mj!*9p#$xFcODQzT-AFQ97wykVnUqu`+4ZIl}tj*?%g`l2Ufi!e{Sebz%LUp2qe_ z5<{)@f8BB3S+Eh}8bF=SyB|MsVUm8uWUDT|U~$nO63;EFd@s84lf=P-y-q<@VRYd| zZTS;^Jw|oQ%~sU0%3_Nkexbrgz?b`{UXh$8O*x*FuSSvxQTBHd)QkoYuL9T)-4q30 z%sH}>Nl35g`{S}n*IY#MIqcR*KY^D*;65}cSFZHkrrN>+!55b5%aaMnlUB@?(#(ly zLI+%2M2(6naV62K71lnHA;~7{jy_l+44W!8@z}4?l7T4O`&-tRE=K}?I9`vI9iA?! zB2j%#JViAu4}zuauk?-rYs6ifuARbfhIVY*d1NS4p7G5jVRTix@Gv zw1J-{XOJs8*Mlm&h$k)zcQkzkZX=0~WHG`7+?&(jInqHXZO%8-F(kZAB>rvo-tZ&l z4B_OMts}q6&VQU&(b^EL>@)r8^@1tR%u)Ql9Z>1nGPGa)BI))LQ^5njc&2)c7FGq1 zMsT}hLKQZ{jqt*>>r9&i_59erS-#_3v=TI1#?!3ozeBlJR^?~FK?}-N*|52<6)@=4 z_>{1kPC|d_W?{2tV<9^I_0O=mFI_F`qhctD^z2Lv_jO;OgT>M@qy;tcn(uR$gxk#c znC-k2<(%+JwgFL4kdFO3GPdPFY41$s@-@Ww2lhFb?#Y#b47I1HH{Q5BjZKyRG5KaT znDvD(z1Uv1d;h#a^nB9^UDnh(a$dZ=3p}OG$X^B~h5jB7Jw;C+uTj~+?~TtFM^_6y zKbD-8_xp2Qg*rv}@w9nuQ?Ac@F?4y-ka=Gtu>v=WPJEGs85NMXp~~5DkKjeU7Me@6 zuvPo*YYw13UZd~2OV|DOr0r@Z<9|FOGd!NkK3z|2h(Fr~h8eY3_!MQJhiZ=ZyZY%@ z`6XE-nR5%b6@OmME3o4;(|aeIzOs!U9QGo zkT-qy>G%8mnzgKXrBArZ8%Ar&FOf}d{bx5ct9(A8(EkQ>fX_-x`qnk3gd@HGVX@&*ldptxAb@vz062nGxq||epSZls{?^%7&J(SVuF!+acx+-=+Y_1Y>o|T?_WVD zf@qA+i1|8u^MKRVWP=iq+=(aKvIOWdf1yeP?v?taW`n{7RQlLkYJ|T%p_qv40hk`~ zT-0Yykz%Df;4G_QJ?Kmk@{`jThi&m@p7DvxUz!Fl^cP+*JJ8*bbSN47w<;JC){hLz zKw+83fp+Hnl;M+b712kv+&sV09AZ1@ssahLaX5D-jwFU?<>Fak2csZQ67@jRSoS72 z+lb!k>y8JpeCt=9dc7D_4Y4DI0S}^PgrCUn9ebf_q11F08T1qo$$yNFogQuZrTMoV zwiHeUmLVQI)uii{5B2{|S_)qW{(HXg3av($jd&cCPPIjIn>lL~V7$bM!#>WJWo-=! z_Kc?Y`+?tqs&k!3hL7q0eW~7v?B~4cZ>q-~MHV>`27K^#cqK^c`%c ze@#5#h{Tx-l$-YbYulT3af*9^{PiAeQ#FkG)IWMA_55X^FAH@)4y{z%xH)1tA=4J1 zxSJL(WIRaPjox;4-`#WT;~eCV!B=#o3NMAKt2!H)ZDG1esH{he0VVqjWK_|1Vj^Z*A(GTz zlG)^Ap!6wirAE>2WD4m!89=MQayLb2wVy9?|;>Q zU2EE;M&~6oPj%`NVXSy{1D@Fo^m>Nz>aJ)a7Zv6Wd1Op3TlW;UWtUPW);xkfEZZLw zLP zsJmroVF|5kQg{5CY_1H>^9@;5`NwAw+HsRFP?c(tEc4GK>aa{&L%D_xu^I}301Aou zdcTtXet)l4G+{EUCV`Y-lp!*msL^hKO!e0fab<>za+lYZ6fva5EKS@#aIC6#v{0-Q zBF|4x1MT1m&q`E*QR7c3wIhk$8X6x2SWBKq=~#SQjJBD;<7pwryVJ^QP1O;etv!O^LRdTC=G4 zBm&YVw3zOH`K7LMr!Xs}?%L}^#TLI25%({--*H`eFIC=JGtGpXMFdxP3(Mvz%S8>x zphDJ2%cB+c{a-Xl+^m* zj&zC+y#v>VeUTs7j#d?u{lL!#!djk7zHT|M)d1SG^lV$ z=EV*dzSAS7BliUvG?@CMx6bZu9wjD5!qOl&&@!jrF%ioiVm2>gzhT{B>hY9j9e9)sT+(>o&!=ig9=@LFS^keFTlKa7l(OI?K*P*cqVIE3 zJl(`oAOr2x7yBB+Vzcw*DpyCRfcl=Mr%4($H*FsSP-l{`vEu~o6ve`yCe0u9^lbSd^@-w8OT|Gm+xmPw{J(LkQT>k>Cz zw{IJ~AeKBRlfWsHSRZfOo|E#)p!Z_Rx{A*xS?8--{98Y=XAz1smfMVQ5IC?MGni(<+a>*c)%1VGB+VDaQ9ztE(Tv84V}4=DU(XEt@Ntr-9?#%7 zU2W|h6=>0MUmcUAfyYp;Cn|^Znj*rqjUz2Mp*B2L<{gbSE~Y@~nB+~3 z2zvp5I%yBh*zR{egPT!^t_IDB-&j@h5d5**tXwNj)u*0gKxuLn(1jMH(~pW2-^GyB zj+_UgEZ%wfyd`cQ=x)afBSyK~ibA4eX@ozDiL+8)cQ;t5@`^P4^Xo&4PnSG(r`HO4A*jNb8 z1``8Z-;==v--6$GyomX9OILdvva$uPSacnIuI^)Lf8d#W4Bq{T_WgQWF5^kse?(f( zW_GIO7dJ^11)e_hqK0~EDe^5P85_t>K4AG2${EUc2?~7PS!6{B%`Hg`-6u^L{TGyF z2cSWSXbz2hVIt7&+j=l-5S}4`=LY|b_Hf+=1AG~t7q`M2BTk+^zQX{e@U4pEMml&=y0p#@hDBgO6+$!xI{z^yfhP6!iA zvp6=dB#43)wi+E6)A3 z=V@$dD9C2t0JHL7rYL!}WXhECGk6*JQ@eLq5JqI0tn8TjfvPXdIYo7)SpyMk15-zzhp#twMszH4?%@%10!(?{yORCS59 zz~X<55P3k~E*BN!m9~y?D&`LhdI(-eqzB{JRQD^4L?>aD`r}AXMlmfXxM?WtLvk~o zV-^*`!ZSAmsGLX@k9<3uq0n=A0In#I18WBgc0aV{q=I>OAV{I|)zyvJr(n7?^oD3o zwe`I@Bob;E|9CbymnjNDF05?#+&S&))y?!)$M&Oz@L&r}l#e~->Pm!87w7j;fA3WW z>#eR>Q$sZ%iq&Rl2(Tttyz)#(DM)6EjHng5;u!I1fq=KSY8agKRXWAF+b+a3+F(uD z;QE+{1-hsd^gaL8Etz(0O~@O?lOo5mT3cDC+P3fsy%V6jVL5mxr<1Q;{`(dX9DF z_9MR0zz^k)Vj5$PVlP!SBdJ90z9s(hU*sQkR#sDXZbMC`p4XJ+YT7j^-OkeMCAMrOtmk7!_Wa&jZbvBmW0$(2{_b3$o?(A^zmy3VE$*zP>A6-lMKnOyo(&h z6nc~3cDr+=<#?6Aw4+qg46Gy%ja-2QZsy2Y-NlmYXqy2M$|RE2hhV^Oj;<6FrwF$y zWW8Xjes_Ripxo%Z*coC14^^fAeCez)|7XlX>)fys2?EFE!`a$aj8Hry09N5`Tgd!j z&MIT8)%6iUauA9c%m=ATBkONFLL9udOf5t|eQSizu10B67f%PUZU#Fjf)!xR{Pkl{ zQPckkxXb9ppY;Y=hv=6PGh#h2;_M?m`a?e*GS!T58#LxW-h8?&@4p~99 zPv~RgJx@FZh?L4IlbCJU7l1q(wRkpKRhx&Xjn$>#KttRLR>+c5&w@1Z^&)7_fYd+DUFk-%njBNX zHF5CE62#%I!_KiMhUVeWWM%}#KT-qyM2UqyX)=wEf0AEo`W=R-{-)^Nx^+j{(`3Ub zR}E_^w1U`ACn7${gdC0y=7oEIILy&TEZ7l6Y=6-lM_r6|BQbB z_gz913@P+~P)xaK^QNmp3i31AETiC4eziuyG@gthrFl(a7!5OX64anCZLJ_{J)@%l z&ivgjBpHl%v|6vkzJR<-QQoRa}Fb}KjWHp?e`ZgwxD|$`yAEo+2M)R#cYYwN? zWgBmQ7&Bxuv&|>OZ#<)?SCHbg{ssBgC$N}dY;aGIS3!twIwtSY(?4@o8UI&hrVwTD3 zhr0=BTG@izphywitq#=$FGp6lE~0Que@k%^CXkGh6OaVK$s31)q}WW4^aS?&3(85nh>Q;di~I#2TzuuoGG|Sw}pZx~JevAImb; z+Vyid-cQdtC6V*QR1I0`AgY{I%5tG>MALA47XRRO(SR+lMOPLbkX{jz$?(O4 zHghm}jdByOz5Kqb_wIbUnR`MhH$5O3N-8`PZ43Q4&~n61-CbcCr4ee!TzEtwePiqU z-%uHi#RmJTEljHEB40A65mI zW|g|l(IZEl4h}&`o_zK&u7~rwhp1NcQB@w>*OukN29?5&{NENO6miIlA(1@sVp3uI zFM;lVp0+=m|NlodEC%>aDWxd)D79r9OH^%sl;aps3$a6;uP( zHU}`W7R26JgOU}$`x6F9#fEjaaAd5B@knbLNCS?#knI8Rdx%6nyl{K8w7D264FPg_4F_6WUV-40ANqpVXzc2S92ZXl zn`tw7ib%>P3YjU20J?Ri86hJt|Hw{`_JbLhm6XkA2=?FSDj|%pbvP!V2MSoDCO0NJ z8h2krv3N_@h-T!C;y8Ng#B5fT-Y%U#baXQ>Nw9YvN= zY{^(J0KiV$cSMARK?X|7F{WUU&wfEi3s0CO9BDLn-0>5iwUuuBn=)m=v@8}2y%vMJw(^tz!SpZn zA+1?Bf|uupSl0;K^)+!zYZQ@;ajfhGUeITfSo?=asBjJrH|OHi2Tqv#j!+om8KsJK zxF90s5*55?CEzVJ?;L}T@s+?_N3pPO|AcO9~&OD&~@z zcLez(epN9Qv>TIq>S+RPl#=5W7pM?6*f6u!f`@HO)r;W{Jrk9dW$j3Lug3OAx2p7I zDxF&QV)`9O*L$!N@9Bz_CMhKu5 zJ8jJ)c`5@z<4q&X{E}@b{s*bqySZ)%-qZzDHFo({o-m+qf*Fj2V@E2}Q=FIj)X$S| zLhRPWMl2UNH&w$Hd)OOngoI}fiq#-slam1{%S2h(Hwvi?`dkf*XFb`lk9u}VMQBxM zw{2-mj}mwVy2z$%K|{xqCXQ(6lTp5ICS~A#2rc)5K|B^Wp(TQV70Zv}9_Luh7YH!M*|6Y& zg)>^pEEa&-RyedH$N~EuXiDXGODq)wQh;A9NoA?`t@yyGI(t zmE0)epD8*;?B!P$4yI~WSz6!;h_g<2=+hEff}Y7I7@pZoNMIJl^M-8h^HD9Y98$&B zKnkKZ%AB7~U*&Pi6kU*dc>20%a!^VnMisT6*WO)8wBp}!jEDE~U}QKfjtCcmr(b@K zQLluduHVr+6WnhMF=Y-?2qrVUss_`sx~siVn@|G<3K?XVwt>5}^XJ1!`ZB84Zo(*D zwyU1nm2C%e&SEj+ksd%*qSkY)4W8ESl+VhHSB8(v(LY@YQ>SD+b8!+?{o|w3L%HD;`B91X@t912>`)ZMT$9?<4qL3TNUI^PM z0V`z7ZrgyHsZC)IHgXd%U6oN(lLM(SU#@>&9YCMUbPf_wJr3<1l$U3w`q)M2*CSBU zSmMBYF@@MqulbR3yCfz9+l55dMPsLYkhs5_AAfStpPDbkL6?}so?8KL{l1vcuL~Ih zfE+hLmik_OXyBHsYD0y*bWOAfrW_r;6@Yfo4JN3zq85Zv$=qqOJjHpGWvrb_FE>Kw zAap>ZkV&Q?g|n-Yjjv|f16yX%Bje>u>NRwfY~*#cr21y^8;A$X(3m`>b3+wnH?<3& zTvdCvDqSI53G|WTcZ9@Sw}0L1S$$Jfcp`LOp$=<3ou~hoM}bc(tz@p~QBGzrAqAOs zdYovjgO~iTI7<&VZ`Zv)#ZcX+ilTvGdRqg3OEW~2;{S1VmtApnQJbi7DBRuM-QB6e z-QC>@76=Z7ySuvuC%C)21b3GJ2_(()cJ~>h&o9{5m}`I7Ywfx2nW>CI#>><@;Ss`A zWk`}FG_7(dbHwHe^6DgGGfl>My>KEDY_4I@w5AmzYnKwQ8>)^kF>VF%gF{}pU-mR; zH!2FV4K1oQI}0=#>&%uKYAx4les<(5B?Heos}_GNEjCMRl>u+l+`;pw$1G-lJKgzH zlA$iFB~QT~70`$HqQEXTB07c2>UmEdiNW4TR(+V|aF$lX-BD|^s?~3QTJx@XTH_>_ z+y{_G@C4Nfwp_&dyuMb~neK;Zu*0M{xd|au>ehy=7Rw>Rt1&eF;(mcUPr1@iRjTJu zs@|SsFj}oa`L5GEuwC@6o+_8=X0?D1k(-eI6xjrE*3HC;kp z@|bka^Uh*)PmgIuttg(cXqCCEWq>sxJ`N7DwXrN+#AThG8E5|n)5A~6sbs#z@J{kR zF{MZ|P4gSXP9;@GXqxjfd^&~VubT&Gs;0z``Sc^rSD)*`lkaLcUd<{JJe{LYWr$xC zVG>v!TFriCC~}4T1>2}#`Z-s7z7r)Nr9Gkj1VDfj6(2Xh{*NhMf^ksm<}`~nP|*a= zk_3mZE=nK(ONW}P9Wb;mWMjdPP0l;_Oe!&LxBFxsWh11ri!rD@iZ99=Gv;6@CmlXX2P5N_%hSpT63q00#G!V1f< zhWWt4$Uh~mMDTDE%c&L%@P_D>%oHPQIM!k%d1*ta?0kQ6hQKra&xQLS-(Qrb>VRvs zX_~QHvm+=W__>BdM4vA_81FZVs3X<`z1up)g#U`ld_cL$Yy(PM{Mn+6cS#fvq=#$i zHlNOPmF{!=Jo8ucYx07E8!I!QqhA$OqvC(6T7hJSW$)U@HtWt4O_ zk?#8{b+>-C>u811sVHh;I@31|-h%pQq_mdnhJca^^SYbeILu3Cb~d@mkM98^xqwUG zU8vzr3GQ6diID3N`&PLm9ET(Ju`9+8i1P={yoco8BqhTH8_;oQh0X-NV54^y%T)G?i->cpXls+a8PDuBZf+xhL{oJyG>6+JjRbP`(b@dp@5i;3g9Mx^ za@?;>tC6L;tl!EuQ-XAy%ULmAmm?*9RUq?>*uDEu7e8FHcdy@#G$J(tAupC;j#NI| z5$|}S_hVe8hYA{KNf-?qL-|5ZC=Q|&zHl%T9zL0dGP1?Eb|93X4>g{@#If%9Lh(Wp zne)W%B;tET6bafwBaMAr{KdU1zxjgz;(Z*8;J30+1!%G|BI{*MvvV?B!S5a8y8yb( zOYPGIqv0_^w_4@*3eiv&@=FBn22SlsiQ~`U^>UthuN?GJwYluIpl05K%B0)?pQ%ok z6l1>wcp^qHmA6AT+s8&)?#+^QS&X@jw zANcmlPbK9Y@UU7%86Zbgw{^S~snQLlB~%H@(6xE(F@EXAgVf`slb<&*!xmyD)l+OM zSkeX{U?Tq1aHa(ns`73|KUOJg;S_xC6Q>syD9mCI_yH-m)lErg<#hB75`}{lWM0~p zbdWZ|h86gy&to{h0_P5zvnSLsLtiM z9*}-3gbBe<{^Oot*Mdo;CZRgP-7_ew1|J;vl&py-olN@&25h{HRz_Qw291&eJ8v$I zsG5_$<$CzboG@3#tGfDC8nWdiP`E#)9mzmioSIlpV6?4zLx{d1G$^|Bq3XM!3g&6Z z4<)zUwKXQz-5S=KEank>sgf7k*Sp#_myb26qm@XC(yknH4eqymVY=X(@YJfRofD_0 zMcRlT?2ujKPQqEm_+=}cUGL~8=Fc*@sFa|TkC3qcLDi@E7n(JHRw_vm(P|X$vh8-R zj>fw>dM^N5+~%f{eaNR~R-?AZ;b-e7Y9cEo!XI6gLr2t0J9dc*mAY|w?PK>5@qi?h zVc`MgK%SuKd+rhAKt{=C@3Tq5cssrav|{eix~CS?Q)IXiuZxjbVq1*4KPOQ(hwjH|Si z7uuLq#=Uk<1^=)5fHgv*H_CWd=}g)Parwr}W4=+4xvdqr;ZML3>~Ic}{fH_PopX#m zE-c^Zc#yAKdx}<-WgL!LGVRbx6;X_%WY? znW-2S#6r|6P_&civkGx4!s#+^sd5WG9hZbd3}dges33NjnL^`uS+@u=EfvjQd@AUN z1Lw##b%5+%yAD)g1q~q{uEaC*h(Cp|J-gba(g_M+j*U-fLx6JfZv#+cG~v5Wb{s=TMnq=a9DrMs&%%~bpa zhhm!DL~B3%COWjFwKWp}xdm#K6*9Tj;oDoC?*ON6?`QO*Q@Tkufo0o;_0gSTJL$HD zx-ctl^gBol8V;xDLs}fX_?J_rHBd`}dax@=Z3>!MO1}9ZeNym)x>nI?Dp?^ir4M>{ zTbQ8~|H!wZ#0a+#CUt~p?ZG&W>e|IF&v<6iFCg(obwkaRI<1q?Z8PL(%=KFEZ|u!N zlV}%Jq3r@0mVX~McWNIvu>XX@R?SlD$OUUgjsqdt?et76=^1?USf5&sr@Fi3G1J+z z+uVm*p?)Riic+iBsLUjG0ieSDid#Osjc#&le}`Zp1G5rA$x5mW=%FR#T)0_N!vv!; z%8896kMKq?!NMmQ3?5)9;lAmNv+0{A7sl7#VR=9Uesz{*Eh7_0%VW@wW`o}eU`lzCUVL_=*#p_O|*gDnb`Cm}a zDs{_&@nCGXu>@C?ir?~7$N~w(mPcR^2_?mMLA`dr$URf zQEu6c&rco!hnNdWLV&S;lH4zZ6wiIqXiNNGI4PtyNvIl*HiPZRjL{FPhF11 z6DQBboPW(qmC*MWq*Fg%fX9j%9_qF3Q6^OtQKCiGBAAMXEAQou;STOC%x20$Rz?e8 z^=xK|S+pW^Yv3oTCF8vn0nk8ac}7%~hgeZ8=B>U_chy_8bypAY(Wfa%bFk$J&&QMm z52*tZvAEt+5Dt~9DiY5>mR?rl8rW!#Ab{tV<{lZWVKm#1&=YIg*o^0?MX`lasSV+2c5)Scp+}9x`p#Wa>pzp3^%)6POin`>c+t}&mnIcExb z+ntF$f++jHj4IJ?7=BCsb5V)<6R)CG>f5FDN1ja4&OUA)P(gFe8gAxA1)Rrwyh6*7 zN_zv(qN7qma{6pnSI;++H{tK^HUB#q>a4SQ`YA+GEP@V)d?MmVe^mCwx06Nl+eSOb z1HAJLwPjMbLNEK0u_gG?>9EV^AN}FBt0jp zi9JKzS?d-4e;BSWXcb-|%$PgL=tg*O z@>}GS_kTx{mzhWn+ZO+cFX2VPWlmd7_9CQ7LBo$zg9BtvIV+uppyAL}oT`z%nK~~H zfG4^n3D_bK0#&*Q6e#w#vlt>2OSkP6u2-NVihGQ99?$>c%4Ay`~^e8 z;e)Nv{Og<@I-`G6eyd7+61R<{rZ9?YQbe!db4;TegpkNY!S1t5qCZE@5R813}&R(#~ri$5#0UDfO`)Gb!J3BhnKR3P4+h0 z^N}e7!`}9oPLqD9){i-lNDFYGt7{ly%?ZaA>}iGm$q;?*9Y>S;!4t8JrzCFwy?#;p z5{Z-UCOvUhwh{I0hZiG<+fAySz8E}K>(7#{jKM`5T#2R-@^E*`QgMh9XpD#fk`+l}F>AAF@ z2>*^1h^U4~cjU5weu6skV2}uBb?9(W=zU=(LjvJOf|`jYcahp{KCI-gd}}V5T8o)o ziL0f)Jp1fNoq}Q%61Oqh3nne&c2>8z)E2Z9_9~d1vN?pX91|etYCGKfMQ;%#MMrHi zoSp*Z!{+*@KAYtUEwi!C{X!w1&G}3^3ZH0t$xZ8RS;_T#ah{;rWUSpI5JQ8mHjwEX zxwV4Uz@^C(Z#n|vdOQZ9bown=1n$^J9&)gZnW~tr?MsuK3V2mkv-wEZLNDbcO8p7_m#YD8q3C;ViSK0cFEWcwXWr^a)Dk{;O9S*3h8l26ZRQ zpwz!0h8*_`7vhbd9YqVO3zjjy58|C@2%#lq&HU<;$1h}XFR8m;YOgF<9!utIK0o-K z`DuZqG;t;u7>+g5#RM-B3FrdIHyxalDRpro`fUn?4PQT_DjC4%QI)Nwi|IpD?Gb7; zw9|R%3g?W9U0h(2bymXSi8%yE*?S@la9Fk7$IX{&n>2q>&DGtvj=;NDK4@k$0&6SFl%+Y(RlDtw16@?qW|MUg|Cz#r-<6?>lZ7FrHtKD zbLYH3f6MtHQk$ZMU-BAPwJP%VyOOSRc7(ksrA0O14QO7xE5R}gwdfoN#orV2v_um_ zCA1^W0>4E=q8dn#i%h??pZjnLwjQKQ0^zlOweU~|UO(THe_YjQfbSj=(>^Hc=z^JY z1Mvu{3bKB!M8k#TulReZ3Zxtqri})bx12V>?bIi85LP*xMaKXqb6B_A0ap8t1T>a1 zL$y$Jbws4Im8WzB)K|j6Yov`kJFW^s+|4eF&j}a5#C2 zMkE6K^dAC!=)nUVJH4eW6I9(`*}U^Vf3ufz5xX>T6Cn9^;BybkSkc(`CM+1F_m!7@ zo*(;x>{yY=3$chtN5)KarM(`qS9da#mt!q*i=*izMKuY|3Ek$M+Za1EmiEa{w%$62 zG;#Dk)J`{11iPS=ZoL>P_RqbQZ^#yS=&K-6j-O+ayP7m1A?n+rI#Xgr;#oFX5m{!8 zRw|O-0c`1E`L*Q()MyqK^7d5}DI{@*sYJj=yQ(nODamEk9wI)SwK_{}^Hf`8S){Vv z#5w}gt5W1dywj#mOa226HW5sFZRw`p58FaFK#w)W%cw^EYb}x$v&Ck|&sgT^g>PcT zjJL({KjpuVujRdW@L@$ijQr2B4~)+&F!$b?4v9~N4zG>GydX6J@k;; z-1*q(C4RJvf%W>jwVGkZ6aISY`MVyrH1w-AiGDU9hs*YiJg&SWw)t^1##}U7i>ijT zu-N-nGI1B!wVTT=Q_auiIeC=!6u- zXHqdLAN27}ibj$%O_?+d$5oG~M>TP{O@3cz297PWP?SIW&dZaOAWlD|C3SzL_*N%6*`sn#oFxpl)A8-K8>j8 zKN*Crn<#1rpv^}R^kFNd?uwa-nW&}YyokP?xR+va7r?+#Ug}Vs0O^aTOvNq+3lFIO zK7yO)D8|WjckTNtqbd)&p*LWUQK%4o?M$c>i4aLG>@Ei1%6*f6n4%w6w7H2VSF zB4iuvkXGX@HB|?>jVoU|1rULE$sD901ud%8U9#ttc?|PxN>5FhRiQw;CF!+weQp{< z))AYcFjeCy76i&l;|Ns>Tw;-|0bJSBcozNCWo;J95hLC7t&jey)i%+CDAZ#;?vRdV z7552`4Cvn!KxU(~Y(u_i8E@#CXD|nU11CY$yWw28hZg$Y-^bDwxnD7voLe+Dq6Yf|@LvCDti_XzYF>cTEvL5X5Q`!sscg%< zd@T&XlhE?Bcf;K2R{B^fETk_cO;J49-YY-{V=IW}tw%DnEZF!7wm}@e)9%M>X_AAm z7L-S5_dc7mMp*gt71ZZGXmeOY=n~YvD?j9n^U6mBm)kQ$kD!u;!sp%}Oqc=pvr|34Cb z6+I{mho%}zAQ;FJ4*4^Ru_T-I;VghI3nqNy@Pv1fh1Bt|`o|riZAs^As_6O5wKKj3 zK>jRvA6(n1^CRzSGl1%|R7(8(^c>;GHC6s0a)Ehg*+3>3t+~4IPA=eT*xdY;9O%6;KpL5F%hEJ@TkR#~N;ajq>sDAK3@ zu|CM%7O5#p6crf{5pEyALE;|||1*R%DThxueCJd1X&wmlB!10tGXC8E~7uJ60z>chtlEj}q<%J$G$lU|OPe_WdO3e3IU5*P6;okh&$TV-i>>>Lfw zgYT2-v_n+lGtM!XC}B5&FYLvE9@CaK8zXk~T%B=&Oh)~hQevZ~v|3NkJ#SF{KH4=g zb`xY_?Zb*v;-!N-vl`Y_=g+)(ecnl(t%0;2&62r2OPz!;xxZlwJiHYvLO<~N+edXF z87hc0iVZ8Fhkk%tBDf_tYBQg%vE~A_-yTG0>F!8^=|puMEQkv#6L#D$Q7lG>O4cPXh;SZ&EZCRyV7(1K%_Gn!p_RntEsx`S^#SrU4!Sc!oGUoLb zz&*q;Lkgac7_`5l&5kOy1k?VtE>4c2chKpQp@>R~(04%Mnx<+xaAtVpUEWlXUUUqW z+DL&?lqqf6w{@8LiYNQ3TSUO+nIaeYo)v;w(2lm9?%X&HiBAU3F6;gxT?=TVnx2G+)f+Y zVK`>}dNX;=ie{YM!|B$^bSpL^2+@`c8nWY-GN!>OQ{vWogYbA;3ZcuSU(39T{pwvw z|3(Y08l&T|%U9&vqSvb-pB|2mMm0v$v2=Lye%6+PoNShoWJ76&iTNtXccPpdLMral zoT&L^W{#X8qJ0l2)oVuV+6yq^H-ZXtbmh<=JzqB+JP_&4a9-7}>&2uB(pqJ_LNxw~ zYPq0HsW*J>{Nm3LgZ^br(VSj8ahi{9Me}H(<8dd1E{oomL#U+D*G-|QYng%1i@YHJ zEA?Q%AFLUzw&v%pN$=zwl`mjF$P3@p>J0G+(vy>ToX>htSc{dEG$Q^l8 zD$A&oay`zIH8qmtLbrCEW_uhAlO@Ks5rP%WvYx%q$+FeAlgzvuC8eK@!oxiJ?JeV6 zhCg0*urlU?>ttdjDoC|1cp!PS6Hll=EsM|jJfF|r*v@fG_T7S6y_UNd`5LikWogYE(QL=Eh|w|0oHk78I&hz)upE` zc}F}WNDDXCua@IWAFoWZQgE6`)Z6C6*upKAlL?|ga*JDKVtGKuyZy)qPo4IE`2@)& zAPS61Yiq8Q{eJxBOdZg);@w3KVI)*OGYU$SI{8i$O{!DYv0%?*x`55aT3I>X{Q-o2 zRN5C)tR)g3Brc-=o$^fdzdgU~Vnei5uo{;6!qPbHn^aFXtD_)dCnecfmP!m1VC3%7 zH`FDqW4MK5uCjib2&?&-1UjaCE6hV;coJE1y%AI47frE3caH^ICL{2E`yj){^yh5cu@;hv` zI|EVDR0&H8_wCY2Fr%5q#Tbt?STvm#7J~wzLyQ;O_A(R)uZ{28Hq^}4=G6EB4HJq4nx_;3s>Kg!CJkbx@wN8VNSIMgY$?e77FX78R@;p{xJ_%(jnR*{~6 ze%WUpd__q4Lwk-@-yVsqXQQd$DL0epP{(pT))IEBZ#h>g_$-|hO8M1xC`{t={fkMm z*kPDXx6jZ6`4|U=5+*|1^D0^I4`*!E0^F?)*tcpIk|q6JZ>~;&0_`{-mMk_=mb>)5 zPJ8Ns9kNarRl~Kix2H(aBc_#o<(^p?sWgWDKA;wjKL@<@C~bGA8%{6OU+ek<0-O_o#-6c0HP zzVqzJ{E&XPEgD&4S}sTgta-6a?*}WY$~ls3Ym^0Dvi+7+i?mIPk_`pfe&u7H@XMl^ zVV-(VU-lUi?w!MhQ-x-v`RNb5fkEmupm7`YIH8!B=FBbx)G$7TM)pIj z0!IL9J*D{}HeYIp=UH)(E|%1zPgblmdv&@Z)`pD{ZzY;N#j!6!K&A>FQB7R&P96pwxW^gV)W<=sm!(UbFR{g8Wu(y}Z$Y^T`E#O{>S_`JD z*L5QB2ET*3mX@=fmg-C(Av*=@#;d;l_|dNYK=R$9O<3Y({$R#3Ya(fZzDh8<+UF1E z-(Tm$nOi(B_wY^ucZdPY zY%R}C&8l&Zn)4wSVmy(Ip6s)G$qH$}iBVr?3;(MX=eW6b7G9lq_txzmS;IM;N(V% zpWX!@4tj8`CTkR*5~+R$M`>A!Rv6d#MwF7!C0$DjA;<96f=O(ij2C6+cp8%#*_*V- z(1T-v4<|>NsP#mDnfW((+pK-^A^t1Wo5T-Up#`-NhltU5%Nq;(C|5iVo_bol&g}=9 zPA^Y_B2?JwC&L|n?SbF%je|v z*OEWcglDt6laMk5tX`D}1w{PU1-0Sh#r34=0DB2(pP0<-dRmmSmBzy`x3fx!VsWk0 zi_uOEQmd>91pM$K_zBAe({X8TA`-2bOZkui`VEJyl$|1))c5eiqZNFIqtr72O(=U{ z;{u4hcuqe8bOKgRen*0AdBoN7Y*YpJnDW&TFpP5RWEyfd_#I&f5mRcr?kTwRqJBAM|V!_@QpPc1KGtEZrsY95`*2$gwFbGp? zDw2^7ZYd<<1zb`fMHaftTUJ8R(+)YLkSvc(>nObz^I~ii5yy;H0ClYSG{i6k4)TVh z_!l~Ph7v!--?;)CBq84}+P%!BEk0^B2{@PiZW#yWK?SP}CrG(R1k07xFJa=F_X0^8 zy5+;T1|YAR(ySn%;kPd2v490f)Jkmjq>gxT*;lhS zMg(GxgXQhp_gh#0`5AE1_9AAn{*RVCZ{A$mFR`Q zUZQGhRRgGIw*c5bXtyPij3k&dQelMJb0M7t((7&}sF|@2`K>_f&8U z&AUpSD<$2_YH;7W-eCi7I*wyG61qL^^w&DeW}x2;QR<0d*G8OkguL3wdv0t!b#hPZ zNp9vhc{{hLyj$nv?&xjQ3w^LfQ#?On6f@KqV7MMyy~1+NES=BZH_AjVREtu9sJpGOczJ;w90gIQz*x;p}Z(viQN!#ueHrm zGU6d=(tTT|=wYKNi!1mA-r#(6^=Z2;VcN6?YF3^>@$kjC@}VomAn}6qlqd*cHX{Q^ zw_3EZw!)-lkIOc?7{uS)CWV6oYy$S;=_}_yz)l6@<^k3QJP{Fk6c+tfDWzY7VS1?F zsAO6{HS$4;hUPSDX>x^8T>u-M1nNOX`7SvcG-a0B0Mrim)WvM&l~3V@r0hH>InwuqYWaUG z@w)(#nJRJ0NuxKtx4p#Ncg3C|cZ)XE<)HC&uUc~1#0;Zwip#%x_0WnzkFZ@fq zDdQeV0-gz^Tp2&WTVV zl0~#ZEFH?cP54!&=a;|yh7&6~UXwb7RHT8($%wNI#Ovi>hp8V7?S%=>I3APv25~HU z`Rv&?KI<}vCCF5YwxX#^^PFC !*;dC9d^-6Sr&Ocu4IQY^46#QlUlZEAokH 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�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�QJt}^ApbtRe~fp=M$k-qJD{4`cFs)3+V>uO;O_6<3& zfO)Dc0QTPxV}CZz4gjaN29oRy?o0L(!!1dX5}YfHagu*^jxShTNN=y;h`ojWf{(^ zt+|S`NV$ShmS^ZxrIU4*gn2-xx2j9{l1H(@U8PUO3XnhgPuBEV=+_^gdAtC927=id z*x{_zCcXhqiOux_6+{s)cW|OOe0>W)GUNN^9CEc8y#~TRHSu;hlS=KTp}^%ZSrK82 z@0j*s`|sH)YFH(&Vu5K2@R?{fe|{5nrognmEhgkB*?IzSxw}6oMqpaw4KfR`gkw1< z(OZuR%N7rNt63%SUdmfO*ryTr zq-5#4#;L;_8NHhyYw>;VdNtYty<$(8$5EQ`wB$iq4HPmZn^W`lY|^cWV}Fn*Ega5! zHqiM~6o!zw`FO!WfNy@2#n)C`Vp{SQ=>n$K&rnVukRv#MxCfOTbgkRzOUGHk&qlzD5KG^)Ru zz!)}83{b#oYrYc~y3h&c&>Sl+ROwC@n|R(LXFj6%67fOu%k0A`1#$oAvPlQ=Xrhcs zjXSGot{YhjjwwUZp$e1_^wZI=FZ(Zy(;*?RNZdC9Q3;1M_#+|}LdJsa_I$6qaBdAuU-%q*!K+K2{iEEU^_nQ7I zi_a?@uI0t0INRWfn+o_Mv;->trJ^v^84nb+YqOdY`_)jtr!~Xc#>*m}5ZVk1tnBIX zg93qI*Ek6XsHJ|dJBmy5(Ntyo0v7bH(RcGhD|-x)T2ZLtl^`xZCVmGZHJ`I>Ddy@Y zR$qd)(I(2m>_+H{J_}W#q5id5*l?z1$*zYxu=Ab=(RIHz#z_)ikgWN;GojILn;@ZC zn$jkpdJ2~is=UUF#S}LA2YIrAzSG$A(%_ekBHoZ<^T;gDxr8r&qHmy_?ITHV)l9Sq zkc8&<76+NALLmOhM2ePL(BvA+VYQkpE!vKy@vUR0o~pk?Mcar%(GWj%%NUj#<48}Y zhzHH}v(?PfPRMS+Nl?5$%p*dJU54;&lO>K#NrfHu0=?n8M5~eH(v}YJ@F_Wnu=v*4 zT*joc!r|jRXWN7fvW69-4;b(yO`+gJ!H3;g66U&z+IN-a^O|d;#Qu6q?*skY(NNqZp$CEPPrivj&Ue2s9$Uq!nmK55&riOY%>1V5BbZ` zUpM0K^6IJhNwQYuH5^0In14;XAFt@2N~SWts2zOSniAa>XcPU%rXVwo5pX;hf<72z z0|z(9W$2ItjK-v@!tekt&=8exTRTEgA%*T6>keIoN6GDS0Ubo=a+k$);=xFB0S*L0V{t!lJRsfr#aK;QOqfh&8KqBcEYqpz7B{ zs4v2jNs}l=42#3!B^^-2xsX-1Q{{5*2%vbOHK2h6XfrcPl-)C7kY3^90b*{4 z!Fy@nClFUva=0QcC{G>~k3+9uOy^DAc?Opb= zGv>kUcKC9Mj^gNp_(285^kbhB)({7MRFQo~x~^ufE@CY(Vqf5~$i9AARAK*C+6~Mt zJ@1>7l4KHLK)#}eoDuho#u~bZ2MpbL#Qo?=msAY;Njrwico~p)^@b!@P~nAb;6326 z#1$hWz9jqR)RUp3FXL(NdbE!qt}7;Pa#5;O(^M~O1*i|&=ugc33w*|}+1y<#JF z{6E=t_$8JFr$Qj9$jyIb@nY9-$J)+M&V6^dDT2y3G+nnL7uD)v?!GgzyMO@Rt!q_u z1J>VpFU~L&bs1rM8+yr;v~(jhs>0Z>Vt zTvaXVZgaXDc%h{yF^h8auO|tUynBdbUmuE!on&YNi!YP`#`nuwUFS8vDNjDTQ5m!n zX&ef#x7e&>&kK6~v;1%adI`~&-}v(Py<S$1JyW#~UyE7Ua6WI&!*I%1`=YRN`b z;$ZO7BopYQ1OX7bTahFg+cKm%aZF)1fN}~ZXw1M99}01*9X|w}enbPDTq0=P@aXr7 z^SH!5thyN7=`83x-mzJ^sfd}m=*Kj66BGh~uM@;Zu#fRIr&JW>lx;NTbX$&7mwk4X z<}w~eKj7=kFnSKNjsr$9=M@z_E^n0P-XEHDekOU-)kyfd((vp?+Vf{i z_yE#OnItlzb}^q=zR5VMg=z8#y_itLd1r@t&le@hO}P&X-;OlB|Li@RpQF_ZC`4Ta zvFF~WU4__N7zY>6(OeNp>AQ1;x<$l24l!kEoZ5gWx>*KAV{tx!ssZ3=uO-O0dwhrmJZh^v&v zm>wp+&8H`!Nn&^|NNk_E6+%J8N=tt3P6~9fjvvK6t5+_n=ojagCy-;C0>~ekERPm~ zRJDIGDYkzs)j4HB;Ld8BbMrhGu>s=d6I_E>Fhz9`IK6LQ-EB9?OUZV+Z@Z?EQTDg)lvoLgjAwU!jq?&Fo!XwBlR8=E;hqIFHc#E{@igd4kmo0vQ z2)^hP+9cY@KoSXJK4d45T8--Eg_?(TlTkq9(nH(1qmPu^7xjgiDldpA&ZpKp5r5dux2%4jaqcNKxBKBh6i3D9tM+!L=E=i%;MQ_ zfo>V#Ht`op2w=Z+sUonT52-F_H;tdRG-rBrYBhk!Vq=VU?KJc>1+C?Q4A zlU74d7Ohd-#6)+rU!^};GWVR|t6VbZyB1w@$H*F1HcUljLZx=rH^sFY=c=vOCe z`9cu1keXSF=@Rp`r%`T2vsE< z2=B$vCzO_)!}63bZHrlfRD1>%V4t-;1ndnjiaDflaiS|K7g<=REdZD)5_%2@q_!5MzV+>N zChIFwjw3!QdI0~C`Cf{8l^XijyF#P1S|RgR9x@Z!RU+oZ56{t;^?ytZR3!-Kkoxm< zZZ66|)?N7*=*I4{Cth~es8~WoxQGBCs)nkYp`@NdT7fOW9}}_BZu**YQy?LklufD7 z`GU{&Z=H7KBuk8NIB^T+KdXH~__1$g-bU7 z0-8mg4pNGmO%v@2c|P0snYU0XC(1kn$U6(mz8gQ`nn%sW4H?Hmxka>*4xtAsg`|b@ z_tZ<`OQ!K8=D^j_aQ2v$>rc2;LCkMUIkkymce2!_yaJg&15*^QP$1N z@^VPSkqq@nG8WT$lu;RzTyot^7N*^*+oUPC+D4qW<@zmc)GoH}w)CqCGD`llO1^fs z8^e@8;G9@xQiD>yK?S8+Ov_X+$O_nLB2db+jaSUc$}XNo%-c*YTBic-d~=E4{P$oj zwT>q?rCbhyvdHA`oUmFpoTLrS`%b8RD4SRpcuoK;%~0f00@HLKxLHy1V*&0fzf^sJE5>UUv6WAcK! zL_`Cu4k)gpezu-7Gt45cr$xe_7AQ0)ytgdk z1oD#U309IPnOMP?c#u}?sS?ua<=jJUIlW4M`>qX|Dlzv5ecnJY6CY2BRHZElwM>!P zmWqN|IWP#B5ZGVp4S}qpnv+~1^4QU%nUg=itUJb3lWLhH$a^QLDg{Z}L?{j(Ez!q5)EUmhg-Ung);qH-N0tCESjSzFiz0Z60XrE zgbPq_%C?zfTie*MXMdMF6+BpduKhhAYjsrSmE`IV1%*pDZuqxxoD;x+C?||+f&h4j zc}ygq&VM}1sZQwFc#6f)`-u7vMooE1Y4=AOue%vMJJ>LmbjTOgOH0BT#NRggg*XFb zL{9O;Nd31oH-Gt(1t5MN_;=!5&4vT69QPnCk{pwp)GHt8lXBkWmxZ zXxk8 zu0ZuTS(~(i4(;U#V`Dd1g9z?&Pg^Bnm0pB z4nf%g;OAif;7zhT&b=mG1^CT(SJ_sM`rtxW;4t{7&%=kjO6f8O4yQy^dCrIAQ*(+V z{j@7Y_>0Nxb5Zpf==`>pR$DK7wycC5S;pl^k^F_fZ??_K*J5SX@vjT{!Zzs?##hoO@_dzD6p+p`ZJ%80Y^$o#*^#@hc*yWP9~>Dhlhq|(Z(@fpj0F4(YCJF7D5BJxn&t;l5H%u{ z4k2wb6U;P+IZCIOaG$WtBvY&o-K(UyhVl#Jv8-K|WzKEfW76OiIihHj2K~J+Zq-59 zKON$BDzJ2NA_rXQh~;=61c{;5!Ziv{E}TNO zxIdzXcupbHBq3a`oosUMjommDgQb^b&qkx^7>rF#90v-5yLTfV_Y#8eRUjdqf}c#A z(ptKG&!m(7n8pw}5cFx%UFBEY)0b3qrpiR~TswSFRJr1KAu@Zq@=xD);ICz_H(yc` zDcdH#kVKOLZ&9|J)LA3h7|rY11o-_Zgql+thp`pww^6at8fS*a($RoX z4k&SV$}m15Q%M1-_-yFw(Z3cu`CC_pX%MkbRGD|hNo*OwsmfN_ut};_ckLZE3LIcy zH+bS(VHQ+Pyr_x6R4()PT)hf%T^e*ng~ZOAy59F}2kty`Ni8sRoazt2-XVrHxhFF6-4=W3NeMpBTpGgTx4`dZ>~HgFrNwK5_Wy=aQI(NmOJzQ2 zDU2W{af13Z4O+HL6?4bYCKY&wr|}tNsov>Ag+co2x#0BUYM`Ju!`NM~ObMz(RQt&k z{k5g5z|F2tuvr@Acg@a&gX2VrYb@bEtL=E3%l9^II_X|q(LOFYi}7llhKdW2PC{;8 zoQ@^X!hfuj*~D*5zKf$7ipa+$?<(VeAIZyCG3&?kU2K**C-^cURDK85lNI9-lSgr= z>%OE>oT#!(k=@r1STw_uRSu_%kK;fvYh6y!EU96*IjE{VicN)0`c>kH)m$N3==NKw zM}z_wxfAza`2CuKmZehpZAbg{N&B)^O?>rmshkRjVoU~5T0aw&mU^N4RW8HtCGR(- zN!Z@dX&qWmKso`{&^C99>2&=fQrkKeQRN|cXZ#@QCvk6u2=SgdGGiGyj04%ja4$d> zuz;Tx=5zicrfx#`#R6m0s*bv@Revc|YhBSIoj@5+lsmRhZrmYQ_~guO@4+-FCL9>^ z5A>I*QYHqRbJ};E?c(3IUI`S;!Lgt#NDP_awP6G&Ll~B#>$^0`i(nX__5&+@YM>j8 zs7J@ISEN9{vV{>twTcjF%Od8=m2e7ol(h=O&dx%V=@A|A&U=R6lO!KiEK5jz17^h` z5JQ>1gt6<|sxq2fqUTt1rkBWpe?cinyYZg2x4JxNu9xj4Yp+;xOG(!Zsn zue9~)+N)EOD#mc&%*YJjG)P?msmfM(maG3mO6njC*D^)eDVx;!xjSl?dxY%jA*(2b z_ZanTLr|sEYEAwATAST{h!N(;Q;m0yXgcFY&KC2QrNqhT^c>=`ZF5IOQa)N3B{%72b%MH zjPONI`qsL2B~(2+r1zK%3OS>r6a__Nd&yfHE9StMRVdu+<(=g7PNo(jMWY&TAY>*^ zlPY;5b8ttUqwvK{uJpeCp2Q-Og(=1wJWGB#?T~Pbp`P(B&J7J&BL5W>`f&pz?v<;; zzF!GFKUoHvj~c_X4wTwUhFpjwD_&9=KYlo4bJ(eIEG8r4KZU4Xs*+}&El5y{byuU! z8Erl9l8kD|m9(&~elGdC37x_l1m#^&2?#0>mW9qd-(S?#(W-Ik$e}}3sAmCBY`_Sp}RXuX|(!g}5%LMC(ZDD+>`dyp25~ zve=TPEw(IcLPTn_``bJgHvW)KL;wqH;%mL*>m|lU6Y-@>nSfwW+cJr5`sY$&0ptyn zvQw%k@y)N!kxVoBpWEP(L%Ut2Y!|S0=gK3L2Xt`oS%4TdBQs1trnc=bVftPq)67$U zYLF+%3Nr&DbyKqTa(DnLWzp>OJAaWAaWY+T1hFSy+b8K*sL*o!l%X29KBIaz;F+MA zm!olP5d>K6wiKQI^7z(SmD+t5hp!^XHI*^ejVrevQJH}n*`WbrAAKMnBnGUXPYD$y z-1=(86s7Op)SEB?T5L+NO3PDZpwO`(Wvi>~vq z_vm9h9ew-BdoBqf-^9JQrA9Ch2%Ts9W%ezZht&`CTv!_k=(K4;ix^P+tzi%>|12AD z?b9wakI8Yt;&zA%v2(n2%^Iwt?4I?aRMQ&7{8cS$nZAM~hff+5A&W@W*qaGWNk6Nj zfpIwuq=*Qlm*wmS^JF{g1?bmeO6j&u@>nAkiW92xH+qgzsEYmmdB18(1|>EmS0e^T6@twv&g!?hV=S;i6yn{vaL8$*45e?g-7z$ zPbG-~^94$`{+VHMxr@f}6kljNh~PfTq``tH-Gk9>wtNpqoI$g8)6?QR-SD^vgnkSV zzg$w0x|@cV*t$N4=Mu;;TD*JWz6|GCMZ?g9p@`Dz)giNZ_S0g|%C~?k4V*f#$VXY^ ztt;+()&0ZkzcihmlM8GwuxC1{l*u?cTgzLDz$7p7kjl~$og#7#%3D~4jy%~{nI4kV zZ!#m>s?yQg31?v|^K|nL;b`mXdE&AoF>S9HdlQ<>T6ha|QtpSj$6!OQQgPDF9G(iG z1u=^9E&AK8CE>yiPsvGTgJ{p3df{5KcaCj(Y687~867nrL)WYzv)ELb-7Phg(=VKF z>QWgMCb!7TEi_V;^vxN+X~xBz#lF`DS#jpTGD|a1M$CqN>--Rk4F&o^*3l$ReYUel zQ&3^OZdQzl&myT9h+5IfV=Ix7(&Dg1*2HrM@8tc3QAw zAkgKh8U;U>RL#Hg**2_wMI;4dU(fNy9)qaLJj1e@Co&QGzpCY_;(lQrGWYFuxwrSeH+h7TK6oW6;EPh}kovG2Fm%DUxPZ@h)Pgm&XIFzw5%M=K(2T z>+YasIwz!0;u&MD(@N&)p;py_1Gu-cuHVnQK-AN&W0e;pWTcS3Z`gBgi(2GcRt#st zKBZXBe)$dyuabCJ5jzDYngkVWP~Uf^qB*+8B>u>M!J=jL4AB{xR@TG-9GfT+iXnFx z`iTsJFI8Xhye1P<@C{DxEW+{RT7yTR(u6W855rB4+Pysu!*8r^uGX1YO;R)wa^fD_ z;OI*<4(E%Fs zzr`fsJin!McR5!qEWDZq=(c}3qw`@okPb1Cr5rTbu*86(DZN#hU`1wGF3llRiDp5p zg@k7JKsUoE>RFOyKqzQjd)k{t;~uyDOhAyBNtq15!^B=tKoIo3s>-dzYu+Cdtr1X68yuwatMTi`1@VGWe^{4E_&RsDwABIrXqg!YgrG>7_Y zd6T+nUkjm&Lm&1V%1b$E8dl9Cwx~~mFXS$co5TuU-9u(g@ZA<{D8bb`Xh`wMI5Bj- zkHGhe(?aY+JFtGcioH2&w`34=wx`9PD=$v$WI5iA zB$51Vc0nt1?Rk|ki_=9hs;;>xQcuF`36Db58@PzkPjtRt)XF+q;44F9QeHroTV4_3 z5Dbn)MA$K#eP#>Kh>>IcW7Bz~Y$+2(Z$53Ba;qsD(zvsJt8~ha=$UUTiIKAW)5oq~ zv^MHSG}#Kp8=96MyiT)`F;+nLQy19W!5mQ0(y1?c4xort{z34GxjNQJw*UF6o`QqW?&YPG0s!yAoYz^y2gF9j^IU>hf1mmI>gFUxu59!HghJxZK~A(JLQ z*IHZ<5QI_lohE5p$`2JrEEXYN0ShD3z4-m%%nNxJk3*oOZ(SJ=VxDvPl@r+)Hk!oa zR3cGrKWObO+hnJb)z%A0#S-vy@4%2o_`AFCtWRsS^mB7g1~y6KcjQQPaNlX9G>bO* zo`VaTJRmn-I=(Cd!n9qOM-hqCZ00ID#=pdUNx3!M=2DLwo>i2At#zeG>dg2@Nx{}G zi`B)NfQ{`7oCB74ARX1o|6%JcyW)(NHUZ=A4ndp7-Q62&+}$NeAh^4`yE`=Q?(Pl& zf(Q2y2n0!nbKZC6)BJ;LRjqzjuf2EO)e@Al;2991(a1KMwa@VXQMp`r7Dt!$Yv-`r z`^wYO{C+-j!j^%1KV0c;NcALY`F53wO5;C|1_Ga=&69G)PlolheW!NdS?I-1Tyu55QA*L%?BCE>{+Nfj_g95)hJq(z1U9PyAG4_e7Cm>!sT)baEHS=3=FM&=dEbrFrBT z0v&~=DSjkx0XvJ{B{QXU>qB9oVMc$;{N#gM9N*T;;{4cpocu1k*wO*DzyweD!oa9CD+bprS>BLFikl5T;(Ck?mYMg0n|+?ID=b^mVlscY zq18gJ^2TQb_{TSrSP{vv0BZx3dQv2B{l~`=HtrgTP0G?R1D|SoCVuG37?d5zfVB!X z-P?-~BMJ~E!>quO6cTP$>D=IDIXe(xKl~kf34XM?9*3vt&rFP!$p#k7fl5vcz1&&& z!Qa1xT@$Rl0h-^=7-C(EVCjZ1NV4Ow`;dYQ914=6gOZbjBnFSmS#GJhgKtr#R$zpx zD1}YulVB-S2=G&cB6bq~W!wMcB%wD+=-Rt7oAdisVV!-7_7YMQAb?Oi=G)Ng@m2C>63b%@JB!^K24ZY1)j6w!}vn0H#RMrGYqr z68JNx9$F|UF~(IF+|DAOKB-p=gnOj943onX^{M{UEI?jI#svTsv27{+#z;1~vc0RJ zSkQ~{gSrwt)1?`r;@8!0;8TouXD@|Mrp#1dduOhOooGA~T5 z{f0ut14iM_YPVB18#S9CXJPl&pkhGE%?^u- zOu0R=_r>W}E_mSKN2YnkwDD}&i*(9@jrHvSL=2x;*79<0mCnM5Ed~4SgvwP8dd%Py z2s$A7X^yo&R)lh;to9V8X1LZway(I7hq0o`z;aXZL>{6s#s*=lYU+!N?cYnqd=d$$ zo3rmLBwdCc?1D^TT-epVq;evL1m1>^Mk?6KI&6N|mrZDW%}c*xY(gE9c5?8gq_OGC zay8LcE3*aDeP|@5Af!oI5A{8ge7Q7}jg$#V=jRoss2Q>ct|K<6hkkCg&2k^B$`cik zF3ggCYCR#<+z)GpQ%z%EjfIEjKb3q_=2Idh+43-ckiA_pSFl8hN&wgq$jwI+tZ8ew zF>?eX{L3tN5jBjscZSAZb2d~LVA|9&#|(+w-})^MUi9Jc-(HT<=hoKNU*N;dL6QN> zD1aGQ)Sl}@l7oDG=r@M%>HYZPcIzG8>YBxsQGO7TktWX!ipw#lDRPS)bdzFn#&TYa zgh!JNq!=4G?Tmq}s@=px19`z0Ri2bOsn{OD z6oTrT=~pxMUwr-Kpkse!Bf<81H$8WDH%e1mwYlLJOsU%nP;&g)X_DT0t`8$F^YW?M zB!?#M|0MHOhwsIOi+rzXcXM0oHw*V)6b0Z)2fQabJ+$aWEGpM#!Bffj{x>9vk=8mw zCD%-&v*V85{FONzz-Y4+wfaL=bpMxdi&`Aff#E2 zR?1;c7{-};_y+wy5==ttX0BW5_@M^uknwgkMuXdC)V{ajPX*CcdX#^DcPB4{Se9i; zBb+PV$`S-S2&3%N273r@;^TE2@90y<6a^wLooDLURuvM_?L{Gu#Nd<-N~=gSMDwZY z%3~SH0c%Pk&Cm*`S6@fJAfjQIOmQ;`;PQ+>V>KNF`F91*>KWVpqEF<+cCuqK_V1t! zs`{!8^Q6Zk#T)u(YswevjHW{0FAH40&7=GSwi`~zG1fUwPJCtNsv{jN zV`vvwaOO+JS43bi-NfCqWY_omd@Xi2w?78*$r^z=lVSX`txy}4qe0}-<(VP3r6lv? zFtKN=NMLMThLf~^UO0box0env%p3V^JqcMo1=&;b7H<>2U$Alq^Ih>Xe1*?`Be%jP2p=S{Zl#c8V4m!li|h%kJvg z$k3Lj@Bj}leGu2`eExnlnlWr5w=9)vr$&!M#~F<%8s%pXEnV|)@ChAAeigOHyzwcD%2D=Ok6B`M_f2i~|onWwKAf`^a%EEyRq;R{~!x zM@SLtm~=;HwyIylM%}sMN8z$B=U9gH1;2@UIm?4 zH3<1>bdwdTc}k~IS9l2A6&V(NJR!|lRl>wzuGH!#2xHr&&rQaRXu)c z-By>YCdqo^4!9_c@JV0F)I=b;qGUuT42WC)F=f($O^6y7N}wOBNrQKs1&L|!fhP4{ zag}wYQr%kI(z+~JXlk-$O4o4qaIexkv;x0XI%}aWUMX)MrV?8x4?s45kH%WL9ceYS z_XbN_d+{A8mtq#`k?IpE6>2IXfAF8nK%0Uv8|f@u74ahPhv1BUPtwm;v4IH<=msKZ zIURH8kzi=QAT{Z?QH-nv8x6#qoK0qTzftwM?}mAjh!PpY)C{8htqvuBbaQu;dzy%Z zhcb;LqzM7pZ(w}Ez9Ll0KH3o5Z-${~y;m-LlZz$YO<#BL=J-P+n)-R2?~b13tMrcq z^*K5n?f@qK(}LX6JZ@nK82j@qbhxW7XHL@aQ?dGd_>(2tPlR2;Wy+F-b%l3#7##O7 zHvswt1Nrs&V7&>=iQN2ZI>qvLl_D)&=M+aG@?gS0?r?!?5{W(;YuJ2-6a?Z%iE2Ns zMwi#Ogg>RKR4{ZzK;CebnSu@hw-2!tw#g$k%iSz&v;(8Q_p>iB=?erXx~W&BUtUL?Rul)va(DB~%{?-`H6|(m7|>SO$zfN`K#Bznqp%76>s(GJ8)O& zRQ)F5Ku*c?E4SW19=a`1#Z;AOa4Vu59FJ<8jqEoT0a6J4@`*}Mbrb>DQh*AIV-v6aD^bjR_w4VzNY(c!z?J-bO21O8tEI|hc2NrR??gMYd6o2IbFnt zsvR?4xTSd}1ry=k`hS79H$^>yW^S?@FD_jcE?ZObfQXSKUAVruz z){XeLC2nk-DhE88yu=XAIbW!-FZ{OO*^fHnLoz7W5h@}YhV7OJPpX_ue74eX3^sm6 zkI_ug(=o>?Otv=bi-vTR9^r5!nQ$i7Bag}DdrQK;s(J0+GFROE6zbDtWtKecG`;X& z)70k_gr_pqcAy7x4B6czsZ>3Lp?O%8pIP?KpO8Y6w$%|_iNMg={V8&#_XA{!4%$7* zeWv;ywC*%bS8LT;+fo}~6LvOl>U~v-(fdVD0yenyz*v{%rA1*a?WAC1nWM0%3Q(GJ zx9dkxwyu5?UbT+KdyKm{CEQJm$C~0~fHQC;1i?d4UI~*w4++Cq3`LhzeBry3^n~uC zP$5UulZtb>85J*|AReyiX)DQ*7Jfo(a5pQyCoWFXUQs=XHth~wyJ?#5?rq^KN)kxd z+hB+)TDXz@_-!*MzNa~C#Z>-eMK3$VHYrDXYAnqe-?g&$7%9mEl%_OJpBm*5Pa8!y zTMt_@6ozScADE@w_2!?=xumkmKJJVJ!CL0D>0t{NO(0lNQt^)qA7K({8B{%pM>^k( z1_iqyi1ZjJFxWxNy-zKeha|^7haG+?+1GNVWtH+>5VW7C!>wz`7LAnOWFU;a3h0bb zIvHD^;=KkgdX)#ym*k5REm^|bR2G;Tep|VUkQUIAk$1$(TXV^Q2(`|X>7E{m+q7W z(}w^P_*u;17nMbaIt^96xk(B@GAOwwC!2oHKRLiglVIt`%H~eq)CE!ef`(5m4b4e; zrZovmeP^k(jhO@J#Or=hMMX~IU_*i~wTlH~x^0Bp0T8%Txoj3bb_&=*wmz<{?Q?0^ z5jT?dJgxR7v2d@M^wAb?9iQv$48r~|0R__y~>5p$1Lg#Z-Lr9DaT*sIKEQYfe&;2u$6!FQ6wMe?lQK{ zcXSp;PgPFWyyzccX&HRWGXmr#CQ)omU$u$=iIPX+_ynlyT69OW2gtJ!7n$l+-}DM-0v_fyU!lzXG&) zW$xj-?+l&**f<)ANRjQGq#GORO*)6PkL#b)lV%dC2A^m@7s>a3ZOOptAyRfGk%*7! zkG!7kg5Krgwt7<;ofi}(^Q!WqLdp2l@-jjy5#1^w6;A<1F7pSyMG;}ZFXND{ZpTa# zTDH|TBVn$KrD7W%wiL1%Dp{lT{JGO`mu9T#DhR5EbkbjTp8q^Cvd-DxWL~??6S_hR zW-Kz$j1AU(tpbO0>9{B%xhRI(QqWBBjGD)uzQs+;`2fQO0bB&bwg5CZ+qM>U%nl1) z;2UwF<42(X!Ng~U|5)I~%0?TNfCx-fy$o_}XN>eb^P4*AvD4u09vauO*7J7qQyF@T zjkzf5CcFHN97*wc8CH}Z`&eliq|Y!IqJRh$CRrhTb?B3jYJG18zEGzlF!V4@rRQns zQ73}#%*ETs(i!5w%;^;W;5Jk4ke0QaGpWp&yp~6an=dH-ki1>NJk46Dq|u&Gcyj1WVp!(Ed*$ z+v9y)Zm(z}(OS}LO*!~1jB2~oO!aTk@l?o6GEn(#M9j&vc#$tBi^VYnae-i~ss2G6 zG;@8@^c2Qlk0I#Db5AOJc2FI!KXnvwaH1VC&>p3%h`+afKvt!^d$5&Dq^==dACeOu zNxK#T)QV|+2ZL{2#23uQ(;AF=`K<*se6WJKNExXLU5B;g(Oqo$KV^ zUzQT_-Gqh@CWI|M@&|T#2ucEo^ZSmGQjkQq4fT|o8RbE_O}W#O92)jxrIZQ&?nQ;4 zzJ7&}W(=qyY+r+*w(%-fkw=L}&#>kfQvtfI?yKE26zeA0U_CtS_QaPF?p- za^kN|NLfyeU9${7{Cgg_E{RBU8VRyd%LA{gP%bjBG$Vu7H0Lq zo($Aw<}K@Zrtac1f_yBWIP&5Tt57dX+*4A{4g?EEf@sdITjKC=+kJST6MXd8dHzF5 zYa{e-tBqriQtf9P)tROsTI(AX3$ zD2BLK80I&di8JM3nC$v3x^7s~5}M+ZN<*R~S8h_a5&bYBBrCJ7`fD~KEe#Dvsk-GurZ z%kXnGJ9s@p`hTIitk7)o&M=@htQx=tihaD=W~3|l=KyzUH~^j2CBT^%#9PEf)R4&~ zai>sn7!dvyCwWfums&yASg?w0x(Mq3|&=lMI^+>>m#<4sBuj!3&6uqIyKIr509EaNqXO8atG!=+8uwFl#Vd? zBqXu-2f6E9i_#4sXb~Qj^5SYlF;$<6!AzS2+m|Y%4J8@d!RP^#()Jl zYqL0eI5?q~(s)8Z#ZvGySuI7BLr_mJO{%Q60FdoSem?D-EGKol(D#Sh15uT-*t^oP z#vj0=iIFjtsZ;WeT>hP&k#Zs5Ool4N_af9rA3}XzD^lkd>J6I$XDET-{=k;&q2RSS z#6Ul{uu2Sl_P8h0DDrIpO3N{1`npzM5pLN>z?-cz$=TrkL)2nZEW8_HO%R^c0yLWw znJN2EsY-$V=5A-)kW4uTkw5KcECO)Z`-!Qe{w8~4!0S_b+oWAy&n`_>JC5Fkr8Zf0 zu^5y|*UwpMQBEpAqC{%<>632@YgS4FGcCV+l6LxKWTa=hKXs;Ji z-@XcncriqUdoT9Qy%Z#b7=;Zi@O2%EuZP4-yzhzJ&LosGQN4<>iD&2LYui0N&Wg*?>c3$Wm~HO zox8;{l-0|og!nFj$jBcr(i_==Yc9NQL$z`ajOv-w-zLExiQwl*8Fr%>* zMihj|Z`x8|LZKVOALErZKVkI}#JrtH@?F*tChqV&kp#fn7#$67cit5tmGci`i>$ZL zRsCRxgT)Jmv2{v~sf$!gIsns7N|7x}rkaA@kmu#IwA`D}Pz-~6YIs}t($15fdnXXwUw9KODFZ^I3H7HJ(t%mA6e~#i14%OH-NomotZ71FtNL5r$?HnSAP#?=LrXw z%Jq)U!TjECbOm)IyD8*h_D8nw*Tp?q$E*=I2s(@1onN(KG;Bklrk_7sI7H>d8l=Kn zHPQq=?XYD_4j^x#qV67wIU8`Z7oP!n;2m&HH)73eSvz~}y)fTvsC-T7OSWnK?;ZaU z);v}PcelK7Rvmr^X757|+fI)Qf25VfX^Ooy0pY76lU1Gn0D&Eme08`t+Ar##(@7%0 zw;?r$Ed-Q1_`O>g{sxKD)LJc z4oB0z>`?GWGt`M5FgSr^9kAz%=V-gzWc;wCaiKV*>Y|SnAc{1#N3)wg(Fa1xlM9N@ zV!9rr=Fv*Ic;{|#GEszW^i%BS{y5JKA<61_p%8^@m$iU>3>lYHbTcu$a~R<62=E!~ zzJEASHFTqvSyy~-cNG&fi8M&@G%UNT&KV}bxBfn>$1CrGQ|KlldgE2293A5BmiXBm zyf_;#4hn(xBR;!^X4{d%q5J9Z%lJ~-S0!41>OZhu;V{b-IWKZY@Lm8FG;e(?tO}wM z9#Yi$kUxXcw&xTaTkSVWR!Y;Gm+$oF$EDlR_H_j^ZVY4fdpQRG9)jGD&qpAgisc&9 zMpNOAhtl9>H>)rIAqhI0%;$cQse#|ksz^yxhiTLTG@Xfb;cA3bIKr9xY7g{~pZN?b zB>L@DI(KgCl+*u$E^}&*&rjJmsfuIkwXMMSuYJ9KF3V;lEFCB2pqW|Ap?cdB z87@uMJ-5iK-{p@(8W5eESM^_z%&N|ZN%Wtcog#3by8ZG#D@8!o$o&I;*)~ zOMx~;_{plp(KP&rbeGB#GL-nyQu6CC?h4QPmmOtn zwHlBiP<3(%{G*POCPu{kX_bpZX}8~4&cw^nTHfRg&peSn+x&R>?`z_};Ld0^KtZh5 zzIam%8clMB^pNQ$Ho&Qhxu+U8rz#+<*qpYUqswhGzAy{^M~u&}|JEr6sI<01*sT?F zyc2Ln;Ws3xsk}7q$bwUQYc+S|dll9mC=KMI41p>@H~X%<88<_F2nd!;Nb3GNw-_%1 zzMax}3Eb-~+N45R$kks)&zJlXwi>VPUMg|d zDaMQ^L zGMaFT`ndj%y`S0BICJ~QyRB#=xq3cPbJbZdiqHX9M(QUUJ@Xp`G>4%{X6Ml!^2D21 z8-!%FR!9zwa|bI%`We`mqUAeGW$%f48X7j%DyQVqn!}PK{gn`imsVyZS0B2nvJq(0cQs;YqdtHf zSV}!9vNRr!?SRzwG201h)T-4@?wC@Xl7wFf!_YWqO|U@?$V6XJiu^XV{yv?XuTi^h z)SEg&LyTugD^@mln^M3OOBesbF$xmOr-uR#C%d$qh2>!xYg(*mkqC_nykG$;&3R07 z=!N5F(=vySAHN_|eTKhIE#kIRx(`t6PT{zqG=R4{51$$iCNmpoH~ukK3Ik)nt)!VO znj zvzk2JpK>a5nv0FnO{y~y=Lzr8)OJpE@)MFOz-3>A_p&u9xp4fm{ZwZ))h6d|-sOTt z0?#~MnYv(gfnyMK&^U$+LH=a)ow`r5X@o1OZK+n%v?PI|S~dfH9j^pDRWcf`19EQW} zmv&~3DU!8iEyu#O)Mh^0lxMJvKowi9W1M3Gb#?$mr5Mdxs%gg8 zgK@bAf)mHv(8Dn5hB*}%TB-5ob(IsWMqkqLnH-~o=;_RDV;fb$Oja2QlWo`%=0&t9 z8Vtw8kiZzmI&w+IS`cF4-n96gg$vmR;nv}y&wn)}G{aDr<9*E5F(`Nn0~PF%dg}^) za7Kmk(FOV0Ain}y zGtRvETNlyo^q(J<#q#CBHKv~=tRxh-M~dihO2|DhCLCLtx2W{dlR=eTjTyz}stO9SY1^Ysojl;Uu&I_%M zDiTP;)|yc}e3l_uDK}w4fkK9VhU&*er@+`7k5bZf5H##}!(SnG#-ky815puT&0pl3 zY`fEqCW)fWXkM5}s9rwxMrAumnwQzJhL4lT% z0N@$E=xVbh?W9Ns8c5SapGP+H>i47KGOMMnLJv_NI_4;fO=ii*MJ@Lfmwv3^)ZX)h zfy*hDG(iuO4>M!q!IXn^^22|e+(#?cYxg|D)2q*gtS!qO>B4wB8wp2I*9FRp6tc4IY-9o%@*6e1muDfi-v>7EQwhLsJoUeUnIu!Mx&~{_zb@*F|p=5seWYA z@~!Emf=Y`ypB}1Q-c>qvs|!IE#o%9kFH~{vjR4hz=tdu&RA96@xSD5*a=l5itNP$H zz)sSD5g0}kC=Jsu*0L!9U4^HmR|Fx|l$Cu3F`oqZVWM~ZwmK^9qfo0* z`)o_xjVhnMbVP_k*{05p`7Gn?3xq~WHndfr3j@5+asU{2(Z3=1rLBEZ{wP@4*E;!< zCDrU65ymQaktWT750+$0y~T*`=Q^Y`+F_97y&R5KAd2M#XOug$)KJix+(m|s^O6+A zG7MWWmw|}e@z|1AsOkW1){sChm6dR`bO=D;iu)2D@x6_WnqtdW5Reoh%OZA0sgjEk zpOWw!cM;J5Z|$C0vk@foqp+G1sQJq;p)4S}_?u#UUQ8@gc>`5Y-+)R%3ldwjj8wU& zr>5$qk2xeDdR#L6M5Xe(XlDS;HW(ax3BI2l7lb6bGl%LZ(D)#ySCwBLePYuE{Kiat5^BbwJyeXzU z2lNZ77vCgMaOZdIFP-7KvewRe;KG+$+*jSajW&HBT)SrXHDyK;6{zYBh zH9o%>ytBqqklQ*@E*8hY&U{@>M42ON?q@%yX z973sE;?~7FKJ`oZm-ckqBkY`hq&_11Y8Vwh)vsy9Jy^}`(Xkj1Y(X)bgwX|jJ#>KK zCm57oy6VOg4A^O5AdW4(69?%@ zfP|>0L{AT9*QinNkkR7xjiS4!dmxaE*|~#8^E)~fHm&bFs#BybUZQ1E3bN!cWc0$-X>hvfYD4y zPPIl8@R*I=CE8}Jo$17^nuEM@tIv@6%| z7r?@!O(228EF!#2XVnh?rrsFi!0is2Ozl}aUOqg6|t zOK>*|5`j3nu<)>dMYo@2#>Z!UHMt>}<6`?run^PYoRg2K*{Xw4|R^UH0^4Iq4O)Pvv0{W$MH%tqr`mQDXA^leuU zuGyqIhekRHY}>Vy@5!5wm!rfh+HOonq9A3CS~jS+wA8IX&?38oKdmmoz>tli&8cu+ zPHJ~-ZyLwi6`A?a+#|uB{cbTB<+P;f0nX|PA>Va1D9;#zVG%13=@u-jv{M&Ux|N4h zgU^zpozwKf0|~N8d4MeO;=ie?STTa@lMd>DxtcAqzXvV5P3O1l!boZVcTd}S?9=*;w#5TsKr z9o|G0^IFYo^a)$?g$G7AAdu_O$xU*c$|Rd!3o za+Q?2yT4(~ed`DEIAbEUcan|M0<+6f+1R503##D$?o|oFhsU*j;k08kV+vyITYo|d z%b*h6g5=o8BQ5Nk3rbuj8PSK~ye7bFIC`sA>?XadftPQ2*BVY(f(vLW^skEzS@reLE zQPnO({$)FI9jyDhW#+_p=t#8kH{`aEQ>76AOD)oieD5@fIMq@MD5=ZRR3$M4Z10Dd zU+10JI)vVVe&0Y%QiqAtk)*U4@fT+s$QLN=)lvjfKEHT)S*vCeXVtwJ$Z|Q?=l>XP zgCuJ6o0M;tZ(_h9xMoM+Jm#b@v}kfLJz;*zxhap?qtB(Eov{S`NxdQ&JTsZL%4-~h zyF{ak&{UeakW^4hlssl-$8^-6`I-tqRYrKr3szQdUWycvY7vx>+em&-tO*htdRtDM z?BJ3w9-j=!cIpp+CcA-=`oiLQfksJ>ijY?X^w`Nhi{cyaWe|J*499$dyu8lXG(N%)LB?WvDOq-bNE z(HNxS^xt_rWf+CBk3yMs+mh$D?e`Fdm1nqSG;TxdhvT0H0v#-mH}c;GY;ShSJHqPSQ8Y*OA;`A;9Jz&kZVKG*XJN|S4FHCLAT%92M4M@uD_K9mv8Nvm<|d8c)t$>F<+g%i>SnHa>L8UOqp3|JVo2ZL&-@6RM=9my(&n6!$vHUqmUEi?Ba0C-)+E3UhwSGR!Wm_ zri6wHYy&L_G8t&|O0`?q@C%IM#l;2U=WLUyPf_d!f2{ghLUm-p%MpHRGP+aG^Ho|& zxrvc08s*&JkrY~|c|XX>DE&_R6ZUDVqlA%~?#~(eO=l-{?Cb{Is*{gAqddF&v9$+f zVlqSUE{!~>q3v83S`!HNWys%IsX4YK4FaHBY$tz``gZOY9_821c&SusFM$}3D8q6@ zPDbw+B798n#OGFtw z@TZg4G`@7w4l1{l_ho3?S+VmbK^&9|`qBkqP4I`(0_iLY~5BwE@w1QQfO}%}i z1spaNe^-rFIpV4q1FRB1Euk9zRE73(l(P_fy&1O!*-V(9XC|1ghtwhG^B)uZppjDy z`LN0@Ql>%Y_%qzyHebP|%KM~w_@ne(L9wtkcl|>eu{6}BK)05lYAc z;5tjnkB)k|vMxhuX$&`Dj9a9i7d~e_5gs-|?@#30`*G|Kl>Ar0r?bJvt>>s(ckXD3Bx}o3KRU z2Xr;T`!!&HG&01v8YR#g`&5onL`oLQCcRnDSs^5gM?dR^q3LSka$s2Cq`aZ)`qVn`KEE3M`0~sXxap!^d z@t!M#P~inuBuuO&>K8DHd9#yYnSw;y^P=Io1?!KcBQa*dqJxW%9(CsZThqQHKkKy6 zAcxhj02 zx%gL#)Uxrml@VxNa|yyIaskKwIT*lsfq!^c4(wm#s<6+XPDc86eueeA5a|jG1!2ZN z{!y5DNRy#yjkRdHFnCirZYr*`h&3yXPE_=a5s|N7d{=52ZTDelv!iLmfz|+jmpZ*` zZaa)mj$Z)T9)1`g6zk$)nfR)z;>r=KA=<$-wEkG_KM)z>!l_EZE4pTf;zXr~N^~3a z45Az}np#11rrL$Ro+{*<3pYaOfJw}`;*!1lT|t20O8c2axcx!qpvFmrlqfR>EXjQJ=1;MWGne(e8}i4J z03ym1ImNK+Xt{OOQJu_um+H70`>S3$cnJiO1}V|D1B5^D1BEe^nKkhFWI97(+`z8~y%buIwi=%2PKP^ zvB~<4sw(gIc9GnH4+-Hg^lAfE2)Yn8Fo*Rt#Og+~0?>yf5>rlMo5Ujw^5!tM3{V5n zfjs}fC?rSwOhB{VHfBJ67Ue<}Thzv72Pg=_vkI>f{%@gTsN=xHQ)K0(g-+t*?;~ai zev>Bw%VZ2y!EI)or7#gN=D4l~k~nIAKiA?xjoz={+b$PV8w0jXu9L(8)NQ841sPv^ zGq`1?GE^tDaMj|KH2YTQ%SpHfmtX1h%Lt2Qn>4AFLWs!wQ6RD@&RT7YkOTexK~77Q zz8{2HrEA@;>=NS7hj4IHDVl>ctHUwcshhyCq+s?DwZ5o#f~J6BXm9fGBWNF~6j+w2 zA^OSQEEX^rD3kJe7U6gte=Efn+t&+N393B1Q;5CgTPg7L1@$@9Q3);}dtOS!X?IVw ztD4gHRU zUg6`C7Ul&}3eeL1S9Qut6^0f@{6EFg5i1U#S5_7vUou9J;AN2ck@rBBK=Xp>2TvKirj!!TKz^`rFG$mg8JfITnxa?|KOmK!iftaEn-z|QA?I@nMcp9`WH(ZHidk%TFXA{ zuNjlNNDUIuZ-(+x6zM)UZ<=^sXDZe}r6D{42pzw(qV|!q3<^i~p3-2SGs9421t0R! zV$fEGw;A$l`sIGIe9UA^_1FBg1fLWY6uXOCjASS^HjxAVS)6ZysWX zr+pnDc}Q+dTF?DB80G8Dz_80AYYbTMo z2#(~IX$CIZpnL(dl%w^g_y(N7UCXM+VR`R^+|_D2@&m|5o}3;MQ~8p9w~*=CDBTl> zgq1F16Gl0Wsd*^%CzjIM?>)NG@DZ;=jnJ1HEYcEZX9PscM#fRDd%ZU}A}RhEwP_Cc zWhC?^1wLLmP*{H1oW-y<@27p(u&e`Lb9ID5+{57cyD@MUC> z@q8`{=oTdI)TS9uez+Q?tZxm64m>@~U&y`lWHhdf{5)QM#fZeZ|6Q=_-BV8ZLJtV3 z^c2tn5k!hqZ-$&kv`9!~qbl#Np+cc~3wf6!N3SfucHw?kPjB9islk{br zPLV+W*&N$gJ>^Mf@m5yteN7bCxuVz6A0`6pr@(72s96jEX)51m7Nf z5xCH`n1B}c2~ zgZX(vZGu>1_sD$GW-cS;=o*a221_cRWnDO;hp1-bJ)ua=6{qRuslPr{^6abZ0xR|F? zE|Eu9!IAt|g&pYB&ZFkThH76T2V|M0fxcJh3w_ngP~g_MTx=^Zbkib5wZf3tx*S80 z^{e6kP<=kurmkMU?)$CEDwq8W_sHL?1t>jgp{}ec)@WKUQ<0>uAn`qC^3Uc%_*qy>FSRJc_mff z>G>|TAnS4mA!+>4q1HICZ2hn8h4KPw@BHmr8H!Zp86h`Tx$<-+4D$PwbZLYGGWPNG z`@XkNd@`X6fNcY8f-`G4qlZ~J5Lp8veXuP`F^k0lsh)ihiuzg};y+&t;x2{C);*Sc1>>bRFln_x6k+Y{s+gp_Fil6b>HW89`M?L zWox8uDk4mo$_V%gK$qY=0qxah_Ee$a*M-}kqj(8zNTDKQQOy1*#0t4$;QUqFQtb)J z6iyd>&ie!Lc12+ zGRWDc5+W$9Ceh4x}wPz%2js z%RylxNVsJvFD0F(mCfe%@(@Ub%T3PtThsbnHCh!bhyQrSbf_WDLo`$!JudJv^A8ft5`|RJkRh#x=b4?)^DAUfg!ILg7B8qBbOfHES%pOuA!SgS4)512E53Sc z2Fo5ZBplnANN6toKDlY*=SI8x0J7N#b2dwWP#KWC@Te?<*Tq^zwSW{>%^=bM$?@Tp zeQ^=3Va`y;fQ8)V=VmNRtMepQNT^!=9H{FEw@qL(en9I=NX#^dloBXAqB>$Zx_D;%# z0@bk-0=dK(4Xn%8>^mszWFXV!BHzv`4J!I&dQk*(f%z+#m)?12S?exWV z|2`9O17-w9(yT*r87nQ*+uiF)?T;6Dw96=oVv53zpKssE=kH9h*%@M3pPV8`vXDH|-9m)8pMcM$Uyi2V5 zisIf^il84vK9Elv&#m~>N3=9E5ey- z@_!w>=POotkaQurOx2{j^ZW-E)ihBDt4&yM+Nu~$1|`>t<{~+dWI*nW(RbGSJ>R4v z*v#C2)j5sz`)t$i??$IihJOM$;>K7hK(9?bOXfD{66=;gBwG+ za@$fFRr57bcCc@OG&m6OL(lTJ$h%yp_HdU~sFkv`(`0N4&WptU&(ly>IYy@0t_@^p z_~bu~@}vTEKe0k7OnLjjSp?dfo6uSs)s=0^qOCy#hl&|jJ1&0P(B1D?zo@-bwcd6l zySCfX6nlDFYM8D}_Z&MyDl!tV1fp)zdggv1?zlwo6YKyPpdaQALS+eI$K^qLQx80ZXr7P&?#UIkZ1h`i(yEfw zG?QD+hHn*bR3{_WVn%SGaMN8O3lxMh0ZcE{6LZdv>arP<6Oi&D|FG(3l1DLsFrg$O z#8d2ThP4DbLUg8;`S19JV zB2lUR46rxCuGUV#>Jlnc44flXT34$w*pR2v!4n<+SD_2~{%wr^;_-d29hH$nLsyuE2OZ_NRCkIbn3O=63Xd7^d=wwbc%f!TEjd!8=dT*MLZb>Z zK9DcUJTn14@Qj2zQZZI~A1M;j(aCOsxM17!d_*zZpL<@5&K$7niM&N)outx971U3e z+3c}YolRyKQ<4A~V#$+=@ii!}=*=Z`y6C8(!+08B?WQl$3D@}O&A$A=U4l$1w>2NB zW6$K07P`LDl#vN=EP4O%LiO8mPbw!UG#}R&QjzNkDyEgr>arzJ zCI&XF`kDF9eTsxs35T;N`e;WICxJzL2FsX>_EtE0rd8xI36hD--69|cZQ3%`^e5K- ziO*0p8n?E1I-@Tl-YuHc{)=)fAYo>-;GM=F!r@IR8OfLahsf_QtcI~%;^pi$hmvD7 zwqB)>Q}|mCA^o4se;^rC?eYTc%2Ki)_)pR~)u^{|P1*~^x&K<}2^sXIRq_(;y|1>8fi*?o4pBsDd|4j95FOyWZsdCh%zKlAmUyMGs&lQIuoBpH=p~T)DLS9kE zFm4tz_I$4L&+bhb#W+X_cXR4*RKLABr+rYL7LklPL=fxMB2fJ8k_+MmNWBB2NMK!# zHZGb~_!5hu5TE-#PmnL1Da=@dLEx0=Rt0XDSotUBbZrSAa9bnP29 zXU8}6_8I|<;NhOLcA;|LDYhihP^^6QTbywYL4V)8nDVPsG(i=4!8`|>lL=~jL7l<| z4CAhYES?aC;)KY5(RKXyIONJ@8mK$#1%ziDyKu~&%RfKzD<<2^oPD&z3Mi>qb5SGFi>9_~-=b!Gwp zM7YSEm(9$PpGky zF&nE5|3lxFTMyG2)n`{3GUQVcLp1SaU9c(w13*5RmXq>$1K_Ah7lMIDJ$%J;cO$)s zhf$$PwJT1@IfuqpKhfCg*rZG{14SU?_n`nI&-xS9y%j&9l|@-}#EiI-Vh8m_sB{*e z+0JcI*NL39IQ6SDqIfT`)q(&5#?HpRCW)r+2A=j-a?Q0#GE0Tp?RgiDr9JFjl%4#4 zwxL@QwUMrPoIB#LR!)@V(CIX$PE^*nUBY`TE5G|e&1sz=c(IuNgkID)+Nt7G-i_~Z zaL3)cQjF(Q8W9t0sCxzK>OGb1Hh+V**#VQ(u>_#ttwGG5r%pj}SOI;SdPkq3 zkbc=Fq%Em)o7yKUuvwj;6%_SKh7IWuLv{WN(!*mq^e6>H$X1%t%$s41c=Epk%mER} zJj5?d>6y*h7~oNg4s%TAZazH$@X4d8R6*BgbBxJI`_SE4@`P8B|j|m>- z99~f+arn`}=>BQ-a8EPjSVB|-LZdV4CrL} z3?YhI4P(qqA`;n*IPy5y1xIs*bAh+Tq|`1y{XK~|zc7A$w2bh-RO+*>e@R8WHwr`> zcU((K=iXoPe)z@_<}nt8#oI6EnQR2X##X6IuJ>!!XP5{HVUQ@?xu+3a{uJ9G;S>R^ zojm~2oJLtw%0qz$Rb}So7(;tzE1Jygi=_SHk2F^D=Iz@z_+|s?0G=LpdBn}=k4;{QK1XZsJDJ+JN)bXKXQs9_9$G%5w z64y^eM!Br9@e(~rnD`5W;KofiyU9Qk3`x>D7r7yW&@sS;qQKKXsgPf8S3sDd?dt*C27Q_vjrOrF><$BxRgN;Jz)#>32r`R?Jb z*49L|@vwOU97waWs_v?l6f@d3Hxc+pzD48@)T7|%QOGa{Fdm%i*B;1sne;_*xro&4 z42E^>Udn!QMTiF|m}x=hJ8OD~CavT`XM4Upg}cFdef&LfT4q z(B^j$Jo+Tc>4Ol@-leBgO@eEv*3qCpRC9hA|4{Eppb1m)HfuPM^wk)R)kGL>zB-(@ zCgbV)Uj7~cp7;eZd@E6g$d&Pfqf-zlk}^xfL}6UnK0EutJ!`wGlI*4ys5MD~C~fi$ z^_8eXKaM6Mk(b-f%qV^xp-7eutIWGd(+wRbZ2hOCyRD2n>kWCn60>F07TUD6LAb9D z^E(y#vvXG5NJvb;YIcD8y>b4{m;AE>*>_a|PnNtdF}|A!Fn4<-_O2eNTlF zuod3kb`FM^Y&&8>`@lhvd!>_q1K{O~$B!0)1u0=P6DkN4)So~&m?wW=ePp;Y90c6T z5c3@WHhXW?Px(9CKD0AYi%OE8O^s;4;lq-10Vz94ni{Ve(lskM-IQuWN%v^TwyK+$*<gZhlf1GS!iyjPUkAn? z#co3yH27Xrcf=1D7#m);!F=Rn<_1azbs)4K*H4$gZ-Hv?{lW4TJZvqlBqW-O;@F+1 z=E=L@OKYc=faq!JDLO&~S3tQ`=M zfplfnn&TO=l#5f{PHWB-@_1C!jAv|;U~7f`guk4DpzFgN=&xD1CkcsWF_ZW|myRUc zm4x~QcbF=JRnls#>tj#17zZAFza#V;P3yw^KPvtW;Srvy5FvITncA!1UYcNaYgTP- z8cM~lU6yPBWXf4emc6gH24sKXR%ZA#^OA9qvb^uW80tr^neD$~dX7n_*`~6R5ptLs zN$?}B7t~Vo?6Rq3iZDB4=3$aIo>rDMB54q`?*)zEFZs;aYm|Js-=M8@M`Q#M`(%3i z`j}%K*2I^JkHUt6OVndgnnhL^_f59FFA@2qB^`amRpcp}HJJ1hfF7$~ye%*AJu%bR zl-&RWQ$A5113_-9BAlV^+k?>;lJIDv6dqgKKV_^OG%qS&hpJQOs3F_r-~%|wVOpka zjr*>cAYMHmf?K2jqD|7ZI7$LUkeaJ*tDE1=&VtV=ktYydBKDl=V)0<6B&t=w>5Hls zBy&|`^)BvH6e`mI(hr&abqycvQAS_!6q!fvc%eV5QX;kwEj9hLWz;Y<3hD+>zmPp< zDQoKrG3Ko%%*>hHPo36$4w=EF>G+@R!d%7zvMq(oTF&|QD80IJyRiVb4_K%BJ$|;C45f1`B3Ld}WFWKZN#3+X~Em6CFUs$Oz zQrE;9g%^d4cyFmB7_SaFk*?ZJA=Q{5PTxzQz`=Jgjgz2<;}oUc?H)?pZZpBHd|ke7 zFRumSw5lDTNZO-s48JPz?}x6Qsm3nE*T5_+eOcLzO5^^36>Zd!Ge-umrjc{UWm>Vn z^F9s_ruf#8EXqZO=&qvUKip~1BVu>J=D%fQQG-_Wz+~Cj#3sbb35DQIs2Hd(CBZc# zsxW{u@e${MYUs215Oy}x7!Jb{YNQN?bi5>*YISLi)JL3Gs>q&l>p&RODF}Es)a$&I zd&Mx2K14hQIrigRv4fn9s*1d1$*DyACHnWV$`ok;FJNh#rdk%h1OM==TuM;MMfK05 z&jbU|1G}6LYNhSzfX*lKAgN!Md|Gc$A)#?NX0q5_7e-i&rOprl&8vw}@%E?@CCy<%HI9;~6u05qKU{Lu=3WlyuT zs^(++TXmQtIzml){Suue!d4kmO{ zhv?9s!p@{Pi~IA)8R3{5GU*X$4z+X=U__=flL348o*lcIt>^wid@?Npr`Y zyY6>E^13c3LUsKlYV0uqmo+#d>xpN4{Dx^gQ#HO8t%Kbyg( zlp^*)v6H$v>UhzsvgfA~Y$o2r=q-XZ>mr0~DRzFjwMv&d=nQX37P#z6(M1PW%5FY` zsU`TNmS(~%eb!Qu8Co2#Yo4w6TP_b8a~f(l7`IcLX`;}HH&u;Bjz0f zqkz#wF$0c*oLPbg<&0vTAzl;`O+V^qSl%Ojn^JoK%FyY}T_SJ9o#n;>qPzM=tfuEG zQV=Jk(=Dc=wJav$>m>&RmoR?7k|@TPU1X+~sO}=VO9Et7DvER;Uj)+D-;yIkSF~yLvZ#g< zr140aymq^#UDXv}#hMrAVFx4-b8>+ z-@UK6XZcVLH(_(Y6oJI?*HS}?0h9il^p9|Oy&{JOED=pgX20X3zK?<)k5}T2jh+od zjv4(&ICXZVvP}s@r~}5BH?4_E#fE3qeHiRdn#2a~vv?jRQajqvd;fz$zV~6 zx^+o3f++$fL2>jj3H>_Z7PCiz5WAt4ZrzL0&AHX`IPfw>V8uj7v;13HAdh|@s!s2FM0v6 zLRnTlMRb9n9+9h3*0KcMyj2xArr*M@rGIL^Z#KbX@*nhR-%c( zA|R!eG?u+}i&Hg<_Wi!=UlKRp%1@8B1UeT30h8(qXLNidTnQIdvf>+#9x?9^@Wytd ze-ACcyW9|KELw;?M)rO^Ko|}g1|WrBrICMK4$jvD446&9sY<_I`GwFW0AtUlHV!#9 z7`_kx3HZRV@{rG36IR8Pd?A||o@yb9uREyD&=%&BMHrS0X1gRyP*B&%i5oJe!QJqP zlr`RNICWFRQViS<^Ivl3n1mglZ)>! zGEI4cx6W*MOgH#8Jj&3N%fujJ&?JIo?b4!S3Hx%OjqunFdMkk^7vWcoWBG;zsmEc zzl|8|&sw(cd+mI2zC}{MusR;FT-X3 zf(Bm$I$Adoc3389OP!EUwWO%&O#<2dx=WO*Ljz>^lwDb-9!Gz($bHwpXUiO`+qol$ z{%l$qRC@^_RRo!WV7n;pgwM1XEd3+?=jIcTO=p^Me)v56+Ne?AlRq*yFm|!78||B} z_!2M&Md2$QlWZb31`9;uPcr|QW$iztFm8HdvDAyErxe7F1{8?MPfNxfR1{*VYfK(J zdQM05Xp}rvxcO;aqIQC{FmuNWp@TA;@Cq#FxPRUWs(?c zEc+95A~p8+Z*kY1aN4zhV>dKQrew4vDWYl6#Btd6mcAt}BWN7MEcRL21TOwch$SQD zQY{vNMy>*{F!)^QweFUs#KPW3f$O7;x>I!?&<3>OH6xC#92w?(f7vE1gH}#9Eyp?L z%&<|Bs*MYM&J4uZtZIG{3X9pNEMyUh`!e2pMHRU_a7v5@aSfrm5Eme+`4o)w@6qhQ z6Kqcoo~SjQlUi=2SF$fnpa2Dey~(?yn#LsqimTVjbnQ3J7X6A?(D>RdD6tXL7g7jr zUbw<#YY7$qtiR*GVrxAj|As3$lglo}!QDq4PJt>5@VmuC&3^sv~Pzc>gIK&iiGR8-Z`nzP2}+o>5F~ zsfGTWC4c0RL}9RMY#Y#{m`{|pel6z--=xOXT8L%)m~Y2lzT(JiHfzD0V$-`5kMAM+ zf5ovhrA1`DsxwxrFIO}r_e#_tM=zeBtqR;?bB&v5S+q^cidv86MW*GfYOILnk#G$!$C&h5fPHbcL7CaX@s9w!8qypo8`J$>`Z9o6x z%7KX{x2u*9v>Xja@=3!HAzMUw3ocB(3|OOb*8nXsnWNH*1Zh<+c`y@+euDj#KK+9b zb!I%9)~rGJM_Sqx9-3+BgEkp(t~B~p?@i{IJ+N zDwNBw&~aspa*4Jajo+s=!%Zr2Gj!96^v?y$%G zEyW3{qI*tv$W5q22KDY8#8(fcs4z2|=O~*@AB{*v)I^fl@+bW+U;Qa1GCllRXxo1( z+$01QKww_$*LU+a+NE(kp?QY zF|Uqz`FPRcS>nzAV?bUIWc~h@hrRzCV}u z-ry_|$^64s*wfoGQcgI+nmI4CJFGA^G=`W7$5>ZIFOTW++-x?F0#FU8BVtX01aJgN zhf1m@6txmQP;-<_O9)Zp_)SU$L?Dw%bIRs5|n)q^Hl7@XX_(hY~$P z%9J!i(b7t!irDhBX*}aN;;~^$F9)BOnYXj0yf;f4hP&qVvEbi1E6-d7`mK7eKEV#$ z8&hpp>6c2=XdTD6UB>Tq92?Y=<-Xn7OxUivY~->1vw{?LdHBWIFr*RTrhe`ZSbMHt zGFO*EI0hBw;Cq>5&6A4K^Ru827|?8#l&5&vLmpWgO6q;G?i_?ujp%Ny_wvhTZzHEx$3P3@1OY{-2+Wh zCEGsq{Lt0gczxLvZnP3=D-)h1TEH@cx#L!Uh#94;WLqT=?mRYo3L@gzll6aWY3^VH za16?L!@oO2lyX`#f38{k$;^(*XF8+qcAR*-nl0Q&O+)nBqqODmO>%~t?L!lhYEWIQ zNy(e!RcqJ`74*w*vAP0yIrvPxgC4JzG%RYF4UlIurE3Z|sr{EhzQPyJ`H!0O&!s2p z@UFip$EW98=YRVyHRMN>z}V+-3(jWTl@hQCq9nVcYP@Us&XU_D>uXomm|?t3pf8c% zTXTx>t4~d{vKKKv=CkZlkuqAz>ykBa0d`G6NumexWIwYS zuqS&oMoM zqYIknJatbKajV3wXaC+T?^pHr)L_>-i0W&2!OtVFLmZK&G0qLUw664f6}z@0F*@FT zs?yaaOrvQ(!h%1HCsh%TWn69YWj#fCW+$`y*)SU zLJ~T+;%sYA_CaqD>Q<$n8s}`2Az0v)v*>Ke(7@bx*C7K`KSxLK0G&pN1xRrT%t^Sa z!gzt1%mXn91UCv+8M?l?06}C+))D~`i1j(gPVSEhtgR|+dhlkrJ{RB`Aj0>jtwhPM z+uc?Y4z^%VJ_gI15H|U!?+Xg8w-K#BT4~W{6#p5BQbgdpYG9LYeiAB#BKycblq)YG zbqy0IXFp0SBInbqFZq!1iJ*eFOv|SaPCW|uwy*fVS9PAf-#mtinUieP;?aHEZ=AxO zvmr+fLZpdAad=5Q#ybu%o+*$J;!{n}zhf=sYLAkPVDg+QT-{IG9L++hfh3iv$@4}k z`i63iQ|D$Z8m8H@Jz1l2<$aj2F#K0wZ6|v#L0YwxyOVMoaS)|bZ|bE|;yvQ@D8uxyKl;+Bjv!bND#%>{X+HN6ayF<;Jv(2eSi!WGJG0UZ9%LFmtL3Jff?1|68G&%%2e zqLd_~VaegaQif34sz|8wd7@{8gV8fh@m2drb7@$c`zo;&Q_EHbi1ob+0j4NA;*K{3 zRhflB2yB@F9>kRHU+MpN$%@mP|8$27BEWvL;MVA?u(RPRY!y>1JeVr@d$2Zo{(ps60I z1VnExPTBE59v5I)FgdE&aoMx#$pb%K?GOv9U{ekir1 zxv6ByM^uc#V$B254^455x~J+~@T>5@B6k-KT%v2EbCLuBfFqx`(M6i}y^y50?_Vc{ zKL!yuc1q8!s>#Oe?RT5AxU?h2_y3qUR4VKxH0$tLf8&S=!B=pnXluc!sG>#>SKkE1 zjgtdwR8Y@JPb}c|KQP~b1jN>GLG$p;N`GE9+XWj(?#)Ze*qfiH2w6Q?HP!hF-_%4A z`sw_D;^mH=7r-6vG(-x_il@L+K|`CMbN48Z zgR&cqnRqa{QFyRW9^*J|G4S|kS*5&}?_e+ewB)fF~!B+I>vx_x&Ni9Xfr`Zl| zKl~);7{Q*W8;AQPZ||x~8;P&;v-+uX}r@gM~F{}+d!e&InIAf-Ho*%&|hepqn>x-zIrz1Y^ z__eA#h7%p)rq5CUw>*6hf7ML!6&<3iF7t0y9b;)m2qeAZaeNQ$x`)1kCOPi%8s@c0 zD@s>|SSC@71p;&6a)8~h(hg$afw*L z0|l=nYLlEh3C;q0Xwjt<$(c-`fu$gz+!#QzYn^5jdJU~Z zOv7Xxbxb3{#Tx>@3U1*ht%S2;);ViH20Lz;*=M~TcDRL`2pNl$CYEwC8!X>}cDUMQ z_R7D_DEk)K^RuFlxb$ni)heAo4_{pi%KOdwc=vl?P|riBI7KrlHdD9*d@a}RL?;mp z?`RTby&LXEEK83>{?NwCH}INcoCs+kDk};pr}=TF2}@ZbpEv}3xlM3QU0$yrPhN_n zZ&k#4R0&9yTU?%pjt}5M&9yXTWHjfs5_$thT=-zp*}oRN{L)0C0#~2xhNzGcLPtdw zOzXxwy%de6H908~9<#D3Sd|C$lx~u87Ben~R6{NJD~}^nvl4pGOgBy?V(R4VwQIlR zTmsx}|2r4BNE9ex=0(&Jnq-%VW%29#&>l$}0H+!}!C^w(?3rSrywj7-w3-x4OSS6B zZF&H5m)WSp~Kpv8- zXa(73TDOxr1vF+sPGw((jy72Zjpycy<&u@!Q>@mwQ_e#ved895gg6=ghc!=*sh}-s z2`l4E@9pj8&!WHftKv_f4ygveLl9qK$m@RMu<!W8-WSnv90C8* z)H5#nXnfxUN%Z7`Un|BtL%OOs%EM)KXDEhmPOUCgM39e3)-!f=bB6~#UjK)78E2_14Gg+?8b<7RZ)&C@oEpr4P@FY){Idg1B&|gwS-oDB_BM?A1B_{$p%=OGVzpeSBfLY ze)%hRsau{j<vEBSGh2KguW@Z0= zL$DW-k;$x|`HRa+rcuFA20H0P&G@g}4|r-_`PHN>lm5`$6x+Gg)=3tHEEKxDzg5TJ50{Hv&6rl4(iNf4$XZo%n;7*j;snSDomeU%tJLsF8LBZnp(PoVwB3vb{ED zEVxokDgL!*t<8Cpg%GIbNeQ=S$1YJu8ah6*8|gZ4^`8y@M^}&z#B48x8kzVQHVX=E zKXDj*1DoXpC@MU`!`WGu7qS;9wPsb5vyH^Xr>PgzMCZ~slMyO>86aqG9=-Chw4QdH zc&#tB24ZQ+zcgf(X@(9fHy2Nquco9Y;lioH0*~mdB77SnCLC+95RF;>+H%&s=oVJJ zTzHxacG|G4nsS)tWL@QASTW>sHN43-b+|A{n^_&5RAlo) z;s^EUR=Ww$OOtRQc14~A4vmWhvHMsO-1;5q;Gv~6RqOB#6@|%h-R^oi!PhE9yf3D2wXj+1 z`ur1}4eeEE;ieNy=e-bPkS*~IIevWqqsqaUxhmsl0edPMr*B4DpO4oA`{<>XRQDme zZlgYYeic@RS-M+~uAx9ew)HMr`Uw{1-3VlcMZ&}(Hp^5bqBL;gMwH`|JD}Ml_oNU? zo^Znq%}4?}jV##7h_Co#HbVgwzi}XG5rsqH(-m)Qb~fBOa1zqD5C$0m4hhez-`8UT zt9iL7;j$;S+*+m2Acw*K0{hEhT#9R*rZR&5?HT@kAs@Cm5FVnKV$^NDN2_@tuxltH zxxTJEcv-qQvAaL~da`skI0(&O6tbKY`j>oaY=5kp;O6&)ez(6$CwZ-!CiF{HFuQZU zbhx4Yw^P**#It-2S9%twRQ;& z-sf@2zMcLv4fJyprtjsSzqAHHZrPMN)9@nYE6&L6A6-!@y9jkSVhS>l|9zwhOZ62Z zT|fN$H~TA3iuUH7VGEyMq>cnZi7bN>&*O2WL_s4~#r*(X)07ekB2?udAN)loI#xzM zH$AfaonT1D2U_wrc8c76h)d)AUGzmn5qZ^pfp=P{)LnQ^`U)xHX#@qi(T6W2+fP6h z6@sjQ*s(IFw{3=_yav%q7k#C>^ZP|-s@;Z)s8yjS`ABN4TxB;4=s^K*wa!X1HYiU!-8d`aJeij zcH$_ST+{I#TxNQ$MEIQ0rC0<5ZlvJ(gO%^YZ7sUYMnDXB$3JB$ct;oYXC-h*HQg(7&)dKiP3lQKTe-!loL0d>< z;FUrpDpyv=xX{32=e2UPk0nBA-aqB_`6&-RxIezJ^NKSOT7pK0pNs9Z|6r%f>?n{-2TDnpqt3*8(mq7~*x%WpmH7j4f z{mxFU`6B?9cSm8sx&iQMCYKIj+a=~AHV7JaE<(zW#GVjqtwQ3u#ujt0Ow)@pEm9>( zR5&`sKVF^$4@A2txtV0KWjwq!;3xcEuzu`cTUmA1-K>M5C0P-A+Nzi6BFoq zVZBp&xRc^994SathmO+}6`%TEMBuQKil(L?^`pNMoD^+U0zSVkHI_VakP}|O;<4;R zCMY}xqB*u#*)r|{zMp~q-WsRH8Hy&hcz*q9aoCIDeuPt%h?>L|$t|>qOQP!|>i0=f zL^1(6#@lW-#;;c~?zF}#OIS^6w6rctDwpc-ohcA`n^?PuFj7E$j(K9_E8jl;gM3wj zFD0*6(&kX$f~JpFrMX*3Px*4bzS!icVm>jR-qc-ZYLG)(;v}zobD~Cg_zISnjSKGS z6}@}Uzs$2oqRp3Td`zEJ<@H;Z-k-jX z4_dHzt^N;dGrvB9eshNOY2=MI?Rmu(;j>I#i9Qhgw@gXbJMz&%G0TRFim>|pXJo-j zN;(ERkXhp|5agl+ZtS!2yB~RmmPZA!YS6ppzX+?RIhVsA#OC;Wq_uQaUFc7x`icQ4 zM>M~158(SWr=;- zk9x^(E&~^FIP#$auw5&=l;tu_K_qO64Xn?e`$51t9RW$@X!PKx+1d!%D696ecXv|{ z(0aQ%p9&X*1Y7dHS}gB#KR)_*#UrWFA#K(=Qr{{n2CA@@|8TaC3tfW^CMa)P?hfG{BACjYTT@C#q1Ud|Xx)V+L0j5!Rz8?eZhH-#uTSbk^?Q5r zvp&i{nug~wm9XuZZ*KvQ&l^Emzdgp|0{H#C?z}{*{8&+Y(cWdo6Lj1zj6s zIW>kUjyXc9YpVImg+S4|uoS>P!vA$z?SOI$1_c&C^$pA2)gVahiVsI{UE)YhUGoZlCLf^4Lj|sURSjxH# zUkG>kH>AOvv&X9*>yGw~t>0~5MIsKWFa|T{;Ww1mM$7i%Rl-9j<%~glSlpFuL{I1y zKqi!c@3vY|kD_7q$~g_i3;t^Af_Y&lh|J}KJ|~2~E6mhOd*^Y`fN%$zi=G9LzZqFR zG;TeWD<-WbovaF7u+qo`J*p1Y5AHo=_5X-E%cwZoXiFoFySr=S?%HVM?hxDwZUGY9 zt((T(o!}0^9fCUq4^9#w1WShR-ZeA-><pomKV9+54DxF_h~tIv36RcEe-{glm|x z-hwTWm=v@DmZuC))IW;X6}M0=>k#wy?Hvd$q;1Hx1P#W+(#Ta%1b<9dOg4;|WT?=L zZy`bT={9MzKWk7imP0=^lOCcdi{Sg`09?}q6Se=c3ZEz{R0~^M1JV3k4rhwINU1A7 ziDRgUl`~1!HALWA6XU4P0Uuj&=vgb8wDgpXtdt6mRnm2U__@l(7e2r+a$#qrTOU&_ z6%}p3k1b^FUxC5o%~Q)O#>3br!PxL`H`8sT>|Bu2=#mJ8UUBuD^wBg`ZCzVF#_ztQ ziu5pJ9kxf7geDXCxNbBvoO1_5{JA%z=wPufyro1p9g<4MDN<_ge}2TU(=JPU7;sBF z{;ffMW`Tb&-R8iMiW0GO#lcr6T`%qk-)UW}Po-$Y*DG?$sm>+Qku}sEMVnBN@-TXe zuPtukElsu7W{cZNS2FzaNbGosY9hoarrE$tNE2tf?|0$U#a7)Z1ieS9D-jgq=y?v?`RHMZHF58dr;t zEt(m8!SJHF41Mc^&M@Zwi~5n)7u?Mzzv5VWOgprp5cZsXT;zUq%u4|YNs}rVN87U_ zNO!o_tn*lvhxk1HcJ-4fW!AI><(4yOxAx6JL3qBn64@*a^d5go=aphRk8)9WK~&l0 z=E`w=vv$VS9IOj5PL@z$Q-N%hTdw96`cGw#4iSA2NKN%{`^wbLa6;`)tXv|e9<91%CK_z~fGlchODcL)9fT0Q-KZVO| zuW!p>qWFdB0OyKZvR!%4qaOoe3hdZ-{9xs4{=1Bci3N2 zxp7cZvv9DT`}4z5x9`%qz8v3g?6FPKms=VRS36yoIG>zgeBa1X33+6EbEXCBl^XOSipw)=_m%g9?6V!QwMJ&x+cF6Tc^(T z>4Au`Krn~X)2(f~bp#*9o;4D+h9X1RO&1NqHZ!9vgMUszey2?|B@uRr#lqc?n%omD zN4R{jF0oj>fOBA}kxQey!}&lRz^pf0I~v!K3ml4f;cp`|>d^3@_!WgI1TivPAwvCj zDaz%fQK}fN(u-Mz$sGhy2Izm8dBl4PTg06=UY-BBcTc)$n}xQCMBVBF)>|oMB#)i< z5sBXnC$~UUki>T3hOoeHr(Ev>!UBn;(ZkdadyXgj&9BnJ ze88%tw{Ac+{o)SdDYg^EL6W__9~jTa+Vl1pBKxmdW;CSgq#otvWNwC9-L3Nmv+Mq@ z4nLNG-la@$$e*&N9R&Go>3iSNw;%_v4Ln$NCbmP`Ba7Ge`9B{XY>ag1m^KL$nJ2+7>g(K97YyW+!ooK%%wtUMZ?Ii2rMEj-3EMWz!onIX7g|r=ucio z%H>VzzSTaUnWocQ4#*)f1fPS|Wm8 z4pw{$iFA8pipPh6Z0r7kDJf4WGZ7RCF)o$?5sq4^j9x54tUMqHQa%XYI(mk0o6oa*2?889Fj2IsV3?@joo;Kd&rV zU__$fn5pZXrEd6H;57Tm*aPd#gE}7-85(AdUe4?=SvTWu0ZXA>&N;So3@+gp=f$ms^CPN}dQ8VT(^%0%p?^ zpO)nlY)1f00c(8VU!&VnbiEkPG3Ba=$g!hFA=>Xe@Lc)_;zFh>dEW1Zz#GwjtZY92 z%;X*mSM|!JKBe03%tU4VE{=Y-?|SA$i_*WWmDI(uy8rDZ#Td2g&az6>jT4aQFVd1; ztHdlwgVzB3F<_YfvN<)fF<9FPIHtR(&y^f+dpMTN>S3rz92N8ngLaU3uuTn`ER8*h zyNe`fSG@UD4R4f~&gkz1+XLjNJuWA0n!q*SdHSa7e-b;w!h>u3Rt^rFG^l5^dY4dQ zvpV}l7JAsppqpSWdxNR(vD)M{tRcwoqZM7_Mw^K$a;R^?>WQUJZD8#JqL^&}SOJRw zfu^9_c5NVAxyJHqUNV(vn1TUITvrG@<2rq39wXirmNM#1cuupH+v_sivXL*iO+dv1 zVdvGUqn@uOGxsvMr|z6+tiERKALix7#X9S-m(?}Cg8dG4zRrJ=Wch9>YH2%0HSiG! z&#om7EU}67DWwabKBVmaG>)%d(8jo}wk0r=jY6q~#$SR5!RJ~)?~;PAPWEDG67&hN z*4KptKq6~&W1{qXOl4F}`1dhHPA8jfD@JYLHZ|DZdYOON%urV)oHXK)?brG`9rvi^ zH<-_UI;{0UCa(XnRG1ZL0OzQ(O)yVp43iXfJZh)~A5gN=MYpEhxT+XQhC`~wrBs`I zVfxuUq1=jWD0_p^P>|D3cmH;h?4n*&QqSYNNB3|yGlu~*fjFNribhNYLo37_DdI4E z3N+tHO)c3r%cPOnES?dfSvE%EPaY#J&#Wwk-ipzE41=1;{0y``@eoDO2eyc zx&a4t{yXBvz24#&6Nu^aL8`9Z0@x81gU!{aXhlgOk+ISm*1tZD8AYFwXQdBxGeoDDME_> zy@nbbX?^^s9LmFFpDu+fJWx}&%Mr@osk*O`BS8<%;D{@p|>65?vV~gwntgnapDG<2R^@9Dt=u8J?D~=CVVIkcOI^ zel`(_VZ{C-MlOr?m(65+`l**=ak>H$vL9m+DZ>1ra_g=-7duB?=^|*=rG&Ivj0-qN z-!?J~hkijAcjC3Y&G<<1&3jq%vQXY|rbuk!fs7)(`IlCMaFQOIFA4APaH97umZgPl zC)5!AdOAo%UxIcqJy!AkjeqN>9i}A~Nir-xwaV9irnYF%1h_%R$#|iM>c9rjEfSt~oa6di8)MOPDok5qJ7X+KzT}Uo1_tx0%tePE&lI-)B^183E&P z_{b1BGJmSj?4urm*hlN%j2}j3T0Bi~6lc%o6JnhEoDwHP5>!6eYDJDRW*?2c56mt! z)kM9L%WMS^JreJMS>;K~lc|Nhk)f63{KJG`}88{#r6(!*#wom{qKvJE;Y zo-P#=OZTs)q3IKE981Y`F_JhD=_R8UCj4Cm^rtNXw+=SJu^=T$h6D;Cv*qPdi*o(m zXoR^uw%xW!J!6*|?ycQbwFBASg(^w*#dFCwYAvzC)!eZx4ix3;rw3jWIwzGFi90iTKl&eZ>E#WCtMz^^UoyBE&*cXR@Sl&1{D{-XX|B*SIa*Y#463Wqb z383uAuNjL=%mjAkqT~vL$qG3 zhpSFqY2-|b4K#zbbYijDS8*FBezF%NpNJkqB z5=jbJ)EFFDz^mW0L0Nqn^b`(Zt{5)eNx}!I9fuX$4Y5Ta>`Az%QasZGRGDXW)rAU`ZkHTV5d92|K%S!#C zB`8mmqp);m_fFmor)t@Q(<*WD7aUOgolTxA%an?E%i9Tp3cih&**a$Mh^`+x+On3( zpd6Cm7tzEEYp9M#7r8AAFYjo*%IdAa_)aO86WEYOQ-|5Hmdr;o5^81>j`!N`bj8bC zhB)&}9_a`T*%s1P>;k2krg6q^sRVJ5)dtopF-yXo35O_Yf`q`HCLUPpEz6}9TDIP3 zvn5X5XC$-h&E%Xm0aQaG`C>FHYgHVT1a|u3rRQGx=#z-{AanPcyD1H_ZJaG)Hr78Y zawcHTJzgry4!f+eGDe(x*7QQ_Ya19G{+#NX!XP@l?*IpgKZ(IQPosd=ByR2#`8!Rp zXx<#FbB;q%u8x4umqsYg9Lt}DnJ;N~{_`M-+27MkFJaL8M%gr;zVKJ^%-_ z)n)2~cxZvrCr)*m6*Eb~e%3tH-0wPyEa2ic{1=cV!s7hDu{OW21QEuw#I&Ol0^-Ee zjOzOEyn80r+yGpL3`izEmh18my@PafDRlAG{*RAJY>x#w#0dPukZts)xOO5XEc8P!VkHe5BjhAgX)i^e>^3TNaAZg0K zUf$*{TDxr9VWn9v-y^X{Y179qC);LN_xIqj^;P_lirH!^T>MGL zzQ9Kpk+ekqEA7g<4r#Ruhv)U4x8|I}P9g)kBMt`!Lb1(o!iEXQcG=v|I6vk<{rLS|F!w@}$Fk zm&V<#ibLG0$Dp7k12rbrabVEESA>>BY26pbgB=?1;hsjJL8t57VJvEF|U z4dg|Unlz1ojE_wjoc*b!QYn|rVZ%o`hMf1Q-Zbf=DEuBbQKehfRp*?9fzT-(wKdbt zq&2+d>705rtixiho+%F>CZ2$^79r4^DwQ~Gs-t_8#^M((Ysz??XB{cC{XOb6{jW%R zWvEED*@EJ9`kzNXDgGQ6tBZu$QM?fFVUlH_>AHX|T#bPzn8L?(cahZc`n57Pkqc5Y z^3)XUrc90{G{kj;g6T<=0%^Sj1qpU{8WH>-oFes(j_#K=QdCs_TtW#&7R5N?lMgiI zkO}r{@i9g&G{DQkplQ8ZKUcahv(JN7W+fFIb;_DIy(ezJ!}Nx6+NfQ&BuEs|3K=CC zv)hbq))Y^dTw*l`nP=tcm^R9Uakue?lUAX<>*kVl#~k&cR2?n>qH`UX}dBWikK+%*>EX z>xDQA4_#oh8cdj1Z4>GCR94NQxCaQWodvFpy1a&jIw7J}7m^*9$pGoXQ@@ka%2dFp z;bH;aMgUR4JkmnzAgSq48+mWLxT2Sxphqf|$onG50!sJy{nlSMgZj^K5F)uoBy5}{KfEwEapVEyZi=a`==PgMvr zu(i%kLVp5<@KUxMo<4u*_ec~H`C3}D-{>)Dph0QPfo^v3jd_0Z`<4HAbN6A2|HCfj zV8kZ?uvwCkiiaYcsjk;CE*=SO#o0(dl0r_v< zjd`U#16`Kj_-5xjmhYelSYvPD1=ei3G-4IZPK-A`2G(VS6u1WQ4slK{V>W09)12fw zdMX}VFx6*hJSL%M3g8G}6i%Rz6!i7Aj5O$Nch?CxBo#OPtAV*PQH`|M_~v7}SSwoE z%VEn2RN)A;eOyWPNGZ4aboS%p_%2XNW@Hm@9sUYihjts+8vT~=+E0?&M77yMOYxdI zP6lU8o*d}RX8J!g@;9&(FK3P}B89<2SsUxI9EDn>BR$5ZR4Ckc{4N1!EVUEOZ6ZrM z<1w|rv~pkfmT7y{n(liB+>z3VUG*{l{ZZLHtm)|tb*nS3;*zaQk18ACw+1G0a9SQx ztBxJrTLe{hM#Q!;G$Nj-5h`;p_auCY>M>98CoEK5q$icS3+(JLHFQ?ncskAUOI5U# zX{q>Q(?lqQ%Y_}ifuH5Z^JXC;0&|tsbZ5Q5*-ltB>-{fEyjfbY?6S6T!b53Vfl-rG z=|G~Dtcv=|mJ7V8wtBD088Y}y;RD;#?{xQs$41~+VW`0I@fojmuQ zw}4{2{`fW~Eea?9RD|E4Pa^T~wKY_lVp2vmQ#=&vhv);FKrHj{az0<{CF3c0OPQrG zDki!H{2P3u` zY37g$(iH>o@{05OL$ufOj}jPMq%i#2F?_EwH3SMj07=FB2MgI#`1hlm_*F@;GZm8^ znq=#N8t3t}B%F*Iz8Qt34*<(6STxrlUv{&_<|&7{=;>HD(I~mK_3J<_D~LlM4~Um-J>*y!X<@jtfEPvg zi=)$0OQnunbppbN=DLn&meswp6F$!p>#Qe`t5zhWL#;zwrq9u0N-8k=O|dYtS2P1FfXY?unycxMf^>`T~wnjhi80`Y`$6B^oCzy#eKP$9HW zAL;s9xqh;oC0Ej_Y7R=1r^AhS4zDLM>?Ootwa)+qHHi*XMNUlyaN3mdP*0l%4sUa$()jR%+>psp%h0t=^p1)DQo8KOFO)s(_uZWJ-U7G`;keCrH7Z$ ze##=)iPvnNzt{93sl<@)`4`ms`5DX9G1WaJ%5(2S5{IIfK%9Hjyck(AuTrt5UDG{l zBpgAVAzdzY!1iy9Qj0A9YROeb!|r^6Hcss-`8Rs9LfBl5VALt2jA; zl1x;56cZ}d(*?M#je_83IVjf68t8#I>V1r+pIZaoE2M`XM5_poE;ZsS0G#M2I27Sg z%t;n`Q~)hv&v>tFyAEp8S6a6N4oQN;QI#7)t<9I4db~QN;E(KON?ozqUWGNv1i|UC zK8__R=X9NapSbNvpT9_9o5XihogonM86D4?9)>S{XKHafnY)E7 zu{a6Vd&wjtH0c-(+aEehFgHnHx*2q&CnS_jW>A5=D1)<{B;DWgNd%MQUw+6^9kPjW1w!Hl+L{!fwJdqMPwr z7AW9Pn#b?IW3ZS65AG^1HTbA{hUJymd|6H3UNRWXCO;FWrNTXQLh=+kF#z0K(4Jzi?%*3kvG{zNzozZKZnz%0!ej2;icZq$C)I3PvC|GN!T3K$`iXmX1Z6j1) zM<9$Lx1g$WaeNcLMMNg#`1;|AQni;&BL^L%JX6Y=RufOHCPDe>eaBr$o=^lF?4xqu z@SfU@o;A(8^yGH1;wgND4}@AVR@?fmx)iV!^$Ay9ieW!WzWvJ4#LxQ(rlM+7D>;2# z3IoP0jz|ice2nQnZfs5KO-r(c-Jv zK(N^Q5OWV=L6tLsSVd%XZ{*p4>*8(jQR$``6|(j8?<^0x@Cc2a261tW;Z&rLw!PtF zBJpc|a>)%SDl93x=_C~=Smg?9tW~l6sz8y5AYflW@w-zt#wRA^zE7xQ0d@HT88hd!q~9X2?UILI~%G{f3_7ITkb9wq;!EZJv@QRSZ?z)z^1#hclyY#-*l z)V|q3#e_*ZEDET;T2MWklgKOYz()TY9(+agpI8;rWj`)vd)_rt4_~aOehH%AgdmoZ zPhWL)u_c3(1@LG^v7Py=89wk(RHCy1nQzBv5o>w^z=Kggt2<_cnf$jUrFM-q-oiK^ zIX4UO?e26HTo*cht76`_V}!!fW~uKB3Jo=SoZ4xGvXQi6FoofCZk+SeGo4;JGphK z9mP(XI_CPSzs<0kggllZY@ctH6kzb_%jJ!lIO%jv4JS}bDAMNbORuIw7{j=mVc`%F zt<2b>8!Ys1D?5xz))l2im{n#%Dar2C@sRg6%p1DO9q-3wQgJRT(@aJ$bT?*>pdV%j zLGz{1ras*J&3F4_ePW(ztaVuwf2?ngD&{(Q(p>3^?0V`z#>w2r*(m&NPohR|`L^z7^!-5D>))+J z=XZNIaht*V4wO|`hFZ>~Qu5)2+F(X0{!e`5Ib%GOv7?#&Dk|F*ei_t-&s2Yl8p=+8 zxpW%-zImp^z;u5?u6f?}pj!7*ai7Q?{XhoSVusP3VAFZI7o>#homzz+<55BfMIz7@ z9Gq|YK*vt%kqm!H-$(VlI;=6T;LPqMRa-)EtP32+rk zpbp%{KaS|?OA`Q{ouBzdf$U3)HfBYa8{xEdY>C*AMZ2 zP$F*Ahdg-MGj>7gsxryoBA)H-?6o+v$n(y zH9+7sLQO>&1|dC0PVe|KU;6vtyNvyi=u%z+xHqwao87LHN6JXeq2dI#29A=W*h{|W zJZ0Rj%i7g7u>P}+Kp^spp%c4oDZ@w?#UC_&d!meUQ+2J-0LM@6e;pY?{v?gJ_IV=6#>m_ z=ZmkTv{*HO5CGy&pF;*E=HWeUfDy)V=gyLjs*ZT*?1DOBDr-y0y&e^_IG?2nQ~s*9 zj&g920;}}sGLLC_J>V4-V2&^j%q!?FX@z#^L?Fn!rnBg=vOE&7gBJUmN9J~a;TRXRmlIT31~*CuyD+lXF6pd zjjd#nat_3m4j_a-k^5LB&e_J;hG=9gI7u~0G*u@DD;hG(6N^4#@d4@oF%wPur1)*@naLEj9KTs}!wf>a40F=yHqMkI%>_ypE`HlgCjdPAn&j z&a_=eU*`};Ol8M;<2rJ$ulob>BuG`n!fSG{M(cbj{2~}tt#6($j{Z~znJA$O%Va8| z*Gd>2rRa{9TYG3}M!l_c#Un%2Kt}ak%f3$@%w{fwRz?>%nHL@dT8wH}{C`~KKkx&V zlUH_q?8X9W1v=}yGMvNXy~t6HXt1uqm$no0XK++F#18;Cr0?k1O- zSVk|zmTtI+M7~D>Dw<_KoQKyLb&h?ZFXU5wr5UCw-EX8TGv!zSbS6H=#G=3NrmY0r|Kahl?;IR#y>rhAP=;`uEJpLJ96NHUe#QYNa#c!NQy&wBWeC4QB*;u^&>wH66N0ztgU&5O87-@ zCwgg@lYP+Av*ZZjdRL?|eKbtQb*k52pOc)je6>iRsgNJz>ZzHpLYJfVRDANciZujG zKf>@fsW2k+rpOi-tft}bQ(F_;!Idr-pHyUmnS}`1d6UIQV+@=Acg5!apgcdmp=9Fb zJ#W$69wk{U>ToOn0C}cgBUo2z_h;sV)r|E+XrSY>shQeldJC9VOh_#wb$d;*C3Xnf zltwIw%e&G7hS!ri&9T3j;O5WrPU|$vlXDqu3uvwg%DKUj0r&QWqWj{XF<5@UIKCU` z|65P%hfCnLitNa)o_HlmeFY+ya?UIg()ty4zx2r@MPFIDMe1JE z0oxAJh=yE${OA2%^v@ar#7=(En~BYD+BA3i@XVlVD(G>fl_Yp5NMF4cb$MxKEGob> zN3M9@$IqSXoqNAU1@}4>vgR}59jxS1c`I(}y@bZtK8`lj=!TTl#!?5CHZ{aefIkjTiLd6 zw|!(^HO)$*pH-}ui#%M1Fw#BB2khoCV>zwtqY=nVd28!efPIVI+89%ZW3J_!k%(wB zgcZE8kS>q+Ya35x$CoK*JR9h%U%x=S7Oqpa#k=8~wY0|PX5Wk(Wb@{8KpaAkCQV^~ zsi&m`_{JNIXMG&FaW#tGpD#)v&(W+O3TMnRrF@y|>)z&R7GR%uJl)Y3e{)B{)ZJ;LOOMZL;Ust1Ig_l$CU^E2j^ z>(<`{B@_bnMKLA1aE-1#O{EjW@7{RaDgC8;Y-f>yGP6FN41xC*DqPCx2y;ylEH2?G zd7q^0{fop?c6PqM0(*KQ5y^P`L=Bo*%J#sLG-PflgXF?f)-uC(loNUj!nQE7$|4y~lsdMamHGa<&;xq*b_}X#{gaywTUyd@yd}^YiC!##B?orenU^1FtPuOz&rmvY@0%k7*}BDbd6f}l$t6Ci zGbhXr6h>gVUyjAj^NgbWvXyr-X9J`n*R@H9b!2Q_Ab?itO!KlL9U^X*eclk|c!%X19GnfN2`w(3SwcFWoQtUjpN&T4( zgvi3IPBg$48jQ_bRXsE=f5xJm(4i^k3$mbJ8u<15biO{J`|h4cRnauVJ?Tu>3jn>J5(9N^=T6T= zj_V5n4;byc0w;MS=Gy{K+8F$W{p6}aOD<74BFQMeGo8+0dv+emnM7DPDs*LtM=rwq zSORAXf8-r2t4>6dhIEUzcyRUlLpNSOAB{Wt0b^YWOm^aWQQ|l>4|v_c7QE@%koO7r zvvM*ou8W}5^w=q2oxqC2Hv8q^_IS0c=6lkv%ahvFg34U_gwtSHIQKY0xVNxm`buid zH?+4ByEXTuD@*=U^*XAOgK@nz*Ijmct~>q;Rm1Dx8;S2BGife|9JH)goPDkkI+5DS z{8W0?RD-TgM9ZG6nM&+l7)`Fq+fDV2=7U@6$p0hD0@TDJ%wKegYgik&zDc&Nem0-j@x%qa5G|Fy z;41f|c~flh=b!z@b*h6?y5r_h;K5YmV^F_jt8J|iQHphL#h0ATtY_E4ze(-mHEaU< zp>-l3!&)!g&@!3`OSgXB7q9&&3+QA)e!f>IoR3r|C=F8+!d)+Ki!*PUO*{`0v=cOr zrZxbO@f@~!p}V`81bt;Y)%W+5gx>{p4kX4*Nh2b?OGavaIInh}{$>H6{mi4NdtU_m zAjwzXSJT2F9wd!B-SEby`af(E)Xe+51Z~UX8rs3c8v@Hwy-iETQZE#4UpuO6G9Iuo zDhlvo5ES$SOlFWXhVAj8lv}M2Yb+rk0!5~V=~KWsmvP)#o3bCmj_~vkz7I}rxfFXe zJiFt*@=L|-Zz0?%2``u^5W5ALjisq-{yoYeK$kkj495Og*8l@@ z7Uy_-4nh8c9xP;J`qCan-x@>p#4?(@RP$XF>OC{lw#&zf~u4`!TpoBvLQGPm#)C6vv!e@cha89s535l=8Jn444!8A1P`lX9R2 zWqlR@YR9=oEsC+v=s+|=7NXUt73P|p9x0K2s^f+x6>H9DX^TKy*h)y|RLLaG!BTwjuy84keMYxv9PkS_>=!VBr>jLk&`L`KZy80uGWZp`mVrl%pZ;M zsMb;LBZme(ut01&&W-Ya={2_r?OixbQfY;_tH*HaSL3}Y&nfI$-c)FWaPVgW)@0c| z1q#{F(7_j{ViHmKwT(xKf3auma8sHJR|rMBMcXi7uWw)nCo%MaV^WaRF^?m&Sb@c7 zKepNkt|=MTuAAp!(q9A%M2`Xs$)=1}FQi5|4jRrK5QFbWMSY_NknCQF33C8J(RTnX zI?LFZYfbfHEyl$J0nM>s;2`tkMrTyMp0sr9ByG~;zz9dptS6#!)LBESL!at{;v1W^ zK7ACSDZ@Pw=5c+NNIYYYJKSj_sDLe4c@!D?t3PxQ-t!>_A#ekjL)C9ksgP1J;@Tk8K-1kDn#XlI1eII*z7he-6{|n5Vxk}u-}P;I~aUS zR2OYU|LvgG`{WcT*ZV=%Ss|7ls2#n|U_Yq(;!^BR04v``u^MHJe5jNsw7-!lr$Jp% z;lsV3h~OuddGn7aQ1>nk5{)mH?rE~*x8jS!xiR}RNSpHLWtaG76!jwu5;c+NKqJO_ zY8W8-0c|M`2}4ld`^y2=j?Xm-Pv$Ja`RP{5l6WBgH>z9{FtbTmNP#>ekbfX1 zW{3a#^FNrg7Wwq`9~wJlzS?b}4@*si(bh<=GR(wbMA~H*@Ud8_gZkXZ=>qeiG{&mL zO@$MH(NdLRbgg*S$6{@1w1C!^w?^}Nxol2*fzRy?14<(_ve`fSnQ1A8#^v%RvrYtj z*kq6NSM|p<-oKQ&`giHFXdl>h!Nfa%PGs0otK^a4_^ye1`L84TzeGUD8-PTS=?~XM zp9;mtF#Tn-bJwWMuTQ;|GR5I;b*ha~I6}=)lbiX+hr*Pq%`2lKsFC1Z?3mcJkiN7b zFG%~<7g-Y?TT8J5o$Av`Fvip@@il(pJPDaE4~$DYz};ISQd|MN^h`AR2?x4qE`B2F zh3u5YTjdz*iXGvK^Ypn%?NitaSx?BbMTgpVS2Od0b`yn{DyY2L&L@xp*()iDbV6EU zucNBYqxA>+Y5Y{C9L@Q3WZ8!FbmHY@>9n!5IUtO!alZ(=k$=APs|SAZ;-!JXT8WEy znb$1_=<_dh zl}2#kM}F#K?N(8o$i21SY?W&;=<|{N@$R|jQD}3f(P0LLRqLbw|1qpM%7s>dmn@8- z3)_#95achu7zdv&O``Z!ys~kai0Xa)e^^Ig1o3B}&tgCN>aCb-tGnZWbFLhWx6*Q+ z8uNtQ|3ND0cWxyf7GS#s2NRGq*$XNU(bf@XE05y74wLu>O`rxY3F2(BqA`l*`L8qQQC+F!HU z1lMWwpi9LFeU2<6CKa;L&8hU#RT3!d6+EgHG{hOfM(Vn}!$_WyTmMWO?Mi1cgGRlC zuxhPrN!eQS2oqiz7JoXBqL;#+YGX;rh~S!2toWu^ul%f@QwC>6r>}O87G)QDOk93i zvl!D(R_7%b)Vf8%-|CkV63aA+D(dtYB6o9p^Rd7wr*3~=acXYlpSw=g&ag6V{4A`12Uy!Q)UIvl@KNFmb0TBPO6 z9U#g=VxJVdjXYxmw?5j~!j?%Nhn=740M@7**0C4MBrrZebEr~#io8xjlBhk)lf98F zj93P-V{^1>ik4O|&LmofV(}pw>sHAZ3FcF#f<4CN#u@lpIm6Md%bB)e{qt`E}g-%l0|n)W=A<1VR6Erk9eo z@mpHv>WH;93D6H5)x{8N$eu5^kY^S?HF%1`Znw%N21umV)``KLj@2=I5j;m`vme--2p@VD}>%-ON` z|Iv)-A2SigLz7ku+D}7dgJ8PZ+Qi$Uv9UHWt?g9nh?|q-vL?;@^Q~=FvV#OjDiChyyr7XZJ81zR41`dgQAP@ayQ-_qd~xc-dvHq)5s%y*t)QTB&q> z{5JcDfp|>RxI7-#D4o}nb=iT6;IS~Jn{>O6 zAQp|Rk>Q?;FvW?c%~JMibt@o&Dqa)JE2K&rj5CBW z^%^BO7@5F_%2<50z+^g8j6KJuU;aWHt-&k#(S_i$4J*E6`TU6%Ne;2{c*|C1y#lX9 zLzx0o-Q;rhH^cq1hgUg)M`uYN%RjhFUT+{Wjo|0JvMq7+&-rQj3X6RctcccwxH@6A z#RsFTgX*$5w|PE(PIu?!8uzR9JM=ih`x?alQQI$V1eX+T%mEdztJ&%jan51lOcX+|I8|A>*6%~NNS z5pybSVO@BQF7|l2!2izbB8*7cG}O?f*AW_G$B%<0I!3O5{m)w0Ti1EpJNe0}$hpnWg9X5tHtn4}rz>{Xn$iX^RUaFvFf<_$WrY8gDLq}c#q#}_gwq)tWDcB%XTY*mo@S*B%h)I}T^x93l#KZIzfe}Q8dDdZ z2LB7Su?Zo27&oP~wyWYGSgzznWwgqw`Vvt4T_o(~mk|Q-ANGpxzD~kjc4^cSOHw<9 z&yc_puDv95ao*1IyR?$J1}h%r`6p^WP6PDl{c-$8e{!{7+ym77nbz16*R?rF-UPP- zl*){Z*`A6QZ&gF} zt}GxpHa+Z5j^#7YorztF{b9X|AlB8ABK>4cy+bhu^J9IGrq?txXOn>cTl(3%>|w1m zBB0`&HWzxuTIr#lb~IT;St%cW3Huw^aSGF(T1J`5-*>HWdeHr>JF(*b`n!ZS}nw(4x znHW#>t?An!puBR@(SUW#67YP3yK+xn`eUB$}tpWo4V-UXvPFFJeQ;gU}XX*u@(h1}6yhy)+5S~u&dSianh6UM0SmO-M(esv+Z_u?KeT~|C>&}VFR-4L+RU( zN2-vN86{Qfbe1Qs)3+);uUV`Y<;cpi5x61BslL>Bz`6CA>1G8P%v|EyE!V2dT)+4; z!Dq=G=+~%;XgRM+Ci;Z{gi(HMoTaEj*WLSkivQssYwJb~(n4{kW6RU3L5UW;sfW@; zVH?pWn#=Z*$Vi@)U%;DjLLX%vzDOUsc!Bi4W7(OueWymzm2VZ0_opUY39u^lNT8__pY;Ee&2D8 zV}*UJYvKO!k00t8h|sA*XM~-5vK_ao+Ixb)4;{~OX3lk&HWB(0)#s^D5R9E45oqH% zFMV1Wn4|EwyYlaXS%vhTqRGlfq#V={yNR;*H7i{x23@*H_o))k6&H6C<*Bl>!yLN0 z2X+OW7)#34=%sjO5ich4IjnGyiH?=C0>xc|1b3&n7I!V~9^5UsYw;HM7I!aB(c;n`zP-$fBgD=)bVca^n=Wi)E zoN&mxmX}8jc1t(Nd7v(r4!1qOAa2NnnX6r9$0V#nnH1;y`B7~(Ix*UAd|~k;3(c`0 zLb1r*zbc_O+^Q=PC(LC^cZ`D{*9`SC1|U>5rNTll?GT4}ksQ&i9m*yywr=*!WE9Yg zH1u<6y0~Qq2(ggydJ(Y<4FGy)Vf>lm^~7`qbr_Kcikvw0IFIl$k0^j%4&cXAzlX3& zUDgd@LLqJz%LBU;F_UjmDO#9uirquTn5Jk1#HiJ8a`HEdlnv!8Pl8mLQhK}|Iz+mm z1?mQ3J_==NRkAL3o{0fg!71AABIqQmR4nMFB4PsV^mo~)D5x&?3)w|l( zwTn|ab>tFwoKGLenHCblSIS}K?5}9s*?q&-4%2^uwYN5sWQbny6NjfZMZl~d>%0^| zhHAKdlt+zXW#YIL*PZ;>A1|?S0MkzQe=ZHi^!aQ}f=>K_>f)BJ4%}O5yWM6!;N8jl zE$R9Xw&Q$yH;!$&^NRmtdj4M%EN3lnFuV{U^zCFgD5cZMAGT<3G3C7aR@wyN1r*7& ze=M6z-p#^rPE=yg^%-lx!A7L3D#G-;Sb7dw6`rHzrOi2P)dF~)Is!h;s{D3xUp^K_ z&7g%@Eb#rqL#o;)y8PvG(xydQJy!~kyCAU&<&=i)Ka^*>lTnrqwl9D7zR4VRv1fLQ=9IqwhTTGik2$Y#)&-!y$Pn?^t+p31 z_N%X{;Im9?3Fnp5chuYwU~OJBL(&`>r+y$MGArIY98`DaDCyg%ywHFG0KM_EPq-y{ z!Emv9Xrucno>nf%u(9PIP{Gz2#tAeclQd@YN6%Usttdl}h!mzlRAb|{p zs-(!+rX=WR{HA>dUVl1GX+n0q2(+yJ?tGysVOB@TEP>;&AWdULpMSv;k{o5rrPt$MQSzMG8DXOhvXsKw3n3c_zDsY3VW-u9@>Ztk zb%nP6`HrT^9{;9Q4}%ve{u6)1t;PB0Rqxz~V3iGk8L4%WWiPXvA~rF7V;HPLKBKn_ zFN0@n&V(s_eE&{T;N5e|Z)VOdV9thmcbr^D_YFC-MJX~0&u$)XLwC_nW6IL*yj_kj zIl^Y8L=`W1zZk1JZ?ls;R!{Nu(%Cg2uD-r78j^O1Qg1-m8RgQi8u~1dAt5D+ zu8N82k^{_e=FHUUE_Zj%C3SJ?LvwTy0tPp~D;VtQSMPEtk3MY+c=y(B5EbcdXUr+V zO)xRNml)2^a#FYq1-e-6K7Uv|k<36Cuu?g<@6Z6}E9rO{yac6fWJG9UZ@WdWsoCX* zwxbj?u`#O@{vdK*lEjaVYdzyR?U7Q;XRPFW;pnEvtd;(Nn2v}eL-FgB84|1hIvzAn zPm&PkfyNA7P-NSJv|)gVF*Fe~opi4n1z)}vM*uh`V z#z94t8acdJAKsh)4HbFe$Kv_^_}YZ>qw?jQ_TVFUU8{Asf*8ju#ZIN5z^BE&&LY#2 zqFmjNXOx}@OLx1igMQ_5P5M~|yDoHG$QQm0GrBk!dORu~)6OA_^ErlUNL>u}t32j# z)qxt`73fJg=VC8mW~S+X93j3)My#yEC*W%%BYmTPik`j@1`FHYySq3s`@oF7>uZ{G0yVQctpG<+vyY(Y_Zj>G+Mwt$@@WpjDn1vJ{`~Xr)1nWh}A`Z zaY3j$O8`E*=oOb(Cso9uWQ{1js7IQ_XOs@*8_{YeYL`ktC9^xqAvzf#R@?LcXafDo2Saa7u<$~BE%T%$pnXRin&aFyIY znSf?JjaAQt7bz`O*68?IX|8?Ekh*w zE3U%YT3D;0U#5oHvA?hs38YHL4+VbqN`}5l?}rl+>al+=Jl@xzi6X=}(GXk5YIB5RNFjOe9wC0YSOTX6k_r^sD1lY*#rqj4Ow#1O50^iKoO z6d@p=M-#49Zj_*GK0b6}I0~KdM^{U<1U~ znZ0s0C=xdq0xx`&-gEU;&MCpW3Ge{(yzz!XiU%QYn@Hi9bd|16tB(J&_RKJ=UI$*l zqy%HBFX)?OTE@wpad?M!)T7eqY>Fwk;ax8~sY;V<-yAnM=A zGvY;b)_n6gm@6^-d~3HxXi1mD8AMzz=Y&H+I9A*a@?mCTly_C@EBqSyQj;b0kogC6 zXWDbO3S&B6)E7Q4!xd=0c%p7U3_tSMHAI4%O}x_*F>((}W#vNNY5DHf;7pb22=NP~0fZM|M zaqlQ+LH~%$FP)^)x`?ybtY&*}sA}+#(;rv_QZ4M}@;xP1Z$@n3gBim708w#%QQz*{ zb;DXIIr)s3Ccys?Mg+}v{98AH2<Ym??WKL{YE!6gk>^l%Mp%g}%NcyYEm>g7 zKu_gGof;hf{vvxXk#3^x!Z`X_FgwZhctNP=&K9Q8QY|RbzmUjn0TL(ax50zGMSy+6 z!BE5b_;GECW8b>Pu!bnHbZOw1fW~C5$s?yJ92p5mC)E^%LxIq%vf~^*pzXg2_2#`W zTWe)hrtzW1&W*z;!E&>Hye)Z~=|o9(nuehMVcdkX#5G+`>PDrphkX8aWgQas&!5g; ziec5ZhF(s0HNJ&0&p>%mpArLx9`7GTaOBRPd=dL`%Ds%JQ3@1i)MyWHGX20*b1f_e ziWN7&Cv5aKLdwyULmF@-EZ)kP%lKQ~p!ZHS=iL#1BijL9b-)PvhaY1WM#pD`I? znFou6rfsWzv&y)An+?XyqF=h!Latl5Wi>;&<-cQqx`nRL?sRzEgCCtg2=JdtR~PoO z7Eqz1dB>j0EYJ9blIsDRe0!EFP;`hLD@ho8i-+1{aEt|gjp1C%iO+e~60U>Z`uf$f zl+cHmGb90hx!j4TmeuSu)42_29%E74dSbA<5(H4^Vu-Nqvh0yqna&-s$FY_DX?r~R z<+vAPru2@b3MI7OH|gDE;1+ZnS=p4Xk_wGi?OFcVESHunV_4N!!Zdp6D;9aj|FLCIAr%CfaalaN~)@ts+d~jX*D9 zbM(TINsNCcjc4>Aae=S7gtJnFruS0#B#C9hHRHig_FKfhc_`zcDUKa=1<)3fK@XH-XRzAcE~C=;p)5_q~906jvKq~C!%ef_jvRB zh&j!K^PpAqdXjC(2yXULulYxI|MHT{*rdP~Xglgu%#50MM{7hdm(?Yb)KcjRzsPZ6 zHKGD%UTg|Ll1QEL38(r6dZj>3nIOX8G`qonGO_aHz6{$M0_vQiL=_oISK6Z5_wWco zT5>Y&&hCn@YT&m)`r*`0Cl)moTPNHYMtXC_0tPJ6*#UN%6Ch(Ynt{R|O8jrN6X*2s z4&*G_)Wv}ZtYp#I^fkB-S@k|6p$ZDeFi4OJFEJrPIn(Jj*Gt-5&=d&XOj9-PgG4g6 z#lUGVnVe+YNkf;H>}m`EM@Fa_23l_XHx6H2K;@1U^s2@A#+4U(oSTPIS-`TsbuCBw zL3-<*rcjray-2StIBsBDmzCU;1eU)=1Ku}#;y0_&CZI~s`BJ@TFu5Ygmd|gq09=ze znc_5G6NTY^{(ohN=scR|0k`iVv}K-t7h{Y#EhV#(GOCK^s3^GRNz--QEJG zn7`7#)#9F5!dj*-G0`^eKK?=s6gE2zuJk&86BNWzD`3fefPv$HT`d@A2ez48%cg>$ zAI4cD<-erThKAHoG)A(Zm2Xbh2+Da7cIG!*Sxb@vM zy^$Y7dl+3@Z0ac|gDCa>I>MHcv>4!L{&I?x^g~rLl_YCmJtgSgIY`(eK6FU z!T8(AuA)KAxC~eRLb8qI`@E#`uRuF;rYZ5nF661$T7M2W8v+SInIJ`h>gkPh5YC@C zFAcjA8Kscqtph>D40&k8{g&8N?!kMkDUP74GI$bL@Vr95d+z74VTcTB`xP%Mo8Y*I z(qYHF8*`8t{cr%R@cEjQJH($u~OmSy!yV}l|h>nw{$dPp17VaDt)k) z%`p|^o)jMGUkp6GeL`&@rqq`k0l622sR@(4i}!)`{g4U9^>rBP#{~VF={<@8;3J@U zIIyDQ38rjUM_BIryV1o?%YGo$OS=5D(v%rsFw-;E?SV2U&%da(3GhUDme{*@KtqqL z5+TfU^`jImd4JCb?AR7}GOX{z@mvhwhD+VI>N^8W1I{F2V?C9r&%c~I|gLAv2sBh2F6 z<8G4@EGlMbdJ3TeU(iR?#DKv{VIX74wWVSBtCk=$!y|WYGg%7&U}ChsW)hyd89`4f zqi9WT+>voELr*fs5>>7TPXX;u+8-X*ZW+;(D23|U5iGMg+|PRq6II^;6>rf&R-O2! zz^W@=4EpM_6(fU-7>@X4=;P@MqjOq?WwZcscWq`a^NE)_Y^iS!W@rXZCv!On7oYep zlby)yiklX>`6wBIz5*Fd&VnEs-5;1y6!5zX=~71*QLWk`-04T@ZAtUa;CwRt1Hm{x z=GJeFmc>6j#qS-HQ(-B3`UzA9QSXcHwwp#;r*Ps3k}L?i!5SL7?xbUAUPl%t&RO+} z#tgBflkFStcYb{8_#ZUgn7i4B!&b>2yAp^D3ZjjW85mOZLI9~5aX{N%4gxHSS?h-? zV1_(tO~~>4lhg2R31Hd=TN;wO|F)_!f&(XQN;mRVWey`6uCemk=Z!< zuv*lfK|EWhyBK$Ljt(izOpuc?_0+Oep|3AIG?DMa`CrZunC+Lb>7H{DN}o?kY_?n7 zCV3EgqnS6~i{GFJhG#l6$DO(zxuQUOwnH>Ngn3;#ZRnxs*0f-!1?~d4I>r*81~Nxv zR5Ik~-!Q>sp-fC{F09xmC>&vlrgTDOLg=^r=GloQlS!+nfvE8y_p44#n@j83BEX|b zGVV(#yqLUXK4DEH<4|l70oq+Z77kxi{4&NOx0X=9_+dpfDt36D#V`1kM&Zr|e&fs% zOrZR;TbSejYRDlh($<)%U8ia``jvA=j-A^cr#O zrkUMnVCrJ1fq_aJr!_wRHoHHnz#dkTw*us(3O;2L+@TY${5V`)3}~XYy!hOG%w{Gy zN-vccsqu(!(xbwV%&E;MhA4ayZH@9Nx}Np3+|QAz-V%Tr;JtWq?=k_@Sv#Cw9Q)st zM!=54o^Rv*0yq5V%W9_Pl#>VNbuUa&CV5b{(X-f294oEZdZu4d*GEOp@21YuY7Jva z|J=sPg;&nym2Z$6{O-0cTjpkvXQWumf{c&_w5TdteQLIFnlJJt$06eP8e8EVD%C(U?x9x1_A(aYerao~9W1{^8w>5Gykgv9(* z12GNtARG?=9$Ow|Ow1NPvLi$TuF_u%0bC?RLaY`oV`XvQnz+k&`gJ$>Zd0v8e^M(& zmWI9WWG%z5-nr&_X2s&ZfiuK#sr^(98g1CUh0#{;0+1GrzQ@NVKn@IpH#3$@A-xnO zQ(y>yD&2DgTnR@1`+b4?sn${$9P2wNM({msx;PDW_q74>0`hU=U~JRb7Ew2HztQ3| z=R?ba@dB#%jT{@0u=8_ZYM%&?5neOiV7&VrYEaVkj{!nc)hhq19p^-!DHd!XGfCvclI!^g8gSWvH%? z-}&;T4SQZ{=7uF>XB-AbeE&(7A)h1U#v)s>mo5KxnuS7UU@=oG+C0(9pCuYAF9nkn zM%6fTy3zuHOW|!nR;ek*XF5NHHb-2R_`@SzXG0aSzW*CwauY5iR;FC@v-}#Ghq)SI z$_+dDUKJE?ktlo%j1#eH-VcANskf=n+)*XKEPcBmhbml4^nmftwXHR)T>9!V%97+^ zCUnMwQ1SUTmlC}HEXh!pBXN?6^d<(Kk0@N{i_#8Mh+safT+`%&7of}M`5qStVcG3w z1@|%$&6-KkETub%J1p{iC2{$z~<9LfE3fXAx9$aE8enV)# zMGhWfb8)F7qiyxfK-QaGHN$8WqHUQXHkFaYXg}#HHbQL+zPJA>una^awQ1V_@>KU8 z0~Xe%Ty&6WJ;SfaWW5T=It6uR4w0AMYh}Uar?gX3Ngz%j4(vv#yS+qPpwG5)Jy0hU zQxoteBc^OD!-;|jU@0$D%wwf&rIgi~2&!MlapzvAfCVL$Jukliy+oSOc`3PmfA}`7 z%0IOl$?Zkd4<%`)O;bE1}}nku%0hsHdqTp6%1{Y6msG;wH8m z+I_Id%g=D~Sd@JG;3=1bM`qh>M`=XTyzU-!EYwCbXe`-=R zvIOSG&+R?U>t8i1D9$l{&&Lj@vFph#byrpmhfyTf=Mj%!L|IUJmTV}RC+=>9JP3I zUt|11sFJOU~r9eGBs5z+L%*Fojb^um3I|?7lEvR0x+4z&yYO=;;X1@6+{y9 z=`qe35>Yq`-GN5On2h4V21~#1ldf$Cg9RVfTSgDct$r*aY7p<$pD?*bzENrzU!~Av zzMojVx}sx9B7Snbe zyD@V|u#|QYRcd@2{h;iP==a;50$F5AD90mT}?n&AO}f=Q<6i`g5|Z!1==Bu$qI6Y6Mc!|Y_IYD^lUYn}pV3q~ z9e{3U4dBAZX=Argv7_aOqcooR(ohoVNGV3v;?%(Abf3eCn5=3bc~X z)Q?8MzyMfh1jlvKk;739|2r89-s9tb!W&j{Pnj=pa|nk6==PnY=gWrm^4Xa;yIFIw zWt`OyUF$pq`!ijnv>G(ZrBgZHW*1L_Op;-Myy+AcCMHx|b+*+o$$O%kjw;Rd1?zK| zv;(TI?QP=aouz{vfmB}=e#2>`$Q=7{`^xHYVTbw6U;Zt!>LRwqQK*B~{JVErT~hkp zv4OsJB2B@5Ol{bnY_hAfyuS?`oAwi#D$1zo|1t|7;{&8hw6hr2!GB1%KXaVZO@8~e zhEbJ#C~wX6U6kwL%QSea4E1$^7*KkfK?8~{^Wz-rOCDA3C9}<4tOW?Y9WAxrkMj6? z=s95tPoPEzTiy?yOHttvmJ-G~JqIFpEu9AZFs?}_x{{qKtJ}@#dk4{pRF)!ASWaT@ z>vrhmzV;#b>Lo>yKo9I2O>QM<#U`RGy7ZdxhPP_kw-^HvJH_iM>PL$oVY7!}S_*{G zl*+`kLJAG&1PM<|6loJOZfatGV{|&j-gg@3w!yFbaptaC{F_H!YRRH1;`B#WXgt?I zlW=MlN(+w9!JkZBy0+i4ugl^rriJQp@f$_8M}B^`?nR%2_@&^fg)G$6=W*eEG?FUpe8Bkiw?vd0*?|9k;p z^S3p9e1!Qd;sFm}APk%`i@E+ge3ew5B&CbGr9Ahp4 z&zVe?&72*x zz3g4hI|+mwNwnB|O?IE1pZ{40O$i=?kA{9RHn`cIv0lGa`x#x!LZnAzxH?asivJ=! zBDnoEsOt&lM^!TWT>f2aavGXV_zCU%oRpir^^Uu6Q_=JKLlyl;mXah;)dKQ)StlhT z*@fIdt?Cf_bB+w;F$t%l zQ$fAfi#Xvk$32%}5KXw{+9n$th_GVNc{4*?*1YubP;3rBZcRS zR};imW@#~=Av(DZaf0v~s@pjtuzF~J&9B5Y>>5bIr@=gR7JaCME#7iCqEo3f5UWWQ zKP>9!k)h<0M<`*?A+`;#4)v})tPkGM{6zFzO==3aX=VpaB>edEMV;zw1klj`F!JdB z_>ox+x2Kj>m?uaZWz$w;KH=9wq1n$B<;a-%3T`p!RXDK%ZG?+-t5;aiKt3Fb!!=_B z7;r!!wOFx}D1cSbkxEM~u3kkn-p_`()!Y4cG6=XRak$8_bCc6c8E63@Cj{Z)JuzO zYy2a7(bkoS!~~)-kVRIS!_*!3v>r{x!SHTnP)0isn9AMG?N%w8KiB51VY{5iSQSc6 zXhoZru2rr8gWetOFU~l$vyLR;*2CZ|<#NF6Q+j1C9^0YMjF&kes7~5+F~1dqEC^V~ zZ={M`JZKh}dmBh^(~SLmjR~V$aesJLX_Do%hN3V-j zXB*$OU=julUXB?woj&yy3~LMXwu+#6R93QP*p*;W@*t^0acANB?O{8?4~`*r!ggOF zk(AwPAy=0L5dTV2l&@t!0W~Tlp5V5`8)iV#`fbBo1)Vj$28stiR8+U-GI9)~y>KmR zT{XippUD?{;&YFat;Q`feP_i``^46hnV;(2P!Q(rcfs%YeGUgh8GApe;@CPPCHkkY z5lq$$x~c)#e9{Cz7-^=^k<;_jDGP%E4mNiIXSMm6X~rYMx2@6wiI@`ZHDmV$+p1QT zA6mG?Pn6Uv|D$q_ALF*1e?s!F&0IMb?}f;QEmj!)2=;1AtJNmYhA>7>A{EurMR;kB zIb05i5b2T@^{mL1#Ee#(w_dCK`ZABECse|U$K#V{#(IMU|H3KJID{X=sNh|85c=Q> z^V|~J^rxi01Oy*Sj_3c6JDK!O+V#1#l1Z(kvgF%6xl2&oi_oiR#&?&4pD_K0mUb!N zUkUN#`t3e>{1<4yU39QIHAwH;9-+c>L)+En_;TgYm}2*cTA9HA^U%h9Qu3mejI{tQ!;N6i9+K)i5-xj9H6irC z4H&ABgHj)xpQm_I7pqR0jT?z#Ye~?CJ=ND8OR7BjfzSy*4+M${a=|f8i1puauKt8e zk+P=MC{s{kfns;|X6)1s;#RS36;Zt0G_wLm{D6zh9q~OE?Uj-EcryEcBchAf!_*3s z|JwF|NiySUGP!>K57zu56^;!<-;ofueQ9aW6;nUzU+V8kG{zL`JFo%ezp>a^0Ba-- z+;c=|Y+w4Swq^-09hD4uaN;)F(S8eUu{pk_i^&DQ_J^3nV<1T*d`3zF52{de;yr7W zI~GFPLZ$z6V|B%h{`U?YEKN_FeCRJCrw7T^feSW-W#1JY3Jns5G^-Rc~5Hpo1T9_G>De^@#k0OKqo8=h-_PY-U6-qTmxA9%_C-S-9ijI+I5csSy1GM3d)2@^3flqwT}*2m8w+|BO|o!{ z)Za951@SmI?7SsnpA}Y2?N(WMlLokUOL{b50#!KB_*@B7IYo<;)}+`)CMy~hzBV1+)BE(KGKhB*ftDfU2@E&TiNPE`oEH&&> zZ~SawEpEGw{g%DzY7ccn-WDP?xe z8-k+01sTFBy0-tO?00CZ?fkO4$YmG8qkz`(v%Ak#C zk9o5c(IROw71#q=BE@lpx$g+yA`2wk4>bwYo5~sk!1D*bi5ERUj9q!2F>k*NqbGORfFi3Pc*@E^AVwRma$cmGj@ z?my)UaoxPf8b*pskDQF_Ju)I-nxY8~^^d)4c|Y=B5n8yVED;+UapYP=A!b`Il@2>Z zTl`Bv7S`|(=GBE{zc6&4_kS--ig+>gi5j_YT7V8J3^&18a1sd&kG@5ngxKb)9l5R+ z4uDe?BBrk5spzTDY3&PkA}yL8lGJDtK)Az){>R!hk1tmkm0c$8_BB5+T=m<(;q*M+ci`g84 z5yn%K5Eo8tD^4u^5BMF$Ua;_swC<$2-W&>I-8@Y(s7iK5K zM+hjE3Bht3AISQR_`tlRnO($afnG{j+tj|#vo)&mz6^3FjfNZMzh8&!Ic6{Frq&s( zjD#~1m>kIBv_Y}X?#*0)agFQ5;Mgq;iMTMmpvpkdEbKMY$8au>aq0OIEu7cg#}>fq zz3M7^aU-%pVbfI;aj~|?q5M`di??-oULzXM-%?_?gfE<$mC;lsSxSggN7$B@p2>h) z+zFFJydd)p8$AS0B6D=K_U|^@x*4Tz=opX5r`q-*zt$pQ>7j(OD(OktlP-PKmkka@ zU>%N%9SLy!M&0pP0!>WcCrGgkVc9YU-y@r_2xrCJMk$vbDf}C7vR!r(TB?puw_N!o zhaT;XNPCwI{fVnmO|kmwqDSpJKp)YIw@NT86~nY$w_pmI8=zY(+I?;=dH<9dERHS11Lq8vIBrQZz(>p&BEx>#>BP2{JpP__OD&uw1${;!yd&8U( zfJ1%dK4-Y3D5e3Uz^n)@nrwwh_+Id0y$!8`Q#WYmHDIJjfQz>)f2Bhjs==KlJifBf zZKKO6Y`dt-QGXY?6t2Nnl~==Oiy?5%czU_Y(IDdp5pl+G{&Lu-cP3_pj#r;iu%av+ z0^;_lB3*4L8fQ!^bqdauLCs(nNiTE) z8!21A)L<@9>lZlxLaa@o8P%VwLAcLfxD;kB^APP~Rwoh(fo~rFB47+)gzeofKG@`h zn+4?yAEWYOZ+M@?vFCWKzM^C<9r#MZdaU32bA4j+xYHanh@11dpo_v)zy%h~;%mq$ zEHdeF*VLJZpEg;=EvIw`ppEcoJ}#yOFk_bkC0ybbI!>Dwsc6QK#0y-#+(1`UzV##>{nx+^Gc9)YwxZF~{%GX0jH6xr^~` zigf8Rh9h51l|Dw8D91!~`9L%9EOBPikwxhx0Azi;c8YU6j;2el^ugVsOuX?mghJuh zMxolYf>FY6_+T~g@6gsEC9CI;v>)#7g3i|%O4Erwn)^f^{uS2>;(hK}Y}WFNE?X(# zG7)^j;b4zCB0xMmhi>zJ8aG8V09rly1YL<-K0+Ys9`Za2#M3edzzOx-!2V)Cht)mb z{U7&}pCHz#-*RyIJ+I{n(VL^0v~cfFENsS`2@Q3oBkJL}I9GWYf^860?TNvD9g-rM zrs?wcE?>oEaMPBKOT;mc$)2F%bZ%#*G!!%4N`<$oKHVqcy=l>q*%ynkM3YllFhA?D zn$>@oG2_5jCd60Y+1tJc5(11K4fc`=xS)IZe{r%00Lkz^(}jAlhJKn>&`WdX75Cc& zOiz^;prARo(lK7lvSLci_j$KB zuHdxN&f|yecxlw1q^S{x);s;h8TpS-lxzS(v~5XkF`77zgIC9xP02KxczA*aBlgBcY8Lhczf#>?V`d+W?~_Vt7y#qBD_ns= zQuWONp_Mi;o%ENP)OFgA%guwA5sKOY?f!3OOy8q&0M=|@r_*3{wYfWf4Q^C@*A_Py zH?jv;Ctv~1k`0{9)0T}3NG=ABRD=qCIjwJ;r*!jm4mQMeJGv0Xbf53NRfwNI*ssf& zMnp+Z-qVfG5Q*cG4KI~?Du`h7^{^x2Y3nv>m$sW0ZE35Ii?UpCI$O;Z{S0kzJ8I1; zTNok0lO2cB7;I!^#F2hihNn{`6qmu58l}hKU}Yk~QUIpqv1o1eemI5#i0TI}GjjCW+H=npt54zyhQX7ihNsxc=3Pd!T ztUxvzgQOQq;fJ?_*BS%A4oxTk^K%t@o=_TAa^S$fQu|iNnd!(hv*_L{NJSY<@9sC0 zgiT&ppqN~XSS-kKHsc6<*!aaqW{h|+Fqdm(1PlBj#hqAh1^g2VEv1%&UFd(9E9pB+ zhQyynHHO_aK*KVS?0d@E+!FhuMj=)EKe1FE^qTQ{D7IJ&@J@`uY&22jrz8!GKq=PV zN-`{2R(hPsnoOR!I$-kD?u0rUSjg_e=k{yUycwgM4gOQ>@0#Q_^9c@AOYwb(l4;yC z9+)kB$`TG{r^MJm(v?=JW1}ciF_~YwT)UYjG{YCaSJ6!-Cg|p?m8OVkSw!kK+wJOJ zjS2=n%dulGhmbaQXyp%s9v$*kM1DNI+vJZlftz!26$V3Ei&%BZAmWQYD2buwTc|5W z{($@(*xh8q=C?=I_$-M`$eJ#VXLQwpgDq4i_VYOXIXv99+Tobe8iieMI7m$@;fJhV zfm5)eDc#sXGSDw`6VhoWQa}i7w`YEQ`|y~%2g}MHEq961q*_AC>?Vr3AU{nM?1J4Q zSG~-w8@`f>L?~*>RQ_#p*6aw2>7@R-m;izzO=A!K*k1mO_={91A_bay*w^uM<%Bb} z^kXbsTZ5E+98jR91{^q+p)@B(eT89_IFYuc-UX(Y0!$yP&<`4#y8`$mw+ORUAZ`a6 z%DE@VWcY@>-(UM)qpl8Xs7@)n{yuLnPI*k6Afc7<+qQQuoR%;cz`P zn5%EnfJ-d7h{PP{Hb2^x-;^L!o9Zyhu!48f{GDhJwK=v^$dR^nPz}jC<8d|5NFBF$@ z%qJsPs1-Um4l&QYO(=k%Xiv>DHDBF-M{|ci%GG(o>E_N%SC8o;M~Ue4-8dW|Wyvj6 zDbqTO(8?<{N!yJ}bEljZaV>+T54D#wYpTAZ!NT^fpLCLwf6 zR%oL!oyeO~U}~4=^D=_>EQ|%P#h-hXJ5b!yytM(#e$u*Sn!ZAKu= zEE^nM?}txw<525yoY zuf$!CWnRrdDRo{kfAsoZI9+RpPM5w! zqBaJKf+BRZ*>~;*8l=XOzw9~iN;sX-?Ml7ortig_&II8{*);1bCx+UO3Y|B{vez5e zrCPw0lIQ<9G_6&MjwO>Oylb0HqSZiWNdJE!*6$EM9;tc%y!6h8C7DwnV;Zg2?PA*}0&S%*-hj~^%9f~Zi z7iwvQH2BD94PoI`p|CP5>p~~WoQezgepsbjmO!g{sQ#l!$reV7#mmMHq6t6nbRu^J z*39?Sn!kiAguB0Cn>w&ktb0JlAGzd)6KLX|bB+u9hk`50;Y6Q-x=TO?)!wY9G5u}2 ztzAfJGD=+rZ+V5m*{DPwN?pVMzoqqGY_b*tLVg0r^9^n3NIIG-qe8X9AG0!+D=(UZ z^y5KWs6Y>ZS@|OLB4E)jh^OP3#1 zesr$UR4DM{`jdh;*jfkSn0jKRQ;y;-m#b?7l%mub9wA(Nc_?0*=j0WPCH-=Is{G#I zgZL+^0cHG|SM~Yj-;+&e1gS2ENH%j7%YkK?eT27;9rgKw=~|9IXmNjpsrSrVtSUU_ z$NFjY8ti+!<`kIGqHp)#)2CBR$zz)7%>-i&Ya(>IVCDBmxBm+r^i4bI!tb7);M18bIEFONFLSGi-LI*^3nE z@N6Uxoq5W8nvKFetGujKP!=`%?Lc+4iu<7UKQD=Cav>3$tPYuD?Q3L$%)lVqq}4}B zqbpHbA#!!G`IU>k52kU5cM?m$AKNEvY5bMnQo>xt3Cy||`wL|(!Jx2~LPTENWNeb$ z?`D+Q|AvwYu}J&;ymw4mzj7v>Sh;xa$YO7Ck%>00VIc1eRa*aCsYlQ&C?>Gp=K&+^1elS zp|bINMNh@O7Kzv4;VcUG56YC&gNj1aTu6*n{WQm}lP_L{=8xyyKw zlE6$hJgN}VNCn^S)o|3l2ZS?ZmwBmjnn<8RP9R}!IFnz{UF(Z$G#5(t2sgZBPXHHx zQ4?-uUB|pR<@ne?)qXwL9xzbero2x0;w?5=BtVIqU=1c=iHZ>$>SKCcOIe1~*q)|{ zl$TMs>>iv{;;yZ&?z<<|T0DrZT6`VY-v#x>G7n}m{a`6SV?c_IY$OiEZRKt#W$tLu zm+rxb5;9Ln$33ykJ=xbSiFSV8xwnYM`(zLCqi(yy+>#UlW}w_h;LcCbjPvx*e=i^Y z$dw+{(iVFO%r<+$!S@M4lEL1tn03P&ozZvl)FzS6W3F%MZ34>TX1>T9#4a zs2(AbzCmv6t8`u#@1-pK=G$e$Qo3ZL>sCds_LQ_FfL<(xfLt)b$wxj6Nd#k*Bsh5< zIZ2h6xjt+50x%5&RcO`5GBz|xRS290NFjrkHpAVq@v%!YdM?^l4F@0sKb>)4vfwd{ z7|`I@h-P;wd|VUi8BSH*%zzJfDTYavZnldZQKiJ2zj1EYc`9gL{frob6);}ZBi>2v zPq}(0HNwN+R0pKl6oVP`>*ktyl4_6Ef=&f``{aP(R`Uy@VZw3&^Y{scB8-gPAN}%r8QupK%44THf|et<$&3NRUYd%ko}r{0 z;&E;-xaEWfx}=~*9N&`TWdHCnCOLKg|6%GLoa_9)K;g&c2^-tC)f4-~wrw@GZ96Bn zZ8VK-Hg=k(Nt>JB_uhBr{SQ8~)}DFxv-jF-F%`mote~IQp2qK*1l<3BsFXy@W0s_y zmj1a88l*M4qVjh0A3f`>l9u^G0Jph{J$YzwdS&?#jC+~Oo~?eWktM)^c=zx;ej=K` zX)8^Td4nq$(gtTbVtSQf7n#=cDw>hAFV|-q;#l*`(2AI-_x%f_fPufG$Uura8K zBjZ@E7z06Vgsj5PuzTo%Fn7n(2hu|lM~aH)X_7dwa;NFdif~6nJ*heIH)S;R2%c&6 zE)J7}B5RF5@&yI9VJo|i>U#b<>emlz%XF1~XMWV)wqSMj(!XiXk*;-4P`^xR{nfs8tG-3%cB95T^^ei9PrVa7IWiaAsY@8CVQkJ( z?j(XegOu-Z3g=11ZbvPuYcAX zGP@zV@wby@4;tI0;n3zXDUze4rm6DRK);Pv4Rs!4jh_O2H#$6(6((?;BEPbRPiTQi zi=xq4GRp`k4~d?&Q}~yqcQc!(0Z1COk93-*`rt(A;33uNT`deaabMn%<={HdML3F; z1ys!p5HSILOHvu^Z$U?kTF1N<$;Mq|d}fJQ?}BAb3H4KhEHT zjZXwh7-vr;v(NhMu~!*j94G_cWX{J~{J!8%Hgn%-;9b4hR$lZ}+U+6rtD<=$g+@01 z*F?ll5P$S98?Ht9XZPcj@ZmCtcAk;XeeYcT!L0*3>6q9RFAIyL@xA zOx+?Ox=gIl!v!b*7meoCJhz78Vpg`E)v+T3tzL|5w*g1^cc|~Ot?4FSXEHeqUBeR0 zRy;J}Evj1xQquE>!=1|>bO$lH=OgmZ#Ah!ft&pY^C=Aw8|=WnkQU+Uh= zT5fAM71Y#TsB=!`p9bhNh4YqFer2SiT~7JQlE@^Rjk8L+PE$_dmO_V})7VMNzdK4G zm==^(y;=Xe0`dHRmOrjrfxkcY77a_tM}EyGKb#DQhwJ`O`1iB4r3tJn6*=Fh?)Ygz zeUm5*8(cKcpY*w2O8de1PhvS`Qftq=it+q(Jm`;|kGm?Uo5^13jr-?=^9kFkOB42P zQ~_GunZLyB)+5pbSx?j%pPibX9C$L1Dusga`7q{~?-PT~G-)@|OsAORwPAmL+P|l# zoX8eEj-o13-6MZ#P7nMz%5ND_zs9P!^8@E;cZ}%QX>XyCE4C}R|B)zvj2RGD-{GP4 zu;R}vn~C4RO|Pg!F$Bqu#hkQ@48|)R-Aude!nMb*muffYGdlaiuyI)?f4vLoRYH8t zSTDw!0U*;?zOXSwb>(u-$B-K|u4|huk@VxVCBUcbd0_@i%&G~JFggH!ur)vEVqI#7 zLC^L8qVer?ykUy4o?v$DhS4GOW~!PE6n8=-HjVaQiz|TIT3-||7|v~_NDUD8X3hFL zh_rw2rq{~s7^rNb;@Kyo55dboU9(xh61Jj{H<~|1Ymg?`D!OE8Q}(YCpe$EQ&_1>hT&SiIPuBVrZbcEpjW*;BX%zBps6BYA4Wd7Zmg z{_uV3suA>3?{Ic68esOxPT-p3|CS`^yRF)Fsrxe_{AT**hHrZ;BBAaj_1+vP2&F=y zI&@zaYne+zd&b4H*qs35YtM9Y)LQE0E#5c9*9*FQqH#q~N@LfRY8E2sov$x3bDcIP zg8?<9tLadopfPmY!lVshIVF_3$!k%b@F?&51A6;3s=TtmcgU#yT1)QQss7A%q1Z9OkOmu=sxCXHq=t5I5D zvMow##RqY89vV>ZoR!GX@@w9*_Xe_!b*WNF|~Q1 z$mWtt_PW!sRFL8S(JSYirY))QFbYHea9G^xNHxyRA2aNG-eNkd&L3*lT!1CmeStt1 zVwE7YADdoHIb841kZ~M$*S+_vX)lo(aV!0Dawjg9)71&v1UgPYpu-xT+|Xi&tUBe9 z1O6wAqEx{e>4)YlLlojXzDXUMcxSQ8?Riw`ZVKTr9K^K2TM#K&Qt6>-09!s4Z>o$v zhDgru^k?^!0CYt=!&G$o!!RcO>A6(u!8lsN?2~o_=~+oTNLQCgZT#{1u17jKc&+O( zsI#`SN}HX`NI-$IclRan+szx0(~cw+%7K`&<6F9|)S!0c59UqrsE+20D!HFHf1-(6 z9b2Vln)<4BVA&xFN^8?sZquww(~FyK)@hIiiO}N&W zy+9we=w8${xB$y|Cl(U4A19bqhyD=@<+6`-cjCYPKxo$xk}I-iOnwRQ<0a3`T9Cu9 zB(;4)p!2c16CeF5nff^{swqEmqr$)OM$m_w=^K zP2nz{jEH*C@t`sG6>-EJr}|?;u!ho4$q-^3WxLpRKo@gJcoIXxOff?hJ(n*`n*JT= z`;uhpkeGH=4?J&0oh@=IRfN8xbe}9Fx3^{F8?bv!vQ5{$j;l>Jyoh;OpwF1W_yS`O3F^%Z^yModSEXIU7 ze0j-5Dx**0GE(K`LAP(hUuZfo0d)1_OiSho`SIwG3qK5;Nt`ibCR{X%Y2`7~`MNkh z-59w{3~ut%dyanDtdp-eP6>EC!z?sPve>8C%cBhzLgE`NYBV|Ie*I)flYN&4Y;Bo( z!Km#0{h+7-mlqEn4m~Pj2nRliZ{YPzB~3BgH`Rkt(=Z+NRjx~vk#8Ir&R~!Vts~lH zmRxHCtQSH%N8bu50`%`V9WQRaoGKD;q#=Ed4z6KF)a{{fv&a-aPp0k5%ycSExiQme zN=PR%|6*U~%cm~dzg4oPvog_eD*P!}mOk(FD_6pSffZ>b(S%f7$(8bYCFu$sHop5i z#Sk^`U9#-Bz|&dt&?#t3J@u2t;l}+GC=|?L%zysfUAo>wy0Rytht0a7NB4|n?4M#G zY2X?bYcwvLPVwI>3on&FDq9r}2nce%au~gOyGweZYSF^I1p4t*NECK8@?Xk`M$WD? zms3-KBa+PhgqX+cviCrj{bPj_YvQAwxVAi=6%l5M*ol0hCS@Z!CGtJXx;qfWCN`>C zrh%y#l{iXwgUf3)|6hVVwig3LM6sC(qN|C~$&l}gBMvQ3=Wqz_q|s#$ETw5K2&q z$P6Wu5IwaBJwQ>Sy7Slq?GKpx>_wG$PMWEDk!yd39BU`vu%n!WS^nTIqp_ufoil1A#G&!@?{|Rgj=rrEYfV!GatK;qnGDi@YD6CCoA{bPJ!?*3#l13 zbRMUI-S$t7u+3-BZ+Q~gDvhDp+#)g2Us}&Y{Qj4rAmSG35i)o++96f-s~1B%PqBx( z(s5HM*ZKcE_6y!r5Ee0aXtC1RI$U0DXingEY&l*gJc=8KrOqs>g|L^y9}+3ENISS< zX4vBa)T5d@U_Bi{1ZTCNmdThc&I+cLnjNfO?4)JEZ2;uE3}nIvrn7MX%#Ht2x7#9e z+Y9*<%8JxKYW*8>sY@ke#}^H4MWBfY*}OoL1BdOI(x|4w(qZ-w%0x=arM`;lw&_?S zs3HZ-U6XqR3gmEV0?y!&YMu+FnKAPS5Lz@zG)*s_7jBBZ<{1xk)8TRcv`rc?xH$#d zi~O8;pG$qZirbPYy->`^;@al7k`rDB)u4fs?Cy+@;PzexQbWyW(&{)X%+UOG146cd zO6-9yN(6ON0oKNZgf4XY_DQhBg=2O4F)caF6wI6ztkX7I#Mw98>8rMwDlnP!!-6nH zlLC z>%@1<%S@XrP?qB*DX&lmk^lAl4I#jePC`8xJ&GS}Ad_NES8wm}rf>WGv*gZS8G$b8 zpZ(+^8qB=<#_UR$Viaot{?O+n$~R+|WN-T)$- zK|$*xfRO8_8Ab{!1$%TV^eS0*%P$`_Zj;;yiqUG2-3ca0)7C32DA zST5kbHIzp-Ma|t9XhhWQVFMx4hd%u&i}RF}=r~E@71w&i+8{Oyoh8_~Rou~4r5BGH zUpMsD5Gpb*XnOmvN`?9HjqTFinB6*InnIn;=m$(07|v# zd=;V=*O#3Asq!`IK$}k72Ze)uduGVx2#xAN{^jH}#Da3!`0a23cov@{w34b#81K#r z809-yiLQ&vuAXs6_sWN^IOuQ~YRhmtTV-c>yaLxAyF$S;t^-|dDKEmk+L22Zp&Kg8 zr_Pa5``@9Wf`NVKLJFDWn90~xDty=NhF6*<&a8Y*mw}lC z*^yAV5T_!y_R4!>``i++)Pq?5yw|;@*v}TSRt^?{LYo$)hrbNUCzmgmKW8sO(Ie-sOW3vz>rV1@fZef2>G^2+%_jU_}y#*&IL`S z+1|dx38sx-b!Js&&BP&0ii!}1DG>bRw5>*i z1TdJQlih2BWPj6}SV;n?TWr;Qa5PWFF$%Bvk;aqSeqmc<8fp4nMePUEFXRX@+d>6r zlw~$l1T-@mwy6A16Y=YB^)%FiX)kAeS?EdYYWSa}0|^D?F4c`Vyc&f41%>8@C^r zfsI(MLL>5LokM>XZT!NeJAGK&9ptvG)xxuKg=dz?Oxkgndla7;JOk}|?}`4iNv-Qvxm+HUcP=F+YSb~@7i9kNWx@D0 zu~eBCOhUHgT=~5yw?cNnv}1+GD&Ln!y{&Pm{E@mZ8gK0Zj!XqJ=9Q|bYD=u2@4FB4 zROj50THW#YWMa99c1xkhUnuJmyIx762R}<{Ucf;`Xk-#iYL!M0Q%%V5 zBt^sIU%i1aPO?k5r3w^}axQQWR;$_gW#_#hRC)+aLIudN#>Oz1;d9+bvX916q^J}1 zxJfCiWBgqRf9GFTs9f6iUq)(gv&U3lKZid4oce79c;+MWK%*bX{#M}}`1H*hQzJm+E;KugwLo)(qRVEgo`)USN6`F<$3~k0YrNFchl3cQRA#4PH|X) zIkK2Ii3rM7t!(M4gf8XA{L`7{w7EiROa5}Ms;OL*v3KrZI-;4$jLTV+UzLpOIsjz# z2jT2p;&cHWcmILIlg^WyMik&az-Z6h6wNn~PTfxercUxxJa z)9gYKM7uZZ;Tfp^eqq^Y7%F27%>=*$_;;oKz~bQ+Wx6=b8kSD2_=W`34D4rLl+F7) zKEJy1N8kvc4lIs!?MM;C-MEaam2M7Cuk9Dc^z=o^G5&AzRH}5vRnzz3A!X3bug-cS zT9^=K8XE1vooa!JarK!Yg5btbAG8v`!~aBbm1&!(D|g)Ix{+mO66M9oo;y$ZlF*7- zy)*^{3XQ!4v@T?rN6~_f@HiRCWNwRlM&^!mV778edt~9GXcW>!rB)N8a!x-eCUYFw zC>#M42!Qyqf$LWV6y4`M`=I|vN+y-mNO<|h+-^(0wf8PXeLpm4zd1-1`91W!UVA`YXHmjZJPTf)<3l>Zzgc96I z@l@gw<5F*wx+m(VPMJiPv`Bb+r_sYPe=>k3qktIH)=2mNPsJ&|Dv#S*RGM>2){Qq; zekcBvRu5uOx6RK*a1ldlH1Yj8N2}T$3wNlACx@%h$mB=Cn;)fEYt0IKM4Bn7oHc^848K$^rvi_nJGPmQj z+bF8v)X4BJCxZLUVYT&+m2*%KxgB&Mu*5Zh3A4BSYs=tqgcHwG2 zLsiKtAI3)pyZ-u18n!Vm3Kx~jBtUXoB$rQnRXEwORJND$##k9A!*#0K8qDEST0U!@ z_WK4o6=q*-Wr9OaK|HaQX*ueK8W)&4zb=-dmI5t6=oP;LhFny!iT|VZv8P5o#j3+^ zxrOblBT+%Dc4gfPGpMJLo-ej-+se+Zd2(6}D~!l(k4}U(S)cUgO}h`dAI%?oaN%By zLjE~G2PbH+2%WIs2b1phkL_VUlkt)pSG3nC@fCO&#FEb7+vKru^!GWHz@=`gYIwnJ z&oeE=&mKMYJV^4Inu{l?7e+b3#@Vh-Y68pa%_QU*fyXamVICi=A+E4gl=QXbEirKI#qk0#K`*AH}cgwPy4#|#81aYSRkM5>kU#;uteC!5kyL`%E zx^VcuR1m*6qT?09%VlL?ekUNL=dN4N{)$9sAZ8E!BY?0`7Ok9(mKsW0OrwiKj+{cL zvgG5TrPBcwH&-J~^~h_u#Y`d<_$@2feOIAx(Q=B%pkFJvItL3vo94FiRX0LoubC$1 zq`6WVGLuPImjz+wu!`rr%TCvQ^~q2$e49oWBWYl(a=<}x%-9G5MKxPJhk;N__lvXv zj;4&JoDWs5sV4kk1nZ+iQwv<{ah75xMpx%-a)`Yt^3+#IhCR!kZ_J)Ol9d89&G39qw?zIo+4wi%F7S$unpH_KxT}Wq%XV(Mfk!n`ElImJJ<-L;* z3Y}J67JL?;dbnI{UqvSmL8|5Fhy!xapP0Y*H!VhTrkAV`5mj=3B$gDm8+d^w^+=3V zjO9WW(IP+GtpixLbh$(wv9hr#OQT}Anyu`~edxqaUOe;*zm#JqcT0u)C~vmFPB&PW zgDDk3efi6g5zb$4&Esr)O#GTua8o(WYZkuybKyjHCZPv=chkg7H%HZ^$>r2%=%Hu{ zt*w(vE-l*qF?5u!(kC^3lD?ICuQ_s(*W+Jt^SS^x0^O~1rgE9YSx?MRgeoxegR4CG zmL`xx+gD3pU2-SO@Uwx-0q4zh8Ix1^QvlV!Qzm zU^1t@18n|h!bFl+KvHZ=oBve=Re^4{Pd{s~flq-Ee5>EyW*uPd#Wy<91nBdV6O67$ zHF}fPFr*JO@DrheS#ZQcp}nT3|1w@=+s07$jmd35RoJ=QYfbWA_hp(!=~VmHQWrZ* zEH%pO57(YPvjxWU!?eQ1`2RyGkNG!=ZkAo;1YM+#?L^2ymOAwj-i?rkgDK*-XPXoc zxB0(X=iFJ1PN>aZqnScHZq~3_>S#vY61BG(2Z*_Wn`HvRc7@AZqUx;~|87JpK6sMy z+0p?3h+$e0Mw?&gb&|!q&P(DRnw|nmeGxKucgV)<3`kiY7~N`VW2><6i%(vl3j4*3 zI~rN|Ia9lvqOw+a`E%P^pG*Ux`tpI)r)WR)zT%X~@A>i`cHkmAc$_#EIDp#0EbYrT zii63*bqFjXS59^RT^Jz4;fyg!1nB4a#pg#d7( z%wx}^2PGZE+dmx|c=WXwtNrk+@VsTeV}hCl&_AQLjG5c zLbwb)i-#Km$w+WAo@On{vV(|YWo+?7jYJO#!*=VsH;@@S6v2ZP!DwUVgO|-Xx*HY5 za+djyYfz$86xr`m_sWoiVGcUbovmSovV0OE*93|#F@2N3yr=#W@!8C}RRyoIF$0;57jG|r?E|-t{2TLah1=c1pDiCwvt7M^ znvrd+$>X4I$bZ{>Ng4j;X!T$rXl8>GqafG-G6oqgDt-IbRvbP$onqv75GSz~1B$tP zWwHbI;dgZOu5VEmAmGYYgfs4P6fF*&k8~4FkB|?1hkv=fMhC2buC)IAAfZE%gt8u% zgwe8+b>fds?OJ&nLxk+yeI%sEpx9E2S=ai;M+yy0p2m&w4$@Y@hds#&*^!c%raLEz zDyWoL?4g)BjrEk$p#DR3YS=HKDC;9Dcz?fQ8Lp13zQDcwwkk(&5zgC8vs}To{P)-G z9jR@qGS^+mTbm!PyPFI;{Oj1a{Z%|~i*ngt@{b8I=i$XN5C)x5`xi{-X{l^FMAF|4 z9liQ~@`BiaQFNfpnZs?16h~~ZeQ}gD!UdC0YgdM%tjrhK9ZK{zcl@7@&A8S*o8W4& zby?^)UL<=JL)LDj*)$vw^E_2|0y8Kte_4*6aeFdHC3jKfO+oZvKr}ddY7YywcVFbX zA5kaIEfYJnH>5bigQp!+Mz^#}5-n(7@DN>u9>>FX| z7PV5XvIwFBZAf4yVl3-Sl$JBS@gUNd7Wo|)NBC2R@k`WJ^ktPPr5{%DNzM6Sb;dsU z&TCj#)F#;m^DJ<;%ee4>6-~l16_l%FW%p0aokZsg1gHk!_lFq)gGhn%K@$|G5Q;DCp@!|C5#{~g&rb&@>i`!jo zsZ425fDi$BlIsnB2LMP){AKd1!A&}blmt^jYKj7&53ebsVI2m5iWJAyZuZ`R9j)Lj zs3Vs(wDcuEG(=5K#{^~x(PK|AizcfuWxO`AziKRqZ9~|tc(SC%Wm=6h+x?Z9kb=&L zWDn4%Ra0*IXH11@@X!E8`L--j^j}OEC>FD9&Us)-KvC-EJdy&g3y3*#k<^(^la@)w z2JmUsdugLitGO=ou3GB{m?U82N^xbC(W))0HZk%6;(w)cwVC~6mP|ps$z~dpba`E; z7~3e*l+%%dS;D*MeTg0TT;s~JW|{&0Tfj$8bebM3mN2HpAP?uV_Y0?K^8cU9ln&SU zo+UI;92`g*C@BFRLs+!x+}--0>mrf@w+o0dd`j-(mNSY4^LYuZYo1+Gmad}ft}L|t z(=eKiaB<)ipzevI}9NpzT;?Epb# zz$VM>iaPHQB-u9Zj`n2A0;G(waTS)J0zyP1dVdy~h>mL${zX;FvQHVa7z&#toi_rR zEg_KgJqe<{y8u_@yB>BGr*jb+x1tuGvmQb3=!}aLZOfRxRNnd5-_ose2nfyB(&l%4 zniOsClUwe=ebm3IM~6?I#Stgb7*ai`zp&45_;VCp+)URzNO>uKHYt~76+Irxq%J* zG4CY;jB7r7yuX!AGQnurz9Ou-*@wpD|2gbBU1w9kLD#b5$|hfQ$7DDoeK7bCPM|`J z$Qq6dVYsRDr|Kq=kd-yT%rv>KW1C0uJ$xav$9V=_jl)E{-!==YsvJ7O%Nl4CEY1%= z@tS@ADOU*F+9ZZ8OTbD5s2tZ#o>3S^#&Wr_P)Np_Q~GPe2>}NvZ#%X%^v5BRu8}5@!yP*2dz~B@SE)R}ue6x_ultl1VdGVERs1 zb-26P09+HNqo-#&fsFEEZXwP(+_+0^?iq{t34sDK7^fUAkzPC;>_ z00Z>mva-e~#z7=3XjE|*&RF&(Rj~uF1!;nHk_!?vsG99Gb%<(#S5eryB*-5YRS9s` z6Hu~LE;nJt+)0B&kgyH$S$cH3!X=4W6zl68jdQC##T4Fy2H~j}^0L$q+~2ZpOVX;~ z=<|H3WN7{DFVp`34uY)Cwc$dghhG&=KVdfMDryIDfQIATvdIR?FofTYEqge=TUHwc+9q6xj2@Qki!+Ad$*)Ps8MAbp4~kSFTXO$3YSww0 zIA98(zJxU?2pZm8h%2RrF-Q&5q_+Ye09pXe5{>>s0S%=}bd;`?<*0<}8%6vpc>!>s zg81V1p?H3-uQEQ<4?`yEb?1Vha_|tm5(r{j<*LBW5{Tl@3HD!}2~M>_VoamJXjpQJ zI)co4=Gq;RZ1V`yk;31Y?9*YepYdUm+i6m6UdzistdPz!d#}+bWY9lOb`F&2P0HIn z89f+ECV(4yCEu}yBKbS&8LEJ!?2?U57X1tCdzp%pNS|wsxQ=Ee4B&$nqvl2I%X**? zsxWFUyIx=>SaOreQGndx&Rg!j25;ex=hteV;fj*Gw&RHzah5fN)dPbwhN0G{K*w!y z4b*$u1Z?n}Z2NEm!s}9kN=SNY$%k-cU%pX;8>L;8zUq>p7jeSbnqLw#V)sz@nTT)@ z8Q>=Rg<565T~vq2J<0x0!u?g4}ar7ldFEUtl(hbtg3iht;j>=C(zOSoRgE3<4VPH%u6Lkoo9EUdubW0re&e z##ohjUI_-XE{!#wI8xFI;KK zWq6YZh%-sTu+_bNckvr~eX+)J?iQ!*q0RI%&G1ZhhG#ZQP!basz1PIKQX!w$ z)lI@oei@M6y|Q43Fm537rnB(GF-!`ujd-(pP+z$3c(0cH4^yZx-{@*@Zl4pQ3L*h6 zJw)#uO9aM|Ox}Pq{g?a}+kFU$`c!awQ|;(kZBYF*M%|k1S8@*xZK!Al`K;7htZl0e zwR=Vsf?{&@wO)#0=z`33JVcm#_@}k7Ch3VdOdU7>{B;Zl{i;@|BkVz48E1nTxC9YD^veRDI<50~*o0f!Eu4<$Rt4-#^bNuTQw`43e5 zC&UnHqvaFiW&{e}y@`wSRMHg%Q?or-cQCTN@(LAPmI@!GAR2_|e&)`AIX|nmm3B{2 zex~pTY*NAd%|Bv1NwNIjobp<~@)+na%Dwr>_j3IgV9>uAfQS}s^B^J#1oH8%*>_{S zEK(uVcS>fsY>90Y_2?^UC%7%SR)!#h^vI^TrX!kc%PI>3UiPLhcF;`(>*t$O=owQ!1o5C2Ly!ca7 zg2*g)mj&QL-uH$*+)Qk^aEvoB^jS&|YsHK{h-CgTodH7fVC1Bo+&6#GGJJ7qUFW=k z=N>-M6ioVJYyBC{9NHq zH-XlYv%rG$Z&s;ctB7%gh16Q3{*J6R!X!B9b|7q%QA$zYX%DYblt3O{*t@9eR^B$E zpK=cap_fzPstajBFQOrgYNP3T+gS}A$E;3h6?l+gIOyV?N;FI&c3Fb^!QiChSB&?t z;5-X-aTvecKnFn38eBiZhFRkVOFz`VyP@?%y{6E?0)O{K#F1Y@krp0aou{3yR_EUk zPW+FRu+6!n(-BsTem`{II;16z4e7Nc>AbLEX5s1S_-H(N1-g&vLm(2^cB>e--{-Qm z*u!?8?H^BzF=k0YITqSMcf9&rVjwKMYT&yOK z{HkX&fxv{>z7#F9^fe-G5iR7NI=~qc<1x3D{x`H0K&aVn4Z}kZCT=#VqVT7Yp3iO4^JE0X0VMGoc!bMSa)oe%k77mtaNnr! z1}Ch(%!`L9oK{n1UlO59#-nQQ@bDlAcCh;!-8KPpM>4J)A%_ zVY@MPSQDx^&a_Jak7w7fx37Js%L3u#JeOHTM*qSn+#IVTz{{IV8>UtT&WYU4u_seb zfJoXW9@M6mbwT~}rHcKADvO?nrnIZnJcM2+=sYz3`2>P1t>3hVLg&o}Ubswykf$n-z;FU+ngIW?F*%jq>KV^rP}a zcLvjUYv!EYH%0UQveOtGC1M4?5O0+(h@%rpqq?g`rWHb8IR4+`}MJ z{>Ms>0LgW7{EtN@&pj6GYRo6sP&&tTKpq0Qi)WC*NrFjsNu}+qHvEh)41?1>lf?T0 z;aOMwMopE)eoM5Pp%T@vuR*T{){y^YlPkw*{>`m@>;e1xztcuR4|2~R#*QfaD^?>7 zf>Rq#&;IeEN-!r+3D*l}Wbo@GdLiR%2Zd5NG#lVb>_u_$=g}FVTnTj(EtC}EcCSU1 zj;4q%#uflswT(6%e5h2dPpPM77*sEoL3{qawGQo2NG^b7;*7p(-XNm41e0J~kypHQ zJEwRlQZG4MW6AWiU&GAj{jRU* zF8Z(PiW4z@{Ge{yPgg|w52S(rU{#l8e{~>x?Q?AhKfCR@;mw>wG~t&+`{}P^=d(D% zo?3OC%Vbj@FLF|RWbQ7WOl{!KJi^A2C8<+-b}G$5Dy3DZkbr(K8(In}g`utV7w#mX z@elr5Uv=EQV)A(@8`D(sV+`-rP;t2DP}a+aV!UoN_v9sx(FMa35SESm!@P>C>@Z=6 z4IwHAY<5me9T0891Z%O0%Qppf*44HU(IiG-*8N^!{6={^9UPS9fzG}E188&QQJa+a z8@)oY?yEYMGaMj#>b!q-CNIYI1NP56 z4t7_%yt3E(oPDq-^e%dgnmzM5GDJd0pH?QmU8lMSl5jaPJ&>%6tQw5E@1?3@UBt&H z(9(nl#?H8@@2~oTzlTs^(P_>q+;0E3)$wgcGX!nR0P9ly1@EOD7SXGH`#sl(_=n-S zu^5{wb!HmAk0U-fYrKi?h)#_AbK0mYpi}|%WKl5O2TDWeI|x-Dw17K>&o3Vy(FJXP zPyoztu#nh+Oar`pdg96>DdoN7tSLFqL!zSfkUHIQ#KgV=t$2P>qz}6`f%@xHPAgq6 zSrd2p@SL=;3s;%*+W`*-o{F_GhkY@Q8rf(+{vXq_mY4RZslL3rpRaI5gTzJ`sAr}>JM?P{| zknUW{XZ61u>qXy$cMVd|R^Lh%_kSbOq-&*T{IR(g>R6q)n-M2Zw~KKqIu4K+T{2X@ zppxAEc6%NnnL$lK+yDDH6?xj`=|4}a#?mmKH!u6be~HSsjOHT511D-He0r!;Sq68D zrQ`wvP!M$ntr;C+iJWRvn?eF8D{)^RldJGmEeijfV~{~j){}J`*%O&jmo0Y5FAn*t za&E}?3B7F{8z^fXH`%pGMi`M`14tRvJdGxq!o`HHpUad$$Fna5j=v|>|7_Sl!idAK zna@%+&Rz)R(#}mqau3q|avZo*GASq`=+MzELB(5<{*n-1L3lh__A*(IHQKCt2*d0^ z56|YFW!mnpGNB!0<{FbB`T47z#0D3G#32FT6$B%?m>%IXlBb(q&6~28C^Q!b+>(0B zq>9!{ax%A1-gQ>4Gk6pp64G_uV%$@uEz8FAzV5ET#xltR3s2F+rF*DmfsM0=!kz@DzZS7!i+7kbN{9XJ?#PR|{qEZ&2d zIL2mynM7&Tm%CVJ_mm}Z(5uuO@BoWrBpJdCtiSB&9)=|`oy zl*6}rf8J>B94Ss#ais;vX9_K@!hWp)Ec|dNAUiY8+%`sfO;5ROw%Z=VW z_jcJ?`{>(pkKW~s@ZZ`^3-KP{HIYqTt)1|aT2ueimok6ie;p%to5su;IX_}D;ukh=d-08s)N*3uUy=raqWm*0eYyd_+J``I>~Sx7ibFjXtP z9}E9VKS%vllY!DFvqo2B<67n(3gG|BoA{l|iHhJr4Aq})?ELCN*EDg$kRuYI^k#@8 z-N70q5*Rjg>tv{2EqtL@y#F+If1;;A(?d@wNc4^j&@G=U8L>UlTu7qwv!$SQEued$ zcTg%SDN?ed%2`jWDd$6rBgHWvwWd*Bmwgg0Hxm-1kQust&+MFpAjhGmkuW;JFOQ?N z8{w+@krg{a=ylvDIH~dU*H&$Z+Wc!Z!1k{8Tc@DJ``CK=d`O6v^nU!dWSy(@sjb(E z7yLrgoWcAB%b)?BQUIJUsutx@?DZS(T&uYVYsX^KK3y}PTTO7^cj()%Dt&Mp>2h+F zw~$^MB}mApgRPMgt8E^TeFTcQhGGIW!^yXBgxgs(PiaxpWeRcTX)>9b@z8pb8+_G) zy%3IjfApv>F^J&kT?R#9BQnf5(9)Cg(s}Q9Ckp|ZImRM+RxmceHmqfMF&ATbfz5KV z+;~eQi<(k?WXJ_Nj=Wx+!z_5fIhI)@@H>&b97GsiXqrUP6WU$BDWGdr(${?zeCN8^ zYD2`DM`-UtsV}7*9VH?-a}j;iXy43F(K5_LtnqSb^KWe$@!+d7e%YXS3l2UH9}NRN z137=q`e+YcPkLhsrxrDm+>g%qUdTM!I<;(J^jU=k|LlWlDLRsEe5w*w_ zEoKrXk0OXR$0v977w!UyGY$UmJ1B#JHZKDKMCufi5_Jhz&FxV^z@il_Oxc(8ln0H2 z5N&iM+ry34v1l4egA1b%vwts+KSo__f$nl)K^=!%Z6VbavT0%0)?es95#}(()#Wef z8)-z94>j%5f8CY*cq=n`tVZranQyGWynjbLJmVB;`%?|oYk-o!8lNC^%k}9{=a=*j zVTsr;+So*f(u1Mh)o<>I2M`eCHw-du2e5FvRq#y$f|75|B`=R04Jusy@lM3u*;hYaj*ND zUZ>4fj{3W(vbHlypb`Iq-!M;-M45t{NUjXA%UjVC%|l?FKkB$-Sv901K9I2vZ_)J! ztE)Zf1n(~}iMH&9+(CwCoNbaMkGT~hvX7m={|(Ik=nHlXgHab8D>`t%$FZc|NT!i( z)%ivHsse(F?!gqpkZODSm!voqyr+|fk5HrZCM6bsa^J^CxCiE240@)L^Iz?7F}r9K zoveTfW>saJW)pGSQGBr{4PjEx9UMFOpM{(sq=~i&9>XrDGedxIy5mf!dUgbMpUF6& z1=wWM{03vF<^5>*u=wYNX;z5|P`NgbaFJ-z$x1huZd0JZ0wo;J$RJV`NI{5K#So4B zBg;)0@du^jA6l>2+LLvg#KfYeV< z6($hBRP=lNu{fcYP9B&fDi8N}q2`NPSUtpdCzki^y zdlDXi?;n0Z9n_XHjdAwmE7C5=$i&kTC)E5^4ouo$z(IhrXSxVNek$oHwL6CIq!UTD zy{~~4!l=S!mid)T14}pbul}lF?(hqLTV$HJ3{_pbF5UhM4$kBT+EN>uoE(1XE;=-dz!;55K?GC{JjREPa!eurRA{tQ%FJES(g&0&DI}rxQXj+HJ#=@r&D|KD zRNuOig9|)c=I(b#I^EIdF6E_v^LNYQRrSE*bKC`e?jn}ED=ER?PCa&`a#v<|6$x?V zZ+8vv6+F%5hP@`3=PUkV)i^tnygFiBpDXIHgu zE6FPTvIS$MighEVnr2fF^;SMo4`NFMINy;dd9_DJmxWqeuH~%^6=C+enJquaV$Sw* zX5G|czAXV&)6&Z!S;#OWT2Bdc0){}gU|_q;dfdlUIu?OvS424%z>L7ThnN~?2r&ia z75FJ_h{4VgKSE6@cdHVGMGr@3Ao?Y9;Hd<_=T_LfLJ?oE65iI6|odzHz3BPLP|h7(}(o~B!fydb~>x*AF$o-^5kfepKK zw>*^G)^;(fs2?VUzE_H=rwnA4^4c%?-BDUXuFFO$N)hN~z=)pqev<&dwB>zKN`2-_ zM!IS$T~So&2zgn=t{AN?+*lL2tl?7ZYw8*2E2ym*(;L>~P#g^MGpIYAj{%I(E zYf%Vqw-DL!U?fh#H*+j$Cy#c8cp`9_s%4DsY?YEN7})OeIoi`3e+G0#*^g>qx+hsF ziLA;{%IoK)ieDQgeT)P{qTUJgGN43{dw)s*pH+D;l#-wM5(3jCog8u&S9P;iYG7Yl zNv+v=vng_HWzbJ6wF#+Pc{F_ZG&o0l=np`^`0*gI4&xOoW)h$Yw8B}rIn0Adu)mTG3Wts z^;Q=Moy*0i!HFu{FS(m+`orHaiOnAU;isXrPmI!gh=P8ZCngFa4w7;DXu2t>j98{> z8KV$w&SVP)wu4HHJQV3|m9kYu(dDzXBr9c^^!b~pB$U^c{J2}vz7$e|?1>h&g=N}L z)`ZJ3%uND(R)wI)*5RkwgJJfEgph?T2M)fgj*w$Mw*77T0;!blz} zRM(CSl3cj$e1&eANWZa;(!W*`p}Zc+Gp)NlN_T`9)4Hp+@K)9)5gEo5CD#O<3f?v? zv|ASC5%?G}xtkFAltoUYU-aIza0Iy(vqR6RCoF&rU4OiYATn7|a80eLI6oBSlQ5XH zk_3?mI9QkNU-pkEr6a@e7gu$OIxu(sp-)dYH1&cF#0N9Xtc+Zz0xY93vn<0}GqnhD z7^JWmNhPGlgy{yt~1UFHsMDmqi=e#yX`MO<)-l zLE41?Jjxr-RbsxktPw%b6F6yh_}!@jNj>9gRmdlHlFD7Kbw`&w%GME{JqS-t51LkI z8A3~{E1Nr+yH2Dm?y#h@o$jh!?sAeliL5N{Fe>xAE1CLZ$j^iuI8EY9-NE=Wdp!-= zIn6u3n0W35JJ=mNv$b~ML2u&u$j^aAT3ffmI)m^aw`h{|oo1*~!HQqw8of}RVil<+ zpL~_-OEzca#DZjM-_DpF0=#kKh~5hy$i^!}L6dF3F$b2F(vgJP>cTscPiD{v(J_WXQ^ZWR?!_7SY6dw#m^M&FwM*Y-# z`GYGL^(L^|%DLmI&`q&i?+B$(Tl7&D;%S6#8%)JC)e_)4Z5+LYn>DR`;b5ErZ1-Fb zI(+9uC#2F!yvk6(dc^}q%_m?WxZG4ISS2YmbWF}HA!L)4^_JOP)8j5`=uS)vb@eH* zt()KJakrG>r~@~1cpv;RPXCP8(or==bk4~;u59iPk}*>O{wG~03AJ1T+jO$Nv@9i? zNE)Hn2GfSQ$T^!vZ5*AA+w0GE>Fjd6*P(Xra`XWElh&$r zTK>WR`0Blh@6QH6+85wgk9KR42p%^zWV$1Ph{O7~Bp%Ky$>VdEXNJ4v-g?#TfRo#9 zdQ4fQ_^QhS1ow2s8RIn7gkl_0JX&&u5hEUlYrOgnd;64mg8)D>Om*;v|Tq?4_|*1 zQM^$|_Gk!o51f;`Rp2SNqN;eZx1T_^F%`=N7Pjmz-iLXAHK7#tZ^CPE%*W8_)0-<} zbt$Rtp)SX&#JJWW3W3knR9xYf?+*V(Jome36HIyae%2fMyNp#~#CJJml#S@wMtHvV z9ZRvkI|Xe_#rA%O=Yz}Lsdpr-I!MOE69q>-;5+v(e22I->SViSX?=)8|8_F)oV7#5 z4{Zucn*;E|8b3oG;Kn7YNVPfs+Z><>N(a!AEWbI~kEgjKpX-hVwRJtvor*(}OWk3V z@@sR44cgtEZFPrJ2`qDoyFazg-Jn>jyHSH4clsgYVjJCsDu%IFyNh}w*`1d<^c4K> zui#)*Z@9eHy^O$E<~wj`vMy;}RkUcrz@v^gN{jEj((aSZgSxh5jc)L@z8!8@DwVE; zfk%Pf;YLnHK^Qlq*hFfstm6e2mh$>N87%^d;H^DXT$U#v7S`_R{u)rgTDO0c9r;I5 z(;MVAq4wki2|?LiNAff>bk(2I{A29^ZCow&ITGdpmC@EOEZ|?{_tM8oih_c#6?%Mx zc36}vM2hW>sS->{^9gp;}n-#i7Asp&XK`Mp5lW7->r$p0BT__;#G72~KvX64R z$yFv|!;P`z#3GXkYEK1d0^5h3D@P`S zQERCZHAa0yZXI|fpBUwOcS1WX3N2-dc0E4s(v&*roj?+T4 z4z;J4;IIu-=Q`5y&##T(ptT-UA4F1V5v5wN<2R9 z7WIUf;*lI|=ly?9&#R9K^+ zj96egf8q_ScUQGTDLGipCDMsk+6-FmEv8F`MLi*==AJ@Yv=KE6|G`)-Qb`3=Ek^!S zjNWlB1qH-E%owJL7{9iyn@&Qg!4{)c&lOh`3_^D{Rfr0r^+8#R_44kL{rf|rTB+NA zFOI4)ig@=q(jWi++5`@*g?2ebCsB8jTlGg*zvOV2z2~@#3OmlDGC5kE)maT%?rkw$ z%WsiUTp&&BWv{gQHjP!Kk_rkeV~8>FCJEghC?H-2PG{>~ltGyIViUJUYq4F+@F{r5 zPKbdZRI}q&%97jOcU|vdH%IoKfZ^-I+dlq19F?sT!~YO1{FrwK(Z`)U@wfx2fJ~~D z4y5PB$h6*_V^j5(ekTZ~>t`Ui6jJYXS(1N-A(cL~U|P z6ipXNpiJB8<>6BGVeY*3k+>0X59He&0T>1krYb)UOv6~gVeo5k!!IF5#Gaq=@p<)q z-yLo=dT#>bh4Z+}&S$~>99qPE-wmWjo!}<Y-Ae8{GZakz_k-cdfIygj{IZ-1{$VTCS(CGi|Ud)M%4w8cm_Sw361)#`dbJw`P2zQkUiY^0j8uR@4xI3t&1^8qzSwN^5QwzG5@ohkv zmEH2;0Wdsfr2?aTI{T@Prx?)9cNF#^@$qZJe%|Aw z&gIXR^nOR3YpEYPpd{f=OE!3C;_GqO^tv0_6G66^ti?F}jeNS>)%a8T49{J%H(IDV zq52^#+9t}!SL8M(jIfBIMLempxL;IKRoAMNj!tQoR*Mybl2`Qiy4 zh2Cad&Tf~~Xq^3fkyZ=f<@GDMW{{b(3cM+*exW{!f$c$k9~IH>(K|b7HU-Td74LVo!26vIjvH9fXZ)%D<6Mw^xH>wo9poQIaAH>Xe0c+O&<9$yeldA_67gI}uM+ zS;iXsgzD;8sUe`6rPX4^p!_`B(Pp{$6(Uea&6OT>6;}=cQ^v(%$Q;HCJ2+O#leZJp zrtIC`V}@&0UUL`9>dX(@h5IN5;-J2t>+x}?I9~}yEIsZpIZb$v2jQMqPPX3NrB*Xo zd#jDjF2CMy9W3=pxy_$`Q(LVUj8P-bpZuHz4Ro3v+m`JH?LV% zrZt3A2b;xglneiLcSjsXxt;#&ZgV`$Qi=_%>SBnC3Jx3(Yp3|)39R4p-KJA=-J>JL zhO7x&$j|psM_7f(Bo+5}%Xdo#U=A{59aJ3_33j{7bMG!{?RZ~$q9LqNa$ zzVB*59+)3GG7jU;b(lVi#FRz?3+XcqCCsYM?%ktCG}uk2NWPPV`hRD`_Ph$WV~tJI2jC-2JG7 zlLD7IO%zn?C%TLKF3D6O@EOK#rI2A!BTL;VMkota*_KcC&)$~&T7Eqx+(b%3MWpf#9QshMoapegQ}E_VTo$xb}X+=vq$50AS;Q){UcDWh_7 z0p!O3-PD=lk%#V{LFAl_G>mjeZBiPjT1{&%zC^+C_K@m8FPqp z)?m+u2=U)McUVc(y}OX(lAU;%xe+It7ReR1&|*D^rp_V2&k*j zN&!jjLuTv~aO0NXe%o&4`Y@>HiYPMA7`LC2WCRo(j6h@L7&(4!yji9ZxGZ#=5OYWY zlNPPT^~PE{PoumZlIvl1oKpQ-&CmV1`?tnvDOriU2s7N9|M6Ge?~HW~cGwUh{^52P z<#zYSuXfj$ncF#0l+{h>&-=^VXn)Qo%Z%y!^5O!>uW^|<(;}d*LMv+|wGWxYau8H< zzwK=0iZH1mXI4$zeWp_Oo<<*4T%$og?0~XN#6P6M}~naH6%ioLB?hAUz%T z)9mmkP`_65bHAMZI|&(CC2MTdBDgk%Crw&0uW!C-FceP7jtm;RlM<%68|=s}JFdi` z%j8A*(9ca(&ZL&!XO0vqoYvx-{L6A9e~imurZvTshsmAjtViasdN-SzGuVz{c;=I4Cg z{hLDP*6m-}DBN!GaVO8k#~l}rF(d&$lEL?&@b{f%_i2&4g&da#mwUoeK_maXqm;tZ z&pQvl?_5HD^hxqfIA0U_x&IOBOqv>+QQoj9I_raPiz=UdHa?R3th<#H3Tm#HNcP8y z_+YR*!PdRVyG{FK!&ewJqzLUq;A?uKnR;Rp;pnB5J#BYk#={a(;Znd zrTm4ti+ZHHL7|J?1=qQwIzVM}2cI$$Qi;)B9BG6lXdLeH{0-zTYMQ&?1b3lh+ui7x zcDH(1d3Uos{g0zpFkZpZl9z+iZLh(i=V;5EzG5pxn_t(ey>vWr!ITU5CM}&Z2J_mm zdFlYIv$*emK=c|gJvcs~v8X|1rGC?V%2#P&9VHbRN&GJV9@~b28d@j9YVBH+2t6tm zoqCh;V)7R>lblmCjH^?yS}_+BnuXgTN7biFa!k1D{D-X)9GX7D|GL>R9v^o& zPD&`5xx%*?J%rC0g)c1^c=vSWqq54r>EYvi9}}jj+RhjC%YVkUjiz-1EZr7_7IK`$ zQ@6=@Ex2FMOma^6$AR)mqkt$wnJM(CJ_+Dg-1iDucnj8}h`k`tS(tQd2uy%>23Eh? zSSgH^7Cuwk@I|XQrEQ?_Z;JQsqR?G@&F-QwD=&bd_?!Yz8W5xh#+@>qKEwZWvD>%Y z;wYg`QG98+;KBK1`hl^u#N72}%fh;ts%^ih^`EhA4UrG~5lqyC!D>}J&5tk1#}uj9(T(zHSXpa{^=FPFCnM$Gf5gI5?lrrJU9P=_9fT#(h)xwA2ketWOmf)KbVrV1}Or=(0r_9v4)6%Tk zp2uq=9!=)YC1_}&W-Ss|j$wa5S zW&E@+oz546W&d>bO}eKX`j%T?w9VBo#dyu!iO+$O-h&6{fr(t%H(h)j<}9WxrYdjm zBjgSFC--NH@n4G*GxY4JmZ=kcV7vx;Q9_nR@(pICI?I^pE?K}BLq7@~^>%rNx zM19LE`L7jPpKi&5d$~_aM+MEnzy2jl>ff>LQ=G~+PzHBVUUzwJ++|C&)P2xuCxUG` zr}x!2#XV`6a_f7zy?!aiE9YpsDy#G!JdfFfiCpfReB9nk?|Lv$^WH;JvRxnjc?Sw`e8&B_ zxs2{30eA8K;$wGI6H&O;wl3tVxb&NH+}<%~R}Y5q%BA%U0dSR`4J-_TtxTtx8w~3z zRE*zQ=6354>#V@6P+jr>uY1|p1_!1nUon3Im z8-d_4DkihyO$1_bJ5iLDcOxO-937CsBZQqYlK@0g_iA?#S74>mtzf~LdJiCSQ7^QYe8x+(OA8|<1xA>|h$tlSX59MhrRG(aQj!Wn zP`9bL$_{v!r)E1Tt+sZ(VUx8M%2MLz`{S0>Ps@v`L?s<#uJEF38Ma$j=Lb0)ew$#I z!yjd$?iTHv_V}CO2hSS^9Degy!f{^?Cz|dgL%dpe83kj#Jnr7xz2lBX=s`G1&B05t z@092MK40rw!101Cml|@ve85ZRd>E?~Y`M zQ(*gLZl(Xn$K5#*Qb?#}k0piD+2{W4uk~$R4i{Y{3nHoQrF?)(oB}1~k@<+(za&{U z<4$YpTbfsIlv0XJn~@sPCiNuH&_dFa(A{9Eu0vsUUC=#rPDUOKQMZS!Iuw~$b^^4+ zMy61YVv#BcGGu8+>{wZ1rm5}@R(9i#=t0xf!Wnp@xyQ$yM(8`3rk7?@cTHkMw>oTp zt#9jcxagu`30&JtenJDrDNu?$QUT7T{*lC4E|-tAS)XyH-1NtB9;wrmK;Q*S@st;# zdlpO8YcXeU(>>eyano>}crn112GPcKDGnv@V73yH8gheq`A9M=0Deg$t(B0slIHJW{S&$I1N(-8H zDi@r?r$jz|1prdmSr$|#_|tQJTMEx|N)~rZ-YzdaiK=WYP{vMB2;;wIw`2`D>Mr`r zW9y9b{`|O<9y;w3-Qx(Rw?TaqPDBgedI5V*-T~|2`EhIYwK+tkrDJ~jHUS{w>tE^x z9(SDY1T|6pyd>+nmLyCO+%F`~e&SRjZPGyl9Z=JL-wxKnSubhx#W9|-Q_ z+&{%xJ=ZsiDVLkvhbeGu!?c`w67`l(wMLld=4KPwhQ8lr8UkrOxf^ghxsiuocb$Ko z-xx%jJjPklTvFc!Igj`*KJ*=rF~*$zgXJPjYy2YzIsgBUF(iY%*u*6E$+Iw(49(>phl-VRfWY}rPE#1$X%4fU6juq zoTX-Tm*sW$c`tRB^tt1n;*RvVBOUI#=DFip<4%3A$6fZ1b?3x&+P*DMt@gdYm zPRyo8LTJ4=CHx5fEtIE9&|pNeH>2AUiznHQnB|A~+lyn|IJUI-PUDz%qVlnuia~o} zrphVB=LL_Z{a+{tC-`X&ocPq}vY#owe~}tufk=nKP0;1z<4!7RC7K>bElI^VC_E|A zys~?PxPoU!pjAoRA1A_ww$cLOeP;r^Da4i!u6OGF zPM<&Uey3TmEdii^T(mmnmDamsHAF#~IGydLs3%)f3N3gHk|LItrIZTE-j@_?k(SEN zOoSrD;3rsCRGKg0oh?PKA;^}ObDMjbL)C&0HDV_s?W=e?4xOy2o=(xUyg&GS>IO7M z?ffWsg_K}Za0SndK&z70fBowh`9noO)MTZB{NVg=kQ1zS==V$n@%5#4g)UFC-9Y7Msn?x zXL)=4<$-fA_)sHu6lpoGtq&~8zJ4YQ#}%x%yl?Oy$WQ@FM$G_yx3s#)y}4(%h@>KH zZ!5x19XTM$AB+ePHd&g0zHt6W;RAtP;Bn{BFMI&l90!#XgX0>S;7;}v%Hxhvq}OGp z6zce9#p2I9JYoz#@9_Bc*?Lh(eUe{D;W)Z2(;O|=gRw%P35AyC6Znx??Bgx8PaP*K zk2FV=4gSW#Tv5$|G;bpqp+ZXlIlh50E@WBWCvS(nZc`oVUjsYvL@s~ztH*tJm9Qx8 z9)GXsJnn*Eir|)evSZ^q4u~oFzVDh(uVdLA$$F3C|PVskz(T#rC^v2vfZ7BnmXS6}-?f&dp8u3XNP?AFw_(R(U1vr7cp9m^eX769$QbUL|Hw7fusbS zMv_#b;(fFh*AXg^X=$A-SlJ)AC&neBSKVRtTsWsmhNXsTzRzy*Qm#G0$q`h<1=c)& zrMPD9`HYng2a}dbQ_qN_+T&E?3WJ~fayJMo-X-fJ-%ynK6f?39#MW?Dj@D2eirN+k zwd!^hOrY&m+~!3tB%_ayyC3P_j{|0V3WJf5I^0}hipot@ClEdlGmeVYQ_We`Q$(0* z>ym{e+lUH4@MJ0GvxNdF>r!-E2lsS|nt^}UELOL9RU5;quoTX-8-8zEIJX29@qn$* z(BxB>=ya>WE0dm?m?AtC9gmz>ujN}nh9aG{(IR&wk1C6%1=wYe1N}$1vs~^(OsU*bb%OBgFyp8WN=tKwU8>UhBn9xEBvD2wpKxyg1!~qWaQHj%2Z z-&;lMv*)BaqoWk1)t77nAZ;M+FNDjA&@nXorV!MqWhj+{1wWww!VM8_Dq;$}PkbYg&FK_D-8pH_*eF$L zjn*;bkHF!TstPhS8`$wke|jozvs*G5rfMcpHxPj1%Jv^p(&CPKz0-%Vl%v`HeD?1W z1NJW5U@r1!JlUN{7F#A$BwlgjyuPpH6N*^l4UOEX-xmG)+y(2_T?bVpMIL4Mgv*N1 zS=L!MQfsNFLn*5Gdj>k(5XDU)nLs+?8-Z+2rwDrcD7CR+9*j3`jfE8x z4ng4RO#feo~GmxN;tfnzsb)# zSPI7>e*CYe1ap%}tKYcB?$LIE3hV3Q(cuU>57|l-3+^_hbspxrl0>%C`?mEbXVr;U0!F3R|h!cKo!v4k_r$0~Jm9?wsyOvpdq~E)EBgRvO%qBX>=gJ8p}+DD4hvS?R91$la@! zy9+wpy$Y&X>TYW4ob4{;lKMn@GOu9X_D(+VkZ!C-HcwYhJ-dHdfwRj+g4v}Uumji2V4ujyepIt8 z6(3|N(?9~i#U4ztNQJTBqHP$w4sWU}bd6ETc-U5#kne>dij)AhQMGFebOuzK;3=j& zoBr$mSD+{u6Um)4$JwgK?XE{U{9iKcA2WqKjit#P6I|#8Dn#lQZk=^`eB51V7kQE+ zi~xP%yd|mh^}c@~NyD0@RHst(;Mgb$E~)fdF?d zqa^r9HTPrg`Y(f`y0k^me8T>ayfF4;-a-IbB#;}ALo-EM9OBPjX%LW>?DIN;2^U;j zw#4|c1vLd}Wx1Lu7fbcx!Sq@$FulTS3h@}mk1cBIlJ8rFs0b@&YD6pVceZE! z{Z7|Px1^cq)Pg_~S8Ltjh5q882(|RNII3mnbQhPE@e_(_Sr_Hq`^gmt#Z>9f$Mq>^L?`0!`E0&ff7q2@2`cF;zF65j--+6zQ$zg7tg0A<*O+()mdKvwNi% z#TBm=n9Y%C+1AU3ZBbK5tCkqsR?PRWtEv*gT-cvboDWU1Y8GoHo#;;9HAZ*Ap*y_L z-#Dl><=@3oEkmcdROi(36AWD!jc2mYPNX8OBBV$Fa6T19cJpuf;73NCBv>97Hxnxl zgX?B$NF5bzbDqeU=d#U zB?W)flyw$va*uK_i>g>`4_)+e=ct*2(!F~gtn$H{TB9bo3p(9_3w^!Bos!Ehdc8jK z^Uj#@=bh%cCheIpPiZPTC^nvC@nV9IRctp67o6~=lSSF-m|!_BZYox1n56;lhOhp| zw_bBBy5_;K$;h1oSq?k-M=lF>C6+{S=r2F;BzMo7zB3v+eTZipJ`M^x_KE&)ZAj7o zHG_z-+sfH@2j#gYIARudi8?;b{Gutj-rW`@GFNe^@^ISp`@Wm=xD(l5>dJ7xhA@wh zo;j`t&swSY-YCZa&<9Tjq;TBjus9kCzTcbS8&MHG!`<0KcdUoGi?iMxQk%rcyL?LO7=?Qb`oBGt&xaJqF44Qbeoin#-|${ zA~6xP`3q5kdy+%zg-YXq@S6}ERqw2j*@Fg5X}8nQ;8_)fE`Z7CYs+SHXjD8!`SpLn zD}kQ*3F>0W1hs^dZe(=rbatDroA#vR@o|@&)j~H>R2`=CaPZuXbAQrQc25St0zErG zBjrWp79uC>)@YewlUq-j!U0Df1=OUljzXxBL8OP%db6GlPatro}iSJ zY>W@%@*1)9v|?l7$Gct-AwjOL5Z`j}}? zIvyW)o3nc8CPmfBZ}iYQ_b-~N?kNDlb6uKotWszHoUZa&3Pt_XJ z8R4Wp%k{f2I$udlMq?^*Zz=IvQDcuNbx#TE$ubGW*RH?teg_}fFg@K8(EU~_75}!< zU9%h)UAz%G>TkV}NoftZ2&maMX{^#loR!oVsbc39(r)kWpFks9|Mk7~WZ#)H{S6`z zIa#-IikK)WWt~|>TQFR%XeRNoJnoh9dnkr zS4!zqQhKj@TGG7bm01c$s7v_D0BO>Ly$80RB^qtMyTdzoRYvTM{&d?amuFan_kx zQrIhh+!4-pI2V=6=UtcfV!5wT@4H zdk-falMufDw(q2f1B9STs84g|RR4N~Ox?pipW0B8(cJZ&S$Zbj$IQ0$qK56^)9Bgm zxbNMiK?aa7wJ>M&m?G}^?)bbjCZKu|g2_g$lJed*s}x4dkVf|85W-jjGc`~clnA-X zyLnu?E@LRmJGkq;)?L(3b{F+)a~Jg#cM?}kcNga>aj@I?KzC>R-RZZxCGL1l(%~-8 z1b2C6x#PKa2gN<#-7G-w;~%_maNXpaxUkU!y%*1KB^?K{aw70bak^fVjZrmcq26E@ z9Y+ba0xia!5tSc=Qy$|@G|E(8~D6vH;rREaVl*&}pV%WQB z(UA(bdfE+1r@@pQlw4MGc^-UIFhuo1U|X?rZp7HIt}Wb%LBJEdQZ=i1JXMaF0vWM) z!*H*CJ=Fr!G?=wIZ_B=U=Ff?Bbgw!7ISxi`+3msNeQ6kDoimk;&khE6rLtWwinthA zdVJjB8#Vrk_mx+YjXLWb+MmIY>{7DF8r5=u+wzT^{CT*YKIukmMM^nxikgxFqZaF8 z$(m<|5ztSekn}@I4$9jw(GYDeBhgraUseobB1Y4?HiB-{O^;p)up{O|ioeVh$b|hM z{qQfr))P8>2&{N{lSsJMLQZxZ?{o{;Bun zuG%O>P&!BvL<6%heHgBF?nWK=^M}jr^hsaDR-}|Ar>LnYFtykyk{cd~(o&jRAAH&7 zpt=o{+D|MaS>1$2l&ek17DNoME{u)3=?1Ta6Ag4o@yry++Vt;-{}OC{;py6zPl65- zwi{N;9^TaNe=KpwI)0&IB@b$8N%5~Tm8`9y`K!$zd%x2OvYk70kg(mbO2<#>ch_Zg$AZP^FFjg8 zw@a}~-8#h?`40mlJr4Sb-nn^i3j{XGX_HE-sz#W~qvMQd`I|0b)L*EA%&~9LK>|m& zL87wKg&A=a$&+Vdqz?p;E3Q8{sAr2d&@ob7)*qhYZRB1>)SsR`ZgrD9L|=YN0ZWQy z7$h0e>R;^BH_8QO6%6CR3nL)7ipU^ zWcusP13nN6Bb!o5)e>okDvxpq8@-$AQ$!VHj(v*`BE^et3kkC&vKjH^;VTh|#+vx~ zg@z}dsi$FjG6z&f<#1U7k^fw|ai7lag?BJ~fhq{XAbNb20wTqgAR3b4s;Kr{`Qr}8 zw(WU`646dXngu$8~!N+pjTyv!8dyd~QDJwt|?eaZo z&&Wm}jPp<*-^!nsEy_g+ji-h#EtoBNoh=EcuFDAAd+gL^m#jCYs5k&lLQTWjVL)fe zF?EO2iKNRa;A#qm%2aq|CS+9>xvcop4Dg#}vRIdgE439<@=~~N7y~{lya{d)W)Lh6 z#1L2j2NTAcl^RZVUf8$$HJ53D2QXktvWjyTEsu-oJbs)i2;uKtVK3B=(IEmjcf665 zMuC;OyM?Cak)o^?$Ma3&`yRqj)U~5lE@G7loQU;%eBABx+=o?je-vW#UK!}`9%Ynm z)aWeT7g(`6t>F4HYiBYQl$fcvJ~-@_D1{4)ruAXtowOBG@=_cRVo-0TliPnqsn)J5YLOU=eS;e^rTD5v^+^|5LXUbb~eo!zJa9;7Y-ks); znld{VJ!1VH9Cz<+ad;jHK?6*;DD|Y_*IA{%)cVs?>^N>+nN}yu@d$q&CTyAaU~ONb zAYivb8Qif-eWkT{r+d!YXnLRHAqMqUdJ)`8m}!6R=C{hoM{!#eqaaq?a0+!LoM7p& zEUoF8(73YtDw!8()#~YR#{zMlF)lN&M3xIzus!SDY5u4wv)>dwV*T3Ej>pE``Sv3r z$lO1D6YoEpMY=6z6m_SFou8t*(NJ!Bl;wDYA8*yllqj)k&0;AEE%jo&-23}Gd8M^n zIZ$_hC2fv}7+oq?$40w~5%_}$U^oN)fEa>*wKVl@S6q%@smsz9%k)x?s`}bw-qXCm zF|NMfi9dmwv=`=Qk)3HB z!#89ji901O0b`;x*V4O&D*`N5k3T_PbV<@Vn)>pxMdG1;P`!)Xi}l>iXT6o_g1U;5 zDI>VJFEijCmOE5eR91Az5q>+bvlPtR%hF((M&&49K{AiDOZi;jaVJ&(affj^xN6~v z4glgGhO$k z7r08yL%#dhkG_kDe=_d6LA`EiV7N$;2J@~~Wazf$-7A%0Roq z%M=>`40xh`+jm45@~*^j+(}R%;c$r10267ZmK&rINSZGp=n3fyZlDR%9dQqFHS>N* z6v>Ef%%F0|vbe*r>FU+vE;-8`X>k|jai{lncokeA=19rQPH%*(}1{nyQJV**^0?rNKY zt#*7ebZN(8LhYWF0*R{%=?eOQdnx?hiXp$^L!3#8f{GVMl=S3oK1HQK1NqYr%t3rL z#a30DNX7Mbsx5_n)J_3CHl4I)4?(K=1R<*eY9^rN}~22%RDOvt)X61z?wwtv@`zklP|g2+KFiuu_l(KQ-y< z>XHQ)rU6&8%xxwD#t|Eo2|3m$u@tG!!LZEkq8#pCHFk%Bi#72p-d4s~_dYr9mThv} zo$r_96wrKqF-<^G6ncK>I?DEe2PGwPr5oc}aABrUQ_I|D0$?gNMHJJFlKP%P zs`oIgneLJ{cPMyKAkV)29T{WYzZ1vZdfqkerZt6-5?S;0#WckqX`OIYPV{DcU+mm| zqyPt8Xwscpbl4)k7N+SFVU=cXsV*5pYgG~VwG*{3#Cu^^K+P4vMza0BfZH{l++iEU zmvk4o)Pj`AlkOF-f{U4Ae2%#{rXP5})0$9tH(P%BmXxX-5QgP-_u77UNH#6dcq6n` z+}rX-yt==OR_aVcr1FY6;_2_7~SgK&{u!4=m~T(diBD*^jLY0uh#{a%=Cec$?tT zc9Af~YB_uNgfRV3lIpBBq*LG_)q1nH?t*4__?~BFfA8EyvgHu7Pi@sd2V`6d$j)gk zDf=U>ksLQ>DW=Ia(WiC7RsCv9@3}i0?x~mf$W2p@LraW<11nWX5l~M*b(Cg*e8EW~ z;vjdcmDLi)YmrP66X22cdddk)dM^2&)r`uL~*r~uiYBXzwYKR z=mNCBa`4%&yBn5`17zYOaVBAUDd!TJb>DY~oj)_licT-X7!E!P9vU-5=wAU2Uu5im zu|MWJD)m#rrYgiCUOhv1QPbQdNAB2npq2Cmm|$VKpjx+mC$fNe4Ok%Wr*Y?EgK?N# zVij+2L=PGM8)4j_5fG9bcipfVvls>x2tq*U;U+LUaF@s7uJ?L(dQoQVZgew46Wn$A z-9@?Fz2tzH-C@yYckIWw3odj=n%qgjUUxk>4{fo#EUP>6vF@@KyHj<}a2I@_yHk0) z^KMVaw7XzY^!X>^hNJl~UW8*`&z7&=`JKBk0E3A!gG>IRmWo9gD|#b#aJ>{K=iDrM zSLa|ix+acklkad+onV`9n39&iNkDPAoP3p*%)x2#dTpPCq7ja#6B@sTl2%_WHrX$_ zFv%^oq(Y}Do|zKlnWYi?PoW|O8Rn)FVi+Gu6F&V~NwmXjQ(PGmdKV|u*(okk!G z>Se?45iy-t*e(Jz6ajKK)Yd(Hc{J4D8^0}UNGQr$mXz$-24fP+o@kd{A1X`aoyc2} zv1FGJrVt?{)zDxt*&+&23}c^=nXxs)%)H;f`JUhJ{QkS=p7Y%EdhUJBJ@-8K^}HVX z)(7<-%2mSm>t|n8$72H(l*;3Ja#gA)j`eRbnj~o=C!jWQ#tYugr%e@(AmQA3>q82$ zio933yFO?{)k%b2y#bmJXyHn&M+6H(g;gbF9tb&9TSzcWWS!z&H>|5lwqz)pX}>^W zX^q}@-y^=Zs;P>4EA%woJ*9uZt$gcnbwBj9(ZtnY<3f6L=(+1!yav@=wSYi^6fHmd zjQfj%h`_tVlRXPfy!R!XajE?>^855xD0V&X$TOc9ru=Twe1FGHVr<$2qu69Ugj)_) zePCUnz)#;%=V9f!1C!f12_r8*?3B7V3wNp8AN_~9o|R3t+vsbr7|=?Yxc&D(x2$2H zT5ECUHVq2zUooMG3?Dz%7$jfCWAM}Cb`C;GWwxRHRkfjJJ21HTz3E!)Bs~qs4fzq@ zzL4;92~h6!DfnZub4PIKjk2XX>N{9qmCV@@%vw%qVMXBL9*%VL?Fu2aU@_WUXY4sM zQM*&8UnpEnaZWXuNN^PYg|Mr9*I~3=4ak*E9Dn_?NqH*I(`%b8rf_V5j&QMZ^+6T5 zub!2DxlL*NNbj<8G`e3EoEd5lK0{ru-XF`$>d3cI`Q`RpPXtxrzoHvq@+{|EQ!U}R zhkN#D;B4-j1Sx78JAB4HzAYbktr(&Z%uINAYCH(hmiH66kLLua%anB;!6bAvJOGUMw zi;2Aifu_zpxLkG6W-PaPu`gVK0bGE@!!e@| zi0_no`jq3Cmyf1S)lsKsSR`hIY8EP}?zJ6W~)l6Zt zm|dS-gRbbcyp|OAU<@a6gs7mjw`@iF@~b0_XhFCi#N2%N~n{aK_uHtyzpiE$hBK zGrW?YSJ64HT=HSW@NCQ30sfRI7FILaw0gK-R9*{PuT!<#btkVH`$2rard!Sjv=O=+ z5pHTw9V(|P*5m#~8g=jO#+6@HVPEQ5es>cU>!a~MR465)Oxl%F=jsviqAon+HY@dH zDDmj<8$Xw0oC=yFMPE6mAp5Gt#oOZQ4(hzg659@mFg!I|#hM44WoR!`iM8W74KCcRqX--aB z?9(;Vz|O>Jxiz`Kw|RTwsTtyS(RSzUepURbG$WpFkt&)#l1;ht^FaIayxh*Otu4?9^k-W2D(pbX)ph}Ec~{^;go@KN@wM!{K$;P}9`24+h!uVcfAF%55&+lbFl_Jv46?LMQE0(l?s0Kd+tn(IWT! zhiHWSsL73REEfB&@B|&M2tDic`F|5eieu=mgSUnOr=JMLCQ*}nexr>w<>>vNrd^MZE-ue`u16Oy6h z#Ne!GP4itG@6z4Je~ZLhCaZ83jPh5ud_RiQWcKdSnBuwa!_k5-#z~wtNgA+rJ?PYO z$-Tn$edj*GMny5>Bj+Yev0*6ZqaTV8#A&eaZ1hLZ@`&FHQ$JN_35KhqzS9p<)Gq7a zmXD=-xdmC=~cJ`t+9ehF&%+xyd+2cLG+MbYkh9fw= zj;RuMDio1maTnHSHm0@CX{l; z5|ge04}m|&UBtThFs+BW!l$|dNVvmXe1Mo~7#BMKC*5-^Yx;+ zJGE86B7}dI)>{2+nQO>Hq~Mgm%Jn>wZLwLtbeO+Y>>OR?BTaEZ^sBp+QE&ELjmb0xKVkYrgDBoLC&b- z>usnD&klW!ycN8%^fSNlT|tifsCz?|i*VGjUal{)MP8D*Jsy8eC=ZIHQcN)IoZlNx z*8Jgah2)UI_^l_VW{ZQVp@@q`1K9ru;@-yb(8k&9)!Dfe{*F1xPLYB8wL{v26H#|B zsp`JFs(935mD5)3_V?2h(6yk{&Qz?emTUtNoDf1J;u^|>vfAu#o*F2yMWdGX$AKSTqn+t7dBPHv*PcPI z{Xc)USwID5_r3LJnwk70qC?%iY{W2KTW z*xWy0p!KiGYT%x8!*||5GyVO_b=wrJD;l4q9?aT3&AvvLW6xp$r9e5!B`wF--NPN9 zrdb;1sUf=#n|K(0zwA8>Qa2N7wp$!^YH0s%Gt!-Vp*NUjp&d zT1+BqJ0WqlF!FhvU##Lg_xX-z{!!{DWWv9naSXM!AjyYw($X0?t>?IhMHC+<@zkge zhb!GxY>F6MPQSjCUbH~D%_00`AT|z?wd{B*?>5C>ELqk%i@{wePMBgZttv7*9c_2s zU41Kg|E{r|miVrjh;~QnI$C{0;=T@*wXJ6u<<=ZJH8q2OXgmtQ| z+X(6=%^jYcq|Zvnr1E}o`QMC!XS^le6T?Qsq3ty7aA+k1*5iR!T-b}syd9oAl{ygN z5z`*Us+N(M*G6f_&Pdh`@5|`;5~pNY`(Nk&&H7mXr!20s62FGG52bs9PrUF)UiG{- z6QJlAh+%B5|CEZ14$rS!^B9JsnlDY&5?)u-JjURp_exA4`L}qqU$ng1&WL^zmTg<` zT-WZHJwLh|APiD zNc54m0oA=WO!Y52Hy=5og7h31!0SwzT&qX6QBbn>4~&p#Jg+q>CdQl6<=zgC2U5W2 zw(K=I=%D~fJ6q9+MZ3^GWc#A_LkE`j@QF{T(Z#6qGe|}ma#z6p4Khj5oA`_uj9W1- z$gZHkBu=YdKDIg}38%te_AZbzxw93cmmmy7m!%!Mxpy{W8%-l+b@ah6z($va7aN3K zqnGdt_>1;ekW6AdW@~dSg#;nd2zUv-9uiXye<4!w`oGm{Q36Bla6pqC2b#5d@pRqOM3q}bHMXqtbctfv_PDGWR9#~&S@ z!%sed)w3a^a|{xzaw`}OQ!oiTS;3*BS2IDQdz!6qEIMMDjrn6P0WD)*a(Z3o%wc-f zJMheqj&*7*3Ql%IDhWdJ5%KG!xe};vQX*^mY2IbnX#w0-CqN@ep?~vI+0$@eyA2c1 zeTE7fwAfRjdeHVUc#r}w!D$z{&Y8dl#n3CDlZE)IvJS7IX<)W;BUEo?FeLBd19`&h zR@=_#f8ct?JQ1!h!vLdQdDBKnY9;{#Y^i$B)Bli*KQKJ62|NCPFP`}KV61T)qOz{R zW7oB&@gw~mta>&=l>+Zj*@zDNiuVv5Iw|p5&mlhP6ig348utheld*aS-qeALn=36@ z^c1-|{zp{Ol}?DB#Pj&gedy97yWV!cq07|cl1c%J%e4TnZ*6~;%MU??@E-VgX!#Ww zZFw0hDc-(;2adE9&g(3*w4WYLQwleaH+eh3#P^L}MdCCs?@+$wBEUk3e!--JtHr)dpAI3iX#F6wI`Cp)Lsb*#a@ z=1v<&aw&hFz{=od?%fn2HT>h`xDxG({5P*Gw&G%NQ`Tuy-ZEa&rNR~uKk>J&AtV{J z5$E2)kOlr*$A%1j3NHr7OZqXCGX;kbA(kdiLPcF}aY% zv3dSW5}7h%esroR#b$pY^XvPZLd55qjL1r>ch1Eb)u*>*@yKo0L%W0WQh9s&of!Ic ztR_a9ew+#)&mfMDYx2ay?Mx42I^!F1Pso_dt4R8bSMM#3n|sRNy;rsI9)y1fInWG^ zLXAvC9sJK-&Od}Hx%V&^;Y)ev`PHMNEsud-RYdL4${79al zf>hD50*3T|$_an-#T_bdS2wXK{wSZ8&irg$B~TDSXy8dt)wSb+#*eM#vH#J zA3qy66N@aK4`q|sbCo1!t0!w(@t_TdLyU<%p9BglAfZ;m#)vaggP?4x1nzwoPX|DO z3IZL#b8RRps+4QCV4$YUptw@kmZWWHlZ0e~T#vWUA&19&$iTCfrUL?%YOZ}^1flH_ zMc5;ZOD0QXT|IpxAqa)7mK}T zR71NK(jGol!-Fow*kIDcjBt@}V%S}Zqh5J66(Bs`q|+)SKzjQy{xe}51C5a8Z=5{& z#<}Kw=w~c2DFsZnB|e?TGq~Y#_(CB9YS`6=4uZ$_mNkP=I9- zLqokFLtl?ORjoJVfq zBOk+QuouMS+C)O0yQGuDgHIWX65rU!P-w`bfrpEra*0i*kURv-cg6Qnjp=YUXM3pK z90$+B^O?kXlnLZ)3jy0I0 zW3- zV3^3ptzmHRj8XhU3djoY!QO_Vc84~H7<@XTph62sr$WUfB#l9)fa9FS0CHZ7a~Xl3;-V=#F|R2)JDiiP#J_}pgQmu;E6`2l5*{?~3@4<*>8lT63@(rX3X#BF%n}#}>4)^d z#C47V@sx4zt-a* z&h#htko;`LII9Z6E@ubqz_Tkb5#>!CW<$t~Er=lZ6#fe`Z~a9EP;+$dQCs1gp&Lj* zalhI>BnGTD0bC%s7$Hf4r`H!*m|1ASe1RxR-AtdRx=?21-GYGgzQFFmOIN-Yw=$8y z4mdG^sAU0T)9~sRgue`tDH*Nx9Jf3@qhT~e9-K}N_|3uU!qWZ(H@`^YxPTJ)jWmIJ zB9Cn#r{d{&HmTyh;(ElECmqgu#Kc=Y(qYl^gV@a%9Gu!_cMss52D4|4l_7BJ6Lk}JVysG^O?AFe_2%H}OREDL0k!|sPw$`iJgN#_vrPH!|A))STQ~05?qF(L z^m2k*`|&ZLRZ~Ow^L)sCDXI034ToAu+;~2eW=!tVL(%0k~F>^Q*K?bNm5pup+-J611Oqav?nh<}i$J&O@h#9vv2~a`<;$>`) zyM|LghYR2xcOhOj>R4$wnj}FxsUiFLb$oJq=vVzh#9r405=W;+B-%{I`jd#&^43xyZU0Zp3cUPxA6Rt=+fR z|8eHIhgO6C?R|!m!a~f!^WTEa>1I}di$o8S`li{)L58fg#uxSRDx<&Oip-Rk?xrI? m(|BfAI8_(hZ3If>)6^T({QP^?ts!Ne#x>|k$DTB8uKxqC!gJ^V diff --git a/images/learn/messaging/native-token-transfers/architecture/architecture-1.webp b/images/learn/transfers/native-token-transfers/architecture/architecture-1.webp similarity index 100% rename from images/learn/messaging/native-token-transfers/architecture/architecture-1.webp rename to images/learn/transfers/native-token-transfers/architecture/architecture-1.webp diff --git a/images/learn/messaging/native-token-transfers/architecture/architecture-2.webp b/images/learn/transfers/native-token-transfers/architecture/architecture-2.webp similarity index 100% rename from images/learn/messaging/native-token-transfers/architecture/architecture-2.webp rename to images/learn/transfers/native-token-transfers/architecture/architecture-2.webp diff --git a/images/learn/messaging/token-bridge/token-bridge-diagram.webp b/images/learn/transfers/token-bridge/token-bridge-diagram.webp similarity index 100% rename from images/learn/messaging/token-bridge/token-bridge-diagram.webp rename to images/learn/transfers/token-bridge/token-bridge-diagram.webp diff --git a/learn/.pages b/learn/.pages index e635a052f..774ae754b 100644 --- a/learn/.pages +++ b/learn/.pages @@ -1,7 +1,12 @@ title: Learn nav: - index.md - - fundamentals + - 'Introduction to Wormhole': 'introduction.md' +# TODO: Product Overview - infrastructure - - messaging + - transfers +# TODO: Queries - governance + - 'Security': 'security.md' + - 'Glossary': 'glossary.md' + diff --git a/learn/fundamentals/.pages b/learn/fundamentals/.pages deleted file mode 100644 index d3f9bf36d..000000000 --- a/learn/fundamentals/.pages +++ /dev/null @@ -1,7 +0,0 @@ -title: Fundamentals -nav: - - index.md - - 'Introduction to Wormhole': 'introduction.md' - - 'Security': 'security.md' - - 'Architecture Overview': 'architecture.md' - - 'Glossary': 'glossary.md' diff --git a/learn/fundamentals/index.md b/learn/fundamentals/index.md deleted file mode 100644 index 3d5e222f5..000000000 --- a/learn/fundamentals/index.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Learn about the Fundamentals -description: Discover Wormhole's fundamentals, including what Wormhole is, its architecture, and the robust security measures that safeguard cross-chain interactions. ---- - -# Wormhole Fundamentals - -## Get Started - -This section covers the fundamentals of Wormhole, including what Wormhole is, a look at its architecture, and an overview of the robust security measures that safeguard cross-chain interactions. - -

- -## Reference - -
- -- :octicons-list-unordered-16:{ .lg .middle } **Glossary** - - --- - - Check out key terms and their definitions within the Wormhole ecosystem to better understand the concepts and language used throughout the platform. - - [:custom-arrow: Get to know the terms](/docs/learn/fundamentals/glossary/) - -
diff --git a/learn/fundamentals/glossary.md b/learn/glossary.md similarity index 100% rename from learn/fundamentals/glossary.md rename to learn/glossary.md diff --git a/learn/governance/.pages b/learn/governance/.pages index 5da8ea2f5..bbebe4687 100644 --- a/learn/governance/.pages +++ b/learn/governance/.pages @@ -1,4 +1,4 @@ -title: Multichain Governance +title: Multichain Governance (MultiGov) nav: - index.md - 'Overview': 'overview.md' diff --git a/learn/governance/index.md b/learn/governance/index.md index 230e565e4..a44c6e8e2 100644 --- a/learn/governance/index.md +++ b/learn/governance/index.md @@ -47,7 +47,7 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove Learn how to get started with MultiGov, from evaluating cross-chain governance needs to deploying with help from the Tally team. - [:custom-arrow: Start the integration process now](/docs/build/contract-integrations/multigov/) + [:custom-arrow: Start the integration process now](/docs/build/multigov/) - :octicons-rocket-16:{ .lg .middle } **Deployment** @@ -55,7 +55,7 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. - [:custom-arrow: Discover how to deploy MultiGov](/docs/build/contract-integrations/multigov/deployment/) + [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deployment/) - :octicons-code-square-16:{ .lg .middle } **Tutorials** @@ -71,6 +71,6 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove Find answers to common technical questions about MultiGov, covering technical setup, security, proposal creation, and more. - [:custom-arrow: Find the answer to your technical questions](/docs/build/contract-integrations/multigov/faq/) + [:custom-arrow: Find the answer to your technical questions](/docs/build/multigov/faq/) diff --git a/learn/index.md b/learn/index.md index 4f5fd5e73..226299153 100644 --- a/learn/index.md +++ b/learn/index.md @@ -12,14 +12,6 @@ This section offers informational content on Wormhole, covering its architecture
-- :octicons-book-16:{ .lg .middle } **Fundamentals** - - --- - - Start with the basics to get a solid understanding of what Wormhole has to offer and how it works to provide secure cross-chain communication. - - [:custom-arrow: Get started](/docs/learn/fundamentals/) - - :octicons-inbox-16:{ .lg .middle } **Infrastructure Components** --- @@ -28,14 +20,6 @@ This section offers informational content on Wormhole, covering its architecture [:custom-arrow: Understand Wormhole's infrastructure](/docs/learn/infrastructure/) -- :octicons-mail-16:{ .lg .middle } **Messaging** - - --- - - Discover Wormhole's messaging protocols and how each facilitates secure and efficient communication across blockchains. - - [:custom-arrow: Explore messaging protocols](/docs/learn/messaging/) - - :octicons-people-16:{ .lg .middle } **Multichain Governance** --- diff --git a/learn/infrastructure/.pages b/learn/infrastructure/.pages index 0f9a50318..636098c56 100644 --- a/learn/infrastructure/.pages +++ b/learn/infrastructure/.pages @@ -1,6 +1,7 @@ -title: Infrastructure Components +title: Messaging Infrastructure nav: - index.md + - 'Architecture Overview': 'architecture.md' - 'Core Contracts': 'core-contracts.md' - 'VAAs': 'vaas.md' - 'Guardians': 'guardians.md' diff --git a/learn/fundamentals/architecture.md b/learn/infrastructure/architecture.md similarity index 95% rename from learn/fundamentals/architecture.md rename to learn/infrastructure/architecture.md index 1baba9b8f..2f7c98231 100644 --- a/learn/fundamentals/architecture.md +++ b/learn/infrastructure/architecture.md @@ -9,7 +9,7 @@ description: Overview of Wormhole's architecture, detailing key on-chain and off Wormhole has several noteworthy components. Before discussing each component in depth, this page will provide an overview of how the major pieces fit together. -![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/fundamentals/architecture/architecture-1.webp) +![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/infrastructure/architecture/architecture-1.webp) The diagram outlines the end-to-end flow of cross-chain communication through Wormhole's architecture: @@ -23,7 +23,7 @@ The diagram outlines the end-to-end flow of cross-chain communication through Wo ## On-Chain Components -- **Emitter** - a contract that calls the publish message method on the Core Contract. The Core Contract will write an event to the transaction logs with details about the emitter and sequence number to identify the message. This may be your [xDapp](/docs/learn/fundamentals/glossary/#xdapp){target=\_blank} or an existing ecosystem protocol +- **Emitter** - a contract that calls the publish message method on the Core Contract. The Core Contract will write an event to the transaction logs with details about the emitter and sequence number to identify the message. This may be your [xDapp](/docs/learn/glossary/#xdapp){target=\_blank} or an existing ecosystem protocol - **[Wormhole Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank}** - primary contract, this is the contract which the Guardians observe and which fundamentally allows for cross-chain communication - **Transaction logs** - blockchain-specific logs that allow the Guardians to observe messages emitted by the Core Contract diff --git a/learn/infrastructure/core-contracts.md b/learn/infrastructure/core-contracts.md index 39bd30c9a..3ae4e8947 100644 --- a/learn/infrastructure/core-contracts.md +++ b/learn/infrastructure/core-contracts.md @@ -31,7 +31,7 @@ Below is a simplified breakdown that focuses on the role of the Wormhole Core Co 2. **Guardian verification** - the Guardians observe and sign the message independently. Once enough Guardians have signed the message, the collection of signatures is combined with the message and metadata to produce a VAA 3. **Message reception and execution** - on the target chain, the Wormhole Core Contract receives the verified message, checks the Guardians' signatures, and executes the corresponding actions, such as minting tokens, updating states, or calling specific smart contract functions -For a closer look at how messages flow between chains and all of the components involved, you can refer to the [Architecture Overview](/docs/learn/fundamentals/architecture/) page. +For a closer look at how messages flow between chains and all of the components involved, you can refer to the [Architecture Overview](/docs/learn/infrastructure/architecture/) page. ### Message Submission diff --git a/learn/infrastructure/index.md b/learn/infrastructure/index.md index d3a528960..1d21d63d6 100644 --- a/learn/infrastructure/index.md +++ b/learn/infrastructure/index.md @@ -22,7 +22,7 @@ This section provides a closer look at the core components that power Wormhole's 3. The validated message is encapsulated in a VAA (Verifiable Action Approval), combining the message with Guardian signatures to create a proof 4. A relayer relays the VAA to the target chain, which is then verified by the Wormhole Core Contract on the target chain - You can find more information about the infrastructure components and how they work together on the [Architecture Overview](/docs/learn/fundamentals/architecture/) page. + You can find more information about the infrastructure components and how they work together on the [Architecture Overview](/docs/learn/infrastructure/architecture/) page.
diff --git a/learn/infrastructure/spy.md b/learn/infrastructure/spy.md index 61df23f75..5e12cd13d 100644 --- a/learn/infrastructure/spy.md +++ b/learn/infrastructure/spy.md @@ -18,8 +18,8 @@ The primary purpose of a Spy is to subscribe to the gossiped messages across the Spies can access the following categories of messages shared over the gossip protocol:: - [Verifiable Action Approvals (VAAs)](/docs/learn/infrastructure/vaas/){target=\_blank} - packets of cross-chain data. The Spy can detect whether a VAA has been approved by the Guardian Network, making it a valuable tool for applications needing real-time cross-chain verification -- [Observations](/docs/learn/fundamentals/glossary/#observation){target=\_blank} - emitted by Wormhole’s core contracts, observations are picked up by the Guardians and relayed across the network. Spies allow users to monitor these messages, adding transparency and insight into blockchain events -- [Guardian heartbeats](/docs/learn/fundamentals/glossary/#heartbeat){target=\_blank} - heartbeat messages represent Guardian node statusn. By monitoring heartbeats, a Spy can signal the liveness and connectivity of Guardians in the network +- [Observations](/docs/learn/glossary/#observation){target=\_blank} - emitted by Wormhole’s core contracts, observations are picked up by the Guardians and relayed across the network. Spies allow users to monitor these messages, adding transparency and insight into blockchain events +- [Guardian heartbeats](/docs/learn/glossary/#heartbeat){target=\_blank} - heartbeat messages represent Guardian node statusn. By monitoring heartbeats, a Spy can signal the liveness and connectivity of Guardians in the network ## Integrator Use Case diff --git a/learn/fundamentals/introduction.md b/learn/introduction.md similarity index 87% rename from learn/fundamentals/introduction.md rename to learn/introduction.md index 5bc323805..90cace02f 100644 --- a/learn/fundamentals/introduction.md +++ b/learn/introduction.md @@ -11,10 +11,10 @@ Wormhole addresses this problem by providing a _generic message-passing_ protoco Wormhole is distinguished by its focus on robust security, scalability, and transparency. The protocol is supported by a decentralized network of validators that ensure the integrity of every cross-chain transaction. This, combined with Wormhole’s proven performance in real-world applications, gives developers a dependable platform to create and scale multichain applications confidently. -![Message-passing process in the Wormhole protocol](/docs/images/learn/fundamentals/introduction/introduction-1.webp) +![Message-passing process in the Wormhole protocol](/docs/images/learn/introduction/introduction-1.webp) !!! note - The above is an oversimplified illustration of the protocol; details about the architecture and components are available on the [architecture page](/docs/learn/fundamentals/architecture/){target=\_blank}. + The above is an oversimplified illustration of the protocol; details about the architecture and components are available on the [architecture page](/docs/learn/infrastructure/architecture/){target=\_blank}. Wormhole allows developers to leverage the strengths of multiple blockchain ecosystems without being confined to one. This means applications can benefit from the unique features of various networks—such as Solana's high throughput, Ethereum's security, and Cosmos's interoperability while maintaining a unified, efficient user experience. @@ -36,7 +36,7 @@ Wormhole provides a suite of tools and protocols that support a wide range of us - **Cross-chain messaging** - securely transfer arbitrary data between blockchains, enabling the development of cross-chain decentralized applications (xDapps) - **Asset transfers** - facilitate the movement of tokens and NFTs across supported chains with ease, powered by protocols built on Wormhole like [Portal](https://portalbridge.com/){target=\_blank} -- **Developer tools** - leverage [Wormhole’s SDKs](/docs/build/applications/wormhole-sdk/){target=\_blank}, [APIs](/docs/build/toolkit/#wormhole-api-docs){target=\_blank}, [Wormhole Scan](https://wormholescan.io/){target=\_blank}, and documentation to build and deploy cross-chain applications quickly and efficiently +- **Developer tools** - leverage [Wormhole’s SDKs](/docs/build/toolkit/typescript-sdk/){target=\_blank}, [APIs](/docs/build/toolkit/#wormhole-api-docs){target=\_blank}, [Wormhole Scan](https://wormholescan.io/){target=\_blank}, and documentation to build and deploy cross-chain applications quickly and efficiently ## What Isn't Wormhole? @@ -47,7 +47,7 @@ Wormhole provides a suite of tools and protocols that support a wide range of us Consider the following examples of potential applications enabled by Wormhole: -- **Cross-chain exchange** - using [Wormhole Connect](/docs/build/applications/connect/overview/){target=\_blank}, developers can build exchanges that allow deposits from any Wormhole-connected chain, significantly increasing liquidity access +- **Cross-chain exchange** - using [Wormhole Connect](/docs/build/transfers/connect/overview/){target=\_blank}, developers can build exchanges that allow deposits from any Wormhole-connected chain, significantly increasing liquidity access - **[Cross-chain governance](https://wormhole.com/blog/stake-for-governance-is-now-live-for-w-token-holders){target=\_blank}** - NFT collections on different networks can use Wormhole to communicate votes cast on their respective chains to a designated "voting" chain for combined proposals - **Cross-chain game** - games can be developed on a performant network like Solana, with rewards issued as NFTs on another network, such as Ethereum @@ -55,7 +55,7 @@ Consider the following examples of potential applications enabled by Wormhole: Discover more about the Wormhole ecosystem, components, and protocols: -- **[Architecture](/docs/learn/fundamentals/architecture/){target=\_blank}** - explore the components of the protocol +- **[Architecture](/docs/learn/infrastructure/architecture/){target=\_blank}** - explore the components of the protocol - **[Protocol Specifications](https://github.com/wormhole-foundation/wormhole/tree/main/whitepapers){target=\_blank}** - learn about the protocols built on top of Wormhole ## Demos @@ -65,7 +65,9 @@ Demos offer more realistic implementations than tutorials: - **[Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding){target=\_blank}** - quickly set up a project with the Scaffolding repository - **[xDapp Book Projects](https://github.com/wormhole-foundation/xdapp-book/tree/main/projects){target=\_blank}** - run and learn from example programs -More demos are available in the [demos page](/docs/build/start-building/demos/){target=\_blank}. + !!! note Wormhole Integration Complete? diff --git a/learn/fundamentals/security.md b/learn/security.md similarity index 97% rename from learn/fundamentals/security.md rename to learn/security.md index eccdd7891..00a72718a 100644 --- a/learn/fundamentals/security.md +++ b/learn/security.md @@ -9,12 +9,12 @@ description: Explore Wormhole's security features, including the Guardian networ At its core, Wormhole is secured by a network of [Guardian](/docs/learn/infrastructure/guardians/){target=\_blank} nodes that validate and sign messages. If a super majority (e.g., 13 out of 19) of Guardians sign the same message, it can be considered valid. A smart contract on the target chain will verify the signatures and format of the message before approving any transaction. -- Wormhole's core security primitive is its signed messages (signed [VAAs](/docs/learn/fundamentals/glossary/#vaa){target=\_blank}) +- Wormhole's core security primitive is its signed messages (signed [VAAs](/docs/learn/glossary/#vaa){target=\_blank}) - The Guardian network is currently secured by a collection of 19 of the world's top [validator companies](https://wormhole-foundation.github.io/wormhole-dashboard/#/?endpoint=Mainnet){target=\_blank} - Guardians produce signed state attestations (signed VAAs) when requested by a Core Contract integrator - Every Guardian runs full nodes (rather than light nodes) of every blockchain in the Wormhole network, so if a blockchain suffers a consensus attack or hard fork, the blockchain will disconnect from the network rather than potentially produce invalid signed VAAs - Any Signed VAA can be verified as authentic by the Core Contract of any other chain -- [Relayers](/docs/learn/fundamentals/glossary/#relayer){target=\_blank} are considered untrusted in the Wormhole ecosystem +- [Relayers](/docs/learn/glossary/#relayer){target=\_blank} are considered untrusted in the Wormhole ecosystem In summary: diff --git a/learn/messaging/.pages b/learn/transfers/.pages similarity index 79% rename from learn/messaging/.pages rename to learn/transfers/.pages index b04d41000..17b035577 100644 --- a/learn/messaging/.pages +++ b/learn/transfers/.pages @@ -1,6 +1,6 @@ -title: Messaging +title: Multichain Transfers nav: - index.md + - native-token-transfers - 'Token Bridge': 'token-bridge.md' - 'CCTP Bridge': 'cctp.md' - - native-token-transfers diff --git a/learn/messaging/cctp.md b/learn/transfers/cctp.md similarity index 87% rename from learn/messaging/cctp.md rename to learn/transfers/cctp.md index d76ee9c17..34e46883b 100644 --- a/learn/messaging/cctp.md +++ b/learn/transfers/cctp.md @@ -16,13 +16,13 @@ While this protocol is wholly separate from Wormhole itself, Wormhole builds on !!! note Wormhole supports all CCTP-supported chains but at the moment only a [handful of chains](https://developers.circle.com/stablecoins/docs/supported-domains){target=\_blank} are supported by Circle. -You can use Wormhole's CCTP-powered USDC bridging by embedding the [Connect Widget](/docs/build/applications/connect/overview/){target=\_blank} or by integrating the [TypeScript SDK](/docs/build/applications/wormhole-sdk/){target=\_blank} directly. +You can use Wormhole's CCTP-powered USDC bridging by embedding the [Connect Widget](/docs/build/transfers/connect/overview/){target=\_blank} or by integrating the [TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} directly. ## Automatic Relaying To complete a CCTP transfer, the [Circle Attestation](https://developers.circle.com/api-reference/stablecoins/common/get-attestation){target=\_blank} must be delivered to the destination chain. -This attestation delivery may be difficult or impossible in some contexts. For example, in a browser context, the user doesn't wish to wait for finality to deliver the attestation. To address this difficulty, the Wormhole CCTP relayer may be used either with the [Wormhole Connect Widget](/docs/build/applications/connect/overview/){target=\_blank} or more directly with the [Wormhole TypeScript SDK](/docs/build/applications/wormhole-sdk/){target=\_blank}. +This attestation delivery may be difficult or impossible in some contexts. For example, in a browser context, the user doesn't wish to wait for finality to deliver the attestation. To address this difficulty, the Wormhole CCTP relayer may be used either with the [Wormhole Connect Widget](/docs/build/transfers/connect/overview/){target=\_blank} or more directly with the [Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank}. The Wormhole CCTP Relayer charges a fee to deliver the attestation and complete the transfer. diff --git a/learn/messaging/index.md b/learn/transfers/index.md similarity index 89% rename from learn/messaging/index.md rename to learn/transfers/index.md index 903489831..44558ba04 100644 --- a/learn/messaging/index.md +++ b/learn/transfers/index.md @@ -17,7 +17,7 @@ This section covers various aspects and services related to communication protoc The Token Bridge provides a secure, low-lift integration for cross-chain transfers of fungible tokens. - [:custom-arrow: Learn more about Token Bridges](/docs/learn/messaging/token-bridge/) + [:custom-arrow: Learn more about Token Bridges](/docs/learn/transfers/token-bridge/) - :octicons-book-16:{ .lg .middle } **Circle's CCTP Bridge** @@ -25,7 +25,7 @@ This section covers various aspects and services related to communication protoc The CCTP Bridge supports fast and cost-effective native USDC transfers across blockchains using Circle's Cross Chain Transfer Protocol (CCTP). - [:custom-arrow: Learn more about CCTP](/docs/learn/messaging/cctp/) + [:custom-arrow: Learn more about CCTP](/docs/learn/transfers/cctp/) - :octicons-book-16:{ .lg .middle } **Native Token Transfers** @@ -33,6 +33,6 @@ This section covers various aspects and services related to communication protoc Wormhole's Native Token Transfers (NTT) offers an open source and flexible framework for cross-chain token transfers, providing full control over token behavior on each blockchain. - [:custom-arrow: Learn more about NTT](/docs/learn/messaging/native-token-transfers/) + [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/) diff --git a/learn/messaging/native-token-transfers/.pages b/learn/transfers/native-token-transfers/.pages similarity index 100% rename from learn/messaging/native-token-transfers/.pages rename to learn/transfers/native-token-transfers/.pages diff --git a/learn/messaging/native-token-transfers/architecture.md b/learn/transfers/native-token-transfers/architecture.md similarity index 96% rename from learn/messaging/native-token-transfers/architecture.md rename to learn/transfers/native-token-transfers/architecture.md index 3c6146fd5..048f9f3e6 100644 --- a/learn/messaging/native-token-transfers/architecture.md +++ b/learn/transfers/native-token-transfers/architecture.md @@ -7,7 +7,7 @@ description: Explore Wormhole's Native Token Transfers architecture, which cover The Native Token Transfers (NTT) architecture within the Wormhole ecosystem offers a robust framework for secure and efficient token transfers across multiple blockchains. This architecture relies on the manager and transceiver core components that work together to manage cross-chain communication and token operations complexities. -For the technical implementations of the functions, refer to the [Managers and Transceivers](/docs/build/contract-integrations/native-token-transfers/managers-transceivers/){target=\_blank} page. +For the technical implementations of the functions, refer to the [Managers and Transceivers](/docs/build/transfers/native-token-transfers/managers-transceivers/){target=\_blank} page. ## System Components @@ -49,10 +49,10 @@ How it works: 2. It quotes delivery fees, handles cross-chain message relaying, and verifies delivery to ensure tokens are safely transferred 3. For each message, the transceiver coordinates with managers, ensuring only authorized transfers are processed on the destination chain -![NTT architecture diagram](/docs/images/learn/messaging/native-token-transfers/architecture/architecture-1.webp) +![NTT architecture diagram](/docs/images/learn/transfers/native-token-transfers/architecture/architecture-1.webp) !!! note - [Learn more](/docs/learn/messaging/native-token-transfers/architecture/#lifecycle-of-a-message){target=\_blank} about the architecture of Native Token Transfers message lifecycles. + [Learn more](/docs/learn/transfers/native-token-transfers/architecture/#lifecycle-of-a-message){target=\_blank} about the architecture of Native Token Transfers message lifecycles. #### Custom Transceivers @@ -60,7 +60,7 @@ The NTT framework supports advanced features such as custom transceivers for spe NTT has the flexibility to support custom message verification in addition to Wormhole Guardian message verification. Custom verifiers are implemented as transceiver contracts and can be protocol-specific or provided by other third-party attesters. Protocols can also configure the threshold of attestations required to mark a token transfer as valid — for example, 2/2, 2/3, 3/5. -![Custom Attestation with NTT diagram](/docs/images/learn/messaging/native-token-transfers/architecture/architecture-2.webp) +![Custom Attestation with NTT diagram](/docs/images/learn/transfers/native-token-transfers/architecture/architecture-2.webp) The verifier performs checks based on predefined criteria and issues approval for transactions that meet these requirements. This approval is incorporated into the Wormhole message, ensuring that only transactions verified by both the Wormhole Guardian Network and the additional verifier are processed. The model includes an extra verifier in the bridging process, enhancing security and providing an added assurance of transaction integrity. diff --git a/learn/messaging/native-token-transfers/deployment.md b/learn/transfers/native-token-transfers/deployment.md similarity index 100% rename from learn/messaging/native-token-transfers/deployment.md rename to learn/transfers/native-token-transfers/deployment.md diff --git a/learn/messaging/native-token-transfers/index.md b/learn/transfers/native-token-transfers/index.md similarity index 79% rename from learn/messaging/native-token-transfers/index.md rename to learn/transfers/native-token-transfers/index.md index c4133b976..5ff4f1c1d 100644 --- a/learn/messaging/native-token-transfers/index.md +++ b/learn/transfers/native-token-transfers/index.md @@ -17,7 +17,7 @@ This section covers Wormhole's Native Token Transfers (NTT), an open source, fle Dive into an introduction to NTT and discover what NTT is, what its key features are, and the available integration paths. - [:custom-arrow: Learn more about NTT](/docs/learn/messaging/native-token-transfers/overview/) + [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/overview/) - :octicons-question-16:{ .lg .middle } **Architecture** @@ -25,7 +25,7 @@ This section covers Wormhole's Native Token Transfers (NTT), an open source, fle Explore NTT's architecture to understand its core components and how they work together to manage cross-chain communication. - [:custom-arrow: Discover how NTT works](/docs/learn/messaging/native-token-transfers/architecture/) + [:custom-arrow: Discover how NTT works](/docs/learn/transfers/native-token-transfers/architecture/) - :octicons-book-16:{ .lg .middle } **Deployment Models** @@ -33,7 +33,7 @@ This section covers Wormhole's Native Token Transfers (NTT), an open source, fle The NTT framework offers two deployment models for different token management needs: the hub-and-spoke and burn-and-mint models. - [:custom-arrow: Check out the deployment models](/docs/learn/messaging/native-token-transfers/deployment/) + [:custom-arrow: Check out the deployment models](/docs/learn/transfers/native-token-transfers/deployment/) - :octicons-shield-lock-16:{ .lg .middle } **Security** @@ -41,7 +41,7 @@ This section covers Wormhole's Native Token Transfers (NTT), an open source, fle Explore NTT's security measures, including the Global Accountant and governance strategies for seamless token safety. - [:custom-arrow: Review the security measures](/docs/learn/messaging/native-token-transfers/security/) + [:custom-arrow: Review the security measures](/docs/learn/transfers/native-token-transfers/security/) @@ -57,7 +57,7 @@ Ready to dive in and start building? Check out the following resources to begin Explore detailed guides that walk you through the entire deployment process, from installing the NTT CLI to deploying NTT across supported chains. - [:custom-arrow: Deploy now using the NTT CLI](/docs/build/contract-integrations/native-token-transfers/deployment-process/) + [:custom-arrow: Deploy now using the NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/) - :octicons-checklist-16:{ .lg .middle } **Post Deployment Recommendations** @@ -65,6 +65,6 @@ Ready to dive in and start building? Check out the following resources to begin Already deployed your NTT project? Check out these post deployment recommendations and integration demos to get the most out of your deployment. - [:custom-arrow: Get the most of out your NTT deployment](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/) + [:custom-arrow: Get the most of out your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/) diff --git a/learn/messaging/native-token-transfers/overview.md b/learn/transfers/native-token-transfers/overview.md similarity index 93% rename from learn/messaging/native-token-transfers/overview.md rename to learn/transfers/native-token-transfers/overview.md index 259eed6a6..3f796e511 100644 --- a/learn/messaging/native-token-transfers/overview.md +++ b/learn/transfers/native-token-transfers/overview.md @@ -6,10 +6,10 @@ description: Explore Wormhole's Native Token Transfers for flexible cross-chain # Native Token Transfers !!!tip "Looking to deploy NTT?" - If you're ready to deploy NTT or access the CLI, follow the detailed [NTT Deployment Section](/docs/build/contract-integrations/native-token-transfers/deployment-process/){target=\_blank}. + If you're ready to deploy NTT or access the CLI, follow the detailed [NTT Deployment Section](/docs/build/transfers/native-token-transfers/deployment-process/){target=\_blank}. - - For deployment steps on EVM, visit the [Deploy to EVM page](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} - - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/learn/messaging/native-token-transfers/overview/){target=\_blank} + - For deployment steps on EVM, visit the [Deploy to EVM page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} + - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} ## Introduction @@ -56,7 +56,7 @@ The Token Bridge offers a secure, low-effort integration suitable for applicatio - **Mechanism** - solely utilizes a lock and mint model. Unlike NTT, the Token Bridge issues a wrapped asset on the destination chain, rather than preserving the original token contract - **Security** - preconfigured rate limiting and integrated Global Accountant -- **Contract ownership** - Token Bridge contracts are upgradeable via [Wormhole Governance](/docs/learn/fundamentals/security/){target=\_blank} +- **Contract ownership** - Token Bridge contracts are upgradeable via [Wormhole Governance](/docs/learn/security/){target=\_blank} - **Token contracts** - wrapped asset contract owned by the Wormhole Token Bridge contract, upgradeable via a 13/19 Guardian governance process - **Integration** - straightforward and permissionless method to deploy on multiple chains diff --git a/learn/messaging/native-token-transfers/security.md b/learn/transfers/native-token-transfers/security.md similarity index 100% rename from learn/messaging/native-token-transfers/security.md rename to learn/transfers/native-token-transfers/security.md diff --git a/learn/messaging/token-bridge.md b/learn/transfers/token-bridge.md similarity index 99% rename from learn/messaging/token-bridge.md rename to learn/transfers/token-bridge.md index f33ff634a..6e4d3e515 100644 --- a/learn/messaging/token-bridge.md +++ b/learn/transfers/token-bridge.md @@ -32,7 +32,7 @@ The transfer process is simple yet secure, involving a few key steps: 3. **Message emission** - a message detailing the transfer is sent through Wormhole’s Guardian Network, which verifies the transfer and signs the message 4. **Verification and minting** - on the destination chain, the transfer message is verified, and wrapped tokens are minted, or native tokens are released from custody -![Token Bridge detailed flow](/docs/images/learn/messaging/token-bridge/token-bridge-diagram.webp) +![Token Bridge detailed flow](/docs/images/learn/transfers/token-bridge/token-bridge-diagram.webp) ### Key Features of the Token Bridge diff --git a/llms.txt b/llms.txt index 7b49aa3e2..a9afed4fa 100644 --- a/llms.txt +++ b/llms.txt @@ -4,94 +4,90 @@ Documentation: https://wormhole.com/docs/ # List of doc pages: -Doc-Page: https://wormhole.com/docs/build/applications/connect/configuration-v0 -Doc-Page: https://wormhole.com/docs/build/applications/connect/configuration/configure-data -Doc-Page: https://wormhole.com/docs/build/applications/connect/configuration/configure-theme -Doc-Page: https://wormhole.com/docs/build/applications/connect/configuration/index -Doc-Page: https://wormhole.com/docs/build/applications/connect/faqs -Doc-Page: https://wormhole.com/docs/build/applications/connect/features -Doc-Page: https://wormhole.com/docs/build/applications/connect/index -Doc-Page: https://wormhole.com/docs/build/applications/connect/overview -Doc-Page: https://wormhole.com/docs/build/applications/connect/routes -Doc-Page: https://wormhole.com/docs/build/applications/connect/upgrade -Doc-Page: https://wormhole.com/docs/build/applications/index -Doc-Page: https://wormhole.com/docs/build/applications/queries/faqs -Doc-Page: https://wormhole.com/docs/build/applications/queries/index -Doc-Page: https://wormhole.com/docs/build/applications/queries/overview -Doc-Page: https://wormhole.com/docs/build/applications/queries/use-queries -Doc-Page: https://wormhole.com/docs/build/applications/wormhole-sdk/index -Doc-Page: https://wormhole.com/docs/build/applications/wormhole-sdk/protocols-payloads -Doc-Page: https://wormhole.com/docs/build/applications/wormhole-sdk/sdk-layout -Doc-Page: https://wormhole.com/docs/build/applications/wormhole-sdk/vaas-protocols -Doc-Page: https://wormhole.com/docs/build/applications/wormhole-sdk/wormhole-sdk -Doc-Page: https://wormhole.com/docs/build/contract-integrations/cctp -Doc-Page: https://wormhole.com/docs/build/contract-integrations/core-contracts -Doc-Page: https://wormhole.com/docs/build/contract-integrations/dev-env Doc-Page: https://wormhole.com/docs/build/contract-integrations/faqs -Doc-Page: https://wormhole.com/docs/build/contract-integrations/index -Doc-Page: https://wormhole.com/docs/build/contract-integrations/multigov/deployment -Doc-Page: https://wormhole.com/docs/build/contract-integrations/multigov/faq -Doc-Page: https://wormhole.com/docs/build/contract-integrations/multigov/index -Doc-Page: https://wormhole.com/docs/build/contract-integrations/multigov/upgrade -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/cli-commands -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/configuration/access-control -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/configuration/index -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/configuration/rate-limiting -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/index -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/installation -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/troubleshooting -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/faqs -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/index -Doc-Page: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/managers-transceivers -Doc-Page: https://wormhole.com/docs/build/contract-integrations/wormhole-relayers +Doc-Page: https://wormhole.com/docs/build/core-messaging/core-contracts +Doc-Page: https://wormhole.com/docs/build/core-messaging/index +Doc-Page: https://wormhole.com/docs/build/core-messaging/wormhole-relayers Doc-Page: https://wormhole.com/docs/build/index +Doc-Page: https://wormhole.com/docs/build/multigov/deployment +Doc-Page: https://wormhole.com/docs/build/multigov/faq +Doc-Page: https://wormhole.com/docs/build/multigov/index +Doc-Page: https://wormhole.com/docs/build/multigov/upgrade +Doc-Page: https://wormhole.com/docs/build/queries/faqs +Doc-Page: https://wormhole.com/docs/build/queries/index +Doc-Page: https://wormhole.com/docs/build/queries/overview +Doc-Page: https://wormhole.com/docs/build/queries/use-queries Doc-Page: https://wormhole.com/docs/build/reference/chain-ids Doc-Page: https://wormhole.com/docs/build/reference/consistency-levels Doc-Page: https://wormhole.com/docs/build/reference/contract-addresses Doc-Page: https://wormhole.com/docs/build/reference/index Doc-Page: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses -Doc-Page: https://wormhole.com/docs/build/start-building/demos Doc-Page: https://wormhole.com/docs/build/start-building/index Doc-Page: https://wormhole.com/docs/build/start-building/supported-networks Doc-Page: https://wormhole.com/docs/build/start-building/testnet-faucets Doc-Page: https://wormhole.com/docs/build/toolkit/cli +Doc-Page: https://wormhole.com/docs/build/toolkit/dev-env Doc-Page: https://wormhole.com/docs/build/toolkit/faqs Doc-Page: https://wormhole.com/docs/build/toolkit/index Doc-Page: https://wormhole.com/docs/build/toolkit/solidity-sdk -Doc-Page: https://wormhole.com/docs/build/toolkit/tilt -Doc-Page: https://wormhole.com/docs/build/toolkit/wormhole-sdk/index +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/index +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/protocols-payloads +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/sdk-layout +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/vaas-protocols +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/wormhole-sdk +Doc-Page: https://wormhole.com/docs/build/transfers/cctp +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration-v0 +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/configure-data +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/configure-theme +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/index +Doc-Page: https://wormhole.com/docs/build/transfers/connect/faqs +Doc-Page: https://wormhole.com/docs/build/transfers/connect/features +Doc-Page: https://wormhole.com/docs/build/transfers/connect/index +Doc-Page: https://wormhole.com/docs/build/transfers/connect/overview +Doc-Page: https://wormhole.com/docs/build/transfers/connect/routes +Doc-Page: https://wormhole.com/docs/build/transfers/connect/upgrade +Doc-Page: https://wormhole.com/docs/build/transfers/index +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/index +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/rate-limiting +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/index +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/installation +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/index +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers Doc-Page: https://wormhole.com/docs/infrastructure/index Doc-Page: https://wormhole.com/docs/infrastructure/relayers/index Doc-Page: https://wormhole.com/docs/infrastructure/relayers/run-relayer Doc-Page: https://wormhole.com/docs/infrastructure/spy/index Doc-Page: https://wormhole.com/docs/infrastructure/spy/run-spy -Doc-Page: https://wormhole.com/docs/learn/fundamentals/architecture -Doc-Page: https://wormhole.com/docs/learn/fundamentals/glossary -Doc-Page: https://wormhole.com/docs/learn/fundamentals/index -Doc-Page: https://wormhole.com/docs/learn/fundamentals/introduction -Doc-Page: https://wormhole.com/docs/learn/fundamentals/security +Doc-Page: https://wormhole.com/docs/learn/glossary Doc-Page: https://wormhole.com/docs/learn/governance/architecture Doc-Page: https://wormhole.com/docs/learn/governance/faq Doc-Page: https://wormhole.com/docs/learn/governance/index Doc-Page: https://wormhole.com/docs/learn/governance/overview Doc-Page: https://wormhole.com/docs/learn/index +Doc-Page: https://wormhole.com/docs/learn/infrastructure/architecture Doc-Page: https://wormhole.com/docs/learn/infrastructure/core-contracts Doc-Page: https://wormhole.com/docs/learn/infrastructure/guardians Doc-Page: https://wormhole.com/docs/learn/infrastructure/index Doc-Page: https://wormhole.com/docs/learn/infrastructure/relayer Doc-Page: https://wormhole.com/docs/learn/infrastructure/spy Doc-Page: https://wormhole.com/docs/learn/infrastructure/vaas -Doc-Page: https://wormhole.com/docs/learn/messaging/cctp -Doc-Page: https://wormhole.com/docs/learn/messaging/index -Doc-Page: https://wormhole.com/docs/learn/messaging/native-token-transfers/architecture -Doc-Page: https://wormhole.com/docs/learn/messaging/native-token-transfers/deployment -Doc-Page: https://wormhole.com/docs/learn/messaging/native-token-transfers/index -Doc-Page: https://wormhole.com/docs/learn/messaging/native-token-transfers/overview -Doc-Page: https://wormhole.com/docs/learn/messaging/native-token-transfers/security -Doc-Page: https://wormhole.com/docs/learn/messaging/token-bridge +Doc-Page: https://wormhole.com/docs/learn/introduction +Doc-Page: https://wormhole.com/docs/learn/security +Doc-Page: https://wormhole.com/docs/learn/transfers/cctp +Doc-Page: https://wormhole.com/docs/learn/transfers/index +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/architecture +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/deployment +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/index +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/security +Doc-Page: https://wormhole.com/docs/learn/transfers/token-bridge Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/index Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/react-dapp Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-contracts @@ -109,1495 +105,936 @@ Doc-Page: https://wormhole.com/docs/tutorials/index # Full content for each doc page -Doc-Content: https://wormhole.com/docs/build/applications/connect/configuration-v0 +Doc-Content: https://wormhole.com/docs/build/contract-integrations/faqs --- BEGIN CONTENT --- --- -title: Configure Your Connect Widget: v0 -description: Configure Wormhole Connect v0 for React or HTML, set themes, define tokens, networks, and customize RPC endpoints for optimized blockchain interactions. +title: Contract Integrations FAQs +description: Frequently asked questions about integrating contracts with Wormhole, including ownership of wrapped tokens and developing custom relayers. --- -# Configure Your Connect Widget +# Contract Integrations FAQs -## Introduction {: #introduction } +## Can ownership of wrapped tokens be transferred from the Token Bridge? -Wormhole Connect is a flexible React widget that streamlines cross-chain asset transfers and enables seamless interoperability by leveraging Wormhole's powerful infrastructure. Designed for easy integration into decentralized applications (dApps), Wormhole Connect abstracts the complexities of cross-chain communication, providing a user-friendly experience for both developers and end users. +No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. -This guide provides detailed instructions on configuring Wormhole Connect and highlights the many ways it can be customized to fit your specific needs, from integrating supported blockchains and tokens to tailoring the user interface. + - **On EVM chains** - when you attest a token, the Token Bridge deploys a new ERC-20 contract as a beacon proxy. The upgrade authority for these contracts is the Token Bridge contract itself + - **On Solana** - the Token Bridge deploys a new SPL token, where the upgrade authority is a Program Derived Address (PDA) controlled by the Token Bridge -!!! note - For documentation on the latest version of Connect, please refer to the current [configuration documentation](/docs/build/applications/connect/configuration/){target=\_blank}. If you are looking to upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/applications/connect/upgrade/){target=\_blank} for detailed instructions. +The logic behind deploying these token contracts involves submitting an attestation VAA, which allows the Token Bridge to verify and deploy the wrapped token contract on the destination chain. -## Get Started +Relevant contracts: -Configure the Wormhole Connect React component by passing a `WormholeConnectConfig` object as the `config` attribute. If using the hosted version, provide `config` and `theme` as JSON-serialized strings on the mount point. + - [Ethereum ERC-20](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/token/Token.sol){target=\_blank} + - [Solana SPL](https://github.com/wormhole-foundation/wormhole/blob/main/solana/modules/token_bridge/program/src/api/create_wrapped.rs#L128-L145){target=\_blank} + - [Attestation VAA and Token Contract Deployment Logic](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol#L385-L431){target=\_blank} -=== "React" +## How do I start developing a custom relayer? - ```ts - import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; - -const config: WormholeConnectConfig = { - networks: ['ethereum', 'polygon', 'solana'], - tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], - rpcs: { - ethereum: 'https://rpc.ankr.com/eth', - solana: 'https://rpc.ankr.com/solana', - } -} - - - ``` +Previously referred to as specialized relayers, custom relayers allow you to build and tailor relayers to fit your specific use case. To get started, refer to the following resources: -=== "HTML Tags" + - [Custom Relayers documentation](/docs/learn/infrastructure/relayer/#custom-relayers){target=\_blank} + - [Relayer Engine](/docs/infrastructure/relayers/run-relayer/#get-started-with-the-relayer-engine){target=\_blank} + - [Run a Custom Relayer](/docs/infrastructure/relayers/run-relayer/){target=\_blank} - ```html -
- ``` +These resources will guide you through building and deploying custom relayers tailored to your use case. -## Examples {: #examples } +## Is there a way to use NTT tokens with chains that don't currently support NTT? -Below are some examples of different ways you can configure Connect. See `WormholeConnectConfig` in the below file for a full view of the supported configuration parameters. +Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank}. For example: -??? code "View `WormholeConnectConfig`" - ```ts - import { - ChainName, - WormholeContext, - WormholeConfig, - ChainResourceMap, -} from 'sdklegacy'; -import MAINNET from './mainnet'; -import TESTNET from './testnet'; -import DEVNET from './devnet'; -import type { WormholeConnectConfig } from './types'; -import { - Network, - InternalConfig, - Route, - WrappedTokenAddressCache, -} from './types'; -import { - mergeCustomTokensConfig, - mergeNttGroups, - validateDefaults, -} from './utils'; -import { wrapEventHandler } from './events'; +- **Wrapped token scenario** - a token, such as the W token, can be bridged to non-NTT networks using the Token Bridge. When the token is bridged to a chain like Sui, a wrapped version of the token is created (e.g., Wrapped W token) +- **Unwrapping requirement** - tokens bridged using the Token Bridge cannot be directly transferred to NTT-supported chains. To transfer them, they must first be unwrapped on the non-NTT chain and then transferred via the appropriate mechanism +- **Messaging consistency** - the Token Bridge exclusively uses Wormhole messaging, ensuring consistent communication across all chains, whether or not they support NTT -import { SDKConverter } from './converter'; +This approach ensures interoperability while maintaining the integrity of the token's cross-chain movement. -import { - wormhole as getWormholeV2, - Wormhole as WormholeV2, - Network as NetworkV2, - Token as TokenV2, - Chain as ChainV2, - ChainTokens as ChainTokensV2, - WormholeConfigOverrides as WormholeConfigOverridesV2, -} from '@wormhole-foundation/sdk'; +## How do I update the metadata of a wrapped token? -import '@wormhole-foundation/sdk/addresses'; -import evm from '@wormhole-foundation/sdk/evm'; -import solana from '@wormhole-foundation/sdk/solana'; -import aptos from '@wormhole-foundation/sdk/aptos'; -import sui from '@wormhole-foundation/sdk/sui'; -import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; -import algorand from '@wormhole-foundation/sdk/algorand'; +Because wrapped tokens are deployed and controlled by the Token Bridge program, which is under the authority of the Wormhole Guardians, there is no direct way for you to update their metadata. Instead, you must coordinate with the respective block explorer teams to request and apply metadata changes. -export function buildConfig( - customConfig?: WormholeConnectConfig -): InternalConfig { - const network = ( - customConfig?.network || - customConfig?.env || // TODO remove; deprecated - import.meta.env.REACT_APP_CONNECT_ENV?.toLowerCase() || - 'mainnet' - ).toLowerCase() as Network; +## How do I calculate the current gas costs for Ethereum Mainnet VAA verification? - if (!['mainnet', 'testnet', 'devnet'].includes(network)) - throw new Error(`Invalid env "${network}"`); +You can refer to the [core-bridge repository](https://github.com/nonergodic/core-bridge){target=\_blank} for guidance on how to calculate the current gas costs associated with verifying VAAs on Ethereum Mainnet. This repository provides up-to-date references and examples to help you gauge costs accurately. - const networkData = { MAINNET, DEVNET, TESTNET }[network.toUpperCase()]!; +## How can I update my wrapped token image on Solscan? - const tokens = mergeCustomTokensConfig( - networkData.tokens, - customConfig?.tokensConfig - ); +Updating the metadata (such as the token image, name, or symbol) of a wrapped token on Solscan requires contacting the Solscan team directly. Wormhole cannot make these updates for you because the wrapped token contracts are owned and controlled by the Token Bridge, not individual developers or projects. - const sdkConfig = WormholeContext.getConfig(network); +To request an update, contact Solscan via [support@solscan.io](mailto:support@solscan.io) or their [contact form](https://solscan.io/contactus){target=\_blank}. +--- END CONTENT --- - const rpcs = Object.assign( - {}, - sdkConfig.rpcs, - networkData.rpcs, - customConfig?.rpcs - ); +Doc-Content: https://wormhole.com/docs/build/core-messaging/core-contracts +--- BEGIN CONTENT --- +--- +title: Get Started with Core Contracts +description: This guide walks through the key methods of the Core Contracts, providing you with the knowledge needed to integrate them into your cross-chain contracts +--- - const wh = getWormholeContext(network, sdkConfig, rpcs); +# Get Started with Core Contracts - if (customConfig?.bridgeDefaults) { - validateDefaults(customConfig.bridgeDefaults, networkData.chains, tokens); - } +## Introduction - const sdkConverter = new SDKConverter(wh); +Wormhole's Core Contracts, deployed on each supported blockchain network, enable the fundamental operations of sending and receiving cross-chain messages. - return { - wh, - sdkConfig, - sdkConverter, +While the implementation details of the Core Contracts varies by network, the core functionality remains consistent across chains. Each version of the Core Contract facilitates secure and reliable cross-chain communication, ensuring that developers can effectively publish and verify messages. - v2Network: sdkConverter.toNetworkV2(network), +This guide will walk you through the variations and key methods of the Core Contracts, providing you with the knowledge needed to integrate them into your cross-chain contracts. To learn more about Core Contracts' features and how it works, please refer to the [Core Contracts](/docs/learn/infrastructure/core-contracts/){target=\_blank} page in the Learn section. - network, - isMainnet: network === 'mainnet', - // External resources - rpcs, - rest: Object.assign( - {}, - sdkConfig.rest, - networkData.rest, - customConfig?.rest - ), - graphql: Object.assign({}, networkData.graphql, customConfig?.graphql), - wormholeApi: { - mainnet: 'https://api.wormholescan.io/', - testnet: 'https://api.testnet.wormholescan.io/', - devnet: '', - }[network], - wormholeRpcHosts: { - mainnet: [ - 'https://wormhole-v2-mainnet-api.mcf.rocks', - 'https://wormhole-v2-mainnet-api.chainlayer.network', - 'https://wormhole-v2-mainnet-api.staking.fund', - ], - testnet: [ - 'https://guardian.testnet.xlabs.xyz', - 'https://guardian-01.testnet.xlabs.xyz', - 'https://guardian-02.testnet.xlabs.xyz', - ], - devnet: ['http://localhost:7071'], - }[network], - coinGeckoApiKey: customConfig?.coinGeckoApiKey, +## Prerequisites - // Callbacks - triggerEvent: wrapEventHandler(customConfig?.eventHandler), - validateTransfer: customConfig?.validateTransferHandler, +To interact with the Wormhole Core Contract, you'll need the following: - // White lists - chains: networkData.chains, - chainsArr: Object.values(networkData.chains).filter((chain) => { - return customConfig?.networks - ? customConfig.networks!.includes(chain.key) - : true; - }), - tokens, - tokensArr: Object.values(tokens).filter((token) => { - return customConfig?.tokens - ? customConfig.tokens!.includes(token.key) - : true; - }), +- [The address of the Core Contract](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on the chains you're deploying your contract on +- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on +- [The consistency levels](/docs/build/reference/consistency-levels/){target=\_blank} (required finality) for the chains you're deploying your contract on - // For token bridge ^_^ - wrappedTokenAddressCache: new WrappedTokenAddressCache( - tokens, - sdkConverter - ), +## How to Interact with Core Contracts - gasEstimates: networkData.gasEstimates, - // TODO: routes that aren't supported yet are disabled - routes: (customConfig?.routes ?? Object.values(Route)).filter((r) => - [ - Route.Bridge, - Route.Relay, - Route.NttManual, - Route.NttRelay, - Route.CCTPManual, - Route.CCTPRelay, - ].includes(r as Route) - ), +Before writing your own contracts, it's essential to understand the key functions and events of the Wormhole Core Contracts. The primary functionality revolves around: - // UI details - cta: customConfig?.cta, - explorer: customConfig?.explorer, - attestUrl: { - mainnet: 'https://portalbridge.com/advanced-tools/#/register', - devnet: '', - testnet: - 'https://wormhole-foundation.github.io/example-token-bridge-ui/#/register', - }[network], - bridgeDefaults: customConfig?.bridgeDefaults, - cctpWarning: customConfig?.cctpWarning?.href || '', - pageHeader: customConfig?.pageHeader, - pageSubHeader: customConfig?.pageSubHeader, - menu: customConfig?.menu ?? [], - searchTx: customConfig?.searchTx, - moreTokens: customConfig?.moreTokens, - moreNetworks: customConfig?.moreNetworks, - partnerLogo: customConfig?.partnerLogo, - walletConnectProjectId: - customConfig?.walletConnectProjectId ?? - import.meta.env.REACT_APP_WALLET_CONNECT_PROJECT_ID, - showHamburgerMenu: customConfig?.showHamburgerMenu ?? false, - previewMode: !!customConfig?.previewMode, +- **Sending messages** - submitting messages to the Wormhole network for cross-chain communication +- **Receiving and verifying messages** - validating messages received from other chains via the Wormhole network - // Route options - ethBridgeMaxAmount: customConfig?.ethBridgeMaxAmount ?? 5, - wstETHBridgeMaxAmount: customConfig?.wstETHBridgeMaxAmount ?? 5, +While the implementation details of the Core Contracts vary by network, the core functionality remains consistent across chains. - // NTT config - nttGroups: mergeNttGroups( - tokens, - networkData.nttGroups, - customConfig?.nttGroups - ), - - // Guardian set - guardianSet: networkData.guardianSet, - - // Render redesign views - useRedesign: customConfig?.useRedesign, - }; -} +### Sending Messages -// Running buildConfig with no argument generates the default configuration -const config = buildConfig(); -export default config; +To send a message, regardless of the environment or chain, the Core Contract is invoked with a message argument from an [emitter](/docs/learn/glossary/#emitter){target=\_blank}. This emitter might be your contract or an existing application such as the [Token Bridge](/docs/learn/transfers/token-bridge/#token-bridge){target=\_blank}. -// TODO SDKV2: REMOVE -export function getWormholeContext( - network: Network, - sdkConfig: WormholeConfig, - rpcs: ChainResourceMap -): WormholeContext { - const wh: WormholeContext = new WormholeContext(network, { - ...sdkConfig, - ...{ rpcs }, - }); +=== "EVM" - return wh; -} + The `IWormhole.sol` interface provides the `publishMessage` function, which can be used to publish a message directly to the Core Contract: -export function getDefaultWormholeContext(network: Network): WormholeContext { - const sdkConfig = WormholeContext.getConfig(network); - const networkData = { mainnet: MAINNET, devnet: DEVNET, testnet: TESTNET }[ - network - ]!; + ```solidity + function publishMessage( + uint32 nonce, + bytes memory payload, + uint8 consistencyLevel +) external payable returns (uint64 sequence); + ``` - const rpcs = Object.assign({}, sdkConfig.rpcs, networkData.rpcs); + ??? interface "Parameters" - return getWormholeContext(network, sdkConfig, rpcs); -} + `nonce` ++"uint32"++ + + A free integer field that can be used however you like. Note that changing the `nonce` will result in a different digest. -export async function getWormholeContextV2(): Promise> { - if (config.v2Wormhole) return config.v2Wormhole; - config.v2Wormhole = await newWormholeContextV2(); - return config.v2Wormhole; -} + --- -export async function newWormholeContextV2(): Promise> { - const v2Config: WormholeConfigOverridesV2 = { chains: {} }; + `payload` ++"bytes memory"++ + + The content of the emitted message. Due to the constraints of individual blockchains, it may be capped to a certain maximum length. - for (const key in config.chains) { - const chainV1 = key as ChainName; - const chainConfigV1 = config.chains[chainV1]!; + --- - const chainContextV1 = chainConfigV1.context; + `consistencyLevel` ++"uint8"++ + + A value that defines the required level of finality that must be reached before the Guardians will observe and attest to emitted events. - const chainV2 = config.sdkConverter.toChainV2( - chainV1 as ChainName - ) as ChainV2; + ??? interface "Returns" - const rpc = config.rpcs[chainV1]; - const tokenMap: ChainTokensV2 = {}; + `sequence` ++"uint64"++ + + A unique number that increments for every message for a given emitter (and implicitly chain). This, combined with the emitter address and emitter chain ID, allows the VAA for this message to be queried from the [Wormholescan API](https://docs.wormholescan.io/){target=\_blank}. + + ??? interface "Example" - for (const token of config.tokensArr) { - const nativeChainV2 = config.sdkConverter.toChainV2(token.nativeChain); + ```solidity + IWormhole wormhole = IWormhole(wormholeAddr); - const tokenV2: Partial = { - key: token.key, - chain: chainV2, - symbol: token.symbol, - }; +// Get the fee for publishing a message +uint256 wormholeFee = wormhole.messageFee(); - if (nativeChainV2 == chainV2) { - const decimals = - token.decimals[chainContextV1] ?? token.decimals.default; - if (!decimals) { - continue; - } else { - tokenV2.decimals = decimals; - } - const address = config.sdkConverter.getNativeTokenAddressV2(token); - if (!address) throw new Error('Token must have address'); - tokenV2.address = address; - } else { - tokenV2.original = nativeChainV2; - if (token.foreignAssets) { - const fa = token.foreignAssets[chainV1]!; +// Check fee and send parameters - if (!fa) { - continue; - } else { - tokenV2.address = fa.address; - tokenV2.decimals = fa.decimals; - } - } else { - continue; - } - } +// Create the HelloWorldMessage struct +HelloWorldMessage memory parsedMessage = HelloWorldMessage({ + payloadID: uint8(1), + message: helloWorldMessage +}); - tokenMap[token.key] = tokenV2 as TokenV2; - } +// Encode the HelloWorldMessage struct into bytes +bytes memory encodedMessage = encodeMessage(parsedMessage); - v2Config.chains![chainV2] = { rpc, tokenMap }; - } +// Send the HelloWorld message by calling publishMessage on the +// wormhole core contract and paying the Wormhole protocol fee. +messageSequence = wormhole.publishMessage{value: wormholeFee}( + 0, // batchID + encodedMessage, + wormholeFinality() +); + ``` - return await getWormholeV2( - config.v2Network, - [evm, solana, aptos, cosmwasm, sui, algorand], - v2Config - ); -} + View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/evm/src/01_hello_world){target=\_blank} repository on GitHub. -// setConfig can be called afterwards to override the default config with integrator-provided config -export function setConfig(customConfig?: WormholeConnectConfig) { - const newConfig: InternalConfig = buildConfig(customConfig); +=== "Solana" - // We overwrite keys in the existing object so the references to the config - // imported elsewhere point to the new values - for (const key in newConfig) { - /* @ts-ignore */ - config[key] = newConfig[key]; - } -} + The `wormhole_anchor_sdk::wormhole` module and the Wormhole program account can be used to pass a message directly to the Core Contract via the `wormhole::post_message` function: -// TODO: add config validation step to buildConfig -//validateConfigs(); + ```rs + pub fn post_message<'info>( + ctx: CpiContext<'_, '_, '_, 'info, PostMessage<'info>>, + batch_id: u32, + payload: Vec, + finality: Finality + ) -> Result<()> ``` -### Custom Networks and RPC Endpoints {: #custom-networks-and-rpc-endpoints } - -Specify supported networks, tokens, and custom RPC endpoints. Your users may encounter rate limits using public RPC endpoints if you don't provide your own. + ??? interface "Parameters" -=== "Mainnet" + `ctx` ++"CpiContext<'_, '_, '_, 'info, PostMessage<'info>>"++ + + Provides the necessary context for executing the function, including the accounts and program information required for the Cross-Program Invocation (CPI). - ```js - import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; + ??? child "Type `pub struct CpiContext<'a, 'b, 'c, 'info, T>`" -const config: WormholeConnectConfig = { - env: 'mainnet', - networks: ['ethereum', 'polygon', 'solana'], - tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], - rpcs: { - ethereum: 'https://rpc.ankr.com/eth', - solana: 'https://rpc.ankr.com/solana', - }, -}; + ```rs + pub struct CpiContext<'a, 'b, 'c, 'info, T> + where + T: ToAccountMetas + ToAccountInfos<'info>, + { + pub accounts: T, + pub remaining_accounts: Vec>, + pub program: AccountInfo<'info>, + pub signer_seeds: &'a [&'b [&'c [u8]]], + } + ``` -function App() { - return ; -} - ``` + For more information, please refer to the [`wormhole_anchor_sdk` Rust docs](https://docs.rs/anchor-lang/0.29.0/anchor_lang/context/struct.CpiContext.html){target=\_blank}. -=== "Testnet" + ??? child "Type `PostMessage<'info>`" - ```js - import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; + ```rs + pub struct PostMessage<'info> { + pub config: AccountInfo<'info>, + pub message: AccountInfo<'info>, + pub emitter: AccountInfo<'info>, + pub sequence: AccountInfo<'info>, + pub payer: AccountInfo<'info>, + pub fee_collector: AccountInfo<'info>, + pub clock: AccountInfo<'info>, + pub rent: AccountInfo<'info>, + pub system_program: AccountInfo<'info>, + } + ``` -const config: WormholeConnectConfig = { - env: 'testnet', - networks: ['sepolia', 'arbitrum_sepolia', 'base_sepolia', 'fuji'], + For more information, please refer to the [`wormhole_anchor_sdk` Rust docs](https://docs.rs/wormhole-anchor-sdk/latest/wormhole_anchor_sdk/wormhole/instructions/struct.PostMessage.html){target=\_blank}. - rpcs: { - fuji: 'https://rpc.ankr.com/avalanche_fuji', - base_sepolia: 'https://base-sepolia-rpc.publicnode.com', - }, -}; + --- -function App() { - return ; -} - ``` + `batch_id` ++"u32"++ + + An identifier for the message batch. -!!! note - For a complete list of testnet chain names that can be manually added, see the [Testnet Chains List](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/fa4ba4bc349a7caada809f209090d79a3c5962fe/tokenRegistry/src/scripts/importConnect.ts#L44-L55){target=\_blank}. + --- -### Fully Customized Theme {: #fully-customized-theme } + `payload` ++"Vec"++ + + The data being sent in the message. This is a variable-length byte array that contains the actual content or information being transmitted. To learn about the different types of payloads, check out the [VAAs](/docs/learn/infrastructure/vaas#payload-types){target=\_blank} page. -Wormhole Connect offers a high level of customizability that suits and integrates with your application's design, including various options for buttons, backgrounds, popovers, fonts, and more. The following example demonstrates a variety of appearance customizations. Remember, if you prefer a visual to aid in designing your widget, you can use the [no code style interface](https://connect-in-style.wormhole.com/){target=\_blank}. + --- -```jsx -import WormholeConnect, { - WormholeConnectTheme, -} from '@wormhole-foundation/wormhole-connect'; -import red from '@mui/material/colors/red'; -import lightblue from '@mui/material/colors/lightBlue'; -import grey from '@mui/material/colors/grey'; -import green from '@mui/material/colors/green'; -import orange from '@mui/material/colors/orange'; + `finality` ++"Finality"++ + + Specifies the level of finality or confirmation required for the message. + + ??? child "Type `Finality`" -const customTheme: WormholeConnectTheme = { - mode: 'dark', - primary: grey, - secondary: grey, - divider: 'rgba(255, 255, 255, 0.2)', - background: { - default: '#232323', - }, - text: { - primary: '#ffffff', - secondary: grey[500], - }, - error: red, - info: lightblue, - success: green, - warning: orange, - button: { - primary: 'rgba(255, 255, 255, 0.2)', - primaryText: '#ffffff', - disabled: 'rgba(255, 255, 255, 0.1)', - disabledText: 'rgba(255, 255, 255, 0.4)', - action: orange[300], - actionText: '#000000', - hover: 'rgba(255, 255, 255, 0.7)', - }, - options: { - hover: '#474747', - select: '#5b5b5b', - }, - card: { - background: '#333333', - secondary: '#474747', - elevation: 'none', - }, - popover: { - background: '#1b2033', - secondary: 'rgba(255, 255, 255, 0.5)', - elevation: 'none', - }, - modal: { - background: '#474747', - }, - font: { - primary: 'Impact', - header: 'Impact', - }, -}; - -export default function App() { - return ; -} -``` - -### Environment {: #environment } + ```rs + pub enum Finality { + Confirmed, + Finalized, + } + ``` + + ??? interface "Returns" -You can configure Connect to be used in Testnet environments, too. You can toggle between Mainnet and Testnet environments by defining the `WormholeConnectConfig` as follows: + ++"Result<()>"++ + + The result of the function’s execution. If the function completes successfully, it returns `Ok(())`, otherwise it returns `Err(E)`, indicating that an error occurred along with the details about the error + + ??? interface "Example" -=== "Mainnet" + ```rust + let fee = ctx.accounts.wormhole_bridge.fee(); +// ... Check fee and send parameters - ```ts - const config: WormholeConnectConfig = { - env: 'mainnet', - }; - ``` +let config = &ctx.accounts.config; +let payload: Vec = HelloWorldMessage::Hello { message }.try_to_vec()?; -=== "Testnet" +// Invoke `wormhole::post_message`. +wormhole::post_message( + CpiContext::new_with_signer( + ctx.accounts.wormhole_program.to_account_info(), + wormhole::PostMessage { + // ... Set fields + }, + &[ + // ... Set seeds + ], + ), + config.batch_id, + payload, + config.finality.into(), +)?; + ``` - ```ts - const config: WormholeConnectConfig = { - env: 'testnet', - }; - ``` -### Custom RPC Endpoint {: #custom-rpc-endpoint } + View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/solana/programs/01_hello_world){target=\_blank} repository on GitHub. -You can define a custom RPC provider for your Connect widget to use. This can be especially helpful if you'd like to replace public endpoints with dedicated or private endpoints. +Once the message is emitted from the Core Contract, the [Guardian Network](/docs/learn/infrastructure/guardians/){target=\_blank} will observe the message and sign the digest of an Attestation [VAA](/docs/learn/infrastructure/vaas/){target=\_blank}. On EVM chains, the body of the VAA is hashed twice with keccak256 to produce the signed digest message. On Solana, the [Solana secp256k1 program](https://docs.solana.com/developing/runtime-facilities/programs#secp256k1-program){target=\_blank} will hash the message passed. In this case, the argument for the message should be a single hash of the body, not the twice-hashed body. -```ts -const config: WormholeConnectConfig = { - rpcs: { - solana: 'https://rpc.ankr.com/solana/ee827255553bb0fa9e0aaeab27e988707e60ea06ae36be0658b778072e94979e', - }, -}; -``` +VAAs are [multicast](/docs/learn/infrastructure/core-contracts/#multicast){target=\_blank} by default. This means there is no default target chain for a given message. The application developer decides on the format of the message and its treatment upon receipt. -### Arbitrary Token {: #arbitrary-token } +### Receiving Messages -The following section shows how to add an arbitrary token to your deployment of Connect. +The way a message is received and handled depends on the environment. -!!! note - You will need to [register](https://portalbridge.com/advanced-tools/#/register){target=\_blank} your token with the Token Bridge to get the contract addresses necessary for it to work with Connect. +=== "EVM" -This example configuration limits Connect to the Solana and Ethereum networks and a handful of tokens, including `BSKT`, which isn't built in by default and provided under the `tokensConfig` key. + On EVM chains, the message passed is the raw VAA encoded as binary. The `IWormhole.sol` interface provides the `parseAndVerifyVM` function, which can be used to parse and verify the received message. -See [`src/config/types.ts`](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank} for the type definition of `TokensConfig`. + ```solidity + function parseAndVerifyVM( + bytes calldata encodedVM +) external view returns (VM memory vm, bool valid, string memory reason); + ``` -```json -const config: WormholeConnectConfig = { - networks: ['solana', 'ethereum'], - tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC', 'BSKT'], - tokensConfig: { - BSKT: { - key: 'BSKT', - symbol: 'BSKT', - nativeChain: 'solana', - tokenId: { - chain: 'solana', - address: '6gnCPhXtLnUD76HjQuSYPENLSZdG8RvDB1pTLM5aLSJA', - }, - coinGeckoId: 'basket', - icon: 'https://assets.coingecko.com/coins/images/34661/standard/BSKT_Logo.png?1705636891', - color: '#2894EE', - decimals: { - default: 5, - }, - }, - }, -}; -``` + ??? interface "Parameters" -## More Configuration Options {: #more-configuration-options } + `encodedVM` ++"bytes calldata"++ + + The encoded message as a Verified Action Approval (VAA), which contains all necessary information for verification and processing. -### Whitelisting Tokens {: #whitelisting-tokens } + ??? interface "Returns" -By default, Connect will offer its complete built-in list of assets, but you can restrict the displayed assets by defining a subset of tokens under `tokens`. The default full list is as follows: + `vm` ++"VM memory"++ + + The valid parsed VAA, which will include the original `emitterAddress`, `sequenceNumber`, and `consistencyLevel`, among other fields outlined on the [VAAs](/docs/learn/infrastructure/vaas/) page. -| Mainnet | Testnet | -|:--------------:|:----------------------------------:| -| ETH | ETH, ETHsepolia | -| WETH | WETH, WETHsepolia | -| USDCeth | USDCeth | -| WBTC | - | -| USDT | - | -| DAI | - | -| BUSD | - | -| MATIC | MATIC | -| WMATIC | WMATIC | -| USDCpolygon | - | -| BNB | BNB | -| WBNB | WBNB | -| USDCbnb | - | -| AVAX | AVAX | -| WAVAX | WAVAX | -| USDCavax | USDCavax | -| FTM | FTM | -| WFTM | WFTM | -| CELO | CELO | -| GLMR | GLMR | -| WGLMR | WGLMR | -| SOL | WSOL | -| PYTH | - | -| SUI | SUI | -| USDCsol | - | -| APT | APT | -| ETHarbitrum | ETHarbitrum, ETHarbitrum_sepolia | -| WETHarbitrum | WETHarbitrum, WETHarbitrum_sepolia | -| USDCarbitrum | USDCarbitrum | -| ETHoptimism | ETHoptimism, ETHoptimism_sepolia | -| WETHoptimism | WETHoptimism, WETHoptimism_sepolia | -| USDCoptimism | USDCoptimism | -| ETHbase | ETHbase, ETHbase_sepolia | -| WETHbase | WETHbase, WETHbase_sepolia | -| tBTC | tBTC | -| tBTCpolygon | tBTCpolygon | -| tBTCoptimism | tBTCoptimism | -| tBTCarbitrum | tBTCarbitrum | -| tBTCbase | tBTCbase | -| tBTCsol | tBTCsol | -| WETHpolygon | - | -| WETHbsc | - | -| wstETH | wstETH | -| wstETHarbitrum | - | -| wstETHoptimism | - | -| wstETHpolygon | - | -| wstETHbase | - | + ??? child "Struct `VM`" -### Routes {: #routes } + ```solidity + struct VM { + uint8 version; + uint32 timestamp; + uint32 nonce; + uint16 emitterChainId; + bytes32 emitterAddress; + uint64 sequence; + uint8 consistencyLevel; + bytes payload; + uint32 guardianSetIndex; + Signature[] signatures; + bytes32 hash; + } + ``` -By default, Connect will offer its complete built-in list of routes, but you can restrict the possible route assets by defining a subset under `routes.` By default, Connect will offer its complete built-in list: + For more information, refer to the [`IWormhole.sol` interface](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/interfaces/IWormhole.sol){target=\_blank}. -| Mainnet | Testnet | -|:------------:|:----------:| -| bridge | bridge | -| relay | relay | -| cctpManual | cctpManual | -| cctpRelay | cctpRelay | -| nttManual | nttManual | -| nttRelay | nttRelay | -| ethBridge | - | -| wstETHBridge | - | -| usdtBridge | - | -| tBTC | tBTC | + --- + + `valid` ++"bool"++ + + A boolean indicating whether the VAA is valid or not. + + --- -### Wallet Set Up {: #wallet-connect-project-id } + `reason` ++"string"++ + + If the VAA is not valid, a reason will be provided -When using Wormhole Connect, your selected blockchain network determines the available wallet options. + ??? interface "Example" - - For EVM chains, wallets like MetaMask and WalletConnect are supported - - For Solana, you'll see options such as Phantom, Torus, and Coin98 + ```solidity + function receiveMessage(bytes memory encodedMessage) public { + // Call the Wormhole core contract to parse and verify the encodedMessage + ( + IWormhole.VM memory wormholeMessage, + bool valid, + string memory reason + ) = wormhole().parseAndVerifyVM(encodedMessage); -The wallet options automatically adjust based on the selected chain, providing a seamless user experience without additional configuration. + // Perform safety checks here -If you would like to offer WalletConnect as a supported wallet option, you'll need to obtain a project ID on the [WalletConnect cloud dashboard](https://cloud.walletconnect.com/){target=\_blank}. + // Decode the message payload into the HelloWorldMessage struct + HelloWorldMessage memory parsedMessage = decodeMessage( + wormholeMessage.payload + ); -### Toggle Hamburger Menu {: #toggle-hamburger-menu } + // Your custom application logic here +} + ``` -By setting the `showHamburgerMenu` option to **false**, you can deactivate the hamburger menu, causing the links to be positioned at the bottom. + View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/evm/src/01_hello_world){target=\_blank} repository on GitHub. -#### Add Extra Menu Entry {: #add-extra-menu-entry } +=== "Solana" -By setting the `showHamburgerMenu` option to `false,` you can add extra links. The following properties are accessed through the `menu[]` property (e.g., `menu[].label`): + On Solana, the VAA is first posted and verified by the Core Contract, after which it can be read by the receiving contract and action taken. -| Property | Description | -|:--------:|:-------------------------------------------:| -| `label` | Link name to show up | -| `href` | Target URL or URN | -| `target` | Anchor standard target, by default `_blank` | -| `order` | Order where the new item should be injected | + Retrieve the raw message data: -#### Sample Configuration {: #sample-configuration } + ```rs + let posted_message = &ctx.accounts.posted; + posted_message.data() + ``` -```json -{ - "showHamburgerMenu": false, - "menu": [ - { - "label": "Advance Tools", - "href": "https://portalbridge.com", - "target": "_self", - "order": 1 - } - ] + ??? interface "Example" + + ```rust + pub fn receive_message(ctx: Context, vaa_hash: [u8; 32]) -> Result<()> { + let posted_message = &ctx.accounts.posted; + + if let HelloWorldMessage::Hello { message } = posted_message.data() { + // Check message + // Your custom application logic here + Ok(()) + } else { + Err(HelloWorldError::InvalidMessage.into()) + } } -``` + ``` -### CoinGecko API Key {: #coingecko-api-key } + View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/solana/programs/01_hello_world){target=\_blank} repository on GitHub. -The CoinGecko API can be used to fetch token price data. If you have a [CoinGecko API Plan](https://apiguide.coingecko.com/getting-started/getting-started){target=\_blank}, you can include the API key in the configuration. Remember to always take steps to protect your sensitive API keys, such as defining them in `.env` files and including such files in your `.gitignore`. +#### Validating the Emitter -### More Networks {: #more-networks } +When processing cross-chain messages, it's critical to ensure that the message originates from a trusted sender (emitter). This can be done by verifying the emitter address and chain ID in the parsed VAA. -Specify a set of extra networks to be displayed on the network selection modal, each linking to a different page, dApp, or mobile app the user will be redirected to. The following properties are accessed through the `moreNetworks` property (e.g., `moreNetworks.href`): +Typically, contracts should provide a method to register trusted emitters and check incoming messages against this list before processing them. For example, the following check ensures that the emitter is registered and authorized: -|
Property
| Description | -|:--------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------:| -| `href` | **Required**. Default value for missing network hrefs | -| `target` | Default value for missing network link targets. Defaults to `_self` | -| `description` | Brief description that should be displayed as a tooltip when the user hovers over a more network icon. Used as default for missing network descriptions | -| `networks[].icon` | **Required**. URL data encoded icon to display | -| `networks[].href` | Network href to redirect to. If present, the values `sourceChain` and `targetChain` are replaced with the currently selected chains before redirecting | -| `networks[].label` | **Required**. Display text | -| `networks[].name` | Unique network key. Defaults to a snake_case version of the label | -| `networks[].description` | Description value. Defaults to `moreNetworks.description` | -| `networks[].target` | href target value. Defaults to `moreNetworks.target` | -| `networks[].showOpenInNewIcon` | Disable top right open in new icon. Defaults to **true** if target is `_blank` or **false** if target is `_self` | +```solidity +require(isRegisteredSender(emitterChainId, emitterAddress), "Invalid emitter"); +``` -??? code "View full configuration" - ```json - { - ... - "moreNetworks": { - "href": "https://example.com", - "target": "_blank", - "description": "brief description that should be displayed as tooltip when the user hovers over a more network icon", - "networks": [ - { - "icon": "https://assets.coingecko.com/coins/images/34661/standard/BSKT_Logo.png?1705636891", - "name": "more", - "label": "More networks", - "href": "https://portalbridge.com/#/transfer", - "showOpenInNewIcon": false - } - ] - } - ... -} - ``` +This check can be applied after the VAA is parsed, ensuring only authorized senders can interact with the receiving contract. Trusted emitters can be registered using a method like `setRegisteredSender` during contract deployment or initialization. -### More Tokens {: #more-tokens } +```typescript +const tx = await receiverContract.setRegisteredSender( + sourceChain.chainId, + ethers.zeroPadValue(senderAddress as BytesLike, 32) +); -Show a particular entry on the select tokens modal, redirecting the user to a different page, dApp, or mobile app. The following properties are accessed through the `moreTokens` property (e.g., `moreTokens.label`): +await tx.wait(); +``` -| Property | Description | -|:--------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------:| -| `label` | **Required**. Display text | -| `href` | **Required**. URL to redirect to. If present, the values `sourceChain` and `targetChain` are replaced with the currently selected chains before redirecting | -| `target` | href target. Defaults to `_self` | +#### Additional Checks -### Explorer {: #explorer } +In addition to environment-specific checks that should be performed, a contract should take care to check other [fields in the body](/docs/learn/infrastructure/vaas/){target=\_blank}, including: -Enable the explorer button to allow users to search for their transactions on a given explorer, filtering by their wallet address. The following properties are accessed through the `explorer` property (e.g., `explorer.label`): +- **Sequence** - is this the expected sequence number? How should out-of-order deliveries be handled? +- **Consistency level** - for the chain this message came from, is the [consistency level](/docs/build/reference/consistency-levels/){target=\_blank} enough to guarantee the transaction won't be reverted after taking some action? -| Property | Description | -|:--------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| `label` | Display text. Defaults to `Transactions` | -| `href` | **Required**. URL of the explorer, for instance [https://wormholescan.io/](https://wormholescan.io/){target=\_blank}. If present, the value `address` is replaced with the connected wallet address | -| `target` | `href` target. Defaults to `_blank` | +The VAA digest is separate from the VAA body but is also relevant. It can be used for replay protection by checking if the digest has already been seen. Since the payload itself is application-specific, there may be other elements to check to ensure safety. + +## Source Code References + +For a deeper understanding of the Core Contract implementation for a specific blockchain environment and to review the actual source code, please refer to the following links: + +- [Algorand Core Contract source code](https://github.com/wormhole-foundation/wormhole/blob/main/algorand/wormhole_core.py){target=\_blank} +- [Aptos Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/aptos/wormhole){target=\_blank} +- [EVM Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/ethereum/contracts){target=\_blank} ([`IWormhole.sol` interface](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/interfaces/IWormhole.sol){target=\_blank}) +- [NEAR Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/near/contracts/wormhole){target=\_blank} +- [Solana Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/solana/bridge/program){target=\_blank} +- [Sui Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/sui/wormhole){target=\_blank} +- [Terra Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/terra/contracts/wormhole){target=\_blank} --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/connect/configuration/configure-data +Doc-Content: https://wormhole.com/docs/build/core-messaging/index --- BEGIN CONTENT --- --- -title: Connect Data Configuration -description: Configure Wormhole Connect v1 (latest) with custom chains, tokens, routes, and more for enhanced blockchain interoperability. +title: Core Messaging Layer Contracts +description: Learn to use Wormhole’s foundational messaging contracts to build multichain apps with direct control over publishing, verifying, relaying, and more. --- -## Data Configuration +# Core Messaging +--- END CONTENT --- -This page explains how to configure Wormhole Connect's core functionality, from choosing supported chains and tokens to bridging routes to setting up wallets and enabling price lookups. By the end, you'll know how to specify custom networks and RPC endpoints, integrate different bridging protocols, add new tokens, and more. +Doc-Content: https://wormhole.com/docs/build/core-messaging/wormhole-relayers +--- BEGIN CONTENT --- +--- +title: Wormhole-Deployed Relayers +description: Learn about the Wormhole-deployed relayer configuration for seamless cross-chain messaging between contracts on different EVM blockchains without off-chain deployments. +--- -## Get Started +# Wormhole Relayer -Configure Wormhole Connect by passing a `WormholeConnectConfig` object as the `config` prop. +## Introduction -=== "React integration" +The Wormhole-deployed relayers provide a mechanism for contracts on one blockchain to send messages to contracts on another without requiring off-chain infrastructure. Through the Wormhole relayer module, developers can use an untrusted delivery provider to transport VAAs, saving the need to build and maintain custom relaying solutions. The option to [run a custom relayer](/docs/infrastructure/relayers/run-relayer/) is available for more complex needs. - ```ts - import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +This section covers the components and interfaces involved in using the Wormhole relayer module, such as message sending and receiving, delivery guarantees, and considerations for building reliable and efficient cross-chain applications. Additionally, you'll find details on how to handle specific implementation scenarios and track message delivery progress using the Wormhole CLI tool. -const config: WormholeConnectConfig = { - chains: ['Ethereum', 'Polygon', 'Solana'], - tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], - rpcs: { - Ethereum: 'https://rpc.ankr.com/eth', - Solana: 'https://rpc.ankr.com/solana', - } -} +## Get Started with the Wormhole Relayer - - ``` +Before getting started, it's important to note that the Wormhole-deployed relayer configuration is currently **limited to EVM environments**. The complete list of EVM environment blockchains is on the [Supported Networks](/docs/build/start-building/supported-networks/) page. -=== "Hosted integration" +To interact with the Wormhole relayer, you'll need to create contracts on the source and target chains to handle the sending and receiving of messages. No off-chain logic needs to be implemented to take advantage of Wormhole-powered relaying. - ```ts - import WormholeConnect, { - wormholeConnectHosted, - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +
+ ![Wormhole Relayer](/docs/images/build/core-messaging/wormhole-relayers/relayer-1.webp) +
The components outlined in blue must be implemented.
+
-const config: WormholeConnectConfig = { - chains: ['Ethereum', 'Polygon', 'Solana'], - tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], - rpcs: { - Ethereum: 'https://rpc.ankr.com/eth', - Solana: 'https://rpc.ankr.com/solana', - }, -}; +### Wormhole Relayer Interfaces -const container = document.getElementById('bridge-container'); +There are three relevant interfaces to discuss when utilizing the Wormhole relayer module: -wormholeConnectHosted(container, { - config, -}); - ``` +- [**`IWormholeRelayer`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IWormholeRelayer.sol){target=\_blank} - the primary interface by which you send and receive messages. It allows you to request the sending of messages and VAAs +- [**`IWormholeReceiver`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IWormholeReceiver.sol){target=\_blank} - this is the interface you are responsible for implementing. It allows the selected delivery provider to deliver messages/VAAs to your contract +- [**`IDeliveryProvider`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IDeliveryProvider.sol){target=\_blank} - this interface represents the delivery pricing information for a given relayer network. Each delivery provider implements this on every blockchain they support delivering from -!!! note - The complete type definition of `WormholeConnectConfig` is available in the [Wormhole Connect repository](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank}. +## Interact with the Wormhole Relayer -## Examples {: #examples } +To start interacting with the Wormhole relayer in your contracts, you'll need to import the `IWormholeRelayer` interface and set up a reference using the contract address to the Wormhole-deployed relayer on the supported network of your choice. -### Configuring Chains and RPC Endpoints {: #chains-and-rpc-endpoints } +To easily integrate with the Wormhole relayer interface, you can use the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank}. -Connect lets you customize the available chains to match your project's needs. You should provide your own RPC endpoints, as the default public ones may not support essential functions like balance fetching. +To retrieve the contract address of the Wormhole relayer, refer to the Wormhole relayer section on the [Contract Addresses](/docs/build/reference/contract-addresses/#wormhole-relayer) reference page. -=== "Mainnet" +Your initial set up should resemble the following: - ```js - import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; -const config: WormholeConnectConfig = { - chains: ['Ethereum', 'Polygon', 'Solana'], - rpcs: { - Ethereum: 'https://rpc.ankr.com/eth', - Solana: 'https://rpc.ankr.com/solana', - }, -}; +import "wormhole-solidity-sdk/interfaces/IWormholeRelayer.sol"; -function App() { - return ; +contract Example { + IWormholeRelayer public wormholeRelayer; + + constructor(address _wormholeRelayer) { + wormholeRelayer = IWormholeRelayer(_wormholeRelayer); + } } - ``` +``` -=== "Testnet" +The code provided sets up the basic structure for your contract to interact with the Wormhole relayer using the address supplied to the constructor. By leveraging methods from the `IWormholeRelayer` interface, you can implement message sending and receiving functionalities. The following sections will detail the specific methods you need to use for these tasks. - ```js - import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +### Send a Message -const config: WormholeConnectConfig = { - // You can use Connect with testnet chains by specifying "network": - network: 'Testnet', - chains: ['Sepolia', 'ArbitrumSepolia', 'BaseSepolia', 'Avalanche'], - rpcs: { - Avalanche: 'https://rpc.ankr.com/avalanche_fuji', - BaseSepolia: 'https://base-sepolia-rpc.publicnode.com', - }, -}; +To send a message to a contract on another EVM chain, you can call the `sendPayloadToEvm` method provided by the `IWormholeRelayer` interface. -function App() { - return ; -} - ``` +```solidity +function sendPayloadToEvm( + // Chain ID in Wormhole format + uint16 targetChain, + // Contract Address on target chain we're sending a message to + address targetAddress, + // The payload, encoded as bytes + bytes memory payload, + // How much value to attach to the delivery transaction + uint256 receiverValue, + // The gas limit to set on the delivery transaction + uint256 gasLimit +) external payable returns ( + // Unique, incrementing ID, used to identify a message + uint64 sequence +); +``` -!!! note - For a complete list of available chain names, see the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/base/src/constants/chains.ts){target=\_blank}. +The `sendPayloadToEvm` method is marked `payable` to receive fee payment for the transaction. The value to attach to the invocation is determined by calling the `quoteEVMDeliveryPrice`, which provides an estimate of the cost of gas on the target chain. -### Configuring Routes +```solidity +function quoteEVMDeliveryPrice( + // Chain ID in Wormhole format + uint16 targetChain, + // How much value to attach to delivery transaction + uint256 receiverValue, + // The gas limit to attach to the delivery transaction + uint256 gasLimit +) external view returns ( + // How much value to attach to the send call + uint256 nativePriceQuote, + uint256 targetChainRefundPerGasUnused +); +``` -By default, Connect offers two bridging protocols: Token Bridge (for Wormhole-wrapped tokens) and Circle's CCTP (for native USDC). For most use cases, integrators require more than these default routes. The `routes` property allows you to specify which protocols to include and exclude any routes unnecessary for your application, including default and third-party routes. +This method should be called before sending a message, and the value returned for `nativePriceQuote` should be attached to the call to send the payload to cover the transaction's cost on the target chain. -#### Available Route Plugins +In total, sending a message across EVM chains can be as simple as getting a fee quote and sending the message as follows: -The `@wormhole-foundation/wormhole-connect` package offers a variety of `route` plugins to give you flexibility in handling different protocols. You can choose from the following `route` exports for your integration: +```solidity +// Get a quote for the cost of gas for delivery +(cost, ) = wormholeRelayer.quoteEVMDeliveryPrice( + targetChain, + valueToSend, + GAS_LIMIT +); -- [**`TokenBridgeRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/tokenBridge/manual.ts){target=\_blank} - manually redeemed Wormhole Token Bridge route -- [**`AutomaticTokenBridgeRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/tokenBridge/automatic.ts){target=\_blank} - automatically redeemed (relayed) Token Bridge route -- [**`CCTPRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/cctp/manual.ts){target=\_blank} - manually redeemed CCTP route -- [**`AutomaticCCTPRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/cctp/automatic.ts){target=\_blank} - automatically redeemed (relayed) CCTP route -- **`DEFAULT_ROUTES`** - array containing the four preceding routes (`TokenBridgeRoute`, `AutomaticTokenBridgeRoute`, `CCTPRoute`, `AutomaticCCTPRoute`) -- [**`nttAutomaticRoute(nttConfig)`**](https://github.com/wormhole-foundation/native-token-transfers/blob/main/sdk/route/src/automatic.ts){target=\_blank} - function that returns the automatically-redeemed (relayed) Native Token Transfer (NTT) route -- [**`nttManualRoute(nttConfig)`**](https://github.com/wormhole-foundation/native-token-transfers/blob/main/sdk/route/src/manual.ts){target=\_blank}- function that returns the manually-redeemed NTT route -- **`nttRoutes(nttConfig)`** - function that returns both NTT routes as an array -- [**`MayanRoute`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L57){target=\_blank} - route that offers multiple Mayan protocols -- [**`MayanRouteSWIFT`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L528){target=\_blank} - route for Mayan's Swift protocol only -- [**`MayanRouteMCTP`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L539){target=\_blank} - route for Mayan's MCTP protocol only -- [**`MayanRouteWH`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L550){target=\_blank} - route for Mayan's original Wormhole transfer protocol +// Send the message +wormholeRelayer.sendPayloadToEvm{value: cost}( + targetChain, + targetAddress, + abi.encode(payload), + valueToSend, + GAS_LIMIT +); +``` -In addition to these routes, developers can create custom routes for their Wormhole-based protocols. For examples, refer to the [NTT](https://github.com/wormhole-foundation/native-token-transfers/tree/main/sdk/route){target=\_blank} and the [Mayan](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} example GitHub repositories. +### Receive a Message -For further details on the `route` plugin interface, refer to the [Wormhole TypeScript SDK route code](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/route.ts){target=\_blank}. +To receive a message using a Wormhole relayer, the target contract must implement the [`IWormholeReceiver`](https://github.com/wormhole-foundation/wormhole-relayer-solidity-sdk/blob/main/src/interfaces/IWormholeReceiver.sol){target=\_blank} interface, as shown in the [previous section](#interacting-with-the-wormhole-relayer). -#### Example: Offer Only CCTP Transfers +```solidity +function receiveWormholeMessages( + bytes memory payload, // Message passed by source contract + bytes[] memory additionalVaas, // Any additional VAAs that are needed (Note: these are unverified) + bytes32 sourceAddress, // The address of the source contract + uint16 sourceChain, // The Wormhole chain ID + bytes32 deliveryHash // A hash of contents, useful for replay protection +) external payable; +``` -To configure Wormhole Connect to offer only USDC transfers via the CCTP route, use the following configuration: +The logic inside the function body may be whatever business logic is required to take action on the specific payload. -```typescript -import WormholeConnect, { - AutomaticCCTPRoute, - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +## Delivery Guarantees -const config: WormholeConnectConfig = { - routes: [AutomaticCCTPRoute], -}; +The Wormhole relayer protocol is intended to create a service interface whereby mutually distrustful integrators and delivery providers can work together to provide a seamless dApp experience. You don't trust the delivery providers with your data, and the delivery providers don't trust your smart contract. The primary agreement between integrators and delivery providers is that when a delivery is requested, the provider will attempt to deliver the VAA within the provider's stated delivery timeframe. -; -``` +This creates a marketplace whereby providers can set different price levels and service guarantees. Delivery providers effectively accept the slippage risk premium of delivering your VAAs in exchange for a set fee rate. Thus, the providers agree to deliver your messages even if they do so at a loss. -#### Example: Offer All Default Routes and Third-Party Plugins +Delivery providers should set their prices such that they turn a profit on average but not necessarily on every single transfer. Thus, some providers may choose to set higher rates for tighter guarantees or lower rates for less stringent guarantees. -In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge and CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/contract-integrations/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. +## Delivery Statuses -```typescript -import WormholeConnect, { - DEFAULT_ROUTES, - nttRoutes, - MayanRouteSWIFT, - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +All deliveries result in one of the following four outcomes before the delivery provider's delivery timeframe. When they occur, these outcomes are emitted as EVM events from the Wormhole relayer contract. The four possible outcomes are: -import { myNttConfig } from './consts'; // Custom NTT configuration +- (0) Delivery Success +- (1) Receiver Failure +- (2) Forward Request Success +- (3) Forward Request Failure -const config: WormholeConnectConfig = { - routes: [...DEFAULT_ROUTES, ...nttRoutes(myNttConfig), MayanRouteSWIFT], -}; +A receiver failure is a scenario in which the selected provider attempted the delivery but it could not be completely successfully. The three possible causes for a delivery failure are: -; -``` +- The target contract does not implement the `IWormholeReceiver` interface +- The target contract threw an exception or reverted during the execution of `receiveWormholeMessages` +- The target contract exceeded the specified `gasLimit` while executing `receiveWormholeMessages` -This flexible plugin allows you to combine default routes (such as Token Bridge and CCTP) with third-party protocols, offering complete control over which routes are available in your application. +All three of these scenarios can be avoided with correct design by the integrator, and thus, it is up to the integrator to resolve them. Any other scenario that causes a delivery to not be performed should be considered an outage by some component of the system, including potentially the blockchains themselves. -### Adding Custom Tokens {: #custom-tokens } +`Forward Request Success` and `Forward Failure` represent when the delivery succeeded and the user requested a forward during the delivery. If the user has enough funds left over as a refund to complete the forward, the forward will be executed, and the status will be `Forward Request Success`. Otherwise, it will be `Forward Request Failure`. -The following section shows how to add an arbitrary token to your deployment of Connect. +## Other Considerations -!!! note - You will need to [register](https://portalbridge.com/advanced-tools/#/register){target=\_blank} your token with the Token Bridge to get the contract addresses necessary for it to work with that protocol. +Some implementation details should be considered during development to ensure safety and a pleasant UX. Ensure that your engineering efforts have appropriately considered each of the following areas: -This example configuration adds the BONK token to Connect. Note the `wrappedTokens` property, which is required for use with the Token Bridge. +- Receiving a message from a relayer +- Checking for expected emitter +- Calling `parseAndVerify` on any additional VAAs +- Replay protection +- Message ordering (no guarantees on order of messages delivered) +- Forwarding and call chaining +- Refunding overpayment of `gasLimit` +- Refunding overpayment of value sent -See the [Connect source code](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank} for the type definition of `TokensConfig`. +## Track the Progress of Messages with the Wormhole CLI -```typescript -import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +While no off-chain programs are required, a developer may want to track the progress of messages in flight. To track the progress of messages in flight, use the [Wormhole CLI](/docs/build/toolkit/cli/) tool's `status` subcommand. As an example, you can use the following commands to track the status of a transfer by providing the environment, origin network, and transaction hash to the `worm status` command: -const config: WormholeConnectConfig = { - tokensConfig: { - BONK: { - key: 'BONK', - symbol: 'BONK', - nativeChain: 'Ethereum', - icon: Icon.ETH, - tokenId: { - chain: 'Ethereum', - address: '0x1151CB3d861920e07a38e03eEAd12C32178567F6', - }, - coinGeckoId: 'bonk', - decimals: 18, - }, - }, - wrappedTokens: { - BONK: { - Solana: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', - }, - }, -}; -``` +=== "Mainnet" -### Whitelisting Tokens {: #whitelisting-tokens } + ```bash + worm status mainnet ethereum INSERT_TRANSACTION_HASH + ``` -Connect offers a list of built-in tokens by default. You can see it below: +=== "Testnet" -- [Mainnet tokens](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/mainnet/tokens.ts){target=\_blank} -- [Testnet tokens](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/testnet/tokens.ts){target=\_blank} + ```bash + worm status testnet ethereum INSERT_TRANSACTION_HASH + ``` -You can customize the tokens shown in the UI using the `tokens` property. The following example adds a custom token and limits Connect to showing only that token, along with the native gas tokens ETH and SOL. +See the [Wormhole CLI tool docs](/docs/build/toolkit/cli/) for installation and usage. -```jsx -import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +## Step-by-Step Tutorial -const config: WormholeConnectConfig = { - chains: ['Ethereum', 'Solana'], - tokens: ['ETH', 'SOL', 'BONK'], - rpcs: { - Ethereum: 'https://rpc.ankr.com/eth', - Solana: 'https://rpc.ankr.com/solana', - }, - tokensConfig: { - BONK: { - key: 'BONK', - symbol: 'BONK', - icon: 'https://assets.coingecko.com/coins/images/28600/large/bonk.jpg?1696527587', - tokenId: { - chain: 'Ethereum', - address: '0x1151CB3d861920e07a38e03eEAd12C32178567F6', - }, - decimals: 18, - }, - }, - wrappedTokens: { - BONK: { - Solana: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', - }, - }, -}; +For detailed, step-by-step guidance on creating cross-chain contracts that interact with the Wormhole relayer, refer to the [Create Cross-Chain Contracts](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/) tutorial. +--- END CONTENT --- -function App() { - return ; -} -``` +Doc-Content: https://wormhole.com/docs/build/index +--- BEGIN CONTENT --- +--- +title: Build with Wormhole +description: Learn how to start building multichain solutions on Wormhole, with tips to get started, an overview of the toolkit, and an introduction to the protocols. +template: root-index-page.html +--- -You can whitelist tokens by symbol or by specifying tuples of [chain, address]. For example, this would show only BONK token (on all chains you've whitelisted) as well as [`EPjFW...TDt1v`](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v){target=\_blank} on Solana, which is USDC. +# Build -```jsx -import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +## Get Started -const config: WormholeConnectConfig = { - chains: ['Ethereum', 'Solana'], - tokens: [ - // Whitelist BONK on every whitelisted chain - 'BONK', - // Also whitelist USDC, specifically on Solana - ['Solana', 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'] - ], - ... -}; +Whether you’re developing front-end applications using Wormhole's application-layer tools or building smart contract integrations on top of Wormhole’s messaging protocols, learn how Wormhole can help you achieve seamless, multichain interoperability. -function App() { - return ; -} -``` - -### User-Inputted Tokens {: #user-inputted-tokens } +
-As of version 2.0, Connect allows users to paste token addresses to bridge any token they want. As an integrator, you may want to disable this feature if you are deploying Connect for use only with a specific token(s). +- :octicons-tools-16:{ .lg .middle } **Start Building** -If you provide a token whitelist (see above), this is turned off automatically. However, you can also disable it explicitly like this: + --- -```jsx -import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; + Get equipped with everything you need to start developing with Wormhole, including an overview of supported networks and a list of demo projects. -const config: WormholeConnectConfig = { - ui: { - disableUserInputtedTokens: true - } -}; + [:custom-arrow: Get started](/docs/build/start-building/) -function App() { - return ; -} -``` +- :octicons-gear-16:{ .lg .middle } **Toolkit** -Setting `ui.disableUserInputtedTokens` to `true` will disable the ability to paste in token addresses. + --- -### Transaction Settings {: #transaction-settings } + Discover essential developer tools for managing and sending cross-chain transfers, including the Wormholescan explorer, Wormhole CLI, Wormhole SDKs, and more. -Landing transactions on Solana can require finely tuned priority fees when there is congestion. You can tweak how Connect determines these with `transactionSettings`. All of the parameters in this configuration are optional; you can provide any combination of them. + [:custom-arrow: Discover tools](/docs/build/toolkit/) -```jsx -import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +- :octicons-book-16:{ .lg .middle } **Reference** -const config: WormholeConnectConfig = { - transactionSettings: { - Solana: { - priorityFee: { - // Number between 0-1, defaults to 0.9. Higher percentile yields higher fees. - // For example, you can set percentile to 0.95 to make Connect compute the - // 95th percentile priority fee amount based on recent transactions - percentile: 0.95, + --- - // Any number, defaults to 1.0. The fee amount is multiplied by this number. - // This can be used to further raise or lower the fees Connect is using. - // For example, percentile=0.95 and percentileMultiple=1.1 would use - // the 95th percentile fee, with a 10% increase - percentileMultiple: 1.1, + Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and consistency levels for Guardians. - // Minimum fee you want to use in microlamports, regardless of recent transactions - // Defaults to 1 - min: 200_000, + [:custom-arrow: Explore reference](/docs/build/reference/) - // Maximum fee you want to use in microlamports, regardless of recent transactions - // Defaults to 100,000,000 - max: 5_000_000, - } - } - } -}; +
+--- END CONTENT --- -function App() { - return ; -} -``` +Doc-Content: https://wormhole.com/docs/build/multigov/deployment +--- BEGIN CONTENT --- +--- +title: MultiGov Deployment +description: Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. +--- -!!! note - Connect can calculate fees more accurately if you are using a [Triton](https://triton.one){target=\_blank} RPC endpoint. +# Deployment -### Wallet Set Up {: #reown-cloud-project-id } +This guide provodes instructions to set up and deploy the MultiGov governance system locally. Before diving into the technical deployment, ensure that MultiGov is the right fit for your project’s governance needs by following the steps for the [integration process](/docs/build/multigov/){target=\_blank}. -Your selected blockchain network determines the available wallet options when using Wormhole Connect. +Once your project is approved through the intake process and you’ve collaborated with the Tally team to tailor MultiGov to your requirements, use this guide to configure, compile, and deploy the necessary smart contracts across your desired blockchain networks. This deployment will enable decentralized governance across your hub and spoke chains. - - For EVM chains, wallets like MetaMask and Reown Cloud (formerly WalletConnect) are supported - - For Solana, you'll see options such as Phantom, Torus, and Coin98 +## Prerequisites -The wallet options automatically adjust based on the selected chain, providing a seamless user experience without additional configuration. +To interact with MultiGov, you'll need the following: -If you would like to offer Reown Cloud (formerly WalletConnect) as a supported wallet option, you'll need to obtain a project ID on the [Reown Cloud dashboard](https://cloud.reown.com/){target=\_blank}. +- Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} +- Install [Git](https://git-scm.com/downloads){target=\_blank} +- Clone the repository: + ```bash + git clone [MultiGov Repository URL] + cd evm # for evm testing/deploying + ``` -### CoinGecko API Key {: #coingecko-api-key } +## Development Setup -The CoinGecko API can be used to fetch token price data. If you have a [CoinGecko API Plan](https://apiguide.coingecko.com/getting-started/getting-started){target=\_blank}, you can include the API key in the configuration. +For developers looking to set up a local MultiGov environment: -```jsx -import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +1. Install dependencies: + ```bash + forge install + ``` -const config: WormholeConnectConfig = { - coinGeckoApiKey: 'INSERT_API_KEY', -}; +2. Set up environment variables: + ```bash + cp .env.example .env + ``` + Edit `.env` with your specific [configuration](/docs/build/multigov/deployment/#configuration){target=\_blank} -function App() { - return ; -} -``` ---- END CONTENT --- +3. Compile contracts: + ```bash + forge build + ``` -Doc-Content: https://wormhole.com/docs/build/applications/connect/configuration/configure-theme ---- BEGIN CONTENT --- ---- -title: Connect Theme & UI Customization -description: Learn how to style Wormhole Connect with custom color schemes, fonts, layouts, and menus for a streamlined user experience. ---- +4. Deploy contracts (example for Sepolia testnet): -## Theme & UI Customization + For hub chains: + ```bash + forge script script/DeployHubContractsSepolia.s.sol --rpc-url $SEPOLIA_RPC_URL --broadcast + ``` -This page focuses on how to style the Wormhole Connect widget, covering color schemes, fonts, layout changes (like toggling the hamburger menu), and adding extra menu entries. You'll learn how to customize Connect's look and feel to match your application's branding. + For spoke chains (e.g., Optimism Sepolia): + ```bash + forge script script/DeploySpokeContractsOptimismSepolia.s.sol --rpc-url $OPTIMISM_SEPOLIA_RPC_URL --broadcast + ``` -### Changing the Color Scheme +## Configuration -You can customize Connect's color scheme by providing a `theme` prop. +When deploying MultiGov, several key parameters need to be set. Here are the most important configuration points: -=== "React integration" +### Hub Governor Key Parameters - ```ts - import WormholeConnect, { - WormholeConnectConfig, - WormholeConnectTheme, -} from '@wormhole-foundation/wormhole-connect'; +- `initialVotingDelay` ++"uint256"++ - the delay measured in seconds before voting on a proposal begins. For example, `86400` is one day +- `initialProposalThreshold` ++"uint256"++ - the number of tokens needed to create a proposal +- `initialQuorum` ++"uint256"++ - the minimum number of votes needed for a proposal to be successful +- `initialVoteWeightWindow` ++"uint256"++ - a window where the minimum checkpointed voting weight is taken for a given address. The window ends at the vote start for a proposal and begins at the vote start minus the vote weight window. The voting window is measured in seconds, e.g., `86400` is one day -const config: WormholeConnectConfig = { - /* Your config... */ -}; + !!! note + This helps mitigate cross-chain double voting. -const theme: WormholeConnectTheme = { - mode: 'dark', - primary: '#78c4b6', - font: 'Comic Sans; sans-serif', -}; +### Hub Proposal Extender Key Parameters -function App() { - return ; -} - ``` +- `extensionDuration` ++"uint256"++ - the amount of time, in seconds, for which target proposals will be extended. For example, `10800` is three hours +- `minimumExtensionDuration` ++"uint256"++ - lower time limit, in seconds, for extension duration. For example, `3600` is one hour -=== "Hosted integration" +### Spoke Vote Aggregator Key Parameters - ```ts - import WormholeConnect, { - WormholeConnectConfig, - WormholeConnectTheme, - wormholeConnectHosted, -} from '@wormhole-foundation/wormhole-connect'; +- `initialVoteWindow` ++"uint256"++ - the moving window in seconds for vote weight checkpoints. These checkpoints are taken whenever an address that is delegating sends or receives tokens. For example, `86400` is one day -const config: WormholeConnectConfig = { - /* Your config... */ -}; + !!! note + This is crucial for mitigating cross-chain double voting -const theme: WormholeConnectTheme = { - mode: 'dark', - primary: '#78c4b6', - font: 'Comic Sans; sans-serif', -}; +### Hub Evm Spoke Vote Aggregator Key Parameters -const container = document.getElementById('bridge-container'); +- `maxQueryTimestampOffset` ++"uint256"++ - the max timestamp difference, in seconds, between the requested target time in the query and the current block time on the hub. For example, `1800` is 30 minutes -wormholeConnectHosted(container, { - config, - theme, -}); - ``` +### Updateable Governance Parameters -The `WormholeConnectTheme` type supports the following properties: +The following key parameters can be updated through governance proposals: -|
Property
| Description | Example | -|:--------------------------------------:|:---------------------------------------------------------------------:|:---------------------:| -| `mode` | Dark mode or light mode. **Required** | `"dark"` or `"light"` | -| `input` | Color used for input fields, dropdowns | `"#AABBCC"` | -| `primary` | Primary color used for buttons | `"#AABBCC"` | -| `secondary` | Secondary color used for some UI elements | `"#AABBCC"` | -| `text` | Primary color used for text | `"#AABBCC"` | -| `textSecondary` | Secondary color used for dimmer text | `"#AABBCC"` | -| `error` | Color to display errors in, usually some shade of red | `"#AABBCC"` | -| `success` | Color to display success messages in | `"#AABBCC"` | -| `font` | Font used in the UI, can be custom font available in your application | `"Arial; sans-serif"` | +- `votingDelay` - delay before voting starts (in seconds) +- `votingPeriod` - duration of the voting period (in seconds) +- `proposalThreshold` - threshold for creating proposals (in tokens) +- `quorum` - number of votes required for quorum +- `extensionDuration` - the amount of time for which target proposals will be extended (in seconds) +- `voteWeightWindow` - window for vote weight checkpoints (in seconds) +- `maxQueryTimestampOffset` - max timestamp difference allowed between a query's target time and the hub's block time -### Toggle Hamburger Menu {: #toggle-hamburger-menu } +These parameters can be queried using their respective getter functions on the applicable contract. -By setting the `showHamburgerMenu` option to **false**, you can deactivate the hamburger menu, which will position the links at the bottom. +To update these parameters, a governance proposal must be created, voted on, and executed through the standard MultiGov process. +--- END CONTENT --- -#### Add Extra Menu Entry {: #add-extra-menu-entry } +Doc-Content: https://wormhole.com/docs/build/multigov/faq +--- BEGIN CONTENT --- +--- +title: MultiGov Technical FAQs +description: Find answers to common questions about MultiGov, covering cross-chain governance, technical setup, security, proposal creation, and more. +--- -By setting the `showHamburgerMenu` option to `false,` you can add extra links. The following properties are accessed through the `menu[]` property (e.g., `menu[].label`): +# FAQs -| Property | Description | -|:--------:|:-------------------------------------------:| -| `label` | Link name to show up | -| `href` | Target URL or URN | -| `target` | Anchor standard target, by default `_blank` | -| `order` | Order where the new item should be injected | +## Technical Questions -```jsx -import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +### How does MultiGov ensure security in cross-chain communication? -const config: WormholeConnectConfig = { - ui: { - showHamburgerMenu: false, - menu: [ - { - label: 'Advance Tools', - href: 'https://portalbridge.com', - target: '_self', - order: 1, - }, - ], - }, -}; +MultiGov leverages Wormhole's robust cross-chain communication protocol. It implements several security measures: -function App() { - return ; -} -``` ---- END CONTENT --- - -Doc-Content: https://wormhole.com/docs/build/applications/connect/configuration/index ---- BEGIN CONTENT --- ---- -title: Wormhole Connect -description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. ---- - -# Wormhole Connect - -## Configure Connect - -Wormhole Connect is a flexible React widget that streamlines cross-chain asset transfers and enables seamless interoperability by leveraging Wormhole's powerful infrastructure. Designed for easy integration into decentralized applications (dApps), Wormhole Connect abstracts the complexities of cross-chain communication, providing a user-friendly experience for both developers and end users. - -This guide provides detailed instructions on configuring Wormhole Connect and highlights the many ways it can be customized to fit your specific needs, from integrating supported blockchains and tokens to tailoring the user interface. - -!!! note - To upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/applications/connect/upgrade/){target=\_blank} for instructions. - - If you're using an older version of Wormhole Connect (v0.x), please refer to the [v0.x configuration documentation](/docs/build/applications/connect/configuration-v0/){target=\_blank}. - -
- -- :octicons-database-16:{ .lg .middle } **Data** - - --- - - Learn how to configure the networks, tokens, and routes supported by Wormhole Connect. Set up RPC endpoints, whitelist tokens, and leverage multiple bridging protocols to meet your dApp's needs. - - - [:custom-arrow: Get started](/docs/build/applications/connect/configuration/configure-data/) - -- :octicons-apps-16:{ .lg .middle } **Theme** - - --- +- Message origin verification to prevent unauthorized governance actions +- Timely and consistent data checks to ensure vote aggregation is based on recent and synchronized chain states +- Authorized participant validation to maintain the integrity of the governance process +- Replay attack prevention by tracking executed messages - Discover how to style the Wormhole Connect widget to align with your brand. Customize colors, fonts, and UI elements to deliver a seamless user experience. +### Can MultiGov integrate with any blockchain? - [:custom-arrow: Explore routes](/docs/build/applications/connect/configuration/configure-theme/) +MultiGov can potentially integrate with any blockchain supported by Wormhole. However, specific implementations may vary depending on the chain's compatibility with the Ethereum Virtual Machine (EVM) and its smart contract capabilities. [See the full list of supported networks](/docs/build/start-building/supported-networks/). The current implementation of MultiGov supports an EVM hub and both the EVM and SVM for spokes. -
---- END CONTENT --- +### How are votes aggregated across different chains? -Doc-Content: https://wormhole.com/docs/build/applications/connect/faqs ---- BEGIN CONTENT --- ---- -title: Connect FAQs -description: Common questions and detailed answers about using Wormhole Connect, including supported assets, chains, customization, and integration options. ---- +Votes are collected on each spoke chain using each chain's `SpokeVoteAggregator`. These votes are then transmitted to the HubVotePool on the hub chain for aggregation and tabulation. The `HubEvmSpokeVoteDecoder` standardizes votes from different EVM chains to ensure consistent processing. -# Wormhole Connect FAQs +### Can governance upgrade from a single chain to MultiGov? -## What types of assets does Connect support? +Yes! MultiGov can support progressively upgrading from a single-chain governance to MultiGov. Moving to MultiGov requires upgrading the token to NTT and adding Flexible Voting to the original Governor. -Wormhole Connect supports both native and wrapped assets across all Wormhole-supported blockchains. This includes: +## Usage Questions - - Major stablecoins like USDT and USDC (via CCTP) - - Native gas tokens such as ETH, SOL, etc. - - Cross-chain asset swaps through integrators like Mayan +### How can I create a proposal in MultiGov? -When bridging assets through the Wormhole Token Bridge, depending on the chain and token, assets may arrive as Wormhole-wrapped tokens on the destination chain. +Proposals are created on the hub chain using the `HubEvmSpokeAggregateProposer` contract or by calling `propose` on the `HubGovernor`. You need to prepare the proposal details, including targets, values, and calldatas. The proposer's voting weight is aggregated across chains using Wormhole queries to determine eligibility. -## What chains does Connect support? +### How do I vote on a proposal if I hold tokens on a spoke chain? -Connect supports around 30 chains, spanning various blockchain runtimes: +You can vote on proposals via the `SpokeVoteAggregator` contract on the respective spoke chain where you hold your tokens. The votes are then automatically forwarded to the hub chain for aggregation. - - EVM-based chains (Ethereum, Base, Arbitrum, BSC, etc.) - - Solana - - Move-based chains (Sui, Aptos) +### How are approved proposals executed across multiple chains? -For a complete list of supported chains, see the [Connect-supported chains list](/docs/build/applications/connect/features/){target=\_blank}. +When a proposal is approved and the timelock period elapses, it's first executed on the hub chain. A proposal can include a cross-chain message by including a call to `dispatch` on the `HubMessageDispatcher`, which sends a message to the relevant spoke chains. On each spoke chain, the `SpokeMessageExecutor` receives, verifies, and automatically executes the instructions using the `SpokeAirlock` as the `msg.sender`. -## What is gas dropoff? +## Implementation Questions -Gas dropoff allows users to receive gas for transaction fees on the destination chain, eliminating the need to acquire the native gas token from a centralized exchange. The relayer automatically swaps part of the transferred assets into the native gas token, enabling seamless entry into new ecosystems. +### What are the requirements for using MultiGov? -## Can I customize Connect inside my application? +To use MultiGov, your DAO must meet the following requirements: -Connect can be [fully customized](https://connect-in-style.wormhole.com/){target=\_blank} to choose the chains and assets you wish to support. You may also select different themes and colors to tailor Connect for your decentralized application. For details, see the [GitHub readme](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}. +- **ERC20Votes token** - your DAO's token must implement the `ERC20Votes` standard and support `CLOCK_MODE` timestamps for compatibility with cross-chain governance +- **Flexible voting support** - your DAO's Governor must support Flexible Voting to function as the Hub Governor. If your existing Governor does not support Flexible Voting, you can upgrade it to enable this feature -## Which functions or events does Connect rely on for NTT integration? +### What do I need to set up MultiGov for my project? -Connect relies on the NTT SDK for integration, with platform-specific implementations for Solana and EVM. The critical methods involved include initiate and redeem functions and rate capacity methods. These functions ensure Connect can handle token transfers and manage chain-rate limits. +Get started by filling out the form below: -## Do integrators need to enable wallets like Phantom or Backpack in Wormhole Connect? +https://www.tally.xyz/get-started -Integrators don’t need to explicitly enable wallets like Phantom or Backpack in Wormhole Connect. However, the wallet must be installed and enabled in the user's browser to appear as an option in the interface. +Tally will reach out to help get your DAO set up with MultiGov. -## Which function should be modified to set priority fees for Solana transactions? +To set up testing MultiGov for your DAO, you'll need: -In [Wormhole Connect](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}, you can modify the priority fees for Solana transactions by updating the `computeBudget/index.ts` file. This file contains the logic for adjusting the compute unit limit and priority fees associated with Solana transactions. +- [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} and [Git](https://git-scm.com/downloads){target=\_blank} installed +- Test ETH on the testnets you plan to use (e.g., Sepolia for hub, Optimism Sepolia for spoke) +- Modify and deploy the hub and spoke contracts using the provided scripts +- Set up the necessary environment variables and configurations -To control the priority fee applied to your transactions, you can modify the `feePercentile` and `minPriorityFee` parameters in the `addComputeBudget` and `determineComputeBudget` functions. +### Can MultiGov be used with non-EVM chains? -The relevant file can be found in the Connect codebase: [`computeBudget/index.ts`](https://github.com/wormhole-foundation/wormhole-connect/blob/62f1ba8ee5502ac6fd405680e6b3816c9aa54325/sdk/src/contexts/solana/utils/computeBudget/index.ts){target=\_blank}. +The current implementation is designed for EVM-compatible chains. However, Solana (non-EVM) voting is currently in development and expected to go live after the EVM contracts. -## Is there a minimum amount for bridging with CCTP or the Connect SDK? +### How can I customize voting parameters in MultiGov? -There is no minimum amount for bridging via CCTP if the user covers the gas fees on both the source and destination chains. However, if the transfer is automatically relayed, a minimum amount is required to cover relay fees on the destination chain. The relay provider charges these fees at cost. +Voting parameters such as voting delay, voting period, proposal threshold, and quorum (and others) can be customized in the deployment scripts (`DeployHubContractsSepolia.s.sol` and `DeploySpokeContractsOptimismSepolia.s.sol` as examples for their respective chains). Make sure to adjust these parameters according to your DAO's specific needs before deployment. -Current relay fees: +Remember to thoroughly test your MultiGov implementation on testnets before deploying to Mainnet, and have your contracts audited for additional security. -- Ethereum L1: ~4.2 USDC -- Base, Optimism, Arbitrum, Avalanche: 0.3 USDC +### How does MultiGov handle potential network issues or temporary chain unavailability? -Additional notes: +MultiGov includes several mechanisms to handle network issues or temporary chain unavailability: -- **USDC to Solana** - Wormhole's native CCTP route does not currently support automatic relaying of USDC to Solana. However, you can transfer USDC to Solana using the [Mayan plugin](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} for the SDK. Mayan is a protocol that integrates Wormhole and CCTP to enable this functionality -- **Frontend integrations** - - **Connect** - A pre-built UI available via [@wormhole-foundation/wormhole-connect](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect){target=\_blank} - - **TypeScript SDK** - A lower-level integration option, available via [@wormhole-foundation/sdk](https://www.npmjs.com/package/@wormhole-foundation/sdk){target=\_blank}, allowing developers to build custom UIs +1. **Asynchronous vote aggregation** - votes are aggregated periodically, allowing the system to continue functioning even if one chain is temporarily unavailable +2. **Proposal extension** - the `HubGovernorProposalExtender` allows trusted actors to extend voting periods if needed, which can help mitigate issues caused by temporary network problems +3. **Wormhole retry mechanism** - Wormhole's infrastructure includes retry mechanisms for failed message deliveries, helping ensure cross-chain messages eventually get through +4. **Decentralized relayer network** - Wormhole's decentralized network of relayers helps maintain system availability even if some relayers are offline - !!!note - The TypeScript SDK was previously referred to as the "Connect SDK," but this naming has since been discontinued. +However, prolonged outages on the hub chain or critical spoke chains could potentially disrupt governance activities. Projects should have contingency plans for such scenarios. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/connect/features +Doc-Content: https://wormhole.com/docs/build/multigov/index --- BEGIN CONTENT --- --- -title: Features -description: Explore a comprehensive Feature Support matrix and explain Wormhole's capabilities across networks for Token Bridge, CCTP, ETH Bridge, and more. +title: Getting Started with MultiGov +description: Learn how to get started with MultiGov, from evaluating cross-chain governance needs to deploying with help from the Tally team. --- -## Feature Support Matrix {: #feature-support-matrix} - -*Scroll down for details about each column.* - -| **Network** | **Token Bridge** | **Token Bridge Relayer** | **Circle CCTP** | **ETH Bridge** | **Gas Drop Off** | -|:-----------:|:----------------:|:------------------------:|:---------------:|:--------------:|:----------------:| -| Solana | ✅ | ✅ | ✅ | ❌ | ✅ | -| Ethereum | ✅ | ✅ | ✅ | ✅ | ✅ | -| BSC | ✅ | ✅ | ❌ | ✅ | ✅ | -| Polygon | ✅ | ✅ | ✅ | ✅ | ✅ | -| Avalanche | ✅ | ✅ | ✅ | ✅ | ✅ | -| Fantom | ✅ | ✅ | ❌ | ❌ | ✅ | -| Kaia | ✅ | ❌ | ❌ | ❌ | ❌ | -| Celo | ✅ | ✅ | ❌ | ❌ | ✅ | -| Moonbeam | ✅ | ✅ | ❌ | ❌ | ✅ | -| Injective | ✅ | ❌ | ❌ | ❌ | ❌ | -| Sui | ✅ | ✅ | ❌ | ❌ | ✅ | -| Aptos | ✅ | ❌ | ❌ | ❌ | ❌ | -| Arbitrum | ✅ | ✅ | ✅ | ✅ | ✅ | -| Optimism | ✅ | ✅ | ✅ | ✅ | ✅ | -| Base | ✅ | ✅ | ✅ | ✅ | ✅ | -| Sei | ✅ | ❌ | ❌ | ❌ | ❌ | -| Scroll | ✅ | ❌ | ❌ | ❌ | ❌ | -| Blast | ✅ | ❌ | ❌ | ❌ | ❌ | -| X Layer | ✅ | ❌ | ❌ | ❌ | ❌ | - -## Feature Explanation {: #feature-explanation} - -### Token Bridge {: #token-bridge} - -Wormhole is best known for its Token Bridge transfer method. It locks assets on the source chain and mints Wormhole-wrapped "IOU" tokens on the destination chain. To transfer the assets back, the Wormhole-wrapped tokens are burned, unlocking the tokens on their original chain. - -This route appears if both of the following conditions are satisfied: - - - Both the origin and destination chains support Token Bridge - - No non-Token Bridge routes are available for the selected token - -### Token Bridge Relayer {: #token-bridge-relayer} - -On the [routes](/docs/build/applications/connect/routes/){target=\_blank} page, this is referred to as the automatic route in the Token Bridge section. - -Trustless relayers can execute the second transaction on behalf of the user, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. - -This route appears if all of the following conditions are satisfied: - -- Both the origin and destination chains support Token Bridge -- Both the origin and destination chains support Token Bridge relayer -- No non-Token Bridge routes are available for the selected token -- The relayer supports the selected token on the origin chain - -### Circle CCTP {: #circle-cctp} - -[Circle](https://www.circle.com/en/){target=\_blank}, the issuer of USDC, provides a native way for native USDC to be transferred between [CCTP-enabled](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank} chains. - -This route appears if all of the following conditions are satisfied: - -- Both the origin and destination chains support Circle CCTP -- The selected token is native Circle-issued USDC - -### ETH Bridge {: #eth-bridge} - -[Powered by Uniswap liquidity pools](https://github.com/wormhole-foundation/example-uniswap-liquidity-layer){target=\_blank}, this route can transfer native ETH or wstETH between certain EVMs without going through the native bridges. - -This route appears if all of the following conditions are satisfied: - -- Both the origin and destination chains support the ETH Bridge -- The selected token is native ETH, wstETH, or canonical wETH - -### Gas Drop Off {: #gas-drop-off} - -A relayer can drop off some gas tokens on the destination chain by swapping some of the assets transferred to the native gas token. This is useful if the user wishes to transfer assets to a chain where they don't already have gas. This way, they don't need to onboard into the ecosystem from a centralized exchange. - -This route appears if all of the following conditions are satisfied: - -- Both the origin and destination chains support gas drop off -- An automatic route is selected -- The relayer accepts the selected token to swap into the gas token ---- END CONTENT --- +# MultiGov -Doc-Content: https://wormhole.com/docs/build/applications/connect/index ---- BEGIN CONTENT --- ---- -title: Wormhole Connect -description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. ---- +## Begin the MultiGov Integration Process -# Wormhole Connect +Take the following steps to get started with a MultiGov integration: -## Get Started +1. Evaluate if [MultiGov](/docs/learn/governance/) meets your cross-chain governance needs +2. Fill out the intake form on the [Tally website](https://www.tally.xyz/get-started){target=\_blank} +3. The Tally team will review your application and contact you to discuss implementation details +4. Work with the Tally team to customize and deploy MultiGov for your specific use case -Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. +## Start Building
-- :octicons-code-square-16:{ .lg .middle } **Overview** - - --- - - Explore Wormhole Connect, the React widget that allows you to offer an easy-to-use UI for cross-chain asset transfers via Wormhole in a web application. - - [:custom-arrow: Get started](/docs/build/applications/connect/overview/) - -- :octicons-code-16:{ .lg .middle } **Routes** +- :octicons-rocket-16:{ .lg .middle } **Deployment** --- - Explore Wormhole Connect's routing capabilities for asset transfers, featuring Token Bridge, CCTP, NTT, and various blockchain-specific routes for optimal UX. - - [:custom-arrow: Explore routes](/docs/build/applications/connect/routes/) - -- :octicons-globe-16:{ .lg .middle } **Features** - - --- - Learn which features of Connect are available for your network of choice. + Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. - [:custom-arrow: Discover supported features](/docs/build/applications/connect/features/) + [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deployment/) -- :octicons-pencil-16:{ .lg .middle } **Configuration** +- :octicons-file-code-16:{ .lg .middle } **Upgrade Contracts** --- - Configure Wormhole Connect for React or HTML, set themes, define tokens, networks, and customize RPC endpoints for enhanced blockchain interactions. + Learn the process and key considerations for upgrading MultiGov contracts, ensuring system integrity and careful planning across cross-chain components. - [:custom-arrow: Configure for customization](/docs/build/applications/connect/configuration/) + [:custom-arrow: Discover how to upgrade MultiGov](/docs/build/multigov/upgrade/) -- :octicons-question-16:{ .lg .middle } **Connect FAQs** +- :octicons-question-16:{ .lg .middle } **Technical FAQs** --- - Find answers to common questions about Wormhole Connect, including supported assets, chains, and integration options. + Find answers to common technical questions about MultiGov, covering technical setup, security, proposal creation, and more. - [:custom-arrow: Read Connect FAQs](/docs/build/applications/connect/faqs/) + [:custom-arrow: Find the answer to your technical questions](/docs/build/multigov/faq/)
@@ -1605,6099 +1042,5764 @@ Wormhole Connect is a React widget offering an easy-to-use interface to facilita
-- :octicons-browser-16:{ .lg .middle } **Codeless Interface** +- :octicons-book-16:{ .lg .middle } **What is MultiGov?** --- - Check out the codeless interface for an easy approach to styling and customizing a Connect widget for your multichain application. + Need to familiarize yourself with MultiGov? Discover everything you need to know about MultiGov, Wormhole's cross-chain governance solution. - [:custom-arrow: Quickly get started](https://connect-in-style.wormhole.com/){target=\_blank} + [:custom-arrow: Learn the basics](/docs/learn/governance/) -- :octicons-browser-16:{ .lg .middle } **A Live Example** +- :octicons-checklist-16:{ .lg .middle } **Tutorials** --- - View an example of the Wormhole Connect widget live in a production application. + Access step-by-step tutorials for executing cross-chain governance actions, including treasury management proposals with MultiGov. - [:custom-arrow: See Connect in action](https://portalbridge.com/){target=\_blank} + [:custom-arrow: Learn by building](/docs/tutorials/multigov/)
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/connect/overview +Doc-Content: https://wormhole.com/docs/build/multigov/upgrade --- BEGIN CONTENT --- --- -title: Overview -description: Explore Wormhole Connect, the React widget that allows you to offer an easy-to-use UI for cross-chain asset transfers via Wormhole in a web application. +title: Upgrading MultiGov +description: Learn the process and key considerations for upgrading MultiGov, ensuring system integrity and careful planning across cross-chain components. --- -# Wormhole Connect - -## Introduction {: #introduction } +# Upgrade MultiGov Contracts -Wormhole Connect is a React widget that lets developers offer an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. Check out the [Wormhole Connect GitHub repository](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}. +MultiGov is designed to be flexible but stable. Upgrades should be rare and carefully considered due to the system's complexity and cross-chain nature. When upgrades are necessary, they must be meticulously planned and executed to ensure system integrity and continuity. -The [Wormhole TypeScript SDK](https://docs.wormhole.com/wormhole/reference/sdk-docs){target=\_blank} allows you to implement the same functionality as the Connect widget but in your own UI. Check out the docs for more information on using the SDK instead of Connect. +## Key Considerations for Upgrades -## Features {: #features } +- **`HubGovernor`**: + - Not upgradeable. A new deployment requires redeploying several components of the MultiGov system. Refer to the [Process for Major System Upgrade](/docs/build/multigov/upgrade/#process-for-major-system-upgrade) section for more details -Wormhole Connect is easy to customize to suit your application's needs. You can specify technical details like supported assets and custom RPCs or forgo customization and have a full-featured widget. The widget UI is highly customizable, with extensive styling options available, including a user-friendly no code styling interface for those who prefer a more visual approach to design. The features of Wormhole Connect include: +- **`HubVotePool`**: + - Can be replaced by setting a new `HubVotePool` on the `HubGovernor` + - Requires re-registering all spokes on the new `HubVotePool` + - Must register the query type and implementation for vote decoding by calling `registerQueryType` on the new `HubVotePool` + - A new proposal would have to authorize the governor to use the newly created hub vote pool and will also handle registering the appropriate query decoders and registering the appropriate spoke `SpokeVoteAggregators` -- Multiple ways to bridge assets ([routes](/docs/build/applications/connect/routes/){target=\_blank}) -- Extensive ways to style the UI (including the [no code styling interface](https://connect-in-style.wormhole.com/){target=\_blank}) -- Ways to [configure](/docs/build/applications/connect/configuration/){target=\_blank} what feature set to offer -- Ability to configure any token to bridge via Wormhole -- [Ability to drop off some gas](/docs/build/applications/connect/features/){target=\_blank} at the destination +- **`SpokeMessageExecutor`**: + - Upgradeable via [UUPS](https://www.rareskills.io/post/uups-proxy){target=\_blank} proxy pattern + - Stores critical parameters in `SpokeMessageExecutorStorage` -For more details about the features of Wormhole Connect and a breakdown of supported features by chain, be sure to check [the features page](/docs/build/applications/connect/features/){target=\_blank}. +- **`HubEvmSpokeAggregateProposer`**: + - Needs redeployment if `HubGovernor` changes + - Requires re-registering all spokes after redeployment -## Production DApp Examples {: #production-dapp-examples } +- **`HubProposalMetadata`**: + - Needs redeployment if `HubGovernor` changes, as it references `HubGovernor` as a parameter -Wormhole Connect is deployed live in several production apps. Here are a few: +- **`SpokeMetadataCollector`**: + - Requires redeployment if the hub chain ID changes or if `HubProposalMetadata` changes -- [Portal Bridge](https://portalbridge.com/){target=\_blank} -- [Jupiter](https://jup.ag/onboard/cctp){target=\_blank} -- [Pancake Swap](https://bridge.pancakeswap.finance/wormhole){target=\_blank} +## Process for Major System Upgrade -## Integrate Connect {: #integrate-connect } +1. **New `HubGovernor` deployment**: + - Deploy the new `HubGovernor` contract +1. **Component redeployment**: + - Redeploy `HubEvmSpokeAggregateProposer` with the new `HubGovernor` address + - Redeploy `HubProposalMetadata` referencing the new `HubGovernor` + - If hub chain ID changes, redeploy `SpokeMetadataCollector` on all spoke chains +1. **`HubVotePool` update**: + - Set the new `HubVotePool` on the new `HubGovernor` + - Register all spokes on the new `HubVotePool` + - Register the query type and implementation for vote decoding (`HubEvmSpokeVoteDecoder`) +1. **Spoke re-registration**: + - Re-register all spokes on the new `HubEvmSpokeAggregateProposer` +1. **Verification and testing**: + - Conduct thorough testing of the new system setup + - Verify all cross-chain interactions are functioning correctly +1. **System transition and deprecation**: + - Create a proposal to switch the timelock to the new governor + - Communicate clearly to the community what changes were made +1. **Monitoring**: + - Implement a transition period where the new system is closely monitored + - Address any issues that arise promptly -### Import Directly into a React App {: #import-directly-into-a-react-app} +## Important Considerations -First, install the Wormhole Connect npm package. You can read more about the package by clicking on the following button: [![npm version](https://img.shields.io/npm/v/@wormhole-foundation/wormhole-connect.svg)](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect){target=\_blank} +- Always prioritize system stability, upgrades should only be performed when absolutely necessary +- Thoroughly audit all new contract implementations before proposing an upgrade +- Account for all affected components across all chains in the upgrade plan +- Provide comprehensive documentation for the community about the upgrade process and any changes in functionality +- Always test upgrades extensively on testnets before implementing in production +--- END CONTENT --- -```bash -npm i @wormhole-foundation/wormhole-connect -``` +Doc-Content: https://wormhole.com/docs/build/queries/faqs +--- BEGIN CONTENT --- +--- +title: Queries FAQs +description: Wormhole Queries FAQ covering available libraries, query examples, response formats, and details about running query proxy servers. +--- -Now you can import the React component: +# Wormhole Queries FAQs -```ts -import WormholeConnect from '@wormhole-foundation/wormhole-connect'; +## What libraries are available to handle queries? -function App() { - return ; -} -``` + - The [Query TypeScript SDK](https://npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} can be used to create query requests, mock query responses for testing, and parse query responses. The SDK also includes utilities for posting query responses -### Use Hosted Version via CDN {: #use-hosted-version-via-cdn} +- The [Solidity `QueryResponseLib` library](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/libraries/QueryResponse.sol){target=\_blank} can be used to parse and verify query responses on EVM chains. See the [Solana Stake Pool](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} repository as an example use case -If you're not using React, you can still embed Connect on your website by using the hosted version. This uses pre-built packages (which include React) served from NPM by jsdelivr.net. +- [`QueryRequestBuilder.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/testing/QueryRequestBuilder.sol){target=\_blank} can be used for mocking query requests and responses in Forge tests -???+ code "v1.x" - ```ts - import { wormholeConnectHosted } from '@wormhole-foundation/wormhole-connect'; +- The [Go query package](https://github.com/wormhole-foundation/wormhole/tree/main/node/pkg/query){target=\_blank} can also be used to create query requests and parse query responses -// Existing DOM element where you want to mount Connect -const container = document.getElementById('bridge-container'); +!!! note + A Rust SDK for Solana is being actively investigated by the Wormhole contributors. See the [Solana Queries Verification](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} repository as a proof of concept. -wormholeConnectHosted(container); - ``` +## Are there any query examples? -???- code "v0.x" - Simply copy and paste the following into your HTML body, and replace the ```INSERT_WORMHOLE_CONNECT_VERSION``` in the links with the most recent production version of Wormhole Connect. You can check what the most recent version is on [NPM](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/latest){target=\_blank}. +Certainly. You can find a complete guide on the [Use Queries page](/docs/build/queries/use-queries/){target=\_blank}. Additionally, you can find full code examples in the following repositories: - ```html - -
+- [Basic Example Query Demo](https://github.com/wormholelabs-xyz/example-queries-demo/){target=\_blank} +- [Solana Stake Pool Example Query](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} +- [Solana Program Derived Address (PDA) / Token Account Balance Example Query](https://github.com/wormholelabs-xyz/example-queries-solana-pda){target=\_blank} +- [Solana Queries Verification Example](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} - - - - ``` +## What is the format of the response signature? - For example, for [0.3.13](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/0.3.13){target=\_blank}: +The Guardian node calculates an ECDSA signature using [`Sign` function of the crypto package](https://pkg.go.dev/github.com/ethereum/go-ethereum@v1.10.21/crypto#Sign){target=\_blank} where the digest hash is: - ```html - -
+```keccak256("query_response_0000000000000000000|"+keccak256(responseBytes))``` - - - - ``` +See the [Guardian Key Usage](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0009_guardian_key.md){target=\_blank} white paper for more background. Once this signature is created, the Guardian's index in the Guardian set is appended to the end. -!!! note - It is important to periodically update your Wormhole Connect instance to the latest version, as there are frequent functionality and security releases. +!!! note + If you are used to `ecrecover` you will notice that the `v` byte is `0` or `1` as opposed to `27` or `28`. The `signaturesToEvmStruct` method in the [Query TypeScript SDK](https://npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} accounts for this as well as structuring the signatures into an `IWormhole.SignatureStruct[]`. -## Configuration {: #configuration} +## Can anyone run a query proxy server? -This is just an overview of what's possible. Check the [Configuration docs](/docs/build/applications/connect/configuration/){target=\_blank} for details about all the configuration options. +Permissions for Query Proxy are managed by the Guardians. The Guardian nodes are configured to only listen to a set of allow-listed proxies. However, it is possible that this restriction may be lifted in the future and/or more proxies could be added. -The default configuration of Wormhole Connect may not be exactly what you're looking for. You may want to: +It is also important to note that the proxies don't impact the verifiability of the request or result, i.e., their role in the process is trustless. - - Use custom styles - - Restrict the chains that you allow in your app - - Add support for your project's token, and eliminate tokens you don't want to reduce noise - - Configuring custom RPC URLs (This is highly recommended as default public RPCs are heavily throttled) - - Restrict the [routes](/docs/build/applications/connect/routes/){target=\_blank} that are available +## What Does Queries Offer over an RPC Service -For additional information on the preceding options, check the [configuration options](/docs/build/applications/connect/configuration/){target=\_blank} and customize your widget however you like. +Wormhole Queries provides on-demand, attested, on-chain, verifiable RPC results. Each Guardian independently executes the specified query and returns the result and their signature. The proxy handles aggregating the results and signatures, giving you a single result (all within one REST call) with a quorum of signatures suitable for on-chain submission, parsing, and verification using one of our examples or SDKs. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/connect/routes +Doc-Content: https://wormhole.com/docs/build/queries/index --- BEGIN CONTENT --- --- -title: Routes -description: Explore Wormhole Connect's routing capabilities for asset transfers, featuring Token Bridge, CCTP, NTT, and various blockchain-specific routes for optimal UX. +title: Wormhole Queries +description: Wormhole Queries offers on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy. --- -## Routes Overview {: #routes-overview} +# Queries -This page explains the concept of routes in Wormhole Connect. To configure routes for your widget, check the [Wormhole Connect Configuration](/docs/build/applications/connect/configuration/){target=\_blank}. +## Get Started -Routes are methods by which the widget will transfer the assets. Wormhole Connect supports Token Bridge transfers for any arbitrary token, and for specific tokens, it also supports more advanced transfer methods that provide superior UX. +Wormhole Queries offers on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy. -When you select the source chain, source token, and destination chain, Wormhole Connect will display the best routes available for that particular combination. In practice, if routes other than the Token Bridge are available, only those will be displayed. Check the [feature matrix](/docs/build/applications/connect/features/){target=\_blank} to see under which exact conditions the routes appear. +
-## Token Bridge Routes {: #token-bridge-routes} +- :octicons-book-16:{ .lg .middle } **Overview** -The Token Bridge is Wormhole's best-known transfer method. It locks assets on the source chain and mints Wormhole-wrapped "IOU" tokens on the destination chain. To transfer the assets back, the Wormhole-wrapped tokens are burned, unlocking the tokens on their original chain. + --- -#### Manual Route {: #manual-route} + Explore Wormhole Queries, offering real-time access to verified blockchain data via a REST API endpoint, enabling secure cross-chain interactions and verifications. -The manual route transfer method requires two transactions: one on the origin chain to lock the tokens (or burn the Wormhole-wrapped tokens) and one on the destination chain to mint the Wormhole-wrapped tokens (or unlock the original tokens). To offer this option, enable the `bridge` route in the configuration. + [:custom-arrow: Learn about Queries](/docs/build/queries/overview/) -#### Automatic Route {: #automatic-route} +- :octicons-code-16:{ .lg .middle } **Use Queries** -Trustless relayers can execute the second transaction on the user's behalf, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically - for a small fee. Wormhole Connect automatically detects whether the relayer supports a token and will display the option if the `relay` route is enabled in the configuration. + --- -## CCTP Routes (USDC) {: #cctp-routes-usdc} - -[Circle](https://www.circle.com/en/){target=\_blank}, the issuer of USDC, provides a native way for native USDC to be transferred between [CCTP-enabled](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank} chains. Wormhole Connect can facilitate such transfers. + Explore a simple demo of interacting with Wormhole Queries using an `eth_call` request to query the supply of wETH on Ethereum using a Wormhole query. -Note that if native USDC is transferred from the CCTP-enabled chains to any other outside of this list, the transfer will be routed through the Token Bridge, and the resulting asset will be a Wormhole-wrapped token instead of native USDC. + [:custom-arrow: Get hands-on](/docs/build/queries/use-queries/) -#### Manual Route {: #manual-route-cctp} +- :octicons-book-16:{ .lg .middle } **Query FAQs** -This transfer method requires two transactions: one on the origin chain to burn the USDC and one on the destination chain to mint the USDC. The manual CCTP route relies on CCTP only and doesn't use Wormhole messaging in the background. Enable the `cctpManual` route in the configuration to offer this option. + --- -#### Automatic Route {: #automatic-route-cctp} + Explore frequently asked questions about Wormhole Queries. -Trustless relayers can execute the second transaction on the user's behalf. Therefore, the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. To offer this option, enable the `cctpRelay` route in the configuration. + [:custom-arrow: Check out the FAQs](/docs/build/queries/faqs/) -## Native Token Transfers (NTT) Routes {: #native-token-transfers-ntt-routes} +
+--- END CONTENT --- -[Wormhole's Native Token Transfer (NTT) framework](https://github.com/wormhole-foundation/native-token-transfers/){target=\_blank} enables token issuers to retain full ownership of their tokens across any number of chains, unlike the Token Bridge. The token issuer must deploy NTT contracts, and Wormhole Connect needs to be [configured](/docs/build/applications/connect/configuration/){target=\_blank} with the appropriate `nttGroups` before such tokens are recognized as transferrable via NTT. Refer to the [documentation in the NTT repository](https://github.com/wormhole-foundation/native-token-transfers?tab=readme-ov-file#overview){target=\_blank} for more information about the contracts needed and the framework in general. +Doc-Content: https://wormhole.com/docs/build/queries/overview +--- BEGIN CONTENT --- +--- +title: Queries Overview +description: Explore Wormhole Queries, offering real-time access to verified blockchain data via a REST endpoint, enabling secure cross-chain interactions and verifications. +--- -#### Manual Route {: #manual-route-ntt} +# Queries Overview {: #queries-overview } -This transfer method requires two transactions: one on the origin chain to burn or lock the tokens and one on the destination chain to mint them. To offer this option, enable the `nttManual` route in the configuration. +Wormhole Guardians, who run full nodes for various connected chains, facilitate a new cross-chain query service that allows for on-demand attested responses to queries, bypassing the inefficiencies of traditional transaction-based data retrieval. This method is faster and cost-effective, eliminating the need for gas payments and transaction finality wait times. -#### Automatic Route {: #automatic-route-ntt} +!!! note + Queries are currently in closed beta, though you can start developing today. Check out [Use Queries](/docs/build/queries/use-queries/){target=\_blank} and reach out to [Join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank}. -Trustless relayers can execute the second transaction on the user's behalf, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. Wormhole Connect automatically detects whether the relayer supports a token and will display the option if the `nttRelay` route is enabled in the configuration. +Wormhole Queries offers on-demand access to Guardian-attested on-chain data. The current implementation provides integrators with a simple REST endpoint to initiate an off-chain request via a proxy. The proxy then forwards the request to the Guardians and gathers a quorum of responses. The result returns the encoded response, including the request details and the Guardian signatures. The request validation performed by the query module includes a three step process that involves verifying the signature to ensure it has the correct prefix, confirming that the signer is authorized to execute query requests, and validating the legitimacy of all per-chain requests contained in the query. You can read more about Queries in the [white paper](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0013_ccq.md){target=\_blank}. -## ETH Bridge Route for Native ETH and wstETH {: #eth-bridge-route-for-native-eth-and-wsteth} +## The Flow of a Query {: #the-flow-of-a-query} -[Powered by Uniswap liquidity pools](https://github.com/wormhole-foundation/example-uniswap-liquidity-layer){target=\_blank}, this route can transfer native ETH or wstETH between certain EVMs without going through the native bridges. For example, you can transfer native ETH from Arbitrum to Optimism and end up with Optimism ETH all in one go. Supported chains are Ethereum, Arbitrum, Optimism, Base, Polygon (canonical wETH), BSC (canonical wETH), and Avalanche (canonical wETH). +The general overview of a query's flow is as follows: an off-chain process sends HTTPS query requests to a Query Proxy, which validates and forwards them to the Guardians; these Guardians independently validate, sign, and return the response, with the entire process typically taking less than a second. -#### Automatic Route {: #automatic-route-eth} +![The architecture flow of a query](/docs/images/build/queries/overview/overview-1.webp) -Only the relayed route is available due to the complexity of the transaction that needs to be executed at the destination. To offer this option, enable the `ethBridge` and/or `wstETHBridge` route in the configuration to provide this option. +The step-by-step flow of a query is as follows: -## USDT Bridge Route {: #usdt-bridge-route} +1. An off-chain process initiates a query request via HTTPS to the query proxy (or Query Server) +2. The query proxy validates the request and forwards it to the Guardians via a gossip network +3. The Guardians independently validate the request, make the requisite RPC calls, verify the results, sign, and gossip a response back to the Query Proxy +4. The Query Proxy aggregates the results and returns a response when it reaches a quorum of two-thirds or more of the current Guardian set - the exact quorum requirements as the core bridge +5. The off-chain process can then submit these requests to an on-chain contract which should verify the signatures and validate the request before processing the result -Operating on the same technology as the ETH Bridge, this route can transfer USDT between certain EVMs without going through the native bridges. The resulting token will be the canonical USDT token on the destination instead of the Wormhole-wrapped variant. Supported chains are Ethereum, Polygon, Avalanche, Arbitrum, Optimism, BSC, and Base. +In this flow, the Query Proxy is a permissioned but trustless part of the protocol. In most cases, this entire process takes less than one second. If a request is invalid or cannot be processed by the Guardians, they will retry for up to one minute before timing out. Requests can be batched to have the Guardians make multiple calls to multiple networks. This can further reduce overhead for processing query responses on-chain. Up to 255 queries can be batched together, with certain types allowing for batching themselves. -#### Automatic Route {: #automatic-route-usdt} +## Supported Query Types {: #supported-query-types} -Only the relayed route is available due to the complexity of the transaction that needs to be executed on the destination. Enable the `usdtBridge` route in the configuration to offer this option. +There are currently five supported types of queries. See [the white paper](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0013_ccq.md){target=\_blank} for more details on each. -## tBTC Route {: #tbtc-route} +### eth_call {: #eth-call} -You can bridge [Threshold's Bitcoin](https://threshold.network/){target=\_blank} via this hybrid solution that combines the Token Bridge and Threshold's contracts. Native tBTC is first locked in the Wormhole Token Bridge, transferred to the destination in the form of Wormhole-wrapped tBTC, which is then immediately locked in Threshold's contract that mints native tBTC for it. The net result is that the user ends up with native tBTC on chains where this Threshold contract is deployed (e.g., Solana, Polygon, Arbitrum, Optimism, or Base). +This query type is effectively an equivalent of [eth_call](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call){target=\_blank} against a block specified by number or hash. -Note that if native tBTC is transferred out of these chains to any other outside of this list, the transfer will be routed through the Token Bridge, and the resulting asset will be a Wormhole-wrapped token instead of native tBTC. +Calls are batched to allow specifying multiple calls (even to multiple contracts) against the same block. These calls are included in a single batch RPC call, simplifying on-chain verification. Up to 255 calls may be batched in an single `eth_call` query. -#### Manual Route {: #manual-route-tbtc} +The result contains the specified block number, hash, timestamp, and the call result. -This transfer method requires two transactions: one on the origin chain to burn or lock the tokens and one on the destination chain to mint them. To provide this option, enable the `tbtc` route in the configuration. ---- END CONTENT --- +### eth_call By Timestamp {: #eth-call-by-timestamp} -Doc-Content: https://wormhole.com/docs/build/applications/connect/upgrade ---- BEGIN CONTENT --- ---- -title: Wormhole Connect v1.0 Migration Guide -description: Learn how to migrate to Wormhole Connect v1.0, with step-by-step guidance on updating your package and configuration. ---- +This query type is similar to `eth_call` but targets a timestamp instead of a specific `block_id`. This can be useful when forming requests based on uncorrelated data, such as requiring data from another chain based on the block timestamp of a given chain. -# Wormhole Connect v1.0 Migration Guide +The result also contains the target and block details with the following enforced conditions: `target_block.timestamp <= target_time < following_block.timestamp` and `following_block_num - 1 == target_block_num`. -## Overview +### eth_call With Finality {: #eth-call-with-finality} -The Wormhole Connect feature has been updated to **version 1.0**, introducing a modernized design and improved routing for faster native-to-native token transfers. This stable release comes with several breaking changes in how to configure the application, requiring minor updates to your integration. +This query type is similar to `eth_call` but ensures that the specified block has reached the specified finality before returning the query results. The finality may be `finalized` or `safe.` Note that if a chain doesn't natively support the `safe` tag, this will be equivalent to `finalized.` -This guide will help you migrate to the new version in just a few simple steps. By following this migration guide, you'll learn how to: +### sol_account {: #sol_account} - - Update to the latest Connect package - - Apply configuration changes to the **`WormholeConnectConfig`** object - - Understand new routing capabilities and plugin options +This query is used to read data for one or more accounts on Solana, akin to [`getMultipleAccounts`](https://solana.com/docs/rpc/http/getmultipleaccounts){target=\_blank}. -These updates ensure better performance and a smoother integration experience. +### sol_pda {: #sol_pda} -For complete documentation on the previous version of Wormhole Connect, please refer to the [Wormhole Connect guide](/docs/build/applications/connect/){target=\_blank}. +This query is used to read data for one or more [Program Derived Addresses(PDA)](https://www.anchor-lang.com/docs/pdas){target=\_blank} on Solana, akin to calling [`getMultipleAccounts`](https://solana.com/docs/rpc/http/getmultipleaccounts){target=\_blank} on the result of `PublicKey.findProgramAddressSync(seeds, programId).` This query is helpful for times when you want to more generally read accounts owned by a program and verify the derivation on another chain, like how associated token accounts are all derived from the [Associated Token Account Program](https://spl.solana.com/associated-token-account){target=\_blank}. -## Update the Connect Package +## Supported Chains {: #supported-chains} -To begin the migration process, update the Wormhole Connect [**npm package**](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/1.0.0-beta.6-development?activeTab=readme){target=\_blank} to the latest version 1.0. Updating to the latest version provides access to the newest features and improvements, including the modernized design and enhanced routing capabilities. - -Run the following command in your terminal: - -```bash -npm install @wormhole-foundation/wormhole-connect@^1.0 -``` - -This command installs the latest stable version of Wormhole Connect and prepares your environment for the new configuration changes. +The following table provides expected support based on testing. However, the success of any given query is based on the success of the underlying call on each Guardian’s RPC node. -## Update the `WormholeConnectConfig` Object +For example, many chains have implementations forked from [Geth](https://github.com/ethereum/go-ethereum){target=\_blank}, which keeps 128 blocks of state in memory by default (without running in archive mode). While this is good for about 25 minutes of history on Ethereum Mainnet, it is only about three minutes on Optimism. While Guardian nodes can be expected to have access to recent state, there are currently no guarantees of how far back in history they have access to. -In version 1.0, the `WormholeConnectConfig` object underwent several breaking changes. Most of these changes are minor and can be applied quickly. Below is a summary of the key changes, followed by detailed examples. +### Mainnet {: #mainnet} -### Summary of Breaking Changes +| Chain | Wormhole Chain ID | eth_call | By Timestamp | With Finality | Expected History | +|:-------------:|:-----------------:|:--------:|:------------------:|:-------------:|:----------------:| +| Ethereum | 2 | ✅ | ✅ | ✅ | 128 blocks | +| BSC | 4 | ✅ | ✅ | ✅ | 128 blocks | +| Polygon | 5 | ✅ | ✅ | ✅ | 128 blocks | +| Avalanche | 6 | ✅ | ✅ | ✅ | 32 blocks | +| Oasis Emerald | 7 | ✅ | ✅ | ✅ | archive | +| Fantom | 10 | ✅ | ✅ | ✅ | 16 blocks | +| Karura | 11 | ✅ | ✅ | ✅ | archive | +| Acala | 12 | ✅ | ✅ | ✅ | archive | +| Kaia | 13 | ✅ | ✅ | ✅ | 128 blocks | +| Celo | 14 | ✅ | ℹ️ hints required\* | ✅ | 128 blocks | +| Moonbeam | 16 | ✅ | ℹ️ hints required\* | ✅ | 256 blocks | +| Arbitrum One | 23 | ✅ | ✅ | ✅ | ~6742 blocks | +| Optimism | 24 | ✅ | ✅ | ❌ | 128 blocks | +| Base | 30 | ✅ | ✅ | ✅ | archive | -- Chain names are now capitalized: `solana` → `Solana` -- `env` renamed to `network` and is now capitalized: `mainnet` → `Mainnet` -- `networks` renamed to `chains`, with capitalized names -- `routes` updated to use route plugins -- `nttGroups` removed in favor of route plugin configuration -- `tokensConfig` updated, with a new key `wrappedTokens` added -- Many UI-related properties consolidated under a top-level `ui` key -- `customTheme` and `mode` were removed, replaced by a top-level `theme` property +\*`EthCallByTimestamp` arguments for `targetBlock` and `followingBlock` are currently required for requests to be successful on these chains. -These changes are explained in more detail below, with examples for easy reference. +## Next Steps {: #next-steps} -### Capitalize Chain Names +Remember that Wormhole Queries are currently in beta. You can [register to join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to fully experiment with Wormhole Queries. -In version 1.0, chain names are now consistent with the `Chain` type from the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank}, and must be capitalized. This affects all config properties where a chain is referenced, including `rpcs`, `rest`, `graphql`, and `chains`. +Be sure to check out the [FAQs](/docs/build/queries/faqs/){target=\_blank} and the [Use Queries guide](/docs/build/queries/use-queries/){target=\_blank}. -=== "v0.x" +You can also check out the following examples of applications that make use of Wormhole Queries: - ```typescript - const config: WormholeConnectConfig = { - rpcs: { - ethereum: 'INSERT_ETH_RPC_URL', - solana: 'INSERT_SOLANA_RPC_URL', - }, - }; - ``` -=== "v1.x" +- [Basic demo](https://github.com/wormholelabs-xyz/example-queries-demo/){target=\_blank} +- [Solana Stake Pool](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} +- [Solana Program Derived Address (PDA) / Token Account Balance](https://github.com/wormholelabs-xyz/example-queries-solana-pda){target=\_blank} +- [Solana Queries Verification](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} +--- END CONTENT --- - ```typescript - const config: WormholeConnectConfig = { - rpcs: { - Ethereum: 'INSERT_ETH_RPC_URL', - Solana: 'INSERT_SOLANA_RPC_URL', - }, - }; - ``` +Doc-Content: https://wormhole.com/docs/build/queries/use-queries +--- BEGIN CONTENT --- +--- +title: Use Queries +description: Explore a simple demo of interacting with Wormhole Queries using an eth_call request to query the supply of wETH on Ethereum using a Wormhole query. +--- -You can find the complete list of supported chain names in the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/fa4ba4bc349a7caada809f209090d79a3c5962fe/core/base/src/constants/chains.ts#L12-L66){target=\_blank}. +# Use Queries -### Rename `env` to `network` +You can visit the [Example Queries Demo](https://wormholelabs-xyz.github.io/example-queries-demo/){target=\_blank} to view an interactive example of an application interacting with the [Query Demo](https://github.com/wormholelabs-xyz/example-queries-demo/blob/main/src/QueryDemo.sol){target=\_blank} contract. -The `env` property has been renamed to `network`, with capitalized values. This change affects how you configure Testnet and Mainnet environments. +This guide covers using a simple `eth_call` request to get the total supply of WETH on Ethereum. -=== "v0.x" +## RPC Basics - ```typescript - const config: WormholeConnectConfig = { - env: 'testnet', - }; - ``` -=== "v1.x" +Before digging into anything Queries-specific, this page will look at how to make an [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call){target=\_blank} against a public Ethereum RPC. Suppose you'd like to query the WETH contract for its total supply; before making a request, you need some information about the contract you want to call, including: - ```typescript - const config: WormholeConnectConfig = { - network: 'Testnet', - }; - ``` +- **To** - the contract to call. WETH is [0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2){target=\_blank} +- **Data** - the method identifier and ABI-encoded parameters, which can be obtained as follows: `web3.eth.abi.encodeFunctionSignature("totalSupply()")` which yields `0x18160ddd` +- **Block ID** - the block number, hash, or tag. Tag options include `latest,` `safe,` or `finalized` -If you don’t explicitly set the `network` value, Connect will default to `Mainnet`. +The prepared curl request is as follows: -```typescript -// Defaults to Mainnet -const config: WormholeConnectConfig = {}; +```bash title="eth_call JSON-RPC request" +curl https://ethereum.publicnode.com -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","data":"0x18160ddd"},"latest"],"id":1}' ``` -For more information, refer to the [network constants list](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/base/src/constants/networks.ts){target=\_blank}. - -### Rename `networks` to `chains` - -The `networks` property, which allowed whitelisting chains, is now renamed `chains`, and the chain names are capitalized. - -=== "v0.x" - - ```typescript - const config: WormholeConnectConfig = { - networks: ['solana', 'ethereum'], - }; - ``` -=== "v1.x" - - ```typescript - const config: WormholeConnectConfig = { - chains: ['Solana', 'Ethereum'], - }; - ``` +And the corresponding response is: -### Update `routes` to Use Route Plugins +```bash title="eth_call JSON-RPC reponse" +{ + "jsonrpc":"2.0", + "id":1, + "result":"0x000000000000000000000000000000000000000000029fd3d129b582d7949e71" +} +``` -The `routes` property in Wormhole Connect version 1.0 has significantly improved. Previously, `routes` was a simple array of strings. The latest version has been transformed into a flexible plugin system, allowing you to include specific routes for various protocols. +Converting the returned value of the executed call from hexidecimal results in the value `3172615244782286193073777`. You can compare your result to the [**Read Contract**](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#readContract){target=\_blank} tab in Etherscan. Your result will be different as WETH is minted/burned over time. -By default, if no `routes` property is set, Wormhole Connect will provide routes for two core protocols: +## Construct a Query {: #construct-a-query} - - [Wormhole Token Bridge](/docs/learn/messaging/token-bridge/){target=\_blank} - - [CCTP](/docs/learn/messaging/cctp/){target=\_blank} +You can use the [Wormhole Query SDK](https://www.npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} to construct a query. You will also need an RPC endpoint from the provider of your choice. This example uses [Axios](https://www.npmjs.com/package/axios){target=\_blank} for RPC requests. Ensure that you also have [TypeScript](https://www.typescriptlang.org/download/){target=\_blank} installed. -For most use cases, integrators require more than the default routes. The new `routes` property allows you to specify which protocols to include and exclude any routes unnecessary for your application, including both default and third-party routes. +```jsx +npm i @wormhole-foundation/wormhole-query-sdk axios +``` -#### Available `route` Plugins +In order to make an `EthCallQueryRequest`, you need a specific block number or hash as well as the call data to request. -The `@wormhole-foundation/wormhole-connect` package offers a variety of `route` plugins to give you flexibility in handling different protocols. You can choose from the following `route` exports for your integration: +You can request the latest block from a public node using `eth_getBlockByNumber`. -???- tip "`route` Plugins" - - **`TokenBridgeRoute`** - manually redeemed Wormhole Token Bridge route - - **`AutomaticTokenBridgeRoute`** - automatically redeemed (relayed) Token Bridge route - - **`CCTPRoute`** - manually redeemed CCTP route - - **`AutomaticCCTPRoute`** - automatically redeemed (relayed) CCTP route - - **`DEFAULT_ROUTES`** - array containing the four preceding routes (TokenBridgeRoute, AutomaticTokenBridgeRoute, CCTPRoute, AutomaticCCTPRoute) - - **`nttAutomaticRoute(nttConfig)`** - function that returns the automatically-redeemed (relayed) Native Token Transfer (NTT) route - - **`nttManualRoute(nttConfig)`** - function that returns the manually-redeemed NTT route - - **`nttRoutes(nttConfig)`** - function that returns both NTT routes as an array - - **`MayanRoute`** - route that offers multiple Mayan protocols - - **`MayanRouteSWIFT`** - route for Mayan’s Swift protocol only - - **`MayanRouteMCTP`** - route for Mayan’s MCTP protocol only - - **`MayanRouteWH`** - route for Mayan’s original Wormhole transfer protocol +```jsx -In addition to these routes, developers can create custom routes for their own Wormhole-based protocols. For examples, refer to the [NTT](https://github.com/wormhole-foundation/native-token-transfers/tree/main/sdk/route){target=\_blank} and the [Mayan](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} example GitHub repositories. +await axios.post(rpc, { + method: 'eth_getBlockByNumber', + params: ['latest', false], + id: 1, + jsonrpc: '2.0', + }) + ).data?.result?.number; +``` -For further details on the Route plugin interface, refer to the [Wormhole TypeScript SDK route code](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/route.ts){target=\_blank}. +Then construct the call data. -Now that you know the available `route` plugins, let's explore some examples of configuring them. +```jsx +to: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH + data: '0x18160ddd', // web3.eth.abi.encodeFunctionSignature("totalSupply()") +}; +``` -#### Example: Offer Only CCTP Transfers +Finally, put it all together in a `QueryRequest`. -To configure Wormhole Connect to offer only USDC transfers via the CCTP route, use the following configuration: +```jsx +const request = new QueryRequest( + 0, // Nonce + [ + new PerChainQueryRequest( + 2, // Ethereum Wormhole Chain ID + new EthCallQueryRequest(latestBlock, [callData]) + ), + ] + ); +``` -```typescript -import WormholeConnect, { - AutomaticCCTPRoute, - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +This request consists of one `PerChainQueryRequest`, which is an `EthCallQueryRequest` to Ethereum. You can use `console.log` to print the JSON object and review the structure. -const config: WormholeConnectConfig = { - routes: [AutomaticCCTPRoute], -}; +```jsx -; +// { +// "nonce": 0, +// "requests": [ +// { +// "chainId": 2, +// "query": { +// "callData": [ +// { +// "to": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", +// "data": "0x18160ddd" +// } +// ], +// "blockTag": "0x11e9068" +// } +// } +// ], +// "version": 1 +// } ``` -#### Example: Offer All Default Routes and Third-Party Plugins - -In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge & CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/contract-integrations/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. +## Mock a Query -```typescript -import WormholeConnect, { - DEFAULT_ROUTES, - nttRoutes, - MayanRouteSWIFT, - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; +For easier testing, the Query SDK provides a `QueryProxyMock` method. This method will perform the request and sign the result with the [Devnet](/docs/build/toolkit/tilt/){target=\_blank} Guardian key. The `mock` call returns the same format as the Query Proxy. -import { myNttConfig } from './consts'; // Custom NTT configuration +```jsx +const mockData = await mock.mock(request); + console.log(mockData); +// { +// signatures: ['...'], +// bytes: '...' +// } +``` -const config: WormholeConnectConfig = { - routes: [...DEFAULT_ROUTES, ...nttRoutes(myNttConfig), MayanRouteSWIFT], -}; +This response is suited for on-chain use, but the SDK also includes a parser to make the results readable via the client. -; +```jsx +const mockQueryResult = ( + mockQueryResponse.responses[0].response as EthCallQueryResponse + ).results[0]; + console.log( + `Mock Query Result: ${mockQueryResult} (${BigInt(mockQueryResult)})` + ); +// Mock Query Result: 0x000000000000000000000000000000000000000000029fd09d4d81addb3ccfee (3172556167631284394053614) ``` -This flexible plugin allows you to combine default routes (such as Token Bridge and CCTP) with third-party protocols, offering complete control over which routes are available in your application. - -### Update the `tokensConfig` Structure +Testing this all together might look like the following: -In Wormhole Connect version 1.0, the `tokensConfig` property has been updated to simplify the structure and improve flexibility for token handling across chains. The previous configuration has been streamlined, and a new key, `wrappedTokens,` has been introduced to handle foreign assets more effectively. +```jsx +import { + EthCallData, + EthCallQueryRequest, + EthCallQueryResponse, + PerChainQueryRequest, + QueryProxyMock, + QueryRequest, + QueryResponse, +} from '@wormhole-foundation/wormhole-query-sdk'; +import axios from 'axios'; -Key Changes to `tokensConfig`: +const rpc = 'https://ethereum.publicnode.com'; +const callData: EthCallData = { + to: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH + data: '0x18160ddd', // web3.eth.abi.encodeFunctionSignature("totalSupply()") +}; - - **Capitalized chain names** - all chain names, like `ethereum`, must now be capitalized, such as `Ethereum`, to maintain consistency with the rest of the Wormhole SDK - - **`wrappedTokens`** - this new key replaces `foreignAssets` and defines the wrapped token addresses on foreign chains, making it easier to manage cross-chain transfers. It consolidates the wrapped token addresses into a cleaner structure. These addresses must be specified to enable token transfers to and from the foreign chain via token bridge routes - - **Simplified decimals** - instead of using a map of decimal values for different chains, you now only need to provide a single decimals value for the token's native chain +(async () => { + const latestBlock: string = ( + await axios.post(rpc, { + method: 'eth_getBlockByNumber', + params: ['latest', false], + id: 1, + jsonrpc: '2.0', + }) + ).data?.result?.number; + if (!latestBlock) { + console.error(`❌ Invalid block returned`); + return; + } + console.log('Latest Block: ', latestBlock, `(${BigInt(latestBlock)})`); + const targetResponse = await axios.post(rpc, { + method: 'eth_call', + params: [callData, latestBlock], + id: 1, + jsonrpc: '2.0', + }); + // console.log(finalizedResponse.data); + if (targetResponse.data.error) { + console.error(`❌ ${targetResponse.data.error.message}`); + } + const targetResult = targetResponse.data?.result; + console.log('Target Result: ', targetResult, `(${BigInt(targetResult)})`); + // Form the query request + const request = new QueryRequest( + 0, // Nonce + [ + new PerChainQueryRequest( + 2, // Ethereum Wormhole Chain ID + new EthCallQueryRequest(latestBlock, [callData]) + ), + ] + ); + console.log(JSON.stringify(request, undefined, 2)); + const mock = new QueryProxyMock({ 2: rpc }); + const mockData = await mock.mock(request); + console.log(mockData); + const mockQueryResponse = QueryResponse.from(mockData.bytes); + const mockQueryResult = ( + mockQueryResponse.responses[0].response as EthCallQueryResponse + ).results[0]; + console.log( + `Mock Query Result: ${mockQueryResult} (${BigInt(mockQueryResult)})` + ); +})(); +``` -=== "v0.x" +### Fork Testing - In the old structure, the `foreignAssets` field defined the token’s presence on other chains, and `decimals` were mapped across multiple chains. +It is common to test against a local fork of Mainnet with something like - ```typescript - import WormholeConnect, { - WormholeConnectConfig, - } from '@wormhole-foundation/wormhole-connect'; +```jsx +anvil --fork-url https://ethereum.publicnode.com +``` - const config: WormholeConnectConfig = { - tokensConfig: { - WETH: { - key: 'WETH', - symbol: 'WETH', - nativeChain: 'ethereum', - icon: Icon.ETH, - tokenId: { - chain: 'ethereum', - address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', - }, - coinGeckoId: 'ethereum', - color: '#62688F', - decimals: { Ethereum: 18, default: 8 }, - foreignAssets: { - Solana: { - address: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', - decimals: 8, - }, - }, - }, - }, - }; - ``` -=== "v1.x" +In order for mock requests to verify against the Mainnet Core Contract, you need to replace the current Guardian set with the single Devnet key used by the mock. - In v1.0, `foreignAssets` has been replaced with `wrappedTokens`, simplifying token transfers across chains by directly mapping wrapped token addresses. The `decimals` value is now a simple number representing the token’s decimals on its native chain. +Here's an example for Ethereum Mainnet, where the `-a` parameter is the [Core Contract address](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on that chain. - ```typescript - import WormholeConnect, { - WormholeConnectConfig, - } from '@wormhole-foundation/wormhole-connect'; +```jsx +npx @wormhole-foundation/wormhole-cli evm hijack -a 0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B -g 0xbeFA429d57cD18b7F8A4d91A2da9AB4AF05d0FBe +``` - const config: WormholeConnectConfig = { - tokensConfig: { - WETH: { - key: 'WETH', - symbol: 'WETH', - nativeChain: 'Ethereum', // Chain name now capitalized - icon: Icon.ETH, - tokenId: { - chain: 'Ethereum', - address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', - }, - coinGeckoId: 'ethereum', - color: '#62688F', - decimals: 18, // Simplified decimals field - }, - }, - wrappedTokens: { - WETH: { - Solana: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', - /* additional chains */ - }, - }, - }; - ``` +If you are using `EthCallWithFinality`, you will need to mine additional blocks (32 if using [Anvil](https://book.getfoundry.sh/anvil/){target=\_blank}) after the latest transaction for it to become finalized. Anvil supports [auto-mining](https://book.getfoundry.sh/reference/anvil/#mining-modes){target=\_blank} with the `-b` flag if you want to test code that waits naturally for the chain to advance. For integration tests, you may want to simply `anvil_mine` with `0x20`. -### Update NTT Configuration +## Make a Query Request -In Wormhole Connect version 1.0, the `nttGroups` property, which was used to configure Native Token Transfers (NTT), has been removed. Instead, the NTT configuration is passed directly to the NTT route constructor. This update simplifies the setup and provides more flexibility for defining NTT routes. +The standardized means of making a `QueryRequest` with an API key is as follows: -Key changes: +```jsx +const serialized = request.serialize(); +const proxyResponse = (await axios.post)( + QUERY_URL, + { + bytes: Buffer.from(serialized).toString('hex'), + }, + { headers: { 'X-API-Key': YOUR_API_KEY } } +); +``` - - **Removed `nttGroups`** - the `nttGroups` property has been removed from the configuration and is now passed as an argument to the `nttRoutes` function - - **Direct NTT route configuration** - NTT routes are now defined more explicitly, allowing for a more organized structure when specifying tokens, chains, and managers +Remember to always take steps to protect your sensitive API keys, such as defining them in `.env` files and including such files in your `.gitignore`. -This change simplifies the configuration process by providing a cleaner, more flexible way to handle NTT routes across different chains. +A Testnet Query Proxy is available at `https://testnet.query.wormhole.com/v1/query` -=== "v0.x" +A Mainnet Query Proxy is available at `https://query.wormhole.com/v1/query` - In the previous version, `nttGroups` defined the NTT managers and transceivers for different tokens across multiple chains. +## Verify a Query Response On-Chain - ```typescript - import WormholeConnect, { - nttRoutes, - WormholeConnectConfig, - } from '@wormhole-foundation/wormhole-connect'; +A [`QueryResponseLib` library](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/libraries/QueryResponse.sol){target=\_blank} is provided to assist with verifying query responses. You can begin by installing the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} with the following command: - const config: WormholeConnectConfig = { - nttGroups: { - Lido_wstETH: { - nttManagers: [ - { - chainName: 'ethereum', - address: '0xb948a93827d68a82F6513Ad178964Da487fe2BD9', - tokenKey: 'wstETH', - transceivers: [ - { - address: '0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0', - type: 'wormhole', - }, - ], - }, - { - chainName: 'bsc', - address: '0x6981F5621691CBfE3DdD524dE71076b79F0A0278', - tokenKey: 'wstETH', - transceivers: [ - { - address: '0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986', - type: 'wormhole', - }, - ], - }, - ], - }, - }, - }; - ``` -=== "v1.x" +```bash +forge install wormhole-foundation/wormhole-solidity-sdk +``` - In v1.0, `nttGroups` has been removed, and the configuration is passed to the NTT route constructor as an argument. The tokens and corresponding transceivers are now clearly defined within the `nttRoutes` configuration. +Broadly, using a query response on-chain comes down to three main steps: - ```typescript - import WormholeConnect, { - nttRoutes, - WormholeConnectConfig, - } from '@wormhole-foundation/wormhole-connect'; + 1. Parse and verify the query response + 2. The `parseAndVerifyQueryResponse` handles verifying the Guardian signatures against the current Guardian set stored in the Core bridge contract + 3. Validate the request details. This may be different for every integrator depending on their use case, but generally checks the following: + - Is the request against the expected chain? + - Is the request of the expected type? The `parseEthCall` helpers perform this check when parsing + - Is the resulting block number and time expected? Some consumers might require that a block number be higher than the last, or the block time be within the last 5 minutes. `validateBlockNum` and `validateBlockTime` can help with the checks + - Is the request for the expected contract and function signature? The `validateMultipleEthCallData` can help with non-parameter-dependent cases + - Is the result of the expected length for the expected result type? + 4. Run `abi.decode` on the result - const config: WormholeConnectConfig = { - routes: [ - ...nttRoutes({ - tokens: { - Lido_wstETH: [ - { - chain: 'Ethereum', - manager: '0xb948a93827d68a82F6513Ad178964Da487fe2BD9', - token: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', - transceiver: [ - { - address: '0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0', - type: 'wormhole', - }, - ], - }, - { - chain: 'Bsc', - manager: '0x6981F5621691CBfE3DdD524dE71076b79F0A0278', - token: '0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C', - transceiver: [ - { - address: '0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986', - type: 'wormhole', - }, - ], - }, - ], - }, - }), - /* other routes */ - ], - }; - ``` +See the [QueryDemo](https://github.com/wormholelabs-xyz/example-queries-demo/blob/main/src/QueryDemo.sol){target=\_blank} contract for an example and read the docstrings of the preceding methods for detailed usage instructions. - In this new structure, NTT routes are passed directly through the `nttRoutes` function, with the `token`, `chain`, `manager` and `transceiver` clearly defined for each supported asset. +??? code "View the complete `QueryDemo`" + ```solidity + // contracts/query/QueryDemo.sol +// SPDX-License-Identifier: Apache 2 -### Update UI Configuration +pragma solidity ^0.8.0; -In Wormhole Connect version 1.0, the user interface configuration has been significantly updated. Several previously scattered UI properties have now been consolidated under a new `ui` key, making the UI configuration cleaner and easier to manage. +import "wormhole-solidity-sdk/libraries/BytesParsing.sol"; +import "wormhole-solidity-sdk/interfaces/IWormhole.sol"; +import "wormhole-solidity-sdk/QueryResponse.sol"; -Key UI changes: +error InvalidOwner(); +// @dev for the onlyOwner modifier +error InvalidCaller(); +error InvalidCalldata(); +error InvalidForeignChainID(); +error ObsoleteUpdate(); +error StaleUpdate(); +error UnexpectedResultLength(); +error UnexpectedResultMismatch(); - - **Consolidated UI properties** - many UI-related properties moved under a new top-level ui key for better organization - - **Removed `customTheme` and `mode`** - these properties have been removed in favor of a new top-level prop called `theme`, which simplifies theming and allows dynamic switching between themes +/// @dev QueryDemo is an example of using the QueryResponse library to parse and verify Cross Chain Query (CCQ) responses. +contract QueryDemo is QueryResponse { + using BytesParsing for bytes; -#### UI Properties + struct ChainEntry { + uint16 chainID; + address contractAddress; + uint256 counter; + uint256 blockNum; + uint256 blockTime; + } -The following properties that were previously defined at the root level of the configuration are now part of the `ui` key: + address private immutable owner; + uint16 private immutable myChainID; + mapping(uint16 => ChainEntry) private counters; + uint16[] private foreignChainIDs; - - `explorer` → `ui.explorer` - specifies the explorer to use for viewing transactions - - `bridgeDefaults` → `ui.defaultInputs` - sets default input values for the bridge, such as the source and destination chains and token - - `pageHeader` → `ui.pageHeader` - sets the title and header for the page - - `menu` → `ui.menu` - defines the menu items displayed in the interface - - `searchTx` → `ui.searchTx` - configures the transaction search functionality - - `partnerLogo` → `ui.partnerLogo` - displays a partner's logo on the interface - - `walletConnectProjectId` → `ui.walletConnectProjectId` - integrates WalletConnect into the UI - - `showHamburgerMenu` → `ui.showHamburgerMenu` - enables or disables the hamburger menu for navigation + bytes4 public GetMyCounter = bytes4(hex"916d5743"); -Additionally, there are two new properties under `ui`: + constructor(address _owner, address _wormhole, uint16 _myChainID) QueryResponse(_wormhole) { + if (_owner == address(0)) { + revert InvalidOwner(); + } + owner = _owner; - - **`ui.title`** - sets the title rendered in the top left corner of the UI. The default is "Wormhole Connect" - - **`ui.getHelpUrl`** - URL that Connect will render when an unknown error occurs, allowing users to seek help. This can link to a Discord server or any other support channel + myChainID = _myChainID; + counters[_myChainID] = ChainEntry(_myChainID, address(this), 0, 0, 0); + } -```typescript -import WormholeConnect, { - WormholeConnectConfig, -} from '@wormhole-foundation/wormhole-connect'; + // updateRegistration should be used to add the other chains and to set / update contract addresses. + function updateRegistration(uint16 _chainID, address _contractAddress) public onlyOwner { + if (counters[_chainID].chainID == 0) { + foreignChainIDs.push(_chainID); + counters[_chainID].chainID = _chainID; + } -const config: WormholeConnectConfig = { - ui: { - title: 'My Custom Bridge Example', - getHelpUrl: 'https://examplehelp.com/', - menu: [ - { - label: 'Support', - href: 'https://examplehelp.com/support', - target: '_blank', - order: 1, // Order of appearance in the menu - }, - { - label: 'About', - href: 'https://examplehelp.com/about', - target: '_blank', - order: 2, - }, - ], - showHamburgerMenu: false, - }, -}; -``` + counters[_chainID].contractAddress = _contractAddress; + } -#### UI Configuration + // getMyCounter (call signature 916d5743) returns the counter value for this chain. It is meant to be used in a cross chain query. + function getMyCounter() public view returns (uint256) { + return counters[myChainID].counter; + } -In the old structure, UI-related settings like `explorer` and `bridgeDefaults` were defined at the root level of the configuration. In version 1.0, these properties are now organized under the `ui` key, improving the configuration's readability and manageability. + // getState() returns this chain's view of all the counters. It is meant to be used in the front end. + function getState() public view returns (ChainEntry[] memory) { + ChainEntry[] memory ret = new ChainEntry[](foreignChainIDs.length + 1); + ret[0] = counters[myChainID]; + uint256 length = foreignChainIDs.length; -=== "v0.x" + for (uint256 i = 0; i < length;) { + ret[i + 1] = counters[foreignChainIDs[i]]; + unchecked { + ++i; + } + } - ```typescript - const config: WormholeConnectConfig = { - bridgeDefaults: { - fromNetwork: 'solana', - toNetwork: 'ethereum', - tokenKey: 'USDC', - requiredNetwork: 'solana', - }, - showHamburgerMenu: true, - }; - ``` -=== "v1.x" + return ret; + } - ```typescript - const config: WormholeConnectConfig = { - ui: { - defaultInputs: { - fromChain: 'Solana', // Chain names now capitalized - toChain: 'Ethereum', - tokenKey: 'USDC', - requiredChain: 'Solana', - }, - showHamburgerMenu: true, - }, - }; - ``` + // @notice Takes the cross chain query response for the other counters, stores the results for the other chains, and updates the counter for this chain. + function updateCounters(bytes memory response, IWormhole.Signature[] memory signatures) public { + ParsedQueryResponse memory r = parseAndVerifyQueryResponse(response, signatures); + uint256 numResponses = r.responses.length; + if (numResponses != foreignChainIDs.length) { + revert UnexpectedResultLength(); + } -#### Remove `customTheme` and `mode` Properties + for (uint256 i = 0; i < numResponses;) { + // Create a storage pointer for frequently read and updated data stored on the blockchain + ChainEntry storage chainEntry = counters[r.responses[i].chainId]; + if (chainEntry.chainID != foreignChainIDs[i]) { + revert InvalidForeignChainID(); + } -In version 1.0, the `customTheme` and `mode` properties, which were previously used to set themes, have been removed. They have been replaced by a new top-level prop called `theme`, which allows for more flexibility and dynamic updates to themes. + EthCallQueryResponse memory eqr = parseEthCallQueryResponse(r.responses[i]); -Important details: + // Validate that update is not obsolete + validateBlockNum(eqr.blockNum, chainEntry.blockNum); - - The `theme` prop is not part of the `config` object and is passed separately to Wormhole Connect - - `config` cannot be modified after Connect has mounted, but the `theme` can be updated dynamically to support changes such as switching between light and dark modes or updating color schemes + // Validate that update is not stale + validateBlockTime(eqr.blockTime, block.timestamp - 300); -=== "v0.x" + if (eqr.result.length != 1) { + revert UnexpectedResultMismatch(); + } - ```typescript - const config: WormholeConnectConfig = { - customTheme: { - primaryColor: '#4266f5', - secondaryColor: '#ff5733', - }, - mode: 'dark', - }; + // Validate addresses and function signatures + address[] memory validAddresses = new address[](1); + bytes4[] memory validFunctionSignatures = new bytes4[](1); + validAddresses[0] = chainEntry.contractAddress; + validFunctionSignatures[0] = GetMyCounter; - ; - ``` -=== "v1.x" + validateMultipleEthCallData(eqr.result, validAddresses, validFunctionSignatures); - ```typescript - const theme: WormholeConnectTheme = { - mode: 'dark', // Can be dynamically changed - font: 'Arial', - button: { - primary: '#4266f5', - }, - }; + require(eqr.result[0].result.length == 32, "result is not a uint256"); - ; - ``` + chainEntry.blockNum = eqr.blockNum; + chainEntry.blockTime = eqr.blockTime / 1_000_000; + chainEntry.counter = abi.decode(eqr.result[0].result, (uint256)); -### Removed Configuration Properties + unchecked { + ++i; + } + } -Several configuration properties have been removed in Wormhole Connect version 1.0. These keys no longer have any effect, and providing values for them in the configuration will not result in any changes. + counters[myChainID].blockNum = block.number; + counters[myChainID].blockTime = block.timestamp; + counters[myChainID].counter += 1; + } -Removed config keys: + modifier onlyOwner() { + if (owner != msg.sender) { + revert InvalidOwner(); + } + _; + } +} + ``` - - `cta` - - `cctpWarning` - - `pageSubHeader` - - `moreTokens` - - `moreChains` - - `ethBridgeMaxAmount` - - `wstETHBridgeMaxAmount` - - `customTheme` - - `mode` +## Submit a Query Response On-Chain -If your current setup includes any of these properties, you can safely remove them, as they are no longer supported in v1.0. +The `QueryProxyQueryResponse` result requires a slight tweak when submitting to the contract to match the format of `function parseAndVerifyQueryResponse(bytes memory response, IWormhole.Signature[] memory signatures)`. A helper function, `signaturesToEvmStruct`, is provided in the SDK for this. -## Use the CDN-Hosted Version of Wormhole Connect +This example submits the transaction to the demo contract: -For those using the CDN-hosted version of Wormhole Connect, the package's installation and integration have been updated. You must install the Connect package from npm and use the new `wormholeConnectHosted` utility function. +```jsx +const tx = await contract.updateCounters( + `0x${response.data.bytes}`, + signaturesToEvmStruct(response.data.signatures) +); +``` +--- END CONTENT --- -### Install and Integrate the Hosted Version +Doc-Content: https://wormhole.com/docs/build/reference/chain-ids +--- BEGIN CONTENT --- +--- +title: Chain IDs +description: This page documents the Wormhole-specific chain IDs for each chain and contrasts them to the more commonly referenced EVM chain IDs originating in EIP-155. +--- -1. Install the Connect package via npm: +# Chain IDs - ```bash - npm install @wormhole-foundation/wormhole-connect@^1.0 - ``` +The following table documents the chain IDs used by Wormhole and places them alongside the more commonly referenced [EVM Chain IDs](https://chainlist.org/){target=\_blank}. -2. After installing the package, you can embed Wormhole Connect into your page by adding the following code: +!!! note + Please note, Wormhole chain IDs are different than the more commonly referenced EVM [chain IDs](https://eips.ethereum.org/EIPS/eip-155){target=\_blank}, specified in the Mainnet and Testnet ID columns. - ```typescript - import { wormholeConnectHosted } from '@wormhole-foundation/wormhole-connect'; - - const container = document.getElementById('connect')!; - - wormholeConnectHosted(container); - ``` - -### Example: Custom Configuration for Hosted Version + + -The `wormholeConnectHosted` function accepts two parameters: `config` and `theme`. This allows you to customize the routes and apply a theme directly within the hosted version. Here’s an example of how you can pass a custom configuration: +=== "Mainnet" -```typescript -import { - wormholeConnectHosted, - MayanRoute, -} from '@wormhole-foundation/wormhole-connect'; +
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Hyperliquid50000998
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Monad48
Moonbeam161284
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Rootstock3330
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
-const container = document.getElementById('connect')!; +=== "Testnet" -wormholeConnectHosted(container, { - config: { - routes: [MayanRoute], - eventHandler: (e) => { - console.log('Connect event', e); - }, - }, - theme: { - background: { - default: '#004547', - }, - }, -}); -``` +
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Hyperliquid50000
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Rootstock3331
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
-In this example, the `config` object defines the routes (in this case, using the Mayan route), while the `theme` object allows customization of the Connect interface (e.g., background color). + --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/index +Doc-Content: https://wormhole.com/docs/build/reference/consistency-levels --- BEGIN CONTENT --- --- -title: Building Frontend Applications -description: Learn how tools like Queries, Wormhole Connect, and the Wormhole SDK come together to build frontend applications with seamless interoperability. +title: Consistency Levels +description: This page documents how long to wait for finality before signing, based on each chain’s consistency (finality) level and consensus mechanism. --- -# Build Frontend Applications - -## Get Started +# Consistency Levels -Wormhole offers multiple tools to make your user-facing application integrations easier. Whether you are looking for a type-safe friendly SDK, a React widget to enable user-friendly UI development, or on-demand API access to Guardian attestations, you'll find it here. +The following table documents each chain's `consistencyLevel` values (i.e., finality reached before signing). The consistency level defines how long the Guardians should wait before signing a VAA. The finalization time depends on the specific chain's consensus mechanism. The consistency level is a `u8`, so any single byte may be used. However, a small subset has particular meanings. If the `consistencyLevel` isn't one of those specific values, the `Otherwise` column describes how it's interpreted. -
+ + +
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 1095sDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 1066sDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 1026s
Blast200201finalized~ 1026s
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 1026s
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 1026s
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 903s
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 1025s
World Chain0~ 1026s
X Layer200201finalized~ 903s
XPLA0~ 5s
+ +--- END CONTENT --- -- :octicons-code-square-16:{ .lg .middle } **Wormhole TypeScript SDK** +Doc-Content: https://wormhole.com/docs/build/reference/contract-addresses +--- BEGIN CONTENT --- +--- +title: Contract Addresses +description: This page documents the deployed contract addresses of the Wormhole contracts on each chain, including Core Contracts, TokenBridge, and more. +--- - --- +# Contract Addresses - The Wormhole TypeScript SDK exposes constants, contract interfaces, basic types, VAA payload definitions, EVM-specific utilities, and the EVM Token Bridge protocol client, combining convenience with the peace of mind of TypeScript type safety out of the box. +## Core Contracts - [:custom-arrow: Get started with the SDK](/docs/build/applications/wormhole-sdk/) + + -
+=== "Mainnet" -
+
Chain NameContract Address
Ethereum0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Solanaworm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
Acala0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Algorand842125965
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum0xa5f208e072434bC67592E4C49C1B991BA79BCA46
Avalanche0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c
Base0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Berachain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Blast0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
BNB Smart Chain0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Celo0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Fantom0x126783A6Cb203a3E35344528B26ca3a0489a1485
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Injectiveinj17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9l2q74d
Kaia0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7
Karura0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Mantle0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Moonbeam0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3
NEARcontract.wormhole_crypto.near
Neutronneutron16rerygcpahqcxx5t8vjla46ym8ccn7xz7rtc6ju5ujcd36cmc7zs9zrunh
Oasis0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
Optimism0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722
Polygon0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7
PythnetH3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Scroll0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Seisei1gjrrme22cyha4ht2xapn3f08zzw6z3d4uxx6fyy9zd5dyr3yxgzqqncdqn
SNAXchain0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4
Sui0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c
Terraterra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5
Terra 2.0terra12mrnzvhx3rpej6843uge2yyfppfyd3u9c3uq223q8sl48huz9juqffcnhp
Unichain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
World Chain0xcbcEe4e081464A15d8Ad5f58BB493954421eB506
X Layer0x194B123c5E96B9b2E49763619985790Dc241CAC0
XPLAxpla1jn8qmdda5m6f6fqu9qv46rt7ajhklg40ukpqchkejcvy8x7w26cqxamv3w
-- :octicons-codescan-16:{ .lg .middle } **Wormhole Queries** +=== "Testnet" - --- +
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
- Wormhole Queries offers on-demand access to Guardian-attested on-chain data via a simple REST endpoint. Wormhole Guardians, who run full nodes for various connected chains, facilitate this cross-chain query service. This method is faster and more cost-effective, eliminating the need for gas payments and transaction finality wait times. +=== "Devnet" - [:custom-arrow: Get started with Queries](/docs/build/applications/queries/) +
Chain NameContract Address
Ethereum0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
SolanaBridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o
Algorand1004
Aptos0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017
BNB Smart Chain0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
NEARwormhole.test.near
Sui0x5a5160ca3c2037f4b4051344096ef7a48ebf4400b3f385e57ea90e1628a8bde0
Terraterra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au
Terra 2.0terra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au
+ + -
+## Token Bridge -
+ + -- :octicons-arrow-switch-16:{ .lg .middle } **Wormhole Connect** +=== "Mainnet" - --- +
Chain NameContract Address
Ethereum0x3ee18B2214AFF97000D974cf647E7C347E8fa585
SolanawormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
Acala0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Algorand842126029
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum0x0b2402144Bb366A632D14B83F244D2e0e21bD39c
Avalanche0x0e082F06FF657D94310cB8cE8B0D9a04541d8052
Base0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627
Berachain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Blast0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
BNB Smart Chain0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7
Celo0x796Dff6D74F3E27060B71255Fe517BFb23C93eed
Fantom0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
Injectiveinj1ghd753shjuwexxywmgs4xz7x2q732vcnxxynfn
Kaia0x5b08ac39EAED75c0439FC750d9FE7E1F9dD0193F
Karura0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Mantle0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Moonbeam0xb1731c586ca89a23809861c6103f0b96b3f57d92
NEARcontract.portalbridge.near
Oasis0x5848C791e09901b40A9Ef749f2a6735b418d7564
Optimism0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b
Polygon0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE
Scroll0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Seisei1smzlm9t79kur392nu9egl8p8je9j92q4gzguewj56a05kyxxra0qy0nuf3
SNAXchain0x8B94bfE456B48a6025b92E11Be393BAa86e68410
Sui0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9
Terraterra10nmmwe8r3g99a9newtqa7a75xfgs2e8z87r2sf
Terra 2.0terra153366q50k7t8nn7gec00hg66crnhkdggpgdtaxltaq6xrutkkz3s992fw9
Unichain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
World Chain0xc309275443519adca74c9136b02A38eF96E3a1f6
X Layer0x5537857664B0f9eFe38C9f320F75fEf23234D904
XPLAxpla137w0wfch2dfmz7jl2ap8pcmswasj8kg06ay4dtjzw7tzkn77ufxqfw7acv
- Wormhole Connect is a React widget that lets developers offer an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. Offering both code and no-code styling options, Wormhole Connect is highly customizable to meet the needs of your application. +=== "Testnet" - [:custom-arrow: Get started with Connect](/docs/build/applications/connect/) +
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
-
---- END CONTENT --- +=== "Devnet" -Doc-Content: https://wormhole.com/docs/build/applications/queries/faqs ---- BEGIN CONTENT --- ---- -title: Queries FAQs -description: Wormhole Queries FAQ covering available libraries, query examples, response formats, and details about running query proxy servers. ---- +
Chain NameContract Address
Ethereum0x0290FB167208Af455bB137780163b7B7a9a10C16
SolanaB6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE
Algorand1006
Aptos0x84a5f374d29fc77e370014dce4fd6a55b58ad608de8074b0be5571701724da31
BNB Smart Chain0x0290FB167208Af455bB137780163b7B7a9a10C16
NEARtoken.test.near
Sui0xa6a3da85bbe05da5bfd953708d56f1a3a023e7fb58e5a824a3d4de3791e8f690
Terraterra1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrquka9l6
Terra 2.0terra1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrquka9l6
+ + -# Wormhole Queries FAQs +## Wormhole Relayer -## What libraries are available to handle queries? + + - - The [Query TypeScript SDK](https://npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} can be used to create query requests, mock query responses for testing, and parse query responses. The SDK also includes utilities for posting query responses +=== "Mainnet" -- The [Solidity `QueryResponseLib` library](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/libraries/QueryResponse.sol){target=\_blank} can be used to parse and verify query responses on EVM chains. See the [Solana Stake Pool](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} repository as an example use case +
Chain NameContract Address
Ethereum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Arbitrum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Avalanche0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Base0x706f82e9bb5b0813501714ab5974216704980e31
Blast0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
BNB Smart Chain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Celo0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Fantom0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Kaia0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Mantle0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Moonbeam0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Optimism0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Polygon0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Scroll0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
SNAXchain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
World Chain0x1520cc9e779c56dab5866bebfb885c86840c33d3
X Layer0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
-- [`QueryRequestBuilder.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/testing/QueryRequestBuilder.sol){target=\_blank} can be used for mocking query requests and responses in Forge tests +=== "Testnet" -- The [Go query package](https://github.com/wormhole-foundation/wormhole/tree/main/node/pkg/query){target=\_blank} can also be used to create query requests and parse query responses +
Chain NameContract Address
Ethereum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Arbitrum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Avalanche0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB
Base Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Berachain0x362fca37E45fe1096b42021b543f462D49a5C8df
BNB Smart Chain0x80aC94316391752A193C1c47E27D382b507c93F3
Celo0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84
Fantom0x9563a59c15842a6f322b10f69d1dd88b41f2e97b
Ink0x362fca37E45fe1096b42021b543f462D49a5C8df
Monad0x362fca37E45fe1096b42021b543f462D49a5C8df
Moonbeam0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0
Optimism Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Seievm0x362fca37E45fe1096b42021b543f462D49a5C8df
Unichain0x362fca37E45fe1096b42021b543f462D49a5C8df
-!!! note - A Rust SDK for Solana is being actively investigated by the Wormhole contributors. See the [Solana Queries Verification](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} repository as a proof of concept. +=== "Devnet" -## Are there any query examples? +
Chain NameContract Address
Ethereum0xcC680D088586c09c3E0E099a676FA4b6e42467b4
BNB Smart Chain0xcC680D088586c09c3E0E099a676FA4b6e42467b4
+ + -Certainly. You can find a complete guide on the [Use Queries page](/docs/build/applications/queries/use-queries/){target=\_blank}. Additionally, you can find full code examples in the following repositories: +## CCTP -- [Basic Example Query Demo](https://github.com/wormholelabs-xyz/example-queries-demo/){target=\_blank} -- [Solana Stake Pool Example Query](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} -- [Solana Program Derived Address (PDA) / Token Account Balance Example Query](https://github.com/wormholelabs-xyz/example-queries-solana-pda){target=\_blank} -- [Solana Queries Verification Example](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} + + -## What is the format of the response signature? +=== "Mainnet" -The Guardian node calculates an ECDSA signature using [`Sign` function of the crypto package](https://pkg.go.dev/github.com/ethereum/go-ethereum@v1.10.21/crypto#Sign){target=\_blank} where the digest hash is: +
Chain NameContract Address
Ethereum0xAaDA05BD399372f0b0463744C09113c137636f6a
Arbitrum0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Avalanche0x09Fb06A271faFf70A651047395AaEb6265265F13
Base0x03faBB06Fa052557143dC28eFCFc63FC12843f1D
Optimism0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Polygon0x0FF28217dCc90372345954563486528aa865cDd6
-```keccak256("query_response_0000000000000000000|"+keccak256(responseBytes))``` +=== "Testnet" -See the [Guardian Key Usage](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0009_guardian_key.md){target=\_blank} white paper for more background. Once this signature is created, the Guardian's index in the Guardian set is appended to the end. +
Chain NameContract Address
Ethereum Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Arbitrum Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Avalanche0x58f4c17449c90665891c42e14d34aae7a26a472e
Base Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Optimism Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
-!!! note - If you are used to `ecrecover` you will notice that the `v` byte is `0` or `1` as opposed to `27` or `28`. The `signaturesToEvmStruct` method in the [Query TypeScript SDK](https://npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} accounts for this as well as structuring the signatures into an `IWormhole.SignatureStruct[]`. +=== "Devnet" -## Can anyone run a query proxy server? + N/A + + -Permissions for Query Proxy are managed by the Guardians. The Guardian nodes are configured to only listen to a set of allow-listed proxies. However, it is possible that this restriction may be lifted in the future and/or more proxies could be added. +## Read-Only Deployments -It is also important to note that the proxies don't impact the verifiability of the request or result, i.e., their role in the process is trustless. +=== "Mainnet" -## What Does Queries Offer over an RPC Service +
Chain NameContract Address
Corn0xa683c66045ad16abb1bCE5ad46A64d95f9A25785
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Sonic0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Telos0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
-Wormhole Queries provides on-demand, attested, on-chain, verifiable RPC results. Each Guardian independently executes the specified query and returns the result and their signature. The proxy handles aggregating the results and signatures, giving you a single result (all within one REST call) with a quorum of signatures suitable for on-chain submission, parsing, and verification using one of our examples or SDKs. +!!!note + Read-only deployments allow Wormhole messages to be received on chains not fully integrated with Wormhole Guardians. These deployments support cross-chain data verification but cannot originate messages. For example, a governance message can be sent from a fully integrated chain and processed on a read-only chain, but the read-only chain cannot send messages back. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/queries/index +Doc-Content: https://wormhole.com/docs/build/reference/index --- BEGIN CONTENT --- --- -title: Wormhole Queries -description: Wormhole Queries offers on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy. +title: Reference +description: Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and consistency levels for Guardians. --- -# Queries +# Reference ## Get Started -Wormhole Queries offers on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy. +In this section, you'll find reference information that is essential for development. This includes Wormhole chain IDs, canonical contract addresses, and consistency levels for Guardians for each of the supported blockchains in the Wormhole ecosystem.
-- :octicons-book-16:{ .lg .middle } **Overview** +- :octicons-list-ordered-16:{ .lg .middle } **Chain IDs** --- - Explore Wormhole Queries, offering real-time access to verified blockchain data via a REST API endpoint, enabling secure cross-chain interactions and verifications. + Find a mapping of Wormhole chain IDs to the names and network IDs of the supported blockchains. - [:custom-arrow: Learn about Queries](/docs/build/applications/queries/overview/) + [:custom-arrow: View list of chain IDs](/docs/build/reference/chain-ids/) -- :octicons-code-16:{ .lg .middle } **Use Queries** +- :material-timer-sand:{ .lg .middle } **Consistency Levels** --- - Explore a simple demo of interacting with Wormhole Queries using an `eth_call` request to query the supply of wETH on Ethereum using a Wormhole query. + See the levels of finality (consistency) a transaction should meet before being signed by a Guardian for each network. - [:custom-arrow: Get hands-on](/docs/build/applications/queries/use-queries/) + [:custom-arrow: View list of consistency levels](/docs/build/reference/consistency-levels/) -- :octicons-book-16:{ .lg .middle } **Query FAQs** +- :octicons-file-code-16:{ .lg .middle } **Contract Addresses** --- - Explore frequently asked questions about Wormhole Queries. + Discover the contract addresses for Wormhole-deployed contracts on each of the supported blockchains. + + This includes the following protocol contracts: + + - Core Contract + - Token Bridge + - NFT Bridge + - Wormhole relayer + - CCTP + + [:custom-arrow: View list of contract addresses](/docs/build/reference/contract-addresses/) - [:custom-arrow: Check out the FAQs](/docs/build/applications/queries/faqs/) +- :material-code-braces:{ .lg .middle } **Wormhole Formatted Addresses** + + --- + + Learn how Wormhole formats addresses into a 32-byte hex format for cross-chain compatibility. + + This includes converting addresses between their native formats and the Wormhole format across multiple blockchains. + + [:custom-arrow: View details on Wormhole formatted addresses](/docs/build/reference/wormhole-formatted-addresses/)
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/queries/overview +Doc-Content: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses --- BEGIN CONTENT --- --- -title: Queries Overview -description: Explore Wormhole Queries, offering real-time access to verified blockchain data via a REST endpoint, enabling secure cross-chain interactions and verifications. +title: Wormhole Formatted Addresses +description: Explanation of Wormhole formatted 32-byte hex addresses, their conversion, and usage across different blockchain platforms. --- -# Queries Overview {: #queries-overview } +# Wormhole Formatted Addresses -Wormhole Guardians, who run full nodes for various connected chains, facilitate a new cross-chain query service that allows for on-demand attested responses to queries, bypassing the inefficiencies of traditional transaction-based data retrieval. This method is faster and cost-effective, eliminating the need for gas payments and transaction finality wait times. +## Introduction -!!! note - Queries are currently in closed beta, though you can start developing today. Check out [Use Queries](/docs/build/applications/queries/use-queries/){target=\_blank} and reach out to [Join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank}. +Wormhole formatted addresses are 32-byte hex representations of addresses from any supported blockchain. Whether an address originates from EVM, Solana, Cosmos, or another ecosystem, Wormhole standardizes all addresses into this format to ensure cross-chain compatibility. -Wormhole Queries offers on-demand access to Guardian-attested on-chain data. The current implementation provides integrators with a simple REST endpoint to initiate an off-chain request via a proxy. The proxy then forwards the request to the Guardians and gathers a quorum of responses. The result returns the encoded response, including the request details and the Guardian signatures. The request validation performed by the query module includes a three step process that involves verifying the signature to ensure it has the correct prefix, confirming that the signer is authorized to execute query requests, and validating the legitimacy of all per-chain requests contained in the query. You can read more about Queries in the [white paper](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0013_ccq.md){target=\_blank}. +This uniform format is essential for smooth interoperability in token transfers and messaging across chains. Wormhole uses formatted addresses throughout the [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank}, especially in cross-chain transactions, such as transfer functions that utilize the `bytes32` representation for recipient addresses. -## The Flow of a Query {: #the-flow-of-a-query} +## Platform-Specific Address Formats -The general overview of a query's flow is as follows: an off-chain process sends HTTPS query requests to a Query Proxy, which validates and forwards them to the Guardians; these Guardians independently validate, sign, and return the response, with the entire process typically taking less than a second. +Each blockchain ecosystem Wormhole supports has its method for formatting native addresses. To enable cross-chain compatibility, Wormhole converts these native addresses into the standardized 32-byte hex format. -![The architecture flow of a query](/docs/images/build/applications/queries/overview/overview-1.webp) +Here’s an overview of the native address formats and how they are normalized to the Wormhole format: -The step-by-step flow of a query is as follows: +| Platform | Native Address Format | Wormhole Formatted Address | +|-----------------|----------------------------------|----------------------------| +| EVM | Hex (e.g., 0x...) | 32-byte Hex | +| Solana | Base58 | 32-byte Hex | +| CosmWasm | Bech32 | 32-byte Hex | +| Algorand | Algorand App ID | 32-byte Hex | +| Sui | Hex | 32-byte Hex | +| Aptos | Hex | 32-byte Hex | +| Near | SHA-256 | 32-byte Hex | -1. An off-chain process initiates a query request via HTTPS to the query proxy (or Query Server) -2. The query proxy validates the request and forwards it to the Guardians via a gossip network -3. The Guardians independently validate the request, make the requisite RPC calls, verify the results, sign, and gossip a response back to the Query Proxy -4. The Query Proxy aggregates the results and returns a response when it reaches a quorum of two-thirds or more of the current Guardian set - the exact quorum requirements as the core bridge -5. The off-chain process can then submit these requests to an on-chain contract which should verify the signatures and validate the request before processing the result +These conversions allow Wormhole to interact seamlessly with various chains using a uniform format for all addresses. -In this flow, the Query Proxy is a permissioned but trustless part of the protocol. In most cases, this entire process takes less than one second. If a request is invalid or cannot be processed by the Guardians, they will retry for up to one minute before timing out. Requests can be batched to have the Guardians make multiple calls to multiple networks. This can further reduce overhead for processing query responses on-chain. Up to 255 queries can be batched together, with certain types allowing for batching themselves. +### Address Format Handling -## Supported Query Types {: #supported-query-types} +The Wormhole SDK provides mappings that associate each platform with its native address format. You can find this mapping in the Wormhole SDK file [`platforms.ts`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/007f61b27c650c1cf0fada2436f79940dfa4f211/core/base/src/constants/platforms.ts#L93-L102){target=\_blank}: -There are currently five supported types of queries. See [the white paper](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0013_ccq.md){target=\_blank} for more details on each. +```typescript +const platformAddressFormatEntries = [ + ['Evm', 'hex'], + ['Solana', 'base58'], + ['Cosmwasm', 'bech32'], + ['Algorand', 'algorandAppId'], + ['Sui', 'hex'], + ['Aptos', 'hex'], + ['Near', 'sha256'], +]; +``` -### eth_call {: #eth-call} +These entries define how the [`UniversalAddress`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/007f61b27c650c1cf0fada2436f79940dfa4f211/core/definitions/src/universalAddress.ts#L23){target=\_blank} class handles different address formats based on the platform. -This query type is effectively an equivalent of [eth_call](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call){target=\_blank} against a block specified by number or hash. +## Universal Address Methods -Calls are batched to allow specifying multiple calls (even to multiple contracts) against the same block. These calls are included in a single batch RPC call, simplifying on-chain verification. Up to 255 calls may be batched in an single `eth_call` query. +The `UniversalAddress` class is essential for working with Wormhole formatted addresses. It converts native blockchain addresses into the standardized 32-byte hex format used across Wormhole operations. -The result contains the specified block number, hash, timestamp, and the call result. +Key functions: -### eth_call By Timestamp {: #eth-call-by-timestamp} + - **`new UniversalAddress()`** - use the `UniversalAddress` constructor to convert native addresses into the Wormhole format -This query type is similar to `eth_call` but targets a timestamp instead of a specific `block_id`. This can be useful when forming requests based on uncorrelated data, such as requiring data from another chain based on the block timestamp of a given chain. + ```typescript + const universalAddress = new UniversalAddress('0x123...', 'hex'); + ``` -The result also contains the target and block details with the following enforced conditions: `target_block.timestamp <= target_time < following_block.timestamp` and `following_block_num - 1 == target_block_num`. + - **`toUniversalAddress()`** - converts a platform-specific address into the Wormhole formatted 32-byte hex address -### eth_call With Finality {: #eth-call-with-finality} + ```typescript + const ethAddress: NativeAddress<'Evm'> = toNative('Ethereum', '0x0C9...'); + const universalAddress = ethAddress.toUniversalAddress().toString(); + ``` -This query type is similar to `eth_call` but ensures that the specified block has reached the specified finality before returning the query results. The finality may be `finalized` or `safe.` Note that if a chain doesn't natively support the `safe` tag, this will be equivalent to `finalized.` + - **`toNative()`** - converts the Wormhole formatted address back to a native address for a specific blockchain platform -### sol_account {: #sol_account} + ```typescript + const nativeAddress = universalAddress.toNative('Evm'); + ``` -This query is used to read data for one or more accounts on Solana, akin to [`getMultipleAccounts`](https://solana.com/docs/rpc/http/getmultipleaccounts){target=\_blank}. + - **`toString()`** - returns the Wormhole formatted address as a hex string, which can be used in various SDK operations -### sol_pda {: #sol_pda} + ```typescript + console.log(universalAddress.toString()); + ``` -This query is used to read data for one or more [Program Derived Addresses(PDA)](https://www.anchor-lang.com/docs/pdas){target=\_blank} on Solana, akin to calling [`getMultipleAccounts`](https://solana.com/docs/rpc/http/getmultipleaccounts){target=\_blank} on the result of `PublicKey.findProgramAddressSync(seeds, programId).` This query is helpful for times when you want to more generally read accounts owned by a program and verify the derivation on another chain, like how associated token accounts are all derived from the [Associated Token Account Program](https://spl.solana.com/associated-token-account){target=\_blank}. +These methods allow developers to convert between native addresses and the Wormhole format, ensuring cross-chain compatibility. -## Supported Chains {: #supported-chains} +## Convert Between Native and Wormhole Formatted Addresses -The following table provides expected support based on testing. However, the success of any given query is based on the success of the underlying call on each Guardian’s RPC node. +The Wormhole SDK allows developers to easily convert between native addresses and Wormhole formatted addresses when building cross-chain applications. -For example, many chains have implementations forked from [Geth](https://github.com/ethereum/go-ethereum){target=\_blank}, which keeps 128 blocks of state in memory by default (without running in archive mode). While this is good for about 25 minutes of history on Ethereum Mainnet, it is only about three minutes on Optimism. While Guardian nodes can be expected to have access to recent state, there are currently no guarantees of how far back in history they have access to. +### Convert a Native Address to a Wormhole Formatted Address -### Mainnet {: #mainnet} +Example conversions for EVM and Solana: -| Chain | Wormhole Chain ID | eth_call | By Timestamp | With Finality | Expected History | -|:-------------:|:-----------------:|:--------:|:------------------:|:-------------:|:----------------:| -| Ethereum | 2 | ✅ | ✅ | ✅ | 128 blocks | -| BSC | 4 | ✅ | ✅ | ✅ | 128 blocks | -| Polygon | 5 | ✅ | ✅ | ✅ | 128 blocks | -| Avalanche | 6 | ✅ | ✅ | ✅ | 32 blocks | -| Oasis Emerald | 7 | ✅ | ✅ | ✅ | archive | -| Fantom | 10 | ✅ | ✅ | ✅ | 16 blocks | -| Karura | 11 | ✅ | ✅ | ✅ | archive | -| Acala | 12 | ✅ | ✅ | ✅ | archive | -| Kaia | 13 | ✅ | ✅ | ✅ | 128 blocks | -| Celo | 14 | ✅ | ℹ️ hints required\* | ✅ | 128 blocks | -| Moonbeam | 16 | ✅ | ℹ️ hints required\* | ✅ | 256 blocks | -| Arbitrum One | 23 | ✅ | ✅ | ✅ | ~6742 blocks | -| Optimism | 24 | ✅ | ✅ | ❌ | 128 blocks | -| Base | 30 | ✅ | ✅ | ✅ | archive | +=== "EVM" -\*`EthCallByTimestamp` arguments for `targetBlock` and `followingBlock` are currently required for requests to be successful on these chains. + ```typescript + import { toNative } from '@wormhole-foundation/sdk-core'; -## Next Steps {: #next-steps} +const ethAddress: NativeAddress<'Evm'> = toNative( + 'Ethereum', + '0x0C99567DC6f8f1864cafb580797b4B56944EEd28' +); +const universalAddress = ethAddress.toUniversalAddress().toString(); +console.log('Universal Address (EVM):', universalAddress); + ``` -Remember that Wormhole Queries are currently in beta. You can [register to join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to fully experiment with Wormhole Queries. +=== "Solana" -Be sure to check out the [FAQs](/docs/build/applications/queries/faqs/){target=\_blank} and the [Use Queries guide](/docs/build/applications/queries/use-queries/){target=\_blank}. + ```typescript + import { toNative } from '@wormhole-foundation/sdk-core'; -You can also check out the following examples of applications that make use of Wormhole Queries: +const solAddress: NativeAddress<'Solana'> = toNative( + 'Solana', + '6zZHv9EiqQYcdg52ueADRY6NbCXa37VKPngEHaokZq5J' +); +const universalAddressSol = solAddress.toUniversalAddress().toString(); +console.log('Universal Address (Solana):', universalAddressSol); + ``` -- [Basic demo](https://github.com/wormholelabs-xyz/example-queries-demo/){target=\_blank} -- [Solana Stake Pool](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} -- [Solana Program Derived Address (PDA) / Token Account Balance](https://github.com/wormholelabs-xyz/example-queries-solana-pda){target=\_blank} -- [Solana Queries Verification](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} +The result is a standardized address format that is ready for cross-chain operations. + +### Convert Back to Native Addresses + +Below is how you can convert a Wormhole formatted address back to an EVM or Solana native address: + +```typescript +const nativeAddressEvm = universalAddress.toNative('Evm'); +console.log('EVM Native Address:', nativeAddressEvm); + +const nativeAddressSolana = universalAddress.toNative('Solana'); +console.log('Solana Native Address:', nativeAddressSolana); +``` + +These conversions ensure that your cross-chain applications can seamlessly handle addresses across different ecosystems. + +## Use Cases for Wormhole Formatted Addresses + +### Cross-chain Token Transfers + +Cross-chain token transfers require addresses to be converted into a standard format. For example, when transferring tokens from Ethereum to Solana, the Ethereum address is converted into a Wormhole formatted address to ensure compatibility. After the transfer, the Wormhole formatted address is converted back into the Solana native format. + +### Smart Contract Interactions + +In smart contract interactions, especially when building dApps that communicate across multiple chains, Wormhole formatted addresses provide a uniform way to reference addresses. This ensures that addresses from different blockchains can interact seamlessly, whether you're sending messages or making cross-chain contract calls. + +### DApp Development + +For cross-chain dApp development, Wormhole formatted addresses simplify handling user wallet addresses across various blockchains. This allows developers to manage addresses consistently, regardless of whether they work with EVM, Solana, or another supported platform. + +### Relayers and Infrastructure + +Finally, relayers and infrastructure components, such as Wormhole Guardians, rely on the standardized format to efficiently process and relay cross-chain messages. A uniform address format simplifies operations, ensuring smooth interoperability across multiple blockchains. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/queries/use-queries +Doc-Content: https://wormhole.com/docs/build/start-building/index --- BEGIN CONTENT --- --- -title: Use Queries -description: Explore a simple demo of interacting with Wormhole Queries using an eth_call request to query the supply of wETH on Ethereum using a Wormhole query. +title: Start Building +description: This section has all you need to start developing with Wormhole, including a guide to supported networks, tool sets, and code examples. --- -# Use Queries - -You can visit the [Example Queries Demo](https://wormholelabs-xyz.github.io/example-queries-demo/){target=\_blank} to view an interactive example of an application interacting with the [Query Demo](https://github.com/wormholelabs-xyz/example-queries-demo/blob/main/src/QueryDemo.sol){target=\_blank} contract. +# Start Building -This guide covers using a simple `eth_call` request to get the total supply of WETH on Ethereum. +## Introduction -## RPC Basics +Wormhole's role as a Generic Message Passing (GMP) protocol means it facilitates interoperability across multiple areas of project development. The following sections will help you locate the tools most relevant to your development needs whether you are focused on building frontend user interfaces or smart contracts and protocols. This section also links to developer resources like references and code examples which are helpful for all builders looking to integrate with Wormhole. -Before digging into anything Queries-specific, this page will look at how to make an [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call){target=\_blank} against a public Ethereum RPC. Suppose you'd like to query the WETH contract for its total supply; before making a request, you need some information about the contract you want to call, including: +## Get Hands-On -- **To** - the contract to call. WETH is [0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2){target=\_blank} -- **Data** - the method identifier and ABI-encoded parameters, which can be obtained as follows: `web3.eth.abi.encodeFunctionSignature("totalSupply()")` which yields `0x18160ddd` -- **Block ID** - the block number, hash, or tag. Tag options include `latest,` `safe,` or `finalized` +
-The prepared curl request is as follows: +- :octicons-repo-16:{ .lg .middle } **Tutorials** -```bash title="eth_call JSON-RPC request" -curl https://ethereum.publicnode.com -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","data":"0x18160ddd"},"latest"],"id":1}' -``` + --- -And the corresponding response is: + Follow in-depth, step-by-step tutorials to learn how to build cross-chain contracts, integrate Wormhole's SDK, and more. -```bash title="eth_call JSON-RPC reponse" -{ - "jsonrpc":"2.0", - "id":1, - "result":"0x000000000000000000000000000000000000000000029fd3d129b582d7949e71" -} -``` + [:custom-arrow: Explore tutorials](/docs/tutorials/) -Converting the returned value of the executed call from hexidecimal results in the value `3172615244782286193073777`. You can compare your result to the [**Read Contract**](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#readContract){target=\_blank} tab in Etherscan. Your result will be different as WETH is minted/burned over time. +
-## Construct a Query {: #construct-a-query} +## Essential Resources for Development -You can use the [Wormhole Query SDK](https://www.npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} to construct a query. You will also need an RPC endpoint from the provider of your choice. This example uses [Axios](https://www.npmjs.com/package/axios){target=\_blank} for RPC requests. Ensure that you also have [TypeScript](https://www.typescriptlang.org/download/){target=\_blank} installed. +
-```jsx -npm i @wormhole-foundation/wormhole-query-sdk axios -``` +- :octicons-broadcast-16:{ .lg .middle } **Supported Networks** -In order to make an `EthCallQueryRequest`, you need a specific block number or hash as well as the call data to request. + --- -You can request the latest block from a public node using `eth_getBlockByNumber`. + Explore the blockchains supported by Wormhole for cross-chain communication and asset transfers. Understand which networks are available for both Testnet and Mainnet environments. -```jsx + [:custom-arrow: Discover supported networks](/docs/build/start-building/supported-networks/) -await axios.post(rpc, { - method: 'eth_getBlockByNumber', - params: ['latest', false], - id: 1, - jsonrpc: '2.0', - }) - ).data?.result?.number; -``` +- :octicons-goal-16:{ .lg .middle } **Testnet Faucets** -Then construct the call data. + --- -```jsx -to: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH - data: '0x18160ddd', // web3.eth.abi.encodeFunctionSignature("totalSupply()") -}; -``` + Get Testnet tokens to start experimenting with cross-chain transfers and contract deployment. -Finally, put it all together in a `QueryRequest`. + [:custom-arrow: Find Testnet faucets](/docs/build/start-building/testnet-faucets/) -```jsx -const request = new QueryRequest( - 0, // Nonce - [ - new PerChainQueryRequest( - 2, // Ethereum Wormhole Chain ID - new EthCallQueryRequest(latestBlock, [callData]) - ), - ] - ); -``` +- :octicons-list-unordered-16:{ .lg .middle } **Reference** -This request consists of one `PerChainQueryRequest`, which is an `EthCallQueryRequest` to Ethereum. You can use `console.log` to print the JSON object and review the structure. + --- -```jsx + Access the essential Wormhole chain IDs and smart contract addresses for messaging protocols, token bridges, and other key components. -// { -// "nonce": 0, -// "requests": [ -// { -// "chainId": 2, -// "query": { -// "callData": [ -// { -// "to": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", -// "data": "0x18160ddd" -// } -// ], -// "blockTag": "0x11e9068" -// } -// } -// ], -// "version": 1 -// } -``` + [:custom-arrow: Explore Reference](/docs/build/reference/){target=\_blank} -## Mock a Query +
+--- END CONTENT --- -For easier testing, the Query SDK provides a `QueryProxyMock` method. This method will perform the request and sign the result with the [Devnet](/docs/build/toolkit/tilt/){target=\_blank} Guardian key. The `mock` call returns the same format as the Query Proxy. +Doc-Content: https://wormhole.com/docs/build/start-building/supported-networks +--- BEGIN CONTENT --- +--- +title: Supported Networks +description: Learn about the compatible environments and individual networks that Wormhole supports. Readers can click on each of the blockchain logos for more information. +--- -```jsx -const mockData = await mock.mock(request); - console.log(mockData); -// { -// signatures: ['...'], -// bytes: '...' -// } -``` +# Supported Networks -This response is suited for on-chain use, but the SDK also includes a parser to make the results readable via the client. +Wormhole supports several different blockchains and environments. Since many of the concepts for using Wormhole within a given blockchain environment are the same, this section is organized by environment, and individual chains are detailed within the environment page. -```jsx -const mockQueryResult = ( - mockQueryResponse.responses[0].response as EthCallQueryResponse - ).results[0]; - console.log( - `Mock Query Result: ${mockQueryResult} (${BigInt(mockQueryResult)})` - ); -// Mock Query Result: 0x000000000000000000000000000000000000000000029fd09d4d81addb3ccfee (3172556167631284394053614) -``` +## Supported Environments -Testing this all together might look like the following: +- [EVM (Ethereum and compatible chains)](#evm) +- [SVM (Solana and compatible chains)](#svm) +- [CosmWasm (Cosmos ecosystem chains)](#cosmwasm) +- [AVM (Algorand)](#avm) +- [NEAR VM (NEAR)](#near-vm) +- [Move VM (Aptos)](#move-vm) +- [Sui Move VM (Sui)](#sui-move-vm) -```jsx -import { - EthCallData, - EthCallQueryRequest, - EthCallQueryResponse, - PerChainQueryRequest, - QueryProxyMock, - QueryRequest, - QueryResponse, -} from '@wormhole-foundation/wormhole-query-sdk'; -import axios from 'axios'; +## Supported Blockchains by Environment -const rpc = 'https://ethereum.publicnode.com'; -const callData: EthCallData = { - to: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH - data: '0x18160ddd', // web3.eth.abi.encodeFunctionSignature("totalSupply()") -}; + + +
-(async () => { - const latestBlock: string = ( - await axios.post(rpc, { - method: 'eth_getBlockByNumber', - params: ['latest', false], - id: 1, - jsonrpc: '2.0', - }) - ).data?.result?.number; - if (!latestBlock) { - console.error(`❌ Invalid block returned`); - return; - } - console.log('Latest Block: ', latestBlock, `(${BigInt(latestBlock)})`); - const targetResponse = await axios.post(rpc, { - method: 'eth_call', - params: [callData, latestBlock], - id: 1, - jsonrpc: '2.0', - }); - // console.log(finalizedResponse.data); - if (targetResponse.data.error) { - console.error(`❌ ${targetResponse.data.error.message}`); - } - const targetResult = targetResponse.data?.result; - console.log('Target Result: ', targetResult, `(${BigInt(targetResult)})`); - // Form the query request - const request = new QueryRequest( - 0, // Nonce - [ - new PerChainQueryRequest( - 2, // Ethereum Wormhole Chain ID - new EthCallQueryRequest(latestBlock, [callData]) - ), - ] - ); - console.log(JSON.stringify(request, undefined, 2)); - const mock = new QueryProxyMock({ 2: rpc }); - const mockData = await mock.mock(request); - console.log(mockData); - const mockQueryResponse = QueryResponse.from(mockData.bytes); - const mockQueryResult = ( - mockQueryResponse.responses[0].response as EthCallQueryResponse - ).results[0]; - console.log( - `Mock Query Result: ${mockQueryResult} (${BigInt(mockQueryResult)})` - ); -})(); -``` +### EVM -### Fork Testing +
BlockchainEnvironmentMainnetTestnetQuick Links
EthereumEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
AcalaEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
ArbitrumEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
AvalancheEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BaseEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BerachainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BlastEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BNB Smart ChainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
CeloEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
FantomEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
GnosisEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
HyperEVMEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
InkEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
KaiaEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
KaruraEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
LineaEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MantleEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MonadEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
MoonbeamEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
NeonEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OasisEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OptimismEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
PolygonEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
RootstockEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
ScrollEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
SeievmEVM:x::white_check_mark:
SNAXchainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
UnichainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
World ChainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
X LayerEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-It is common to test against a local fork of Mainnet with something like +### SVM -```jsx -anvil --fork-url https://ethereum.publicnode.com -``` +
BlockchainEnvironmentMainnetTestnetQuick Links
SolanaSVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
PythnetSVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-In order for mock requests to verify against the Mainnet Core Contract, you need to replace the current Guardian set with the single Devnet key used by the mock. +### AVM -Here's an example for Ethereum Mainnet, where the `-a` parameter is the [Core Contract address](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on that chain. +
BlockchainEnvironmentMainnetTestnetQuick Links
AlgorandAVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-```jsx -npx @wormhole-foundation/wormhole-cli evm hijack -a 0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B -g 0xbeFA429d57cD18b7F8A4d91A2da9AB4AF05d0FBe -``` +### CosmWasm -If you are using `EthCallWithFinality`, you will need to mine additional blocks (32 if using [Anvil](https://book.getfoundry.sh/anvil/){target=\_blank}) after the latest transaction for it to become finalized. Anvil supports [auto-mining](https://book.getfoundry.sh/reference/anvil/#mining-modes){target=\_blank} with the `-b` flag if you want to test code that waits naturally for the chain to advance. For integration tests, you may want to simply `anvil_mine` with `0x20`. +
BlockchainEnvironmentMainnetTestnetQuick Links
InjectiveCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
NeutronCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OsmosisCosmWasm:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
SeiCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
TerraCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
Terra 2.0CosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
XPLACosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-## Make a Query Request +### Move VM -The standardized means of making a `QueryRequest` with an API key is as follows: +
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-```jsx -const serialized = request.serialize(); -const proxyResponse = (await axios.post)( - QUERY_URL, - { - bytes: Buffer.from(serialized).toString('hex'), - }, - { headers: { 'X-API-Key': YOUR_API_KEY } } -); -``` +### NEAR VM -Remember to always take steps to protect your sensitive API keys, such as defining them in `.env` files and including such files in your `.gitignore`. +
BlockchainEnvironmentMainnetTestnetQuick Links
NEARNEAR VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-A Testnet Query Proxy is available at `https://testnet.query.wormhole.com/v1/query` +### Sui Move VM -A Mainnet Query Proxy is available at `https://query.wormhole.com/v1/query` +
BlockchainEnvironmentMainnetTestnetQuick Links
SuiSui Move VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-## Verify a Query Response On-Chain +
+ +--- END CONTENT --- -A [`QueryResponseLib` library](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/libraries/QueryResponse.sol){target=\_blank} is provided to assist with verifying query responses. You can begin by installing the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} with the following command: +Doc-Content: https://wormhole.com/docs/build/start-building/testnet-faucets +--- BEGIN CONTENT --- +--- +title: Testnet Faucets +description: This page includes resources to quickly find the Testnet tokens you need to deploy and test applications and contracts on Wormhole's supported networks. +--- -```bash -forge install wormhole-foundation/wormhole-solidity-sdk -``` +# Testnet Faucets -Broadly, using a query response on-chain comes down to three main steps: +## Get Started - 1. Parse and verify the query response - 2. The `parseAndVerifyQueryResponse` handles verifying the Guardian signatures against the current Guardian set stored in the Core bridge contract - 3. Validate the request details. This may be different for every integrator depending on their use case, but generally checks the following: - - Is the request against the expected chain? - - Is the request of the expected type? The `parseEthCall` helpers perform this check when parsing - - Is the resulting block number and time expected? Some consumers might require that a block number be higher than the last, or the block time be within the last 5 minutes. `validateBlockNum` and `validateBlockTime` can help with the checks - - Is the request for the expected contract and function signature? The `validateMultipleEthCallData` can help with non-parameter-dependent cases - - Is the result of the expected length for the expected result type? - 4. Run `abi.decode` on the result +Don't let the need for testnet tokens get in the way of buildling your next great idea with Wormhole. Use this guide to quickly locate the testnet token faucets you need to deploy and test applications and contracts on Wormhole's supported networks. -See the [QueryDemo](https://github.com/wormholelabs-xyz/example-queries-demo/blob/main/src/QueryDemo.sol){target=\_blank} contract for an example and read the docstrings of the preceding methods for detailed usage instructions. + -??? code "View the complete `QueryDemo`" - ```solidity - // contracts/query/QueryDemo.sol -// SPDX-License-Identifier: Apache 2 + +
-pragma solidity ^0.8.0; - -import "wormhole-solidity-sdk/libraries/BytesParsing.sol"; -import "wormhole-solidity-sdk/interfaces/IWormhole.sol"; -import "wormhole-solidity-sdk/QueryResponse.sol"; - -error InvalidOwner(); -// @dev for the onlyOwner modifier -error InvalidCaller(); -error InvalidCalldata(); -error InvalidForeignChainID(); -error ObsoleteUpdate(); -error StaleUpdate(); -error UnexpectedResultLength(); -error UnexpectedResultMismatch(); - -/// @dev QueryDemo is an example of using the QueryResponse library to parse and verify Cross Chain Query (CCQ) responses. -contract QueryDemo is QueryResponse { - using BytesParsing for bytes; - - struct ChainEntry { - uint16 chainID; - address contractAddress; - uint256 counter; - uint256 blockNum; - uint256 blockTime; - } - - address private immutable owner; - uint16 private immutable myChainID; - mapping(uint16 => ChainEntry) private counters; - uint16[] private foreignChainIDs; - - bytes4 public GetMyCounter = bytes4(hex"916d5743"); - - constructor(address _owner, address _wormhole, uint16 _myChainID) QueryResponse(_wormhole) { - if (_owner == address(0)) { - revert InvalidOwner(); - } - owner = _owner; - - myChainID = _myChainID; - counters[_myChainID] = ChainEntry(_myChainID, address(this), 0, 0, 0); - } - - // updateRegistration should be used to add the other chains and to set / update contract addresses. - function updateRegistration(uint16 _chainID, address _contractAddress) public onlyOwner { - if (counters[_chainID].chainID == 0) { - foreignChainIDs.push(_chainID); - counters[_chainID].chainID = _chainID; - } - - counters[_chainID].contractAddress = _contractAddress; - } - - // getMyCounter (call signature 916d5743) returns the counter value for this chain. It is meant to be used in a cross chain query. - function getMyCounter() public view returns (uint256) { - return counters[myChainID].counter; - } - - // getState() returns this chain's view of all the counters. It is meant to be used in the front end. - function getState() public view returns (ChainEntry[] memory) { - ChainEntry[] memory ret = new ChainEntry[](foreignChainIDs.length + 1); - ret[0] = counters[myChainID]; - uint256 length = foreignChainIDs.length; - - for (uint256 i = 0; i < length;) { - ret[i + 1] = counters[foreignChainIDs[i]]; - unchecked { - ++i; - } - } - - return ret; - } - - // @notice Takes the cross chain query response for the other counters, stores the results for the other chains, and updates the counter for this chain. - function updateCounters(bytes memory response, IWormhole.Signature[] memory signatures) public { - ParsedQueryResponse memory r = parseAndVerifyQueryResponse(response, signatures); - uint256 numResponses = r.responses.length; - if (numResponses != foreignChainIDs.length) { - revert UnexpectedResultLength(); - } - - for (uint256 i = 0; i < numResponses;) { - // Create a storage pointer for frequently read and updated data stored on the blockchain - ChainEntry storage chainEntry = counters[r.responses[i].chainId]; - if (chainEntry.chainID != foreignChainIDs[i]) { - revert InvalidForeignChainID(); - } - - EthCallQueryResponse memory eqr = parseEthCallQueryResponse(r.responses[i]); +### EVM - // Validate that update is not obsolete - validateBlockNum(eqr.blockNum, chainEntry.blockNum); +
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
HyperliquidEVMHYPEHyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
RootstockEVMRBTCOfficial Rootstock Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
- // Validate that update is not stale - validateBlockTime(eqr.blockTime, block.timestamp - 300); +### SVM - if (eqr.result.length != 1) { - revert UnexpectedResultMismatch(); - } +
TestnetEnvironmentTokenFaucet
PythnetSVMETHSuperchain Faucet
- // Validate addresses and function signatures - address[] memory validAddresses = new address[](1); - bytes4[] memory validFunctionSignatures = new bytes4[](1); - validAddresses[0] = chainEntry.contractAddress; - validFunctionSignatures[0] = GetMyCounter; +### AVM - validateMultipleEthCallData(eqr.result, validAddresses, validFunctionSignatures); +
TestnetEnvironmentTokenFaucet
AlgorandAVMALGOOfficial Algorand Faucet
- require(eqr.result[0].result.length == 32, "result is not a uint256"); +### CosmWasm - chainEntry.blockNum = eqr.blockNum; - chainEntry.blockTime = eqr.blockTime / 1_000_000; - chainEntry.counter = abi.decode(eqr.result[0].result, (uint256)); +
TestnetEnvironmentTokenFaucet
CelestiaCosmWasmTIADiscord Faucet
Cosmos HubCosmWasmATOMDiscord Faucet
EvmosCosmWasmTEVMOSOfficial Evmos Faucet
InjectiveCosmWasmINJOfficial Injective Faucet
KujiraCosmWasmKUJIDiscord Faucet
NeutronCosmWasmNTRNList of Faucets
NobleCosmWasmUSDCCircle Faucet
OsmosisCosmWasmOSMOOfficial Osmosis Faucet
SEDACosmWasmSEDAOfficial SEDA Faucet
SeiCosmWasmSEISei Atlantic-2 Faucet
TerraCosmWasmLUNATerra Official Faucet
Terra 2.0CosmWasmLUNATerra Official Faucet
XPLACosmWasmXPLAXPLA Official Faucet
- unchecked { - ++i; - } - } +### Move VM - counters[myChainID].blockNum = block.number; - counters[myChainID].blockTime = block.timestamp; - counters[myChainID].counter += 1; - } +
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
- modifier onlyOwner() { - if (owner != msg.sender) { - revert InvalidOwner(); - } - _; - } -} - ``` +### NEAR VM -## Submit a Query Response On-Chain +
TestnetEnvironmentTokenFaucet
NEARNEAR VMNEAROfficial NEAR Faucet
-The `QueryProxyQueryResponse` result requires a slight tweak when submitting to the contract to match the format of `function parseAndVerifyQueryResponse(bytes memory response, IWormhole.Signature[] memory signatures)`. A helper function, `signaturesToEvmStruct`, is provided in the SDK for this. +### Sui Move VM -This example submits the transaction to the demo contract: +
TestnetEnvironmentTokenFaucet
SuiSui Move VMSUIList of Faucets
-```jsx -const tx = await contract.updateCounters( - `0x${response.data.bytes}`, - signaturesToEvmStruct(response.data.signatures) -); -``` +
+ --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/wormhole-sdk/index +Doc-Content: https://wormhole.com/docs/build/toolkit/cli --- BEGIN CONTENT --- --- -title: Wormhole SDK -description: The Wormhole SDK provides tools for cross-chain communication, token bridges, and more, enabling developers to integrate with multiple blockchain environments. +title: Wormhole CLI +description: Learn how to install and use the Wormhole CLI, including commands and examples for managing multichain deployments, generating VAAs, and querying contract info. --- -# Wormhole SDK - -## Get Started - -The Wormhole SDK provides developers with essential tools for cross-chain communication, token bridges, and more. This SDK enables seamless interaction between different blockchain environments with a focus on performance and usability. - -
- -- :octicons-book-16:{ .lg .middle } **Wormhole SDK** - - --- +# Wormhole CLI - Learn about the core functionalities of the Wormhole SDK, including how to use its features for building cross-chain applications. +This tool is a command-line interface to Wormhole, allowing you to perform various actions, such as querying a transaction's status or submitting token transfers. - [:custom-arrow: Explore the SDK](/docs/build/applications/wormhole-sdk/wormhole-sdk/) +## Installation -- :octicons-code-16:{ .lg .middle } **Layouts** +Clone the repository and change directories to the appropriate directory: - --- +```bash +git clone https://github.com/wormhole-foundation/wormhole && +cd wormhole/clients/js +``` - Discover how to define, serialize, and deserialize data structures using the Wormhole SDK's layout system, ensuring efficient cross-chain communication. +Build and install the CLI tool: - [:custom-arrow: Learn about layouts](/docs/build/applications/wormhole-sdk/sdk-layout/) +```bash +make install +``` -
---- END CONTENT --- +This installs two binaries, `worm-fetch-governance` and `worm` on your `$PATH`. To use `worm`, set up `$HOME/.wormhole/.env` with your private keys, based on `.env.sample` in this folder. -Doc-Content: https://wormhole.com/docs/build/applications/wormhole-sdk/protocols-payloads ---- BEGIN CONTENT --- ---- -title: Building Protocols and Payloads -description: Learn how to build, register, and integrate protocols and payloads in the Wormhole TypeScript SDK with type-safe layouts. ---- +## Usage -# Building Protocols and Payloads +You can interact with the Wormhole CLI by typing `worm` and including the `command` and any necessary subcommands and parameters. -## Introduction +| Command | Description | +|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| +| `worm aptos INSERT_COMMAND` | Aptos utilities | +| `worm edit-vaa INSERT_COMMAND` | Edits or generates a VAA | +| `worm evm INSERT_COMMAND` | EVM utilities | +| `worm generate INSERT_COMMAND` | Generate VAAs (Devnet and Testnet only) | +| `worm info INSERT_COMMAND` | Contract, chain, RPC, and address information utilities | +| `worm near INSERT_NETWORK, INSERT_ACCOUNT` | NEAR utilities | +| `worm parse INSERT_VAA` | Parse a VAA (can be in either hex or base64 format) | +| `worm recover INSERT_DIGEST INSERT_SIGNATURE` | Recover an address from a signature | +| `worm status INSERT_NETWORK, INSERT_CHAIN, INSERT_TXN_HASH` | Prints information about the automatic delivery initiated on the specified network, chain, and transaction hash | +| `worm submit INSERT_VAA` | Execute a VAA | +| `worm sui INSERT_COMMAND` | Sui utilities | +| `worm transfer INSERT_SOURCE_CHAIN, INSERT_DESTINATION_CHAIN, INSERT_DESTINATION_ADDRESS, INSERT_AMOUNT, INSERT_NETWORK` | Transfers a token | +| `worm verify-vaa INSERT_VAA, INSERT_NETWORK` | Verifies a VAA by querying the Core Contract on Ethereum | -The [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} provides a flexible and powerful system for integrating cross-chain communication into your applications. A key feature of the SDK is its ability to define protocols—modular units representing distinct functionalities—and their associated payloads, which encapsulate the data required for specific operations within those protocols. +You can also refer to the below options, available with all `worm` commands: -This guide will help you understand how to build protocols and payloads in the SDK, covering: +```bash +Options: + --help Show help [boolean] + --version Show version number [boolean] +``` - - The role of protocols and payloads in cross-chain communication - - The mechanics of registering protocols and payloads using the SDK - - Best practices for creating strongly typed layouts to ensure compatibility and reliability - - Real-world examples using the `TokenBridge` as a reference implementation +### Subcommands -By the end of this guide, you’ll have a solid understanding of how to define, register, and use protocols and payloads in your projects. +??? code "Aptos" + ```bash + worm aptos INSERT_COMMAND -## What is a Protocol? +Commands: + worm aptos init-token-bridge Init token bridge contract + worm aptos init-wormhole Init Wormhole core contract + worm aptos deploy Deploy an Aptos package + worm aptos deploy-resource Deploy an Aptos package using a + resource account + worm aptos send-example-message Send example message + + worm aptos derive-resource-account Derive resource account address + + worm aptos derive-wrapped-address Derive wrapped coin type + + worm aptos hash-contracts Hash contract bytecodes for upgrade + worm aptos upgrade Perform upgrade after VAA has been + submitted + worm aptos migrate Perform migration after contract + upgrade + worm aptos faucet Request money from the faucet for a + given account + worm aptos start-validator Start a local aptos validator -In the Wormhole SDK, a protocol represents a significant feature or functionality that operates across multiple blockchains. Protocols provide the framework for handling specific types of messages, transactions, or operations consistently and standardized. +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` -Examples of Protocols: +??? code "Edit VAA" + ```bash + worm edit-vaa INSERT_COMMAND - - **`TokenBridge`** - enables cross-chain token transfers, including operations like transferring tokens and relaying payloads - - **`NTT (Native Token Transfers)`** - manages native token movements across chains - -Protocols are defined by: - - - **A `name`** - a string identifier (e.g., `TokenBridge`, `Ntt`) - - **A set of `payloads`** - these represent the specific actions or messages supported by the protocol, such as `Transfer` or `TransferWithPayload` - -Each protocol is registered in the Wormhole SDK, allowing developers to leverage its predefined features or extend it with custom payloads. - -## What is a Payload? - -A payload is a structured piece of data that encapsulates the details of a specific operation within a protocol. It defines the format, fields, and types of data used in a message or transaction. Payloads ensure consistency and type safety when handling complex cross-chain operations. +Options: + --help Show help [boolean] + --version Show version number [boolean] + -v, --vaa vaa in hex format [string] [required] + -n, --network Network + [required] [choices: "mainnet", "testnet", "devnet"] + --guardian-set-index, --gsi guardian set index [number] + --signatures, --sigs comma separated list of signatures [string] + --wormscanurl, --wsu url to wormscan entry for the vaa that + includes signatures [string] + --wormscan, --ws if specified, will query the wormscan entry + for the vaa to get the signatures [boolean] + --emitter-chain-id, --ec emitter chain id to be used in the vaa + [number] + --emitter-address, --ea emitter address to be used in the vaa[string] + --nonce, --no nonce to be used in the vaa [number] + --sequence, --seq sequence number to be used in the vaa[string] + --consistency-level, --cl consistency level to be used in the vaa + [number] + --timestamp, --ts timestamp to be used in the vaa in unix + seconds [number] + -p, --payload payload in hex format [string] + --guardian-secret, --gs Guardian's secret key [string] + ``` -Each payload is defined as: +??? code "EVM" + ```bash + worm evm INSERT_COMMAND - - **A `layout`** - describes the binary format of the payload fields - - **A `literal`** - combines the protocol name and payload name into a unique identifier (e.g., `TokenBridge:Transfer`) +Commands: + worm evm address-from-secret Compute a 20 byte eth address from a 32 + byte private key + worm evm storage-update Update a storage slot on an EVM fork + during testing (anvil or hardhat) + worm evm chains Return all EVM chains + worm evm info Query info about the on-chain state of + the contract + worm evm hijack Override the guardian set of the core + bridge contract during testing (anvil + or hardhat) + worm evm start-validator Start a local EVM validator -By registering payloads, developers can enforce type safety and enable serialization and deserialization for specific protocol operations. +Options: + --help Show help [boolean] + --version Show version number [boolean] + --rpc RPC endpoint [string] + ``` -## Register Protocols and Payloads +??? code "Generate" + ```bash + worm generate INSERT_COMMAND -Protocols and payloads work together to enable cross-chain communication with precise type safety. For instance, in the `TokenBridge` protocol: +Commands: + worm generate registration Generate registration VAA + worm generate upgrade Generate contract upgrade VAA + worm generate attestation Generate a token attestation VAA + worm generate recover-chain-id Generate a recover chain ID VAA + worm generate Sets the default delivery provider + set-default-delivery-provider for the Wormhole Relayer contract - - The protocol is registered under the `TokenBridge` namespace - - Payloads like `Transfer` or `AttestMeta` are linked to the protocol to handle specific operations +Options: + --help Show help [boolean] + --version Show version number [boolean] + -g, --guardian-secret Guardians' secret keys (CSV) [string] [required] + ``` -Understanding the connection between these components is important for customizing or extending the SDK to suit your needs. +??? code "Info" + ```bash + worm info INSERT_COMMAND -### Register Protocols +Commands: + worm info chain-id Print the wormhole chain ID integer + associated with the specified chain + name + worm info contract Print contract address + + worm info emitter
Print address in emitter address + format + worm info origin
Print the origin chain and address + of the asset that corresponds to the + given chain and address. + worm info registrations Print chain registrations + + worm info rpc Print RPC address + worm info wrapped Print the wrapped address on the + target chain that corresponds with + the specified origin chain and + address. -Registering a protocol establishes its connection to Wormhole's infrastructure, ensuring it interacts seamlessly with payloads and platforms while maintaining type safety and consistency. +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` -#### How Protocol Registration Works +??? code "NEAR" + ```bash + worm near INSERT_COMMAND -Protocol registration involves two key tasks: +Commands: + worm near contract-update Submit a contract update using our specific + APIs + worm near deploy Submit a contract update using near APIs - - **Mapping protocols to interfaces** - connect the protocol to its corresponding interface, defining its expected behavior across networks (`N`) and chains (`C`). This ensures type safety, similar to strong typing, by preventing runtime errors if protocol definitions are incorrect - - **Linking protocols to platforms** - specify platform-specific implementations if needed, or use default mappings for platform-agnostic protocols +Options: + --help Show help [boolean] + --version Show version number [boolean] + -m, --module Module to query [choices: "Core", "NFTBridge", "TokenBridge"] + -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] + --account Near deployment account [string] [required] + --attach Attach some near [string] + --target Near account to upgrade [string] + --mnemonic Near private keys [string] + --key Near private key [string] + -r, --rpc Override default rpc endpoint url [string] + ``` -For example, here's the `TokenBridge` protocol registration: +??? code "Parse" + ```bash + worm parse INSERT_VAA -```typescript -declare module '../../registry.js' { - export namespace WormholeRegistry { - interface ProtocolToInterfaceMapping { - TokenBridge: TokenBridge; - } - interface ProtocolToPlatformMapping { - TokenBridge: EmptyPlatformMap<'TokenBridge'>; - } - } -} -``` +Positionals: + vaa vaa [string] -This code snippet: +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` - - Maps the `TokenBridge` protocol to its interface to define how it operates - - Links the protocol to a default platform mapping via `EmptyPlatformMap` +??? code "Recover" + ```bash + worm recover INSERT_DIGEST INSERT_SIGNATURE -You can view the full implementation in the [`TokenBridge` protocol file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridge.ts#L14-L70){target=\_blank}. +Positionals: + digest digest [string] + signature signature [string] -#### Platform-Specific Protocols +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` -Some protocols require platform-specific behavior. For instance, the EVM-compatible Wormhole Registry maps native addresses for Ethereum-based chains: +??? code "Status" + ```bash + worm status INSERT_NETWORK, INSERT_CHAIN, INSERT_TXN_HASH -```typescript -declare module '@wormhole-foundation/sdk-connect' { - export namespace WormholeRegistry { - interface PlatformToNativeAddressMapping { - Evm: EvmAddress; - } - } -} +Positionals: + network Network [choices: + 'mainnet', + 'testnet', + 'devnet'] + chain Source chain + [choices: + 'unset', + 'solana', + 'ethereum', + 'terra', + 'bsc', + 'polygon', + 'avalanche', + 'oasis', + 'algorand', + 'aurora', + 'fantom', + 'karura', + 'acala', + 'klaytn', + 'celo', + 'near', + 'moonbeam', + 'neon', + 'terra2', + 'injective', + 'osmosis', + 'sui', + 'aptos', + 'arbitrum', + 'optimism', + 'gnosis', + 'pythnet', + 'xpla', + 'btc', + 'base', + 'sei', + 'rootstock', + 'scroll', + 'mantle', + 'blast', + 'xlayer', + 'linea', + 'berachain', + 'seievm', + 'wormchain', + 'cosmoshub', + 'evmos', + 'kujira', + 'neutron', + 'celestia', + 'stargaze', + 'seda', + 'dymension', + 'provenance', + 'sepolia', + 'arbitrum_sepolia', + 'base_sepolia', + 'optimism_sepolia', + 'holesky', + 'polygon_sepolia'] + tx Source transaction hash [string] -registerNative(_platform, EvmAddress); -``` +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` -This ensures that `EvmAddress` is registered as the native address type for EVM-compatible platforms. See the [EVM platform address file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/platforms/evm/src/address.ts#L98-L106){target=\_blank} for details. +??? code "Submit" + ```bash + worm submit INSERT_VAA -### Register Payloads +Positionals: + vaa vaa [string] -[Payload registration](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts){target=\_blank} enables developers to define, serialize, and handle custom message types within their protocols. It establishes the connection between a protocol and its payloads, ensuring seamless integration, type enforcement, and runtime efficiency. - -This process ties a protocol to its payloads using a combination of: - - - **Payload literals** - unique identifiers in the format `:`. These literals map each payload to a layout - - **Payload layouts** - structures that define the binary representation of payload data - - **The payload factory** - a centralized runtime registry that maps payload literals to layouts for dynamic resolution and serialization - -These components work together to streamline the definition and management of protocol payloads. +Options: + --help Show help [boolean] + --version Show version number [boolean] + -c, --chain chain name +[choices: 'unset', + 'solana', + 'ethereum', + 'terra', + 'bsc', + 'polygon', + 'avalanche', + 'oasis', + 'algorand', + 'aurora', + 'fantom', + 'karura', + 'acala', + 'klaytn', + 'celo', + 'near', + 'moonbeam', + 'neon', + 'terra2', + 'injective', + 'osmosis', + 'sui', + 'aptos', + 'arbitrum', + 'optimism', + 'gnosis', + 'pythnet', + 'xpla', + 'btc', + 'base', + 'sei', + 'rootstock', + 'scroll', + 'mantle', + 'blast', + 'xlayer', + 'linea', + 'berachain', + 'seievm', + 'wormchain', + 'cosmoshub', + 'evmos', + 'kujira', + 'neutron', + 'celestia', + 'stargaze', + 'seda', + 'dymension', + 'provenance', + 'sepolia', + 'arbitrum_sepolia', + 'base_sepolia', + 'optimism_sepolia', + 'holesky', + 'polygon_sepolia'] + -n, --network Network + [required] + [choices: + 'mainnet', + 'testnet', + 'devnet'] + -a, --contract-address Contract to submit VAA to (override config) [string] + --rpc RPC endpoint [string] + --all-chains, --ac Submit the VAA to all chains except for the origin + chain specified in the payload + [boolean] [default: false] + ``` -#### How Payload Registration Works +??? code "Sui" + ```bash + worm sui INSERT_COMMAND -Payload registration involves: +Commands: + worm sui build-coin Build wrapped coin and dump bytecode. -1. **Define payload layouts** - create layouts to structure your payloads. For instance, a protocol might use a `TransferWithPayload` layout: + Example: + worm sui build-coin -d 8 -v V__0_1_1 -n + testnet -r + "https://fullnode.testnet.sui.io:443" + worm sui deploy Deploy a Sui package + worm sui init-example-message-app Initialize example core message app + worm sui init-token-bridge Initialize token bridge contract + worm sui init-wormhole Initialize wormhole core contract + worm sui publish-example-message Publish message from example app via + core bridge + worm sui setup-devnet Setup devnet by deploying and + initializing core and token bridges and + submitting chain registrations. + worm sui objects Get owned objects by owner + worm sui package-id Get package ID from State object ID + worm sui tx Get transaction details - ```typescript - export const transferWithPayloadLayout = < - const P extends CustomizableBytes = undefined ->( - customPayload?: P -) => - [ - payloadIdItem(3), - ...transferCommonLayout, - { name: 'from', ...universalAddressItem }, - customizableBytes({ name: 'payload' }, customPayload), - ] as const; +Options: + --help Show help [boolean] + --version Show version number [boolean] ``` -2. **Register payloads** - use `registerPayloadTypes` to map payload literals to their layouts: +??? code "Transfer" + ```bash + worm transfer INSERT_SOURCE_CHAIN, INSERT_DESTINATION_CHAIN, INSERT_DESTINATION_ADDRESS, INSERT_AMOUNT, INSERT_NETWORK - ```typescript - registerPayloadTypes('ProtocolName', protocolNamedPayloads); +Options: + --help Show help [boolean] + --version Show version number [boolean] + --src-chain source chain [required] [choices: + 'solana', + 'ethereum', + 'terra', + 'bsc', + 'polygon', + 'avalanche', + 'oasis', + 'algorand', + 'aurora', + 'fantom', + 'karura', + 'acala', + 'klaytn', + 'celo', + 'near', + 'moonbeam', + 'neon', + 'terra2', + 'injective', + 'osmosis', + 'sui', + 'aptos', + 'arbitrum', + 'optimism', + 'gnosis', + 'pythnet', + 'xpla', + 'btc', + 'base', + 'sei', + 'rootstock', + 'scroll', + 'mantle', + 'blast', + 'xlayer', + 'linea', + 'berachain', + 'seievm', + 'wormchain', + 'cosmoshub', + 'evmos', + 'kujira', + 'neutron', + 'celestia', + 'stargaze', + 'seda', + 'dymension', + 'provenance', + 'sepolia', + 'arbitrum_sepolia', + 'base_sepolia', + 'optimism_sepolia', + 'holesky', + 'polygon_sepolia'] + --dst-chain destination chain + [required] [choices: + 'solana', + 'ethereum', + 'terra', + 'bsc', + 'polygon', + 'avalanche', + 'oasis', + 'algorand', + 'aurora', + 'fantom', + 'karura', + 'acala', + 'klaytn', + 'celo', + 'near', + 'moonbeam', + 'neon', + 'terra2', + 'injective', + 'osmosis', + 'sui', + 'aptos', + 'arbitrum', + 'optimism', + 'gnosis', + 'pythnet', + 'xpla', + 'btc', + 'base', + 'sei', + 'rootstock', + 'scroll', + 'mantle', + 'blast', + 'xlayer', + 'linea', + 'berachain', + 'seievm', + 'wormchain', + 'cosmoshub', + 'evmos', + 'kujira', + 'neutron', + 'celestia', + 'stargaze', + 'seda', + 'dymension', + 'provenance', + 'sepolia', + 'arbitrum_sepolia', + 'base_sepolia', + 'optimism_sepolia', + 'holesky', + 'polygon_sepolia'] + --dst-addr destination address [string] [required] + --token-addr token address [string] [default: native token] + --amount token amount [string] [required] + -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] + --rpc RPC endpoint [string] ``` -3. **Access registered payloads** - use the [`getPayloadLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/9105de290c91babbf8ad031bd89cc75ee38739c8/core/definitions/src/vaa/functions.ts#L19-L23){target=\_blank} function to fetch the layout for a specific payload literal. This method ensures that the correct layout is retrieved dynamically and safely: +??? code "Verify VAA" + ```bash + worm verify-vaa INSERT_VAA, INSERT_NETWORK - ```typescript - const layout = getPayloadLayout('ProtocolName:PayloadName'); +Options: + --help Show help [boolean] + --version Show version number [boolean] + -v, --vaa vaa in hex format [string] [required] + -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] ``` -These steps link payload literals and their layouts, enabling seamless runtime handling. -#### The Payload Factory +## Examples -At the core of the payload registration process is the `payloadFactory`, a registry that manages the mapping between payload literals and layouts: +### VAA generation -```typescript -export const payloadFactory = new Map(); +Use `generate` to create VAAs for testing. For example, use the following command to create an NFT bridge registration VAA: -export function registerPayloadType( - protocol: ProtocolName, - name: string, - layout: Layout -) { - const payloadLiteral = composeLiteral(protocol, name); - if (payloadFactory.has(payloadLiteral)) { - throw new Error(`Payload type ${payloadLiteral} already registered`); - } - payloadFactory.set(payloadLiteral, layout); -} +```bash +worm generate registration --module NFTBridge \ + --chain bsc \ + --contract-address 0x706abc4E45D419950511e474C7B9Ed348A4a716c \ + --guardian-secret cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0 ``` - - The `payloadFactory` ensures each payload literal maps to its layout uniquely - - The [`registerPayloadType`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts#L46-L52){target=\_blank} function adds individual payloads, while [`registerPayloadTypes`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts#L62-L64){target=\_blank} supports bulk registration - -This implementation ensures dynamic, efficient handling of payloads at runtime. +The below example generates a token attestation VAA: -## Integrate Protocols with Payloads +```bash +worm generate attestation --emitter-chain ethereum \ + --emitter-address 11111111111111111111111111111115 \ + --chain ethereum \ + --token-address 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 \ + --decimals 6 \ + --symbol USDC \ + --name USDC \ + --guardian-secret cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0 +``` -Integrating payloads with protocols enables dynamic identification through payload literals, while serialization and deserialization ensure their binary representation is compatible across chains. For more details on these processes, refer to the [Layouts page](/docs/build/applications/wormhole-sdk/sdk-layout/){target=\_blank}. +### VAA parsing -### Payload Discriminators +Use `parse` to parse a VAA into JSON: -Payload discriminators are mechanisms in the Wormhole SDK that dynamically identify and map incoming payloads to their respective layouts at runtime. They are relevant for protocols like `TokenBridge`, enabling efficient handling of diverse payload types while ensuring type safety and consistent integration. +```bash +worm parse $(worm-fetch-governance 13940208096455381020) +``` -#### How Discriminators Work +This example will fetch governance VAA `13940208096455381020` and print it as JSON: -Discriminators evaluate serialized binary data and determine the corresponding payload layout by inspecting fixed fields or patterns within the data. Each payload layout is associated with a payload literal (e.g., `TokenBridge:Transfer` or `TokenBridge:TransferWithPayload`). +```bash +# ...signatures elided +timestamp: 1651416474, +nonce: 1570649151, +emitterChain: 1, +emitterAddress: '0000000000000000000000000000000000000000000000000000000000000004', +sequence: 13940208096455381020n, +consistencyLevel: 32, +payload: { + module: 'Core', + type: 'GuardianSetUpgrade', + chain: 0, + newGuardianSetIndex: 2, + newGuardianSetLength: 19, + newGuardianSet: [ + '58cc3ae5c097b213ce3c81979e1b9f9570746aa5', + 'ff6cb952589bde862c25ef4392132fb9d4a42157', + '114de8460193bdf3a2fcf81f86a09765f4762fd1', + '107a0086b32d7a0977926a205131d8731d39cbeb', + '8c82b2fd82faed2711d59af0f2499d16e726f6b2', + '11b39756c042441be6d8650b69b54ebe715e2343', + '54ce5b4d348fb74b958e8966e2ec3dbd4958a7cd', + '66b9590e1c41e0b226937bf9217d1d67fd4e91f5', + '74a3bf913953d695260d88bc1aa25a4eee363ef0', + '000ac0076727b35fbea2dac28fee5ccb0fea768e', + 'af45ced136b9d9e24903464ae889f5c8a723fc14', + 'f93124b7c738843cbb89e864c862c38cddcccf95', + 'd2cc37a4dc036a8d232b48f62cdd4731412f4890', + 'da798f6896a3331f64b48c12d1d57fd9cbe70811', + '71aa1be1d36cafe3867910f99c09e347899c19c3', + '8192b6e7387ccd768277c17dab1b7a5027c0b3cf', + '178e21ad2e77ae06711549cfbb1f9c7a9d8096e8', + '5e1487f35515d02a92753504a8d75471b9f49edb', + '6fbebc898f403e4773e95feb15e80c9a99c8348d' + ] +} +``` -This system ensures: +### Submitting VAAs - - **Dynamic runtime identification** - payloads are parsed based on their content, even if a single protocol handles multiple payload types - - **Strict type enforcement** - discriminators leverage layout mappings to prevent invalid payloads from being processed +Use `submit` to submit a VAA to a chain. It first parses the VAA and determines the destination chain and module. For example, a contract upgrade contains both the target chain and module, so the only required argument is the network moniker (`mainnet` or `testnet`): -Below is an example of how the Wormhole SDK builds a discriminator to distinguish between payload layouts: +```bash +worm submit $(cat my-nft-registration.txt) --network mainnet +``` -```typescript -export function layoutDiscriminator( - layouts: readonly Layout[], - allowAmbiguous?: B -): Discriminator { - // Internal logic to determine distinguishable layouts - const [distinguishable, discriminator] = internalBuildDiscriminator(layouts); - if (!distinguishable && !allowAmbiguous) { - throw new Error('Cannot uniquely distinguish the given layouts'); - } +The script will ask you to specify the target chain for VAAs that don't have a specific target chain (like registrations or Guardian set upgrades). For example, to submit a Guardian set upgrade on all chains, simply run: - return ( - !allowAmbiguous - ? (encoded: BytesType) => { - const layout = discriminator(encoded); - return layout.length === 0 ? null : layout[0]; - } - : discriminator - ) as Discriminator; -} +```bash +worm-fetch-governance 13940208096455381020 > guardian-upgrade.txt +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain oasis +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain aurora +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain fantom +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain karura +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain acala +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain klaytn +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain avalanche +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain polygon +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain bsc +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain solana +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain terra +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain ethereum +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain celo ``` - - [`layoutDiscriminator`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/9105de290c91babbf8ad031bd89cc75ee38739c8/core/base/src/utils/layout.ts#L16){target=\_blank} takes a list of layouts and generates a function that can identify the appropriate layout for a given serialized payload - - The `allowAmbiguous` parameter determines whether layouts with overlapping characteristics are permitted +The VAA payload type (Guardian set upgrade) specifies that this VAA should go to the core bridge, and the tool directs it there. -### Real-World Example: Token Bridge Protocol +### Getting Info -Integrating protocols with their respective payloads exemplifies how the Wormhole SDK leverages layouts and type-safe registration mechanisms to ensure efficient cross-chain communication. This section focuses on how protocols like `TokenBridge` use payloads to facilitate specific operations. +To get info about a contract (only EVM supported at this time), use the following command: -#### Token Bridge Protocol and Payloads +```bash +worm evm info -c bsc -n mainnet -m TokenBridge +``` -The `TokenBridge` protocol enables cross-chain token transfers through its payloads. Key payloads include: +Running this command generates the following output: - - **`Transfer`** - handles basic token transfer operations - - **`TransferWithPayload`** - extends the `Transfer` payload to include custom data, enhancing functionality +```bash +{ + "address": "0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7", + "wormhole": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B", + "implementation": "0x621199f6beB2ba6fbD962E8A52A320EA4F6D4aA3", + "isInitialized": true, + "tokenImplementation": "0x7f8C5e730121657E17E452c5a1bA3fA1eF96f22a", + "chainId": 4, + "finality": 15, + "evmChainId": "56", + "isFork": false, + "governanceChainId": 1, + "governanceContract": "0x0000000000000000000000000000000000000000000000000000000000000004", + "WETH": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + "registrations": { + "Solana": "0xec7372995d5cc8732397fb0ad35c0121e0eaa90d26f828a534cab54391b3a4f5", + "Ethereum": "0x0000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585", + "Terra": "0x0000000000000000000000007cf7b764e38a0a5e967972c1df77d432510564e2", + "Polygon": "0x0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde", + "Avalanche": "0x0000000000000000000000000e082f06ff657d94310cb8ce8b0d9a04541d8052", + "Oasis": "0x0000000000000000000000005848c791e09901b40a9ef749f2a6735b418d7564", + "Algorand": "0x67e93fa6c8ac5c819990aa7340c0c16b508abb1178be9b30d024b8ac25193d45", + "Aurora": "0x00000000000000000000000051b5123a7b0f9b2ba265f9c4c8de7d78d52f510f", + "Fantom": "0x0000000000000000000000007c9fc5741288cdfdd83ceb07f3ea7e22618d79d2", + "Karura": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624", + "Acala": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624", + "Klaytn": "0x0000000000000000000000005b08ac39eaed75c0439fc750d9fe7e1f9dd0193f", + "Celo": "0x000000000000000000000000796dff6d74f3e27060b71255fe517bfb23c93eed", + "Near": "0x148410499d3fcda4dcfd68a1ebfcdddda16ab28326448d4aae4d2f0465cdfcb7", + "Moonbeam": "0x000000000000000000000000b1731c586ca89a23809861c6103f0b96b3f57d92", + "Neon": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Terra2": "0xa463ad028fb79679cfc8ce1efba35ac0e77b35080a1abe9bebe83461f176b0a3", + "Injective": "0x00000000000000000000000045dbea4617971d93188eda21530bc6503d153313", + "Osmosis": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Sui": "0xccceeb29348f71bdd22ffef43a2a19c1f5b5e17c5cca5411529120182672ade5", + "Aptos": "0x0000000000000000000000000000000000000000000000000000000000000001", + "Arbitrum": "0x0000000000000000000000000b2402144bb366a632d14b83f244d2e0e21bd39c", + "Optimism": "0x0000000000000000000000001d68124e65fafc907325e3edbf8c4d84499daa8b", + "Gnosis": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Pythnet": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Xpla": "0x8f9cf727175353b17a5f574270e370776123d90fd74956ae4277962b4fdee24c", + "Btc": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Base": "0x0000000000000000000000008d2de8d2f73f1f4cab472ac9a881c9b123c79627", + "Sei": "0x86c5fd957e2db8389553e1728f9c27964b22a8154091ccba54d75f4b10c61f5e", + "Rootstock": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Scroll": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", + "Mantle": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", + "Blast": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", + "Xlayer": "0x0000000000000000000000005537857664b0f9efe38c9f320f75fef23234d904", + "Linea": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Berachain": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Seievm": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Snaxchain": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Wormchain": "0xaeb534c45c3049d380b9d9b966f9895f53abd4301bfaff407fa09dea8ae7a924", + "Cosmoshub": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Evmos": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Kujira": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Neutron": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Celestia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Stargaze": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Seda": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Dymension": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Provenance": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Sepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ArbitrumSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "BaseSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "OptimismSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Holesky": "0x0000000000000000000000000000000000000000000000000000000000000000", + "PolygonSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000" + } +} +``` -Payloads are registered to the `TokenBridge` protocol via the `PayloadLiteralToLayoutMapping` interface, which links payload literals (e.g., `TokenBridge:Transfer`) to their layouts. +### Additional Info Examples -Additionally, the protocol uses reusable layouts like [`transferCommonLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/76b20317b0f68e823d4e6c4a2e41bb2a7705c64f/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts#L29C7-L47){target=\_blank} and extends them in more specialized layouts such as [`transferWithPayloadLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/76b20317b0f68e823d4e6c4a2e41bb2a7705c64f/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts#L49-L57){target=\_blank}: +You can get the contract address for a module as follows: -```typescript -export const transferWithPayloadLayout = < - const P extends CustomizableBytes = undefined ->( - customPayload?: P -) => - [ - payloadIdItem(3), - ...transferCommonLayout, - { name: 'from', ...universalAddressItem }, - customizableBytes({ name: 'payload' }, customPayload), - ] as const; +```bash +worm info rpc INSERT_NETWORK INSERT_CHAIN INSERT_MODULE ``` -This layout includes: +To get the contract address for `NFTBridge` on BSC Mainnet, for example, you can provide the following command: - - A `payloadIdItem` to identify the payload type - - Common fields for token and recipient details - - A customizable `payload` field for additional data +```bash +worm info contract mainnet bsc NFTBridge +``` -#### Use the Discriminator +You can get the RPC address for a chain as follows: -To manage multiple payloads, the `TokenBridge` protocol utilizes a discriminator to distinguish between payload types dynamically. For example: +```bash +worm info rpc INSERT_NETWORK INSERT_CHAIN +``` -```typescript -const tokenBridgePayloads = ['Transfer', 'TransferWithPayload'] as const; +To get the RPC address for BSC Mainnet, for example, you can provide the following command: -export const getTransferDiscriminator = lazyInstantiate(() => - payloadDiscriminator([_protocol, tokenBridgePayloads]) -); +```bash +worm info rpc mainnet bsc ``` +--- END CONTENT --- - - The [`getTransferDiscriminator`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/protocols/tokenBridge/tokenBridge.ts#L67-L70){target=\_blank} function dynamically evaluates payloads using predefined layouts - - This ensures that each payload type is processed according to its unique structure and type-safe layout +Doc-Content: https://wormhole.com/docs/build/toolkit/dev-env +--- BEGIN CONTENT --- +--- +title: Local Dev Environment +description: Learn how to configure a development environment to build with Wormhole, including using the CLI, local validators, testing on public test networks, and more. +--- -#### Register Payloads to Protocols +# Development Environment -Here’s how the `TokenBridge` protocol connects its payloads to the Wormhole SDK: +Developers building for smart contract integration will want to set up a development environment to allow testing the full integration, possibly including VAA generation and relaying. -```typescript -declare module '../../registry.js' { - export namespace WormholeRegistry { - interface PayloadLiteralToLayoutMapping - extends RegisterPayloadTypes< - 'TokenBridge', - typeof tokenBridgeNamedPayloads - > {} - } -} +## Tooling Installation -registerPayloadTypes('TokenBridge', tokenBridgeNamedPayloads); -``` +The [Wormhole CLI Tool](/docs/build/toolkit/cli/){target=\_blank} should be installed regardless of the environments chosen. Each environment has its own set of recommended tools. To begin working with a specific environment, see the recommended tools on the respective [environment page](/docs/build/start-building/supported-networks/){target=\_blank}. -This registration links the `TokenBridge` payload literals to their respective layouts, enabling serialization and deserialization at runtime. +## Development Stages -You can explore the complete `TokenBridge` protocol and payload definitions in the [`TokenBridge` layout file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts){target=\_blank}. +Different approaches to development and testing are recommended at various stages of application development. -#### Token Bridge Payloads +### Initial Development -The following payloads are registered for the `TokenBridge` protocol: +During the initial development of an on-chain application, the best option is to use the native tools available in the environment. You can visit the following resources for more information: - - **`AttestMeta`** - used for token metadata attestation - - **`Transfer`** - facilitates token transfers - - **`TransferWithPayload`** - adds a custom payload to token transfers +- **[Environment](https://github.com/wormhole-foundation/wormhole){target=\_blank}** - select the folder for the desired network to learn about the recommended native toolset +- **[Mock Guardian](https://github.com/wormhole-foundation/wormhole/blob/main/sdk/js/src/mock/wormhole.ts){target=\_blank}** - it's recommended to set up a mock Guardian or Emitter to provide signed VAAsFor any program methods that require some message be sent or received. +- **[Wormhole Scaffolding repository](https://github.com/wormhole-foundation/wormhole-scaffolding/blob/main/evm/ts-test/01_hello_world.ts){target=\_blank}** - example mock Guardian test -These payloads and their layouts are defined in the [`TokenBridge` layout file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts){target=\_blank}. +Relying on native tools when possible allows for more rapid prototyping and iteration. -### Other Protocols: Native Token Transfers (NTT) +### Integration -While this guide focuses on the `TokenBridge` protocol, other protocols, like NTT, follow a similar structure. +For integration to Wormhole and with multiple chains, the simplest option is to use the chains' Testnets. In choosing which chains to use for integration testing, consider which chains in a given environment provide easy access to Testnet tokens and where block times are fast. Find links for Testnet faucets in the [blockchain details section](/docs/build/start-building/supported-networks/){target=\_blank}. A developer may prefer standing up a set of local validators instead of using the Testnet. For this option, [Tilt](/docs/build/toolkit/tilt/){target=\_blank} is available to run local instances of all the chains Wormhole supports. - - NTT manages the transfer of native tokens across chains - - Payloads such as `WormholeTransfer` and `WormholeTransferStandardRelayer` are registered to the protocol using the same patterns for payload literals and layouts - - The same mechanisms for type-safe registration and payload discriminators apply, ensuring reliability and extensibility +!!! note + Variation in host environments causes unique issues, and the computational intensity of multiple simultaneous local validators can make setting them up difficult or time-consuming. You may prefer Testnets for the simplest integration testing. -For more details, you can explore the [NTT implementation in the SDK](https://github.com/wormhole-foundation/example-native-token-transfers/blob/00f83aa215338b1b8fd66f522bd0f45be3e98a5a/sdk/definitions/src/ntt.ts){target=\_blank}. ---- END CONTENT --- +### Prepare for Deployment -Doc-Content: https://wormhole.com/docs/build/applications/wormhole-sdk/sdk-layout ---- BEGIN CONTENT --- ---- -title: Data Layouts -description: Learn how to efficiently define, serialize, and deserialize data structures using Wormhole SDK's layout system for cross-chain communication. ---- +Once you've finished the application's initial development and performed integration testing, you should set up a CI test environment. The best option for that is likely to be [Tilt](/docs/build/toolkit/tilt/){target=\_blank} since it allows you to spin up any chains supported by Wormhole in a consistent environment. -# Data Layouts +## Validator Setup with Tilt -## Introduction +### Tilt +If you'd like to set up a local validator environment, follow the setup guide for Tilt. Tilt is a full-fledged Kubernetes deployment of every chain connected to Wormhole, along with a Guardian node. It usually takes 30 minutes to spin up fully, but it comes with all chains running out of the box. Refer to the [Tilt](/docs/build/toolkit/tilt/){target=\_blank} page for a complete guide to setting up and configuring Tilt. -The [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} uses the [layout package](https://www.npmjs.com/package/binary-layout){target=\_blank} to define, serialize, and deserialize data structures efficiently. This modular system ensures consistent data formatting and cross-environment compatibility, benefiting projects that require robust handling of structured data. +## Deploying to Public Networks -By understanding the layout mechanism, you’ll be able to: +### Testnet - - Define data structures (numbers, arrays, and custom types) - - Efficiently serialize and deserialize data using the SDK’s utilities - - Handle protocol-specific layouts with ease +When doing integration testing on Testnets, remember that a single Guardian node is watching for transactions on various test networks. Because Testnets only have a single Guardian, there's a slight chance that your VAAs won't be processed. This rate doesn't indicate performance on Mainnet, where 19 Guardians are watching for transactions. The Testnet contract addresses are available on the page for each [environment](/docs/build/start-building/supported-networks/){target=\_blank}. The [Wormholescan API](https://docs.wormholescan.io){target=\_blank} offers the following Guardian equivalent Testnet endpoint: -This guide is beneficial for developers looking to integrate Wormhole into their applications or protocols, especially those dealing with complex payloads or cross-chain communication. +```text +https://api.testnet.wormholescan.io +``` -## Key Concepts +### Mainnet -### Layout Items +The Mainnet contract addresses are available on the page for each [environment](/docs/build/start-building/supported-networks/){target=\_blank}. The [Wormholescan API](https://docs.wormholescan.io){target=\_blank} offers the following Guardian equivalent Mainnet endpoint: -A layout defines how data structures should be serialized (converted into binary format) and deserialized (converted back into their original structure). This ensures consistent data formatting when transmitting information across different blockchain environments. +```text +https://api.wormholescan.io +``` +--- END CONTENT --- -Layouts are composed of [layout items](https://github.com/nonergodic/layout/blob/main/src/items.ts){target=\_blank}, which describe individual fields or sets of fields in your data. Each layout item specifies: +Doc-Content: https://wormhole.com/docs/build/toolkit/faqs +--- BEGIN CONTENT --- +--- +title: Toolkit FAQs +description: FAQs on Wormhole Toolkit, covering Wormholescan, CLI, SDKs (TypeScript, Solidity), Tilt, error handling, transaction history, and manual VAA submission. +--- - - **`name`** - name of the field - - **`binary`** - type of data (e.g., `uint`, `bytes`) - - **`size`** - byte length for fixed-size fields within uint and bytes items only +# Toolkit FAQs -Layout items can represent: +## Why does the `toNative` function in the TypeScript SDK return an error? - - **Primitive types** - basic data types like unsigned integers (`uint`) or byte arrays (`bytes`) - - **Composite types** - more complex structures, such as arrays or nested objects +The `toNative` function may return an error if the platform-specific module (such as Solana or EVM) is not correctly imported or passed into the Wormhole constructor. -Below is an example of a layout that might be used to serialize a message across the Wormhole protocol: +To fix this, ensure the relevant platform module is imported and included when initializing Wormhole. For example, if you're working with Solana, make sure to import the Solana module and pass it into the Wormhole constructor like this: ```typescript -const exampleLayout = [ - { name: 'sourceChain', binary: 'uint', size: 2 }, - { name: 'orderSender', binary: 'bytes', size: 32 }, - { name: 'redeemer', binary: 'bytes', size: 32 }, - { name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 }, -] as const; +import solana from '@wormhole-foundation/sdk/solana'; +const wh = await wormhole('Testnet', [solana]); ``` -In this example: +## How can I retrieve the history of previously bridged transactions? - - `sourceChain` is a 2-byte unsigned integer (`uint`) identifying the source blockchain - - `orderSender` is a fixed-length 32-byte array representing the sender's address - - `redeemer` is another 32-byte array used for the redeemer’s address - - `redeemerMessage` is a variable-length byte sequence, with its length specified by a 4-byte integer +To retrieve the history of previously bridged transactions, you can use the Wormholescan API. Use the following endpoint to query the transaction history for a specific address: -This layout definition ensures that all necessary data fields are consistently encoded and can be correctly interpreted when they are deserialized. +```bash +https://api.wormholescan.io/api/v1/operations?address=INSERT_ADDRESS +``` -### Serialization and Deserialization +Simply replace `INSERT_ADDRESS_HERE` with the address you want to query. The API will return a list of operations, including details about previously bridged transactions. -Serialization converts structured data into binary format; deserialization reverses this, reconstructing the original objects. +???- example "Fetch transaction history for a specific address" + ```bash + curl -X GET "https://api.wormholescan.io/api/v1/operations?address=0x05c009C4C1F1983d4B915C145F4E782de23d3A38" -H "accept: application/json" + ``` -You can serialize data using the `serializeLayout` function: +## How can I manually submit a VAA to a destination chain in the correct format? -```typescript -const serialized = serializeLayout(fillLayout, exampleFill); -``` +To manually submit a VAA (Verifiable Action Approval) to a destination chain, follow these steps: -To deserialize the binary data back into a structured object, use the `deserializeLayout` function: +1. **Obtain the VAA in Base64 format** - navigate to the **Advanced** tab in [Wormholescan](https://wormholescan.io/){target=\_blank} to find the VAA associated with the transaction you want to submit and copy the VAA in base64 format -```typescript -const deserialized = deserializeLayout(fillLayout, serialized); -``` + ```bash + https://wormholescan.io/#/tx/INSERT_TX_HASH?view=advanced + ``` -### Custom Conversions +2. **Convert the VAA to hex** - you must convert the base64 VAA into a hexadecimal (hex) format before submitting it to the destination chain. This can be done using various online tools or via command-line utilities like `xxd` or a script in a language like Python -Layouts also allow for custom conversions, which help map complex or custom types (like chain IDs or universal addresses) into a more usable format. This is useful when serializing or deserializing data that doesn’t fit neatly into simple types like integers or byte arrays. +3. **Submit the VAA through Etherscan (for EVM chains)** - once the VAA is in hex format, go to the [Etherscan UI](https://etherscan.io/){target=\_blank} and submit it through the [`TokenBridge`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/ITokenBridge.sol){target=\_blank} contract’s method (such as the `CompleteTransfer` function or `CompleteTransferWithPayload`) -For example, consider a custom conversion for a chain ID: + - The `TokenBridge` contract addresses for each chain are available in the [Wormhole contract addresses](/docs/build/reference/contract-addresses/){target=\_blank} section -```typescript -const chainCustomConversion = { - to: (chainId: number) => toChain(chainId), - from: (chain: Chain) => chainToChainId(chain), -} satisfies CustomConversion; -``` + - Interact with the smart contract through the Etherscan UI by pasting the hex-encoded VAA into the appropriate field -This setup allows Wormhole to convert between human-readable formats and binary-encoded data used in payloads. +Following these steps, you can manually submit a VAA in the proper format to a destination chain. +--- END CONTENT --- -### Error Handling +Doc-Content: https://wormhole.com/docs/build/toolkit/index +--- BEGIN CONTENT --- +--- +title: Wormhole Tooling +description: This page lists key dev tools, including the WormholeScan Explorer, Wormhole CLI, Wormhole SDKs, and APIs for querying network data. +--- -The layout system performs error checks during serialization and deserialization. An error is thrown if data is incorrectly sized or in the wrong format. Refer to the below example: +# Wormhole Tooling -```typescript -try { - deserializeLayout(fillLayout, corruptedData); -} catch (error) { - console.error('Error during deserialization:', error.message); -} -``` +Regardless of which network development environment you are using, there are a few Wormhole-specific tools you should know about. -## Application of Layouts +## Get Started -This section will focus on applying the concepts explained earlier through examples. These will help developers better understand how to define layouts, serialize and deserialize data, and use custom conversions where needed. +
-### Defining Layouts +- :octicons-telescope-16:{ .lg .middle } **Wormholescan** -To get started with layouts in Wormhole, you need to define your structure. A layout is simply a list of fields (layout items) describing how each data piece will be serialized. + --- -Consider the following layout for a payload: + Wormholescan is an explorer for looking at individual transfer statuses on Mainnet and Testnet. -```typescript -const exampleLayout = [ - { name: 'sourceChain', binary: 'uint', size: 2 }, - { name: 'orderSender', binary: 'bytes', size: 32 }, - { name: 'redeemer', binary: 'bytes', size: 32 }, - { name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 }, -] as const; -``` + [:custom-arrow: Review transactions on Wormholescan](https://wormholescan.io){target=\_blank} -In this example: +- :octicons-code-square-16:{ .lg .middle } **Wormhole CLI Tool** - - `sourceChain` is an unsigned integer (uint) of 2 bytes - - `orderSender` is a 32-byte fixed-length byte array - - `redeemer` is another 32-byte byte array - - `redeemerMessage` is a length-prefixed byte array, with the length specified by a 4-byte integer + --- -### Serialize Data + The Wormhole CLI is a Swiss-Army knife utility command line tool. It is excellent for creating one-off VAAs, parsing VAAs, reading Wormhole contract configurations, and more. -Once a layout is defined, the next step is to serialize data according to that structure. You can accomplish this using the `serializeLayout` function from the Wormhole SDK. + [:custom-arrow: Get started with the CLI](/docs/build/toolkit/cli/) -```typescript -const examplePayload = { - sourceChain: 6, - orderSender: new Uint8Array(32), - redeemer: new Uint8Array(32), - redeemerMessage: new Uint8Array([0x01, 0x02, 0x03]), -}; +- :octicons-code-square-16:{ .lg .middle } **Wormhole SDK** -const serializedData = serializeLayout(exampleLayout, examplePayload); -``` + --- -This takes the data structure (`examplePayload`) and serializes it according to the rules defined in the layout (`exampleLayout`). The result is a `Uint8Array` representing the serialized binary data. + Explore Wormhole's TypeScript SDK and learn how to perform different types of transfers, including native, token, and USDC transfers. -### Deserialize Data + [:custom-arrow: Get started with the SDK](/docs/build/toolkit/typescript-sdk/) -Deserialization is the reverse of serialization. Given a serialized `Uint8Array`, we can convert it back into its original structure using the `deserializeLayout` function. +- :octicons-code-square-16:{ .lg .middle } **Solidity SDK** -```typescript -const deserializedPayload = deserializeLayout(exampleLayout, serializedData); -``` + --- -This will output the structured object, making it easy to work with data transmitted or received from another chain. + Learn about Wormhole's Solidity SDK, including key components, interfaces, and tools for developing cross-chain decentralized applications on EVM-compatible blockchains. -### Handling Variable-Length Fields + [:custom-arrow: Get started with the SDK](/docs/build/toolkit/solidity-sdk/) -One relevant aspect of Wormhole SDK's layout system is the ability to handle variable-length fields, such as arrays and length-prefixed byte sequences. +- :octicons-beaker-16:{ .lg .middle } **Tilt** -For instance, if you want to serialize or deserialize a message where the length of the content isn't known beforehand, you can define a layout item with a `lengthSize` field. + --- -```typescript -{ name: 'message', binary: 'bytes', lengthSize: 4 } -``` + Learn about Tilt, a Wormhole developer environment with a local Kubernetes set up for cross-chain testing with Guardian nodes and relayers for seamless development. -This tells the SDK to read or write the message's length (in 4 bytes) and then handle the content. + [:custom-arrow: Get started with Tilt](/docs/build/toolkit/tilt/) -## Nested Layouts and Strong Typing + -```typescript -const nestedLayout = [ - { - name: 'source', - binary: 'bytes', - layout: [ - { name: 'chainId', binary: 'uint', size: 2 }, - { name: 'sender', binary: 'bytes', size: 32 }, - ], - }, - { - name: 'redeemer', - binary: 'bytes', - layout: [ - { name: 'address', binary: 'bytes', size: 32 }, - { name: 'message', binary: 'bytes', lengthSize: 4 }, - ], - }, -] as const satisfies Layout; -``` - -In this layout: +
- - `source` is an object with two fields: `chainId` and `sender` - - `redeemer` is another object with two fields: `address` and a length-prefixed `message` +## Additional Resources -### Strong Typing +
-One of the benefits of using the Wormhole SDK in TypeScript is its support for strong typing. This ensures that serialized and deserialized data conform to expected structures, reducing errors during development by enforcing type checks at compile time. +- :octicons-code-square-16:{ .lg .middle } **Wormhole Spy SDK** -Using TypeScript, the `LayoutToType` utility provided by the SDK automatically generates a strongly typed structure based on the layout: + --- -```typescript -type NestedMessage = LayoutToType; -``` + The Wormhole Spy SDK allows you to listen to all the Guardian Network activity. -This ensures that when you serialize or deserialize data, it matches the expected structure. + [:custom-arrow: Check out the Spy SDK repository](https://github.com/wormhole-foundation/wormhole/tree/main/spydk/js){target=\_blank} -```typescript -const message: NestedMessage = { - source: { - chainId: 6, - sender: new Uint8Array(32), - }, - redeemer: { - address: new Uint8Array(32), - message: new Uint8Array([0x01, 0x02, 0x03]), - }, -}; -``` +- :octicons-pencil-16:{ .lg .middle } **VAA Parser** -Attempting to assign data of incorrect types will result in a compile-time error. The Wormhole SDK's layout system enforces strong types, reducing runtime errors and improving code reliability. + --- -### Serialization and Deserialization with Nested Layouts + The VAA Parser is a resource for parsing out details of an encoded VAA. -You can serialize and deserialize nested structures in the same way as simpler layouts: + [:custom-arrow: Try the VAA Parser](https://wormholescan.io/#/developers/vaa-parser){target=\_blank} -```typescript -const serializedNested = serializeLayout(nestedLayout, message); -const deserializedNested = deserializeLayout(nestedLayout, serializedNested); -``` +
+--- END CONTENT --- -Strong typing in TypeScript ensures that the message object conforms to the nested layout structure. This reduces the risk of data inconsistency during cross-chain communication. +Doc-Content: https://wormhole.com/docs/build/toolkit/solidity-sdk +--- BEGIN CONTENT --- +--- +title: Solidity SDK +description: How to use the Wormhole Solidity SDK for cross-chain messaging, token transfers, and integrating decentralized applications on EVM-compatible blockchains. +--- -## Commonly Used Layouts +# Solidity SDK -The Wormhole SDK includes predefined layouts frequently used in cross-chain messaging. These layouts are optimized for standard fields such as chain IDs, addresses, and signatures. You can explore the complete set of predefined layouts in the [`layout-items` directory](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/layout-items){target=\_blank} of the Wormhole SDK. +## Introduction -### Chain ID Layouts +The [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} simplifies cross-chain messaging on EVM-compatible chains by providing essential Solidity interfaces, utility libraries, and testing tools. It allows developers to build secure and efficient cross-chain decentralized applications (dApps) without manually interacting with Wormhole’s core contracts across multiple chains. -Chain ID layouts in the Wormhole SDK derive from a common foundation: `chainItemBase`. This structure defines the binary representation of a chain ID as a 2-byte unsigned integer, ensuring consistency across serialization and deserialization processes. +By abstracting away complex interactions, the SDK drastically reduces the overhead associated with cross-chain development. It provides: -#### Base Structure + - **Unified interfaces** - developers can use a standardized set of Solidity interfaces to handle cross-chain messaging, token transfers, and verifiable action approvals (VAAs) without needing to manage the underlying infrastructure + - **Automated message delivery** - the SDK leverages Wormhole’s relayer infrastructure, automatically delivering messages across chains, reducing the need for manual intervention, and simplifying gas management on the target chain + - **Seamless integration with Wormhole services** - the SDK integrates with Wormhole’s `TokenBridge` and Circle’s CCTP, providing built-in mechanisms for cross-chain asset transfers, making token bridges and cross-chain messaging easy to implement + - **Testing and development tools** - it comes with comprehensive tools for local testing and simulation, allowing developers to validate their cross-chain logic before deployment, minimizing the risk of errors in production environments -This simple structure is the blueprint for more specific layouts by standardizing the binary format and size. +These features significantly streamline the development workflow by reducing complexity and offering tools compatible with various EVM versions. This helps developers avoid issues that arise from differences in EVM equivalence across chains. -```typescript -const chainItemBase = { binary: 'uint', size: 2 } as const; -``` +This guide covers installation, key concepts, and usage examples to help you build secure cross-chain applications using the SDK, from token transfers to advanced message passing. -#### Dynamic Chain ID Layout +## Installation -The dynamic chain ID layout, [`chainItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/chain.ts#L13-L40){target=\_blank}, extends `chainItemBase` by adding flexible custom conversion logic. It enables runtime validation of chain IDs, supports optional null values, and restricts chain IDs to a predefined set when needed. +To install the SDK, use [Foundry and Forge](https://book.getfoundry.sh/getting-started/installation){target=\_blank}. This pulls the necessary libraries into your project: -```typescript -export const chainItem = < - const C extends readonly Chain[] = typeof chains, - const N extends boolean = false, ->(opts?: { - allowedChains?: C; - allowNull?: N; -}) => - ({ - ...chainItemBase, // Builds on the base structure - custom: { - to: (val: number): AllowNull => { ... }, - from: (val: AllowNull): number => { ... }, - }, - }); +```bash +forge install wormhole-foundation/wormhole-solidity-sdk@v0.1.0 ``` -This layout is versatile. It allows the serialization of human-readable chain names (e.g., `Ethereum`) to numeric IDs (e.g., `1`) and vice versa. This is particularly useful when working with dynamic configurations or protocols supporting multiple chains. - -#### Fixed Chain ID Layout - -The fixed chain ID layout, [`fixedChainItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/chain.ts#L42-L49){target=\_blank}, is more rigid. It also extends `chainItemBase`, but the custom field is hardcoded for a single chain. This eliminates runtime validation and enforces strict adherence to a specific chain. +When developing cross-chain applications, ensure that the chains you target support the EVM version you’re using. For instance, the PUSH0 opcode (introduced in Solidity 0.8.20) may not be available on all chains. To avoid compatibility issues, you can set the EVM version in your `foundry.toml` file: -```typescript -export const fixedChainItem = (chain: C) => ({ - ...chainItemBase, // Builds on the base structure - custom: { - to: chain, - from: chainToChainId(chain), - }, -}); +```toml +evm_version = "paris" ``` -This layout allows developers to efficiently serialize and deserialize messages involving a single, fixed chain ID. +This ensures compatibility across all targeted chains, even if some do not yet support the latest EVM upgrades. -### Address Layout +## Key Considerations -The Wormhole SDK uses a Universal Address Layout to serialize and deserialize blockchain addresses into a standardized format. This layout ensures that addresses are always represented as fixed 32-byte binary values, enabling seamless cross-chain communication. +Before deploying applications using the Wormhole Solidity SDK, keep these considerations in mind: -#### Base Structure + - **Version compatibility** - the SDK is evolving, and using tagged releases for production is crucial, as the main branch may introduce breaking changes + - **IERC-20 remapping** - the SDK provides a remapping mechanism to handle potential conflicts between different implementations of IERC20, ensuring seamless integration with other libraries + - **Testing** - given the cross-chain dependencies, testing all integrations is critical to avoid issues in production environments -The [`universalAddressItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/universalAddress.ts#L7-L14){target=\_blank} defines the layout for addresses. It uses the binary type bytes and enforces a fixed size of 32 bytes for consistency. +## Concepts and Components -```typescript -export const universalAddressItem = { - binary: 'bytes', - size: 32, - custom: { - to: (val: Uint8Array): UniversalAddress => new UniversalAddress(val), - from: (val: UniversalAddress): Uint8Array => val.toUint8Array(), - } satisfies CustomConversion, -} as const satisfies LayoutItem; -``` +The Wormhole Solidity SDK consists of key components that streamline cross-chain communication, allowing developers to securely and efficiently interact with Wormhole’s infrastructure. Below are the critical concepts and contracts you'll encounter when working with the SDK. -This layout ensures consistent address handling by defining the following: +### Cross-Chain Messaging with the Wormhole Relayer SDK - - **Serialization** - converts a high-level `UniversalAddress` object into raw binary (32 bytes) for efficient storage or transmission - - **Deserialization** - converts raw binary back into a `UniversalAddress` object, enabling further interaction in a human-readable or programmatic format +The [`WormholeRelayerSDK.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank} contract simplifies cross-chain messaging and asset transfers by integrating several necessary modules, including the Wormhole relayer. By automating message delivery between chains, the Wormhole relayer removes the need for developers to manage relayer infrastructure or handle gas on the target chain. Delivery providers handle the message payload, ensuring secure and efficient communication. -### Signature Layout +You can refer to the [Wormhole relayer documentation](/docs/build/core-messaging/wormhole-relayers/){target=\_blank} for more details. -In the Wormhole SDK, the Signature Layout defines how to serialize and deserialize cryptographic signatures. These signatures verify message authenticity and ensure data integrity, particularly in Guardian-signed VAAs. +Key modules in the SDK include: -#### Base Structure + - **`Base.sol`** - the core module for cross-chain messaging. It provides utility functions like `onlyWormholeRelayer()` and `setRegisteredSender()`, ensuring that only messages from trusted relayers are processed -The `signatureLayout` specifies the binary structure of a secp256k1 signature. It divides the signature into three components: + - **`TokenBase.sol`** - this module extends the base messaging functionality to support cross-chain token transfers. It includes utilities for securely sending and receiving tokens between EVM-compatible chains -```typescript -const signatureLayout = [ - { name: 'r', binary: 'uint', size: 32 }, - { name: 's', binary: 'uint', size: 32 }, - { name: 'v', binary: 'uint', size: 1 }, -] as const satisfies Layout; -``` + - **`CCTPBase.sol`** - designed for Circle’s Cross-Chain Transfer Protocol, this module manages asset transfers such as USDC between chains. It includes functionalities for both sending and receiving CCTP-based assets -This layout provides a clear binary format for the secp256k1 signature, making it efficient to process within the Wormhole protocol. + - **`CCTPAndTokenBase.sol`** - a combined module that supports token and CCTP-based asset transfers in a single implementation. This module simplifies development for applications needing to handle both types of transfers -#### Layout with Custom Conversion +The Wormhole Solidity SDK offers a unified framework for cross-chain communication. Developers can select specific modules based on their application’s requirements, whether for messaging, token transfers, or CCTP. Each module includes built-in security measures, ensuring that only authorized senders or relayers are accepted, thereby protecting the application from unauthorized interactions. -The [`signatureItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/signature.ts#L15-L22){target=\_blank} builds upon the `signatureLayout` by adding custom conversion logic. This conversion transforms raw binary data into a high-level `Signature` object and vice versa. +Please refer to the complete `WormholeRelayerSDK.sol` file below for further details. -```typescript -export const signatureItem = { - binary: 'bytes', - layout: signatureLayout, - custom: { - to: (val: LayoutToType) => - new Signature(val.r, val.s, val.v), - from: (val: Signature) => ({ r: val.r, s: val.s, v: val.v }), - } satisfies CustomConversion, Signature>, -} as const satisfies BytesLayoutItem; -``` +???- code "`WormholeRelayerSDK.sol`" + ```solidity + // SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.19; -The `custom` field ensures seamless integration of raw binary data with the `Signature` class, encapsulating signature-specific logic. +import "wormhole-sdk/interfaces/IWormholeReceiver.sol"; +import "wormhole-sdk/interfaces/IWormholeRelayer.sol"; +import "wormhole-sdk/constants/Chains.sol"; +import "wormhole-sdk/Utils.sol"; -## Advanced Use Cases +import {Base} from "wormhole-sdk/WormholeRelayer/Base.sol"; +import {TokenBase, TokenReceiver, TokenSender} from "wormhole-sdk/WormholeRelayer/TokenBase.sol"; +import {CCTPBase, CCTPReceiver, CCTPSender} from "wormhole-sdk/WormholeRelayer/CCTPBase.sol"; +import {CCTPAndTokenBase, CCTPAndTokenReceiver, CCTPAndTokenSender} from "wormhole-sdk/WormholeRelayer/CCTPAndTokenBase.sol"; + ``` -The Wormhole SDK’s layout system is designed to handle various data structures and serialization needs. This section will explore more advanced use cases, such as handling conditional data structures, fixed conversions, and optimizing serialization performance. +### Base Contract Overview -???- code "Switch Statements for Conditional Layouts" +The [`Base.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/Base.sol){target=\_blank} contract is a core part of the Wormhole Solidity SDK, providing essential helper functions and modifiers for managing cross-chain messages securely via the Wormhole Relayer. It handles sender registration and message validation, ensuring only authorized senders from specific chains can send messages. - In some cases, the structure of serialized data might change based on a specific field, such as a payload ID. The switch layout type conditionally defines layouts based on a value. + - **`onlyWormholeRelayer()`** - a modifier that ensures only authorized messages from the Wormhole relayer contract are processed, restricting access to certain functions - For example, different message types can be identified using a payload ID, and the layout for each message can be determined at runtime: + ```solidity + require( + msg.sender == address(wormholeRelayer), + "Msg.sender is not Wormhole Relayer" + ); + _; + } + ``` - ```typescript - const switchLayout = { - binary: 'switch', - idSize: 1, // size of the payload ID - idTag: 'messageType', // tag to identify the type of message - layouts: [ - [[1, 'messageType1'], fillLayout], // layout for type 1 - [[2, 'messageType2'], fastFillLayout], // layout for type 2 - ], -} as const satisfies Layout; + - **`setRegisteredSender()`** - restricts message acceptance to a registered sender from a specific chain, ensuring messages are only processed from trusted sources + + ```solidity + uint16 sourceChain, + bytes32 sourceAddress + ) public { + require( + msg.sender == registrationOwner, + "Not allowed to set registered sender" + ); + registeredSenders[sourceChain] = sourceAddress; + } ``` - The switch statement helps developers parse multiple payload types using the same structure, depending on a control field like an ID. +These security measures ensure messages come from the correct source and are processed securely. Please refer to the complete `Base.sol` contract below for further details. -???- code "Fixed Conversions and Omitted Fields" +???- code "`Base.sol`" + ```solidity + // SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.19; - Fixed conversions and omitted fields allow developers to handle known, static data without including it in every serialization or deserialization operation. For instance, when specific fields in a layout always hold a constant value, they can be omitted from the deserialized object. +import "wormhole-sdk/interfaces/IWormholeReceiver.sol"; +import "wormhole-sdk/interfaces/IWormholeRelayer.sol"; +import "wormhole-sdk/interfaces/IWormhole.sol"; +import "wormhole-sdk/Utils.sol"; - **Example: Fixed Conversion** +abstract contract Base { + IWormholeRelayer public immutable wormholeRelayer; + IWormhole public immutable wormhole; - In some cases, a field may always contain a predefined value. The layout system supports fixed conversions, allowing developers to “hard-code” these values: + address registrationOwner; + mapping(uint16 => bytes32) registeredSenders; - ```typescript - const fixedConversionLayout = { - binary: 'uint', - size: 2, - custom: { - to: 'Ethereum', - from: chainToChainId('Ethereum'), - }, -} as const satisfies Layout; - ``` + constructor(address _wormholeRelayer, address _wormhole) { + wormholeRelayer = IWormholeRelayer(_wormholeRelayer); + wormhole = IWormhole(_wormhole); + registrationOwner = msg.sender; + } - **Example: Omitted Fields** + modifier onlyWormholeRelayer() { + require( + msg.sender == address(wormholeRelayer), + "Msg.sender is not Wormhole Relayer" + ); + _; + } - Omitted fields are useful for handling padding or reserved fields that do not carry meaningful information and can safely be excluded from the deserialized output: + modifier isRegisteredSender(uint16 sourceChain, bytes32 sourceAddress) { + require( + registeredSenders[sourceChain] == sourceAddress, + "Not registered sender" + ); + _; + } - ```typescript - const omittedFieldLayout = [ - { name: 'reserved', binary: 'uint', size: 2, omit: true }, -] as const satisfies Layout; + /** + * Sets the registered address for 'sourceChain' to 'sourceAddress' + * So that for messages from 'sourceChain', only ones from 'sourceAddress' are valid + * + * Assumes only one sender per chain is valid + * Sender is the address that called 'send' on the Wormhole Relayer contract on the source chain) + */ + function setRegisteredSender( + uint16 sourceChain, + bytes32 sourceAddress + ) public { + require( + msg.sender == registrationOwner, + "Not allowed to set registered sender" + ); + registeredSenders[sourceChain] = sourceAddress; + } +} ``` - In this example, `reserved` is a padding field with a fixed, non-dynamic value that serves no functional purpose. It is omitted from the deserialized result but still considered during serialization to maintain the correct binary format. +### Interface for Cross-Chain Messages - Only fields with a fixed, known value, such as padding or reserved fields, should be marked as `omit: true`. Fields with meaningful or dynamic information, such as `sourceChain` or `version`, must remain in the deserialized structure to ensure data integrity and allow seamless round-trip conversions between serialized and deserialized representations. +The Wormhole Solidity SDK interacts with the Wormhole relayer for sending and receiving messages across EVM-compatible chains. The [`IWormholeRelayer`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/IWormholeRelayer.sol){target=\_blank} and [`IWormholeReceiver`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/IWormholeReceiver.sol){target=\_blank} interfaces are central to cross-chain communication, enabling secure and efficient message delivery. -## Integration with Wormhole Protocol +For detailed information on how to implement these interfaces, refer to the [Wormhole Relayer Interfaces documentation](/docs/build/core-messaging/wormhole-relayers/#wormhole-relayer-interfaces){target=\_blank}. This section covers: -The layout system facilitates seamless interaction with the Wormhole protocol, mainly when dealing with VAAs. These cross-chain messages must be serialized and deserialized to ensure they can be transmitted and processed accurately across different chains. + - **`IWormholeRelayer`** – methods for sending cross-chain messages, VAAs, and token transfers + - **`IWormholeReceiver`** – the required implementation for receiving cross-chain messages + - **`quoteEVMDeliveryPrice()`** – how to estimate gas and fees for cross-chain transactions -### VAAs and Layouts +These interfaces reduce the complexity of cross-chain dApp development by abstracting away the details of relayer infrastructure, ensuring that message delivery is handled efficiently. -VAAs are the backbone of Wormhole’s cross-chain communication. Each VAA is a signed message encapsulating important information such as the originating chain, the emitter address, a sequence number, and Guardian signatures. The Wormhole SDK leverages its layout system to define, serialize, and deserialize VAAs, ensuring data integrity and chain compatibility. +### Advanced Concepts -#### Base VAA Structure +For developers interested in exploring additional advanced topics, the following sections provide insights into key aspects of the SDK’s functionality. -The Wormhole SDK organizes the VAA structure into three key components: +???- note "Error Handling and Reverts" + The SDK defines several custom errors to help developers handle common issues like incorrect gas fees, invalid senders, and more. For example, `InvalidMsgValue` is thrown when the message value for a relayed message is erroneous. - - [**Header**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L37-L41){target=\_blank} - contains metadata such as the Guardian set index and an array of Guardian signatures - - [**Envelope**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} - includes chain-specific details such as the emitter chain, address, sequence, and consistency level - - **Payload** - provides application-specific data, such as the actual message or operation being performed + ```solidity + error InvalidMsgValue(uint256 msgValue, uint256 totalFee); + ``` -**Header layout:** +## Usage -```typescript -const guardianSignatureLayout = [ - { name: 'guardianIndex', binary: 'uint', size: 1 }, - { name: 'signature', ...signatureItem }, -] as const satisfies Layout; +This section covers cross-chain messaging and token transfers and shows how to use the Wormhole Solidity SDK in real-world scenarios. -export const headerLayout = [ - { name: 'version', binary: 'uint', size: 1, custom: 1, omit: true }, - { name: 'guardianSet', ...guardianSetItem }, - { - name: 'signatures', - binary: 'array', - lengthSize: 1, - layout: guardianSignatureLayout, - }, -] as const satisfies Layout; -``` +### Send a Cross-Chain Message -The header defines metadata for validating and processing the VAA, such as the Guardian set index and signatures. Each signature is represented using the `signatureItem` layout, ensuring consistency and compatibility across different platforms. +To send a cross-chain message, inherit from the base contract provided by the SDK and use its helper methods to define your message and sender address. Here’s a basic example: -!!! note "Signature Standard Compliance" +```solidity +pragma solidity ^0.8.19; - The signature field uses the `signatureItem` layout, which is explicitly defined as 65 bytes. This layout is aligned with widely used standards such as EIP-2612 and Uniswap's Permit2, ensuring compatibility with cryptographic protocols and applications. +import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/Base.sol"; -**Envelope layout:** +contract CrossChainSender is Base { + constructor( + address _wormholeRelayer, + address _wormhole + ) Base(_wormholeRelayer, _wormhole) {} -```typescript -export const envelopeLayout = [ - { name: 'timestamp', binary: 'uint', size: 4 }, - { name: 'nonce', binary: 'uint', size: 4 }, - { name: 'emitterChain', ...chainItem() }, - { name: 'emitterAddress', ...universalAddressItem }, - { name: 'sequence', ...sequenceItem }, - { name: 'consistencyLevel', binary: 'uint', size: 1 }, -] as const satisfies Layout; + function sendMessage( + bytes memory message, + uint16 targetChain, + bytes32 targetAddress + ) external payable { + // Register sender and send message through WormholeRelayer + setRegisteredSender(targetChain, msg.sender); + onlyWormholeRelayer().sendPayloadToEvm( + targetChain, + address(targetAddress), + message, + 0, + 500_000 + ); + } +} ``` -The envelope encapsulates the VAA's core message data, including chain-specific information like the emitter address and sequence number. This structured layout ensures that the VAA can be securely transmitted across chains. +This contract extends `Base.sol` and allows sending cross-chain messages securely using the `WormholeRelayer`. -**Payload Layout:** +### Send Tokens Across Chains -The Payload contains the user-defined data specific to the application or protocol, such as a token transfer message, governance action, or other cross-chain operation. The layout of the payload is dynamic and depends on the payload type, identified by the `payloadLiteral` field. +The SDK enables seamless token transfers between EVM-compatible chains in addition to sending messages. To facilitate cross-chain token transfers, you can extend the SDK's `TokenSender` and `TokenReceiver` base contracts. -```typescript -const examplePayloadLayout = [ - { name: 'type', binary: 'uint', size: 1 }, - { name: 'data', binary: 'bytes', lengthSize: 2 }, -] as const satisfies Layout; +```solidity +pragma solidity ^0.8.19; + +import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/TokenBase.sol"; + +contract CrossChainTokenSender is TokenSender { + constructor( + address _wormholeRelayer, + address _wormhole + ) TokenSender(_wormholeRelayer, _wormhole) {} + + function sendToken( + address token, + uint256 amount, + uint16 targetChain, + bytes32 targetAddress + ) external payable { + // Send tokens across chains + transferTokenToTarget(token, amount, targetChain, targetAddress); + } +} ``` -This example demonstrates a payload containing: +In this example, `TokenSender` initiates a token transfer to another chain. The SDK’s built-in utilities securely handle token transfers, ensuring proper VAAs are generated and processed. - - A type field specifying the operation type (e.g., transfer or governance action) - - A data field that is length-prefixed and can store operation-specific information +### Receive Tokens Across Chains -Dynamic payload layouts are selected at runtime using the `payloadLiteral` field, which maps to a predefined layout in the Wormhole SDK. +To receive tokens on the target chain, implement a contract that inherits from `TokenReceiver` and overrides the `receiveWormholeMessages` function. -**Combined Base Layout:** +```solidity +pragma solidity ^0.8.19; -The base VAA layout combines the header, envelope, and dynamically selected payload layout: +import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/TokenBase.sol"; -```typescript -export const baseLayout = [...headerLayout, ...envelopeLayout] as const; +contract CrossChainTokenReceiver is TokenReceiver { + constructor( + address _wormholeRelayer, + address _wormhole + ) TokenReceiver(_wormholeRelayer, _wormhole) {} + + // Function to handle received tokens from another chain + function receiveWormholeMessages( + bytes memory payload, + bytes[] memory additionalMessages, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 deliveryHash + ) external payable override { + // Process the received tokens here + receiveTokens(payload); + } +} ``` -At runtime, the payload layout is appended to the `baseLayout` to form the complete structure. +In this example, `TokenReceiver` allows the contract to handle tokens sent from the source chain. Once the cross-chain message is received, the `receiveWormholeMessages` function processes the incoming tokens. Always validate the message's authenticity and source. -#### Serializing VAA Data +!!! note + Always verify the source of incoming messages and tokens to prevent unauthorized access to your contract. Please refer to the [Emitter Verification](/docs/build/core-messaging/core-contracts/#validating-the-emitter/){target=\_blank} section for more details. -The Wormhole SDK provides the [`serialize`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/functions.ts#L48-L54){target=\_blank} function to serialize a VAA message. This function combines the base layout (header and envelope) with the appropriate payload layout, ensuring the message’s format is correct for transmission across chains. +## Testing Environment -```typescript -import { serialize } from '@wormhole-foundation/sdk-core/vaa/functions'; +The SDK includes built-in support for Forge-based testing, which allows you to test your cross-chain applications locally before deploying them to production. Testing with the same Solidity compiler version and configuration you plan to use in production is highly recommended to catch any potential issues early. -const vaaData = { - guardianSet: 1, - signatures: [{ guardianIndex: 0, signature: new Uint8Array(65).fill(0) }], - timestamp: 1633000000, - nonce: 42, - emitterChain: 2, // Ethereum - emitterAddress: new Uint8Array(32).fill(0), - sequence: BigInt(1), - consistencyLevel: 1, - payloadLiteral: 'SomePayloadType', - payload: { key: 'value' }, -}; +For a detailed example, check out the below repositories: -const serializedVAA = serialize(vaaData); -``` + - [Cross chain messaging](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/){target=\_blank} + - [Cross chain token transfer](/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/){target=\_blank} +--- END CONTENT --- -???- note "How does it work?" +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/index +--- BEGIN CONTENT --- +--- +title: Wormhole SDK +description: The Wormhole SDK provides tools for cross-chain communication, token bridges, and more, enabling developers to integrate with multiple blockchain environments. +--- - Internally, the serialize function dynamically combines the `baseLayout` (header and envelope) with the payload layout defined by the `payloadLiteral`. The complete layout is then passed to the `serializeLayout` function, which converts the data into binary format. +# Wormhole SDK - ```typescript - const layout = [ - ...baseLayout, // Header and envelope layout - payloadLiteralToPayloadItemLayout(vaa.payloadLiteral), // Payload layout -] as const; +## Get Started -return serializeLayout(layout, vaa as LayoutToType); - ``` +The Wormhole SDK provides developers with essential tools for cross-chain communication, token bridges, and more. This SDK enables seamless interaction between different blockchain environments with a focus on performance and usability. -#### Deserializing VAA Data +
-The Wormhole SDK provides the [`deserialize`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/functions.ts#L162-L200){target=\_blank} function to parse a VAA from its binary format back into a structured object. This function uses the `baseLayout` and payload discriminator logic to ensure the VAA is correctly interpreted. +- :octicons-book-16:{ .lg .middle } **Wormhole SDK** -```typescript -import { deserialize } from '@wormhole-foundation/sdk-core/vaa/functions'; + --- -const serializedVAA = new Uint8Array([ - /* Serialized VAA binary data */ -]); + Learn about the core functionalities of the Wormhole SDK, including how to use its features for building cross-chain applications. -const vaaPayloadType = 'SomePayloadType'; // The payload type expected for this VAA -const deserializedVAA = deserialize(vaaPayloadType, serializedVAA); -``` + [:custom-arrow: Explore the SDK](/docs/build/toolkit/typescript-sdk/wormhole-sdk/) -???- note "How does it work?" +- :octicons-code-16:{ .lg .middle } **Layouts** - Internally, the `deserialize` function uses the `baseLayout` (header and envelope) to parse the main VAA structure. It then identifies the appropriate payload layout using the provided payload type or discriminator. + --- - ```typescript - const [header, envelopeOffset] = deserializeLayout(headerLayout, data, { - consumeAll: false, -}); + Discover how to define, serialize, and deserialize data structures using the Wormhole SDK's layout system, ensuring efficient cross-chain communication. -const [envelope, payloadOffset] = deserializeLayout(envelopeLayout, data, { - offset: envelopeOffset, - consumeAll: false, -}); + [:custom-arrow: Learn about layouts](/docs/build/toolkit/typescript-sdk/sdk-layout/) -const [payloadLiteral, payload] = - typeof payloadDet === 'string' - ? [ - payloadDet as PayloadLiteral, - deserializePayload(payloadDet as PayloadLiteral, data, payloadOffset), - ] - : deserializePayload( - payloadDet as PayloadDiscriminator, - data, - payloadOffset - ); +
+--- END CONTENT --- -return { - ...header, - ...envelope, - payloadLiteral, - payload, -} satisfies VAA; - ``` +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/protocols-payloads +--- BEGIN CONTENT --- +--- +title: Building Protocols and Payloads +description: Learn how to build, register, and integrate protocols and payloads in the Wormhole TypeScript SDK with type-safe layouts. +--- -### Registering Custom Payloads +# Building Protocols and Payloads -In the Wormhole SDK, payloads rely on layouts to define their binary structure, ensuring consistency and type safety across protocols. Custom payloads extend this functionality, allowing developers to handle protocol-specific features or unique use cases. +## Introduction -To learn how to define and register payloads using layouts, refer to the [Building Protocols and Payloads](/docs/build/applications/wormhole-sdk/protocols-payloads/){target=\_blank} page for a detailed guide. +The [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} provides a flexible and powerful system for integrating cross-chain communication into your applications. A key feature of the SDK is its ability to define protocols—modular units representing distinct functionalities—and their associated payloads, which encapsulate the data required for specific operations within those protocols. -## Common Pitfalls & Best Practices +This guide will help you understand how to build protocols and payloads in the SDK, covering: -When working with the Wormhole SDK layout system, it's important to be aware of a few common issues that can arise. Below are some pitfalls to avoid and best practices to ensure smooth integration. + - The role of protocols and payloads in cross-chain communication + - The mechanics of registering protocols and payloads using the SDK + - Best practices for creating strongly typed layouts to ensure compatibility and reliability + - Real-world examples using the `TokenBridge` as a reference implementation -### Pitfalls to Avoid +By the end of this guide, you’ll have a solid understanding of how to define, register, and use protocols and payloads in your projects. -#### Defining Sizes for Data Types +## What is a Protocol? -When defining sizes for each data type, make sure to match the actual data length to the specified size to prevent serialization and deserialization errors: +In the Wormhole SDK, a protocol represents a significant feature or functionality that operates across multiple blockchains. Protocols provide the framework for handling specific types of messages, transactions, or operations consistently and standardized. - - **`uint` and `int`** - the specified size must be large enough to accommodate the data value. For instance, storing a value greater than 255 in a single byte (`uint8`) will fail since it exceeds the byte’s capacity. Similarly, an undersized integer (e.g., specifying 2 bytes for a 4-byte integer) can lead to data loss or deserialization failure - - **`bytes`** - the data must match the specified byte length in the layout. For example, defining a field as 32 bytes (`size: 32`) requires the provided data to be exactly 32 bytes long; otherwise, serialization will fail +Examples of Protocols: -```typescript -// Pitfall: Mismatch between the size of data and the defined size in the layout -{ name: 'orderSender', binary: 'bytes', size: 32 } -// If the provided data is not exactly 32 bytes, this will fail -``` + - **`TokenBridge`** - enables cross-chain token transfers, including operations like transferring tokens and relaying payloads + - **`NTT (Native Token Transfers)`** - manages native token movements across chains -#### Incorrectly Defined Arrays +Protocols are defined by: -Arrays can be fixed-length or length-prefixed, so it’s important to define them correctly. Fixed-length arrays must match the specified length, while length-prefixed arrays need a `lengthSize` field. + - **A `name`** - a string identifier (e.g., `TokenBridge`, `Ntt`) + - **A set of `payloads`** - these represent the specific actions or messages supported by the protocol, such as `Transfer` or `TransferWithPayload` -```typescript -// Pitfall: Array length does not match the expected size -{ name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 } -``` +Each protocol is registered in the Wormhole SDK, allowing developers to leverage its predefined features or extend it with custom payloads. -### Best Practices +## What is a Payload? -These best practices and common pitfalls can help prevent bugs and improve the reliability of your implementation when working with layouts in the Wormhole SDK. +A payload is a structured piece of data that encapsulates the details of a specific operation within a protocol. It defines the format, fields, and types of data used in a message or transaction. Payloads ensure consistency and type safety when handling complex cross-chain operations. -#### Reuse Predefined Layout Items +Each payload is defined as: -Rather than defining sizes or types manually, reuse the predefined layout items provided by the Wormhole SDK. These items ensure consistent formatting and enforce strong typing. + - **A `layout`** - describes the binary format of the payload fields + - **A `literal`** - combines the protocol name and payload name into a unique identifier (e.g., `TokenBridge:Transfer`) -For instance, use the `chainItem` layout for chain IDs or `universalAddressItem` for blockchain addresses: +By registering payloads, developers can enforce type safety and enable serialization and deserialization for specific protocol operations. -```typescript -import { - chainItem, - universalAddressItem, -} from '@wormhole-foundation/sdk-core/layout-items'; +## Register Protocols and Payloads -const exampleLayout = [ - { name: 'sourceChain', ...chainItem() }, // Use predefined chain ID layout - { name: 'senderAddress', ...universalAddressItem }, // Use universal address layout -] as const; -``` +Protocols and payloads work together to enable cross-chain communication with precise type safety. For instance, in the `TokenBridge` protocol: -By leveraging predefined layout items, you reduce redundancy, maintain consistency, and ensure compatibility with Wormhole’s standards. + - The protocol is registered under the `TokenBridge` namespace + - Payloads like `Transfer` or `AttestMeta` are linked to the protocol to handle specific operations -#### Use Class Instances +Understanding the connection between these components is important for customizing or extending the SDK to suit your needs. -Whenever possible, convert deserialized data into higher-level class instances. This makes it easier to validate, manipulate, and interact with structured data. For example, the [`UniversalAddress`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/universalAddress.ts#L17-L59){target=\_blank} class ensures consistent address handling: +### Register Protocols -```typescript -import { UniversalAddress } from '@wormhole-foundation/sdk-core'; +Registering a protocol establishes its connection to Wormhole's infrastructure, ensuring it interacts seamlessly with payloads and platforms while maintaining type safety and consistency. -const deserializedAddress = new UniversalAddress(someBinaryData); -``` +#### How Protocol Registration Works -Focusing on reusing predefined layout items and converting deserialized data into higher-level abstractions can ensure a more robust and maintainable implementation. +Protocol registration involves two key tasks: -#### Consistent Error Handling + - **Mapping protocols to interfaces** - connect the protocol to its corresponding interface, defining its expected behavior across networks (`N`) and chains (`C`). This ensures type safety, similar to strong typing, by preventing runtime errors if protocol definitions are incorrect + - **Linking protocols to platforms** - specify platform-specific implementations if needed, or use default mappings for platform-agnostic protocols -Always handle errors during both serialization and deserialization. Catching exceptions allows you to log or resolve issues gracefully when working with potentially corrupted or invalid data. +For example, here's the `TokenBridge` protocol registration: ```typescript -try { - const deserialized = deserializeLayout(fillLayout, data); -} catch (error) { - console.error('Deserialization failed:', error); +declare module '../../registry.js' { + export namespace WormholeRegistry { + interface ProtocolToInterfaceMapping { + TokenBridge: TokenBridge; + } + interface ProtocolToPlatformMapping { + TokenBridge: EmptyPlatformMap<'TokenBridge'>; + } + } } ``` -#### Leverage Reusable Layouts +This code snippet: -Creating reusable layouts for commonly repeated structures improves code maintainability and reduces duplication. These layouts can represent fields or combinations of fields frequently encountered in cross-chain communication, such as chain IDs, addresses, and signatures. + - Maps the `TokenBridge` protocol to its interface to define how it operates + - Links the protocol to a default platform mapping via `EmptyPlatformMap` -For example, define a reusable layout for chain IDs and addresses: +You can view the full implementation in the [`TokenBridge` protocol file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridge.ts#L14-L70){target=\_blank}. + +#### Platform-Specific Protocols + +Some protocols require platform-specific behavior. For instance, the EVM-compatible Wormhole Registry maps native addresses for Ethereum-based chains: ```typescript -const commonLayout = [ - { name: 'chainId', binary: 'uint', size: 2 }, - { name: 'address', binary: 'bytes', size: 32 }, -] as const satisfies Layout; +declare module '@wormhole-foundation/sdk-connect' { + export namespace WormholeRegistry { + interface PlatformToNativeAddressMapping { + Evm: EvmAddress; + } + } +} -// Reuse the common layout in different contexts -const exampleLayout = [ - ...commonLayout, - { name: 'sequence', binary: 'uint', size: 8 }, -]; +registerNative(_platform, EvmAddress); ``` -By abstracting common elements into a single layout, you ensure consistency across different parts of your application and simplify future updates. +This ensures that `EvmAddress` is registered as the native address type for EVM-compatible platforms. See the [EVM platform address file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/platforms/evm/src/address.ts#L98-L106){target=\_blank} for details. -## Performance Considerations +### Register Payloads -Efficient serialization and deserialization are crucial when handling large amounts of cross-chain data. Below are some strategies and best practices to ensure optimal performance when using Wormhole SDK layouts. +[Payload registration](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts){target=\_blank} enables developers to define, serialize, and handle custom message types within their protocols. It establishes the connection between a protocol and its payloads, ensuring seamless integration, type enforcement, and runtime efficiency. -### Lazy Instantiation +This process ties a protocol to its payloads using a combination of: -Building a discriminator can be resource-intensive for complex or large datasets. The layout structures do not incur significant upfront costs, but deferring the creation of discriminators until needed can improve efficiency. + - **Payload literals** - unique identifiers in the format `:`. These literals map each payload to a layout + - **Payload layouts** - structures that define the binary representation of payload data + - **The payload factory** - a centralized runtime registry that maps payload literals to layouts for dynamic resolution and serialization -```typescript -const lazyDiscriminator = lazyInstantiate(() => layoutDiscriminator(layouts)); -``` +These components work together to streamline the definition and management of protocol payloads. -This approach ensures that discriminators are only built when required, helping to optimize performance, especially for complex or conditional layouts. +#### How Payload Registration Works -## Resources +Payload registration involves: -For further learning and practical experience, explore the following resources: +1. **Define payload layouts** - create layouts to structure your payloads. For instance, a protocol might use a `TransferWithPayload` layout: - - **Wormhole TypeScript SDK** - the [Wormhole SDK repository](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} contains the core implementation of layouts, including predefined layout items and utilities like `serializeLayout` and `deserializeLayout` + ```typescript + export const transferWithPayloadLayout = < + const P extends CustomizableBytes = undefined +>( + customPayload?: P +) => + [ + payloadIdItem(3), + ...transferCommonLayout, + { name: 'from', ...universalAddressItem }, + customizableBytes({ name: 'payload' }, customPayload), + ] as const; + ``` - - **Layout tests repository** - for hands-on experimentation, check out this [layout package repository](https://github.com/nonergodic/layout){target=\_blank}, which provides examples and unit tests to help you better understand serialization, deserialization, and the strong typing mechanism. Running these tests locally is a great way to deepen your understanding of how layouts function in real-world scenarios ---- END CONTENT --- +2. **Register payloads** - use `registerPayloadTypes` to map payload literals to their layouts: -Doc-Content: https://wormhole.com/docs/build/applications/wormhole-sdk/vaas-protocols ---- BEGIN CONTENT --- ---- -title: VAAs and Protocols -description: Understand how VAAs enable cross-chain messaging and how to handle them using Wormhole's TypeScript and Solidity SDKs. ---- + ```typescript + registerPayloadTypes('ProtocolName', protocolNamedPayloads); + ``` -# VAAs and Protocols +3. **Access registered payloads** - use the [`getPayloadLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/9105de290c91babbf8ad031bd89cc75ee38739c8/core/definitions/src/vaa/functions.ts#L19-L23){target=\_blank} function to fetch the layout for a specific payload literal. This method ensures that the correct layout is retrieved dynamically and safely: -## Introduction + ```typescript + const layout = getPayloadLayout('ProtocolName:PayloadName'); + ``` -Wormhole's core functionality revolves around [Verifiable Action Approvals](/docs/learn/infrastructure/vaas/){target=\_blank} (VAAs), which are signed messages enabling secure and decentralized communication across chains. This guide focuses on their practical usage within the Wormhole ecosystem, specifically when working with protocol-specific messages in the [TypeScript](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} and [Solidity](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} SDKs. +These steps link payload literals and their layouts, enabling seamless runtime handling. -For deeper insights into serialization, deserialization, and protocol design, refer to: +#### The Payload Factory -- [Data Layouts](/docs/build/applications/wormhole-sdk/sdk-layout/){target=\_blank} for serialization concepts -- [Building Protocols and Payloads](/docs/build/applications/wormhole-sdk/protocols-payloads/){target=\_blank} for designing custom protocol messages +At the core of the payload registration process is the `payloadFactory`, a registry that manages the mapping between payload literals and layouts: -This guide will help you understand how to handle VAAs and protocol messages in off-chain and on-chain scenarios. +```typescript +export const payloadFactory = new Map(); -## VAA Structure +export function registerPayloadType( + protocol: ProtocolName, + name: string, + layout: Layout +) { + const payloadLiteral = composeLiteral(protocol, name); + if (payloadFactory.has(payloadLiteral)) { + throw new Error(`Payload type ${payloadLiteral} already registered`); + } + payloadFactory.set(payloadLiteral, layout); +} +``` -Understanding the structure of VAAs is fundamental to working with Wormhole's SDKs. Each section of the VAA—Header, Envelope, and Payload—serves a specific role: + - The `payloadFactory` ensures each payload literal maps to its layout uniquely + - The [`registerPayloadType`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts#L46-L52){target=\_blank} function adds individual payloads, while [`registerPayloadTypes`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts#L62-L64){target=\_blank} supports bulk registration -| Section | Description | -|----------|----------------------------------------------------------------------------------------------------------| -| Header | Includes the version and guardian signature information required to verify the VAA | -| Envelope | Contains metadata about the emitted message, such as the emitter chain, emitter address, and timestamp | -| Payload | Represents the actual message, in raw bytes, without a length prefix | +This implementation ensures dynamic, efficient handling of payloads at runtime. -The VAA's body combines the Envelope and Payload. The Wormhole Guardians signed the core data and hashed (using `keccak256`) to generate the VAA's unique identifier. +## Integrate Protocols with Payloads -When integrating protocols like Token Bridge or Wormhole Relayer: +Integrating payloads with protocols enables dynamic identification through payload literals, while serialization and deserialization ensure their binary representation is compatible across chains. For more details on these processes, refer to the [Layouts page](/docs/build/toolkit/typescript-sdk/sdk-layout/){target=\_blank}. -- The TypeScript SDK handles VAAs off-chain, focusing on deserialization, validation, and payload extraction before submission -- The Solidity SDK processes VAAs on-chain, using libraries like `VaaLib` to decode and execute protocol actions +### Payload Discriminators -## VAAs in Protocol Contexts +Payload discriminators are mechanisms in the Wormhole SDK that dynamically identify and map incoming payloads to their respective layouts at runtime. They are relevant for protocols like `TokenBridge`, enabling efficient handling of diverse payload types while ensuring type safety and consistent integration. -### How VAAs Enable Protocol-Specific Messaging +#### How Discriminators Work -VAAs are the backbone of Wormhole's cross-chain communication, encapsulating critical protocol payloads that drive actions on different blockchains. Each protocol—such as [Token Bridge](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/tokenBridge){target=\_blank}, [Wormhole Relayer](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/relayer){target=\_blank}, or [Circle CCTP](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/circleBridge){target=\_blank}—uses VAAs to securely transmit its messages across chains. +Discriminators evaluate serialized binary data and determine the corresponding payload layout by inspecting fixed fields or patterns within the data. Each payload layout is associated with a payload literal (e.g., `TokenBridge:Transfer` or `TokenBridge:TransferWithPayload`). -Examples of mapping protocols to VAAs: +This system ensures: -| Protocol | Payload Purpose | Example | -|-----------------|-----------------------------------------------------------|------------------------------------| -| Token Bridge | Transfers token data and metadata | Token transfer or redemption | -| Wormhole Relayer| Manages delivery instructions for messages across chains | Delivery fee or refund handling | -| Circle CCTP | Facilitates stablecoin mint-and-burn operations | Circle-issued stablecoin transfer | + - **Dynamic runtime identification** - payloads are parsed based on their content, even if a single protocol handles multiple payload types + - **Strict type enforcement** - discriminators leverage layout mappings to prevent invalid payloads from being processed -Each protocol integrates its payload format into the VAA structure, ensuring consistent message validation and execution across the ecosystem. +Below is an example of how the Wormhole SDK builds a discriminator to distinguish between payload layouts: -### TypeScript SDK: Off-Chain Handling of VAAs +```typescript +export function layoutDiscriminator( + layouts: readonly Layout[], + allowAmbiguous?: B +): Discriminator { + // Internal logic to determine distinguishable layouts + const [distinguishable, discriminator] = internalBuildDiscriminator(layouts); + if (!distinguishable && !allowAmbiguous) { + throw new Error('Cannot uniquely distinguish the given layouts'); + } -The TypeScript SDK is designed for off-chain operations like reading, validating, and manipulating VAAs before submitting them to a chain. Developers can easily deserialize VAAs to extract protocol payloads and prepare actions such as initiating token transfers or constructing delivery instructions. + return ( + !allowAmbiguous + ? (encoded: BytesType) => { + const layout = discriminator(encoded); + return layout.length === 0 ? null : layout[0]; + } + : discriminator + ) as Discriminator; +} +``` -In the example below, we use the real [`envelopeLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dd6bd2463264680597519285ff559f9e92e85ca7/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} from Wormhole's TS SDK to deserialize and extract essential information like the emitter chain, sequence, and consistency level: + - [`layoutDiscriminator`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/9105de290c91babbf8ad031bd89cc75ee38739c8/core/base/src/utils/layout.ts#L16){target=\_blank} takes a list of layouts and generates a function that can identify the appropriate layout for a given serialized payload + - The `allowAmbiguous` parameter determines whether layouts with overlapping characteristics are permitted -```typescript -import { deserializeLayout } from '@wormhole-foundation/sdk-base'; -import { - universalAddressItem, - sequenceItem, -} from '@wormhole-foundation/core/layout-items/index.js'; +### Real-World Example: Token Bridge Protocol -export const envelopeLayout = [ - { name: 'timestamp', binary: 'uint', size: 4 }, - { name: 'nonce', binary: 'uint', size: 4 }, - { name: 'emitterChain', binary: 'uint', size: 2 }, - { name: 'emitterAddress', ...universalAddressItem }, - { name: 'sequence', ...sequenceItem }, - { name: 'consistencyLevel', binary: 'uint', size: 1 }, -] as const satisfies Layout; +Integrating protocols with their respective payloads exemplifies how the Wormhole SDK leverages layouts and type-safe registration mechanisms to ensure efficient cross-chain communication. This section focuses on how protocols like `TokenBridge` use payloads to facilitate specific operations. -const encodedEnvelope = new Uint8Array([ - /* binary envelope data */ -]); -const deserializedEnvelope = deserializeLayout(envelopeLayout, encodedEnvelope); -``` +#### Token Bridge Protocol and Payloads -For more details, you can refer to the [parseVAA example](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/examples/src/parseVaa.ts){target=\_blank} in the Wormhole SDK repository. +The `TokenBridge` protocol enables cross-chain token transfers through its payloads. Key payloads include: -### Solidity SDK: On-Chain Handling of VAAs + - **`Transfer`** - handles basic token transfer operations + - **`TransferWithPayload`** - extends the `Transfer` payload to include custom data, enhancing functionality -The Solidity SDK enables on-chain processing of VAAs directly within smart contracts. This is essential for real-time validation, decoding, and execution of protocol-specific payloads. Developers can use libraries like [`VaaLib`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/e19013d08d1fdf5af9e6344c637e36a270422dd9/src/libraries/VaaLib.sol){target=\_blank} to parse the VAA header and payload, ensuring the message is authentic and consistent with Wormhole's validation. +Payloads are registered to the `TokenBridge` protocol via the `PayloadLiteralToLayoutMapping` interface, which links payload literals (e.g., `TokenBridge:Transfer`) to their layouts. -Below is an example of parsing an envelope on-chain using the Solidity SDK: +Additionally, the protocol uses reusable layouts like [`transferCommonLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/76b20317b0f68e823d4e6c4a2e41bb2a7705c64f/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts#L29C7-L47){target=\_blank} and extends them in more specialized layouts such as [`transferWithPayloadLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/76b20317b0f68e823d4e6c4a2e41bb2a7705c64f/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts#L49-L57){target=\_blank}: -```solidity -// SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.19; +```typescript +export const transferWithPayloadLayout = < + const P extends CustomizableBytes = undefined +>( + customPayload?: P +) => + [ + payloadIdItem(3), + ...transferCommonLayout, + { name: 'from', ...universalAddressItem }, + customizableBytes({ name: 'payload' }, customPayload), + ] as const; +``` -import {VaaLib} from "wormhole-sdk/libraries/VaaLib.sol"; +This layout includes: -contract EnvelopeParser { - using VaaLib for bytes; + - A `payloadIdItem` to identify the payload type + - Common fields for token and recipient details + - A customizable `payload` field for additional data - function parseEnvelope( - bytes memory encodedVaa - ) - public - pure - returns ( - uint32 timestamp, - uint32 nonce, - uint16 emitterChainId, - bytes32 emitterAddress, - uint64 sequence, - uint8 consistencyLevel - ) - { - // Skip the header and decode the envelope - uint offset = VaaLib.skipVaaHeaderMemUnchecked(encodedVaa, 0); - return VaaLib.decodeVaaEnvelopeMemUnchecked(encodedVaa, offset); - } -} +#### Use the Discriminator + +To manage multiple payloads, the `TokenBridge` protocol utilizes a discriminator to distinguish between payload types dynamically. For example: + +```typescript +const tokenBridgePayloads = ['Transfer', 'TransferWithPayload'] as const; + +export const getTransferDiscriminator = lazyInstantiate(() => + payloadDiscriminator([_protocol, tokenBridgePayloads]) +); ``` ---- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/applications/wormhole-sdk/wormhole-sdk ---- BEGIN CONTENT --- ---- -title: Wormhole TS SDK -description: Explore Wormhole's TypeScript SDK and learn how to perform different types of transfers, including native, token, and USDC. ---- + - The [`getTransferDiscriminator`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/protocols/tokenBridge/tokenBridge.ts#L67-L70){target=\_blank} function dynamically evaluates payloads using predefined layouts + - This ensures that each payload type is processed according to its unique structure and type-safe layout -# Wormhole TypeScript SDK +#### Register Payloads to Protocols -## Introduction +Here’s how the `TokenBridge` protocol connects its payloads to the Wormhole SDK: -The Wormhole TypeScript SDK is useful for interacting with the chains Wormhole supports and the [protocols](#protocols) built on top of Wormhole. This package bundles together functions, definitions, and constants that streamline the process of connecting chains and completing transfers using Wormhole. The SDK also offers targeted sub-packages for Wormhole-connected platforms, which allow you to add multichain support without creating outsized dependencies. +```typescript +declare module '../../registry.js' { + export namespace WormholeRegistry { + interface PayloadLiteralToLayoutMapping + extends RegisterPayloadTypes< + 'TokenBridge', + typeof tokenBridgeNamedPayloads + > {} + } +} -This section covers all you need to know about the functionality and ease of development offered through the Wormhole TypeScript SDK. Take a tour of the package to discover how it helps make integration easier. Learn more about how the SDK abstracts away complexities around concepts like platforms, contexts, and signers. Finally, you'll find guidance on usage, along with code examples, to show you how to use the tools of the SDK. +registerPayloadTypes('TokenBridge', tokenBridgeNamedPayloads); +``` +This registration links the `TokenBridge` payload literals to their respective layouts, enabling serialization and deserialization at runtime. -
+You can explore the complete `TokenBridge` protocol and payload definitions in the [`TokenBridge` layout file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts){target=\_blank}. -- :octicons-download-16:{ .lg .middle } **Installation** +#### Token Bridge Payloads - --- +The following payloads are registered for the `TokenBridge` protocol: - Find installation instructions for both the meta package and installing specific, individual packages + - **`AttestMeta`** - used for token metadata attestation + - **`Transfer`** - facilitates token transfers + - **`TransferWithPayload`** - adds a custom payload to token transfers - [:custom-arrow: Install the SDK](#installation) +These payloads and their layouts are defined in the [`TokenBridge` layout file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts){target=\_blank}. -- :octicons-book-16:{ .lg .middle } **Concepts** +### Other Protocols: Native Token Transfers (NTT) - --- +While this guide focuses on the `TokenBridge` protocol, other protocols, like NTT, follow a similar structure. - Understand key concepts and how the SDK abstracts them away. Learn more about platforms, chain context, addresses, and signers + - NTT manages the transfer of native tokens across chains + - Payloads such as `WormholeTransfer` and `WormholeTransferStandardRelayer` are registered to the protocol using the same patterns for payload literals and layouts + - The same mechanisms for type-safe registration and payload discriminators apply, ensuring reliability and extensibility - [:custom-arrow: Explore concepts](#concepts) +For more details, you can explore the [NTT implementation in the SDK](https://github.com/wormhole-foundation/example-native-token-transfers/blob/00f83aa215338b1b8fd66f522bd0f45be3e98a5a/sdk/definitions/src/ntt.ts){target=\_blank}. +--- END CONTENT --- -- :octicons-file-code-16:{ .lg .middle } **Usage** +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/sdk-layout +--- BEGIN CONTENT --- +--- +title: Data Layouts +description: Learn how to efficiently define, serialize, and deserialize data structures using Wormhole SDK's layout system for cross-chain communication. +--- - --- +# Data Layouts - Guidance on using the SDK to add seamless interchain messaging to your application, including code examples +## Introduction - [:custom-arrow: Use the SDK](#usage) +The [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} uses the [layout package](https://www.npmjs.com/package/binary-layout){target=\_blank} to define, serialize, and deserialize data structures efficiently. This modular system ensures consistent data formatting and cross-environment compatibility, benefiting projects that require robust handling of structured data. -- :octicons-code-square-16:{ .lg .middle } **TSdoc for SDK** +By understanding the layout mechanism, you’ll be able to: - --- + - Define data structures (numbers, arrays, and custom types) + - Efficiently serialize and deserialize data using the SDK’s utilities + - Handle protocol-specific layouts with ease - Review the TSdoc for the Wormhole TypeScript SDK for a detailed look at availabel methods, classes, interfaces, and definitions +This guide is beneficial for developers looking to integrate Wormhole into their applications or protocols, especially those dealing with complex payloads or cross-chain communication. - [:custom-arrow: View the TSdoc on GitHub](https://wormhole-foundation.github.io/wormhole-sdk-ts/){target=\_blank} +## Key Concepts -
+### Layout Items -!!! warning - This package is a work in progress. The interface may change, and there are likely bugs. Please [report](https://github.com/wormhole-foundation/connect-sdk/issues){target=\_blank} any issues you find. +A layout defines how data structures should be serialized (converted into binary format) and deserialized (converted back into their original structure). This ensures consistent data formatting when transmitting information across different blockchain environments. -## Installation +Layouts are composed of [layout items](https://github.com/nonergodic/layout/blob/main/src/items.ts){target=\_blank}, which describe individual fields or sets of fields in your data. Each layout item specifies: -### Basic + - **`name`** - name of the field + - **`binary`** - type of data (e.g., `uint`, `bytes`) + - **`size`** - byte length for fixed-size fields within uint and bytes items only -To install the meta package using npm, run the following command in the root directory of your project: +Layout items can represent: -```bash -npm install @wormhole-foundation/sdk -``` + - **Primitive types** - basic data types like unsigned integers (`uint`) or byte arrays (`bytes`) + - **Composite types** - more complex structures, such as arrays or nested objects -This package combines all the individual packages to make setup easier while allowing for tree shaking. +Below is an example of a layout that might be used to serialize a message across the Wormhole protocol: -### Advanced +```typescript +const exampleLayout = [ + { name: 'sourceChain', binary: 'uint', size: 2 }, + { name: 'orderSender', binary: 'bytes', size: 32 }, + { name: 'redeemer', binary: 'bytes', size: 32 }, + { name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 }, +] as const; +``` -Alternatively, you can install a specific set of published packages individually: +In this example: -??? interface "`sdk-base` - exposes constants" + - `sourceChain` is a 2-byte unsigned integer (`uint`) identifying the source blockchain + - `orderSender` is a fixed-length 32-byte array representing the sender's address + - `redeemer` is another 32-byte array used for the redeemer’s address + - `redeemerMessage` is a variable-length byte sequence, with its length specified by a 4-byte integer - ```sh - npm install @wormhole-foundation/sdk-base - ``` +This layout definition ensures that all necessary data fields are consistently encoded and can be correctly interpreted when they are deserialized. -??? interface "`sdk-definitions` - exposes contract interfaces, basic types, and VAA payload definitions" +### Serialization and Deserialization - ```sh - npm install @wormhole-foundation/sdk-definitions - ``` +Serialization converts structured data into binary format; deserialization reverses this, reconstructing the original objects. -??? interface "`sdk-evm` - exposes EVM-specific utilities" +You can serialize data using the `serializeLayout` function: - ```sh - npm install @wormhole-foundation/sdk-evm - ``` +```typescript +const serialized = serializeLayout(fillLayout, exampleFill); +``` -??? interface "`sdk-evm-tokenbridge` - exposes the EVM Token Bridge protocol client" +To deserialize the binary data back into a structured object, use the `deserializeLayout` function: - ```sh - npm install @wormhole-foundation/sdk-evm-tokenbridge - ``` +```typescript +const deserialized = deserializeLayout(fillLayout, serialized); +``` -## Usage +### Custom Conversions -Getting your integration started is simple. First, import Wormhole: +Layouts also allow for custom conversions, which help map complex or custom types (like chain IDs or universal addresses) into a more usable format. This is useful when serializing or deserializing data that doesn’t fit neatly into simple types like integers or byte arrays. -```ts -import { wormhole } from '@wormhole-foundation/sdk'; +For example, consider a custom conversion for a chain ID: -import { Wormhole, amount, signSendWait } from '@wormhole-foundation/sdk'; -import algorand from '@wormhole-foundation/sdk/algorand'; -import aptos from '@wormhole-foundation/sdk/aptos'; -import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; -import evm from '@wormhole-foundation/sdk/evm'; -import solana from '@wormhole-foundation/sdk/solana'; -import sui from '@wormhole-foundation/sdk/sui'; -import { getSigner } from './helpers/index.js'; - -(async function () { - const wh = await wormhole('Testnet', [ - evm, - solana, - aptos, - algorand, - cosmwasm, - sui, - ]); +```typescript +const chainCustomConversion = { + to: (chainId: number) => toChain(chainId), + from: (chain: Chain) => chainToChainId(chain), +} satisfies CustomConversion; +``` - const ctx = wh.getChain('Solana'); +This setup allows Wormhole to convert between human-readable formats and binary-encoded data used in payloads. - const rcv = wh.getChain('Algorand'); +### Error Handling - const sender = await getSigner(ctx); - const receiver = await getSigner(rcv); +The layout system performs error checks during serialization and deserialization. An error is thrown if data is incorrectly sized or in the wrong format. Refer to the below example: - // Get a Token Bridge contract client on the source - const sndTb = await ctx.getTokenBridge(); +```typescript +try { + deserializeLayout(fillLayout, corruptedData); +} catch (error) { + console.error('Error during deserialization:', error.message); +} +``` - // Send the native token of the source chain - const tokenId = Wormhole.tokenId(ctx.chain, 'native'); +## Application of Layouts - // Bigint amount using `amount` module - const amt = amount.units(amount.parse('0.1', ctx.config.nativeTokenDecimals)); +This section will focus on applying the concepts explained earlier through examples. These will help developers better understand how to define layouts, serialize and deserialize data, and use custom conversions where needed. - // Create a transaction stream for transfers - const transfer = sndTb.transfer( - sender.address.address, - receiver.address, - tokenId.address, - amt - ); +### Defining Layouts - // Sign and send the transaction - const txids = await signSendWait(ctx, transfer, sender.signer); - console.log('Sent: ', txids); +To get started with layouts in Wormhole, you need to define your structure. A layout is simply a list of fields (layout items) describing how each data piece will be serialized. - // Get the Wormhole message ID from the transaction - const [whm] = await ctx.parseTransaction(txids[txids.length - 1]!.txid); - console.log('Wormhole Messages: ', whm); +Consider the following layout for a payload: - const vaa = await wh.getVaa( - // Wormhole Message ID - whm!, - // Protocol:Payload name to use for decoding the VAA payload - 'TokenBridge:Transfer', - // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available - 60_000 - ); +```typescript +const exampleLayout = [ + { name: 'sourceChain', binary: 'uint', size: 2 }, + { name: 'orderSender', binary: 'bytes', size: 32 }, + { name: 'redeemer', binary: 'bytes', size: 32 }, + { name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 }, +] as const; +``` - // Now get the token bridge on the redeem side - const rcvTb = await rcv.getTokenBridge(); +In this example: - // Create a transaction stream for redeeming - const redeem = rcvTb.redeem(receiver.address.address, vaa!); + - `sourceChain` is an unsigned integer (uint) of 2 bytes + - `orderSender` is a 32-byte fixed-length byte array + - `redeemer` is another 32-byte byte array + - `redeemerMessage` is a length-prefixed byte array, with the length specified by a 4-byte integer - // Sign and send the transaction - const rcvTxids = await signSendWait(rcv, redeem, receiver.signer); - console.log('Sent: ', rcvTxids); +### Serialize Data - // Now check if the transfer is completed according to - // the destination token bridge - const finished = await rcvTb.isTransferCompleted(vaa!); - console.log('Transfer completed: ', finished); -})(); -``` +Once a layout is defined, the next step is to serialize data according to that structure. You can accomplish this using the `serializeLayout` function from the Wormhole SDK. -Then, import each of the ecosystem [platforms](#platforms) that you wish to support: +```typescript +const examplePayload = { + sourceChain: 6, + orderSender: new Uint8Array(32), + redeemer: new Uint8Array(32), + redeemerMessage: new Uint8Array([0x01, 0x02, 0x03]), +}; -```ts -import aptos from '@wormhole-foundation/sdk/aptos'; -import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; -import evm from '@wormhole-foundation/sdk/evm'; -import solana from '@wormhole-foundation/sdk/solana'; -import sui from '@wormhole-foundation/sdk/sui'; +const serializedData = serializeLayout(exampleLayout, examplePayload); ``` +This takes the data structure (`examplePayload`) and serializes it according to the rules defined in the layout (`exampleLayout`). The result is a `Uint8Array` representing the serialized binary data. + +### Deserialize Data -To make the [platform](#platforms) modules available for use, pass them to the Wormhole constructor: +Deserialization is the reverse of serialization. Given a serialized `Uint8Array`, we can convert it back into its original structure using the `deserializeLayout` function. -```ts -evm, - solana, - aptos, - algorand, - cosmwasm, - sui, - ]); +```typescript +const deserializedPayload = deserializeLayout(exampleLayout, serializedData); ``` -With a configured Wormhole object, you can do things like parse addresses for the provided platforms, get a [`ChainContext`](#chain-context) object, or fetch VAAs. +This will output the structured object, making it easy to work with data transmitted or received from another chain. -```ts +### Handling Variable-Length Fields -``` +One relevant aspect of Wormhole SDK's layout system is the ability to handle variable-length fields, such as arrays and length-prefixed byte sequences. -You can retrieve a VAA as follows. In this example, a timeout of `60,000` milliseconds is used. The amount of time required for the VAA to become available will vary by network. +For instance, if you want to serialize or deserialize a message where the length of the content isn't known beforehand, you can define a layout item with a `lengthSize` field. -```ts -// Wormhole Message ID - whm!, - // Protocol:Payload name to use for decoding the VAA payload - 'TokenBridge:Transfer', - // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available - 60_000 - ); +```typescript +{ name: 'message', binary: 'bytes', lengthSize: 4 } ``` -??? code "View the complete script" - ```ts - import { wormhole } from '@wormhole-foundation/sdk'; +This tells the SDK to read or write the message's length (in 4 bytes) and then handle the content. -import { Wormhole, amount, signSendWait } from '@wormhole-foundation/sdk'; -import algorand from '@wormhole-foundation/sdk/algorand'; -import aptos from '@wormhole-foundation/sdk/aptos'; -import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; -import evm from '@wormhole-foundation/sdk/evm'; -import solana from '@wormhole-foundation/sdk/solana'; -import sui from '@wormhole-foundation/sdk/sui'; -import { getSigner } from './helpers/index.js'; +## Nested Layouts and Strong Typing -(async function () { - const wh = await wormhole('Testnet', [ - evm, - solana, - aptos, - algorand, - cosmwasm, - sui, - ]); +The Wormhole SDK simplifies handling complex structures with nested layouts and strong typing. Nested layouts clearly represent hierarchical data, while strong typing ensures data consistency and catches errors during development. - const ctx = wh.getChain('Solana'); +### Nested Layout - const rcv = wh.getChain('Algorand'); +In complex protocols, layouts can contain nested structures. Nested layouts become relevant here, allowing you to represent hierarchical data (such as transactions or multi-part messages) in a structured format. - const sender = await getSigner(ctx); - const receiver = await getSigner(rcv); +Refer to the following nested layout where a message contains nested fields: - // Get a Token Bridge contract client on the source - const sndTb = await ctx.getTokenBridge(); +```typescript +const nestedLayout = [ + { + name: 'source', + binary: 'bytes', + layout: [ + { name: 'chainId', binary: 'uint', size: 2 }, + { name: 'sender', binary: 'bytes', size: 32 }, + ], + }, + { + name: 'redeemer', + binary: 'bytes', + layout: [ + { name: 'address', binary: 'bytes', size: 32 }, + { name: 'message', binary: 'bytes', lengthSize: 4 }, + ], + }, +] as const satisfies Layout; +``` - // Send the native token of the source chain - const tokenId = Wormhole.tokenId(ctx.chain, 'native'); +In this layout: - // Bigint amount using `amount` module - const amt = amount.units(amount.parse('0.1', ctx.config.nativeTokenDecimals)); + - `source` is an object with two fields: `chainId` and `sender` + - `redeemer` is another object with two fields: `address` and a length-prefixed `message` - // Create a transaction stream for transfers - const transfer = sndTb.transfer( - sender.address.address, - receiver.address, - tokenId.address, - amt - ); +### Strong Typing - // Sign and send the transaction - const txids = await signSendWait(ctx, transfer, sender.signer); - console.log('Sent: ', txids); +One of the benefits of using the Wormhole SDK in TypeScript is its support for strong typing. This ensures that serialized and deserialized data conform to expected structures, reducing errors during development by enforcing type checks at compile time. - // Get the Wormhole message ID from the transaction - const [whm] = await ctx.parseTransaction(txids[txids.length - 1]!.txid); - console.log('Wormhole Messages: ', whm); +Using TypeScript, the `LayoutToType` utility provided by the SDK automatically generates a strongly typed structure based on the layout: - const vaa = await wh.getVaa( - // Wormhole Message ID - whm!, - // Protocol:Payload name to use for decoding the VAA payload - 'TokenBridge:Transfer', - // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available - 60_000 - ); +```typescript +type NestedMessage = LayoutToType; +``` - // Now get the token bridge on the redeem side - const rcvTb = await rcv.getTokenBridge(); +This ensures that when you serialize or deserialize data, it matches the expected structure. - // Create a transaction stream for redeeming - const redeem = rcvTb.redeem(receiver.address.address, vaa!); +```typescript +const message: NestedMessage = { + source: { + chainId: 6, + sender: new Uint8Array(32), + }, + redeemer: { + address: new Uint8Array(32), + message: new Uint8Array([0x01, 0x02, 0x03]), + }, +}; +``` - // Sign and send the transaction - const rcvTxids = await signSendWait(rcv, redeem, receiver.signer); - console.log('Sent: ', rcvTxids); +Attempting to assign data of incorrect types will result in a compile-time error. The Wormhole SDK's layout system enforces strong types, reducing runtime errors and improving code reliability. - // Now check if the transfer is completed according to - // the destination token bridge - const finished = await rcvTb.isTransferCompleted(vaa!); - console.log('Transfer completed: ', finished); -})(); - ``` +### Serialization and Deserialization with Nested Layouts -Optionally, you can override the default configuration with a partial `WormholeConfig` object to specify particular fields, such as a different RPC endpoint. +You can serialize and deserialize nested structures in the same way as simpler layouts: -```ts -const wh = await wormhole('Testnet', [solana], { - chains: { - Solana: { - contracts: { - coreBridge: '11111111111111111111111111111', - }, - rpc: 'https://api.devnet.solana.com', - }, - }, -}); +```typescript +const serializedNested = serializeLayout(nestedLayout, message); +const deserializedNested = deserializeLayout(nestedLayout, serializedNested); ``` -??? code "View the complete script" - ```ts - import { wormhole } from '@wormhole-foundation/sdk'; -import solana from '@wormhole-foundation/sdk/solana'; -(async function () { - const wh = await wormhole('Testnet', [solana], { - chains: { - Solana: { - contracts: { - coreBridge: '11111111111111111111111111111', - }, - rpc: 'https://api.devnet.solana.com', - }, - }, - }); - console.log(wh.config.chains.Solana); -})(); - ``` +Strong typing in TypeScript ensures that the message object conforms to the nested layout structure. This reduces the risk of data inconsistency during cross-chain communication. -## Concepts +## Commonly Used Layouts -Understanding several higher-level Wormhole concepts and how the SDK abstracts them away will help you use the tools most effectively. The following sections will introduce and discuss the concepts of platforms, chain contexts, addresses, signers, and protocols, how they are used in the Wormhole context, and how the SDK helps ease development in each conceptual area. +The Wormhole SDK includes predefined layouts frequently used in cross-chain messaging. These layouts are optimized for standard fields such as chain IDs, addresses, and signatures. You can explore the complete set of predefined layouts in the [`layout-items` directory](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/layout-items){target=\_blank} of the Wormhole SDK. -### Platforms +### Chain ID Layouts -While every chain has unique attributes, chains from the same platform typically have standard functionalities they share. The SDK includes `Platform` modules, which create a standardized interface for interacting with the chains of a supported platform. The contents of a module vary by platform but can include: +Chain ID layouts in the Wormhole SDK derive from a common foundation: `chainItemBase`. This structure defines the binary representation of a chain ID as a 2-byte unsigned integer, ensuring consistency across serialization and deserialization processes. -- Protocols, such as [Wormhole core](#wormhole-core), preconfigured to suit the selected platform -- Definitions and configurations for types, signers, addresses, and chains -- Helpers configured for dealing with unsigned transactions on the selected platform +#### Base Structure -These modules also import and expose essential functions and define types or constants from the chain's native ecosystem to reduce the dependencies needed to interact with a chain using Wormhole. Rather than installing the entire native package for each desired platform, you can install a targeted package of standardized functions and definitions essential to connecting with Wormhole, keeping project dependencies as slim as possible. +This simple structure is the blueprint for more specific layouts by standardizing the binary format and size. +```typescript +const chainItemBase = { binary: 'uint', size: 2 } as const; +``` -Wormhole currently supports the following platforms: +#### Dynamic Chain ID Layout -- EVM -- Solana -- Cosmos -- Sui -- Aptos -- Algorand +The dynamic chain ID layout, [`chainItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/chain.ts#L13-L40){target=\_blank}, extends `chainItemBase` by adding flexible custom conversion logic. It enables runtime validation of chain IDs, supports optional null values, and restricts chain IDs to a predefined set when needed. -See the [Platforms folder of the TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/platforms){target=\_blank} for an up-to-date list of the platforms supported by the Wormhole TypeScript SDK. +```typescript +export const chainItem = < + const C extends readonly Chain[] = typeof chains, + const N extends boolean = false, +>(opts?: { + allowedChains?: C; + allowNull?: N; +}) => + ({ + ...chainItemBase, // Builds on the base structure + custom: { + to: (val: number): AllowNull => { ... }, + from: (val: AllowNull): number => { ... }, + }, + }); +``` -### Chain Context +This layout is versatile. It allows the serialization of human-readable chain names (e.g., `Ethereum`) to numeric IDs (e.g., `1`) and vice versa. This is particularly useful when working with dynamic configurations or protocols supporting multiple chains. -The `definitions` package of the SDK includes the `ChainContext` class, which creates an interface for working with connected chains in a standardized way. This class contains the network, chain, and platform configurations for connected chains and cached RPC and protocol clients. The `ChainContext` class also exposes chain-specific methods and utilities. Much of the functionality comes from the `Platform` methods but some specific chains may have overridden methods via the context. This is also where the `Network`, `Chain`, and `Platform` type parameters which are used throughout the package are defined. +#### Fixed Chain ID Layout -```ts -const srcChain = wh.getChain(senderAddress.chain); -const dstChain = wh.getChain(receiverAddress.chain); +The fixed chain ID layout, [`fixedChainItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/chain.ts#L42-L49){target=\_blank}, is more rigid. It also extends `chainItemBase`, but the custom field is hardcoded for a single chain. This eliminates runtime validation and enforces strict adherence to a specific chain. -const tb = await srcChain.getTokenBridge(); // => TokenBridge<'Evm'> -srcChain.getRpcClient(); // => RpcClient<'Evm'> +```typescript +export const fixedChainItem = (chain: C) => ({ + ...chainItemBase, // Builds on the base structure + custom: { + to: chain, + from: chainToChainId(chain), + }, +}); ``` -### Addresses +This layout allows developers to efficiently serialize and deserialize messages involving a single, fixed chain ID. -The SDK uses the `UniversalAddress` class to implement the `Address` interface, which all address types must implement. Addresses from various networks are parsed into their byte representation and modified as needed to ensure they are exactly 32 bytes long. Each platform also has an address type that understands the native address formats, referred to as `NativeAddress.` These abstractions allow you to work with addresses consistently regardless of the underlying chain. +### Address Layout -```ts -// It's possible to convert a string address to its Native address -const ethAddr: NativeAddress<'Evm'> = toNative('Ethereum', '0xbeef...'); +The Wormhole SDK uses a Universal Address Layout to serialize and deserialize blockchain addresses into a standardized format. This layout ensures that addresses are always represented as fixed 32-byte binary values, enabling seamless cross-chain communication. -// A common type in the SDK is the `ChainAddress` which provides -// the additional context of the `Chain` this address is relevant for -const senderAddress: ChainAddress = Wormhole.chainAddress( - 'Ethereum', - '0xbeef...' -); -const receiverAddress: ChainAddress = Wormhole.chainAddress( - 'Solana', - 'Sol1111...' -); +#### Base Structure -// Convert the ChainAddress back to its canonical string address format -const strAddress = Wormhole.canonicalAddress(senderAddress); // => '0xbeef...' +The [`universalAddressItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/universalAddress.ts#L7-L14){target=\_blank} defines the layout for addresses. It uses the binary type bytes and enforces a fixed size of 32 bytes for consistency. -// Or if the ethAddr above is for an emitter and you need the UniversalAddress -const emitterAddr = ethAddr.toUniversalAddress().toString(); +```typescript +export const universalAddressItem = { + binary: 'bytes', + size: 32, + custom: { + to: (val: Uint8Array): UniversalAddress => new UniversalAddress(val), + from: (val: UniversalAddress): Uint8Array => val.toUint8Array(), + } satisfies CustomConversion, +} as const satisfies LayoutItem; ``` -### Tokens +This layout ensures consistent address handling by defining the following: -Similar to the `ChainAddress` type, the `TokenId` type provides the chain and address of a given token. The following snippet introduces `TokenId`, a way to uniquely identify any token, whether it's a standard token or a blockchain's native currency (like ETH for Ethereum). + - **Serialization** - converts a high-level `UniversalAddress` object into raw binary (32 bytes) for efficient storage or transmission + - **Deserialization** - converts raw binary back into a `UniversalAddress` object, enabling further interaction in a human-readable or programmatic format -Wormhole uses their contract address to create a `TokenId` for standard tokens. For native currencies, Wormhole uses the keyword `native` instead of an address. This makes it easy to work with any type of token consistently. +### Signature Layout -Finally, the snippet demonstrates how to convert a `TokenId` back into a regular address format when needed. +In the Wormhole SDK, the Signature Layout defines how to serialize and deserialize cryptographic signatures. These signatures verify message authenticity and ensure data integrity, particularly in Guardian-signed VAAs. -```ts -const sourceToken: TokenId = Wormhole.tokenId('Ethereum', '0xbeef...'); +#### Base Structure -const gasToken: TokenId = Wormhole.tokenId('Ethereum', 'native'); +The `signatureLayout` specifies the binary structure of a secp256k1 signature. It divides the signature into three components: -const strAddress = Wormhole.canonicalAddress(senderAddress); // => '0xbeef...' +```typescript +const signatureLayout = [ + { name: 'r', binary: 'uint', size: 32 }, + { name: 's', binary: 'uint', size: 32 }, + { name: 'v', binary: 'uint', size: 1 }, +] as const satisfies Layout; ``` -### Signers +This layout provides a clear binary format for the secp256k1 signature, making it efficient to process within the Wormhole protocol. -Certain methods of signing transactions require a `Signer` interface in the SDK. Depending on the specific requirements, this interface can be fulfilled by either a `SignOnlySigner` or a `SignAndSendSigner`. A signer can be created by wrapping an offline or web wallet. +#### Layout with Custom Conversion -A `SignOnlySigner` is used when the signer isn't connected to the network or prefers not to broadcast transactions themselves. It accepts an array of unsigned transactions and returns an array of signed and serialized transactions. Before signing, the transactions may be inspected or altered. It's important to note that the serialization process is chain-specific. Refer to the testing signers (e.g., [EVM](https://github.com/wormhole-foundation/connect-sdk/blob/main/platforms/evm/src/signer.ts){target=\_blank} or [Solana](https://github.com/wormhole-foundation/connect-sdk/blob/main/platforms/solana/src/signer.ts){target=\_blank}) for an example of how to implement a signer for a specific chain or platform. +The [`signatureItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/signature.ts#L15-L22){target=\_blank} builds upon the `signatureLayout` by adding custom conversion logic. This conversion transforms raw binary data into a high-level `Signature` object and vice versa. -Conversely, a `SignAndSendSigner` is appropriate when the signer is connected to the network and intends to broadcast the transactions. This type of signer also accepts an array of unsigned transactions but returns an array of transaction IDs corresponding to the order of the unsigned transactions. +```typescript +export const signatureItem = { + binary: 'bytes', + layout: signatureLayout, + custom: { + to: (val: LayoutToType) => + new Signature(val.r, val.s, val.v), + from: (val: Signature) => ({ r: val.r, s: val.s, v: val.v }), + } satisfies CustomConversion, Signature>, +} as const satisfies BytesLayoutItem; +``` -```ts -export type Signer = SignOnlySigner | SignAndSendSigner; +The `custom` field ensures seamless integration of raw binary data with the `Signature` class, encapsulating signature-specific logic. -export interface SignOnlySigner { - chain(): ChainName; - address(): string; - // Accept an array of unsigned transactions and return - // an array of signed and serialized transactions. - // The transactions may be inspected or altered before - // signing. - sign(tx: UnsignedTransaction[]): Promise; -} +## Advanced Use Cases -export interface SignAndSendSigner { - chain(): ChainName; - address(): string; - // Accept an array of unsigned transactions and return - // an array of transaction ids in the same order as the - // unsignedTransactions array. - signAndSend(tx: UnsignedTransaction[]): Promise; -} -``` +The Wormhole SDK’s layout system is designed to handle various data structures and serialization needs. This section will explore more advanced use cases, such as handling conditional data structures, fixed conversions, and optimizing serialization performance. -#### Set Up a Signer with Ethers.js +???- code "Switch Statements for Conditional Layouts" -To sign transactions programmatically with the Wormhole SDK, you can use Ethers.js to manage private keys and handle signing. Here's an example of setting up a signer using Ethers.js: + In some cases, the structure of serialized data might change based on a specific field, such as a payload ID. The switch layout type conditionally defines layouts based on a value. -```javascript -import { ethers } from 'ethers'; + For example, different message types can be identified using a payload ID, and the layout for each message can be determined at runtime: -// Update the following variables -const rpcUrl = 'INSERT_RPC_URL'; -const privateKey = 'INSERT_PRIVATE_KEY'; -const toAddress = 'INSERT_RECIPIENT_ADDRESS'; + ```typescript + const switchLayout = { + binary: 'switch', + idSize: 1, // size of the payload ID + idTag: 'messageType', // tag to identify the type of message + layouts: [ + [[1, 'messageType1'], fillLayout], // layout for type 1 + [[2, 'messageType2'], fastFillLayout], // layout for type 2 + ], +} as const satisfies Layout; + ``` -// Set up a provider and signer -const provider = new ethers.JsonRpcProvider(rpcUrl); -const signer = new ethers.Wallet(privateKey, provider); + The switch statement helps developers parse multiple payload types using the same structure, depending on a control field like an ID. -// Example: Signing and sending a transaction -async function sendTransaction() { - const tx = { - to: toAddress, - value: ethers.parseUnits('0.1'), // Sending 0.1 ETH - gasPrice: await provider.getGasPrice(), - gasLimit: ethers.toBeHex(21000), - }; +???- code "Fixed Conversions and Omitted Fields" - const transaction = await signer.sendTransaction(tx); - console.log('Transaction hash:', transaction.hash); -} -sendTransaction(); -``` + Fixed conversions and omitted fields allow developers to handle known, static data without including it in every serialization or deserialization operation. For instance, when specific fields in a layout always hold a constant value, they can be omitted from the deserialized object. - - **`provider`** - responsible for connecting to the Ethereum network (or any EVM-compatible network). It acts as a bridge between your application and the blockchain, allowing you to fetch data, check the state of the blockchain, and submit transactions + **Example: Fixed Conversion** - - **`signer`** - represents the account that will sign the transaction. In this case, you’re creating a signer using the private key associated with the account. The signer is responsible for authorizing transactions by digitally signing them with the private key + In some cases, a field may always contain a predefined value. The layout system supports fixed conversions, allowing developers to “hard-code” these values: - - **`Wallet`** - combines both the provider (for blockchain interaction) and the signer (for transaction authorization), allowing you to sign and send transactions programmatically + ```typescript + const fixedConversionLayout = { + binary: 'uint', + size: 2, + custom: { + to: 'Ethereum', + from: chainToChainId('Ethereum'), + }, +} as const satisfies Layout; + ``` -These components work together to create, sign, and submit a transaction to the blockchain. + **Example: Omitted Fields** -???- tip "Managing Private Keys Securely" - Handling private keys is unavoidable, so it’s crucial to manage them securely. Here are some best practices: + Omitted fields are useful for handling padding or reserved fields that do not carry meaningful information and can safely be excluded from the deserialized output: - - **Use environment variables** - avoid hardcoding private keys in your code. Use environment variables or secret management tools to inject private keys securely - - **Hardware wallets** - for production environments, consider integrating hardware wallets to keep private keys secure while allowing programmatic access through the SDK - -### Protocols + ```typescript + const omittedFieldLayout = [ + { name: 'reserved', binary: 'uint', size: 2, omit: true }, +] as const satisfies Layout; + ``` -While Wormhole is a Generic Message Passing (GMP) protocol, several protocols have been built to provide specific functionality. If available, each protocol will have a platform-specific implementation. These implementations provide methods to generate transactions or read state from the contract on-chain. + In this example, `reserved` is a padding field with a fixed, non-dynamic value that serves no functional purpose. It is omitted from the deserialized result but still considered during serialization to maintain the correct binary format. -#### Wormhole Core + Only fields with a fixed, known value, such as padding or reserved fields, should be marked as `omit: true`. Fields with meaningful or dynamic information, such as `sourceChain` or `version`, must remain in the deserialized structure to ensure data integrity and allow seamless round-trip conversions between serialized and deserialized representations. -The core protocol underlies all Wormhole activity. This protocol is responsible for emitting the message containing the information necessary to perform bridging, including the [emitter address](https://docs.wormhole.com/wormhole/reference/glossary#emitter){target=\_blank}, the [sequence number](https://docs.wormhole.com/wormhole/reference/glossary#sequence){target=\_blank} for the message, and the payload of the message itself. +## Integration with Wormhole Protocol -The following example demonstrates sending and verifying a message using the Wormhole Core protocol on Solana. +The layout system facilitates seamless interaction with the Wormhole protocol, mainly when dealing with VAAs. These cross-chain messages must be serialized and deserialized to ensure they can be transmitted and processed accurately across different chains. -First, initialize a Wormhole instance for the Testnet environment, specifically for the Solana chain. Then, obtain a signer and its associated address, which will be used to sign transactions. +### VAAs and Layouts -Next, get a reference to the core messaging bridge, which is the main interface for interacting with Wormhole's cross-chain messaging capabilities. -The code then prepares a message for publication. This message includes: +VAAs are the backbone of Wormhole’s cross-chain communication. Each VAA is a signed message encapsulating important information such as the originating chain, the emitter address, a sequence number, and Guardian signatures. The Wormhole SDK leverages its layout system to define, serialize, and deserialize VAAs, ensuring data integrity and chain compatibility. -- The sender's address -- The message payload (in this case, the encoded string `lol`) -- A nonce (set to `0` here, but can be any user-defined value to uniquely identify the message) -- A consistency level (set to `0`, which determines the finality requirements for the message) +#### Base VAA Structure -After preparing the message, the next steps are to generate, sign, and send the transaction or transactions required to publish the message on the Solana blockchain. Once the transaction is confirmed, the Wormhole message ID is extracted from the transaction logs. This ID is crucial for tracking the message across chains. +The Wormhole SDK organizes the VAA structure into three key components: -The code then waits for the Wormhole network to process and sign the message, turning it into a Verified Action Approval (VAA). This VAA is retrieved in a `Uint8Array` format, with a timeout of 60 seconds. + - [**Header**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L37-L41){target=\_blank} - contains metadata such as the Guardian set index and an array of Guardian signatures + - [**Envelope**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} - includes chain-specific details such as the emitter chain, address, sequence, and consistency level + - **Payload** - provides application-specific data, such as the actual message or operation being performed -Lastly, the code will demonstrate how to verify the message on the receiving end. A verification transaction is prepared using the original sender's address and the VAA, and finally, this transaction is signed and sent. +**Header layout:** -???+ code "View the complete script" - ```ts - import { encoding, signSendWait, wormhole } from '@wormhole-foundation/sdk'; -import { getSigner } from './helpers/index.js'; -import solana from '@wormhole-foundation/sdk/solana'; -import evm from '@wormhole-foundation/sdk/evm'; +```typescript +const guardianSignatureLayout = [ + { name: 'guardianIndex', binary: 'uint', size: 1 }, + { name: 'signature', ...signatureItem }, +] as const satisfies Layout; -(async function () { - const wh = await wormhole('Testnet', [solana, evm]); +export const headerLayout = [ + { name: 'version', binary: 'uint', size: 1, custom: 1, omit: true }, + { name: 'guardianSet', ...guardianSetItem }, + { + name: 'signatures', + binary: 'array', + lengthSize: 1, + layout: guardianSignatureLayout, + }, +] as const satisfies Layout; +``` - const chain = wh.getChain('Avalanche'); - const { signer, address } = await getSigner(chain); +The header defines metadata for validating and processing the VAA, such as the Guardian set index and signatures. Each signature is represented using the `signatureItem` layout, ensuring consistency and compatibility across different platforms. - // Get a reference to the core messaging bridge - const coreBridge = await chain.getWormholeCore(); +!!! note "Signature Standard Compliance" - // Generate transactions, sign and send them - const publishTxs = coreBridge.publishMessage( - // Address of sender (emitter in VAA) - address.address, - // Message to send (payload in VAA) - encoding.bytes.encode('lol'), - // Nonce (user defined, no requirement for a specific value, useful to provide a unique identifier for the message) - 0, - // ConsistencyLevel (ie finality of the message, see wormhole docs for more) - 0 - ); - // Send the transaction(s) to publish the message - const txids = await signSendWait(chain, publishTxs, signer); + The signature field uses the `signatureItem` layout, which is explicitly defined as 65 bytes. This layout is aligned with widely used standards such as EIP-2612 and Uniswap's Permit2, ensuring compatibility with cryptographic protocols and applications. - // Take the last txid in case multiple were sent - // The last one should be the one containing the relevant - // event or log info - const txid = txids[txids.length - 1]; +**Envelope layout:** - // Grab the wormhole message id from the transaction logs or storage - const [whm] = await chain.parseTransaction(txid!.txid); +```typescript +export const envelopeLayout = [ + { name: 'timestamp', binary: 'uint', size: 4 }, + { name: 'nonce', binary: 'uint', size: 4 }, + { name: 'emitterChain', ...chainItem() }, + { name: 'emitterAddress', ...universalAddressItem }, + { name: 'sequence', ...sequenceItem }, + { name: 'consistencyLevel', binary: 'uint', size: 1 }, +] as const satisfies Layout; +``` - // Wait for the vaa to be signed and available with a timeout - const vaa = await wh.getVaa(whm!, 'Uint8Array', 60_000); - console.log(vaa); +The envelope encapsulates the VAA's core message data, including chain-specific information like the emitter address and sequence number. This structured layout ensures that the VAA can be securely transmitted across chains. - // Note: calling verifyMessage manually is typically not a useful thing to do - // As the VAA is typically submitted to the counterpart contract for - // A given protocol and the counterpart contract will verify the VAA - // This is simply for demo purposes - const verifyTxs = coreBridge.verifyMessage(address.address, vaa!); - console.log(await signSendWait(chain, verifyTxs, signer)); -})(); - ``` +**Payload Layout:** -The payload contains the information necessary to perform whatever action is required based on the protocol that uses it. +The Payload contains the user-defined data specific to the application or protocol, such as a token transfer message, governance action, or other cross-chain operation. The layout of the payload is dynamic and depends on the payload type, identified by the `payloadLiteral` field. -#### Token Bridge +```typescript +const examplePayloadLayout = [ + { name: 'type', binary: 'uint', size: 1 }, + { name: 'data', binary: 'bytes', lengthSize: 2 }, +] as const satisfies Layout; +``` -The most familiar protocol built on Wormhole is the Token Bridge. Every chain has a `TokenBridge` protocol client that provides a consistent interface for interacting with the Token Bridge, which includes methods to generate the transactions required to transfer tokens and methods to generate and redeem attestations. `WormholeTransfer` abstractions are the recommended way to interact with these protocols, but it is possible to use them directly. +This example demonstrates a payload containing: -```ts -import { signSendWait } from '@wormhole-foundation/sdk'; + - A type field specifying the operation type (e.g., transfer or governance action) + - A data field that is length-prefixed and can store operation-specific information -const tb = await srcChain.getTokenBridge(); +Dynamic payload layouts are selected at runtime using the `payloadLiteral` field, which maps to a predefined layout in the Wormhole SDK. -const token = '0xdeadbeef...'; -const txGenerator = tb.createAttestation(token); -const txids = await signSendWait(srcChain, txGenerator, src.signer); -``` +**Combined Base Layout:** -Supported protocols are defined in the [definitions module](https://github.com/wormhole-foundation/connect-sdk/tree/main/core/definitions/src/protocols){target=\_blank}. +The base VAA layout combines the header, envelope, and dynamically selected payload layout: -## Transfers +```typescript +export const baseLayout = [...headerLayout, ...envelopeLayout] as const; +``` -While using the [`ChainContext`](#chain-context) and [`Protocol`](#protocols) clients directly is possible, the SDK provides some helpful abstractions for transferring tokens. +At runtime, the payload layout is appended to the `baseLayout` to form the complete structure. -The `WormholeTransfer` interface provides a convenient abstraction to encapsulate the steps involved in a cross-chain transfer. +#### Serializing VAA Data -### Token Transfers +The Wormhole SDK provides the [`serialize`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/functions.ts#L48-L54){target=\_blank} function to serialize a VAA message. This function combines the base layout (header and envelope) with the appropriate payload layout, ensuring the message’s format is correct for transmission across chains. -Performing a token transfer is trivial for any source and destination chains. You can create a new `Wormhole` object to make objects like `TokenTransfer` and `CircleTransfer`, to transfer tokens between chains. +```typescript +import { serialize } from '@wormhole-foundation/sdk-core/vaa/functions'; -The following example demonstrates the process of initiating and completing a token transfer. It starts by creating a `TokenTransfer` object, which tracks the transfer's state throughout its lifecycle. The code then obtains a quote for the transfer, ensuring the amount is sufficient to cover fees and any requested native gas. +const vaaData = { + guardianSet: 1, + signatures: [{ guardianIndex: 0, signature: new Uint8Array(65).fill(0) }], + timestamp: 1633000000, + nonce: 42, + emitterChain: 2, // Ethereum + emitterAddress: new Uint8Array(32).fill(0), + sequence: BigInt(1), + consistencyLevel: 1, + payloadLiteral: 'SomePayloadType', + payload: { key: 'value' }, +}; -The transfer process is divided into three main steps: +const serializedVAA = serialize(vaaData); +``` -1. Initiating the transfer on the source chain -2. Waiting for the transfer to be attested (if not automatic) -3. Completing the transfer on the destination chain +???- note "How does it work?" -For automatic transfers, the process ends after initiation. The code waits for the transfer to be attested for manual transfers and then completes it on the destination chain. + Internally, the serialize function dynamically combines the `baseLayout` (header and envelope) with the payload layout defined by the `payloadLiteral`. The complete layout is then passed to the `serializeLayout` function, which converts the data into binary format. -```ts -const xfer = await wh.tokenTransfer( - route.token, - route.amount, - route.source.address, - route.destination.address, - route.delivery?.automatic ?? false, - route.payload, - route.delivery?.nativeGas - ); + ```typescript + const layout = [ + ...baseLayout, // Header and envelope layout + payloadLiteralToPayloadItemLayout(vaa.payloadLiteral), // Payload layout +] as const; - const quote = await TokenTransfer.quoteTransfer( - wh, - route.source.chain, - route.destination.chain, - xfer.transfer - ); - console.log(quote); +return serializeLayout(layout, vaa as LayoutToType); + ``` - if (xfer.transfer.automatic && quote.destinationToken.amount < 0) - throw 'The amount requested is too low to cover the fee and any native gas requested.'; +#### Deserializing VAA Data - // 1) Submit the transactions to the source chain, passing a signer to sign any txns - console.log('Starting transfer'); - const srcTxids = await xfer.initiateTransfer(route.source.signer); - console.log(`Started transfer: `, srcTxids); +The Wormhole SDK provides the [`deserialize`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/functions.ts#L162-L200){target=\_blank} function to parse a VAA from its binary format back into a structured object. This function uses the `baseLayout` and payload discriminator logic to ensure the VAA is correctly interpreted. - // If automatic, we're done - if (route.delivery?.automatic) return xfer; +```typescript +import { deserialize } from '@wormhole-foundation/sdk-core/vaa/functions'; - // 2) Wait for the VAA to be signed and ready (not required for auto transfer) - console.log('Getting Attestation'); - const attestIds = await xfer.fetchAttestation(60_000); - console.log(`Got Attestation: `, attestIds); +const serializedVAA = new Uint8Array([ + /* Serialized VAA binary data */ +]); - // 3) Redeem the VAA on the dest chain - console.log('Completing Transfer'); - const destTxids = await xfer.completeTransfer(route.destination.signer); - console.log(`Completed Transfer: `, destTxids); +const vaaPayloadType = 'SomePayloadType'; // The payload type expected for this VAA +const deserializedVAA = deserialize(vaaPayloadType, serializedVAA); ``` -??? code "View the complete script" - ```ts hl_lines="122" - import { - Chain, - Network, - TokenId, - TokenTransfer, - Wormhole, - amount, - isTokenId, - wormhole, -} from '@wormhole-foundation/sdk'; - -import evm from '@wormhole-foundation/sdk/evm'; -import solana from '@wormhole-foundation/sdk/solana'; -import { SignerStuff, getSigner, waitLog } from './helpers/index.js'; +???- note "How does it work?" -(async function () { - // Init Wormhole object, passing config for which network - // to use (e.g. Mainnet/Testnet) and what Platforms to support - const wh = await wormhole('Testnet', [evm, solana]); + Internally, the `deserialize` function uses the `baseLayout` (header and envelope) to parse the main VAA structure. It then identifies the appropriate payload layout using the provided payload type or discriminator. - // Grab chain Contexts -- these hold a reference to a cached rpc client - const sendChain = wh.getChain('Avalanche'); - const rcvChain = wh.getChain('Solana'); + ```typescript + const [header, envelopeOffset] = deserializeLayout(headerLayout, data, { + consumeAll: false, +}); - // Shortcut to allow transferring native gas token - const token = Wormhole.tokenId(sendChain.chain, 'native'); +const [envelope, payloadOffset] = deserializeLayout(envelopeLayout, data, { + offset: envelopeOffset, + consumeAll: false, +}); - // A TokenId is just a `{chain, address}` pair and an alias for ChainAddress - // The `address` field must be a parsed address. - // You can get a TokenId (or ChainAddress) prepared for you - // by calling the static `chainAddress` method on the Wormhole class. - // e.g. - // wAvax on Solana - // const token = Wormhole.tokenId("Solana", "3Ftc5hTz9sG4huk79onufGiebJNDMZNL8HYgdMJ9E7JR"); - // wSol on Avax - // const token = Wormhole.tokenId("Avalanche", "0xb10563644a6AB8948ee6d7f5b0a1fb15AaEa1E03"); - - // Normalized given token decimals later but can just pass bigints as base units - // Note: The Token bridge will dedust past 8 decimals - // This means any amount specified past that point will be returned - // To the caller - const amt = '0.05'; +const [payloadLiteral, payload] = + typeof payloadDet === 'string' + ? [ + payloadDet as PayloadLiteral, + deserializePayload(payloadDet as PayloadLiteral, data, payloadOffset), + ] + : deserializePayload( + payloadDet as PayloadDiscriminator, + data, + payloadOffset + ); - // With automatic set to true, perform an automatic transfer. This will invoke a relayer - // Contract intermediary that knows to pick up the transfers - // With automatic set to false, perform a manual transfer from source to destination - // Of the token - // On the destination side, a wrapped version of the token will be minted - // To the address specified in the transfer VAA - const automatic = false; +return { + ...header, + ...envelope, + payloadLiteral, + payload, +} satisfies VAA; + ``` - // The Wormhole relayer has the ability to deliver some native gas funds to the destination account - // The amount specified for native gas will be swapped for the native gas token according - // To the swap rate provided by the contract, denominated in native gas tokens - const nativeGas = automatic ? '0.01' : undefined; +### Registering Custom Payloads - // Get signer from local key but anything that implements - // Signer interface (e.g. wrapper around web wallet) should work - const source = await getSigner(sendChain); - const destination = await getSigner(rcvChain); +In the Wormhole SDK, payloads rely on layouts to define their binary structure, ensuring consistency and type safety across protocols. Custom payloads extend this functionality, allowing developers to handle protocol-specific features or unique use cases. - // Used to normalize the amount to account for the tokens decimals - const decimals = isTokenId(token) - ? Number(await wh.getDecimals(token.chain, token.address)) - : sendChain.config.nativeTokenDecimals; +To learn how to define and register payloads using layouts, refer to the [Building Protocols and Payloads](/docs/build/toolkit/typescript-sdk/protocols-payloads/){target=\_blank} page for a detailed guide. - // Set this to true if you want to perform a round trip transfer - const roundTrip: boolean = false; +## Common Pitfalls & Best Practices - // Set this to the transfer txid of the initiating transaction to recover a token transfer - // And attempt to fetch details about its progress. - let recoverTxid = undefined; +When working with the Wormhole SDK layout system, it's important to be aware of a few common issues that can arise. Below are some pitfalls to avoid and best practices to ensure smooth integration. - // Finally create and perform the transfer given the parameters set above - const xfer = !recoverTxid - ? // Perform the token transfer - await tokenTransfer( - wh, - { - token, - amount: amount.units(amount.parse(amt, decimals)), - source, - destination, - delivery: { - automatic, - nativeGas: nativeGas - ? amount.units(amount.parse(nativeGas, decimals)) - : undefined, - }, - }, - roundTrip - ) - : // Recover the transfer from the originating txid - await TokenTransfer.from(wh, { - chain: source.chain.chain, - txid: recoverTxid, - }); +### Pitfalls to Avoid - const receipt = await waitLog(wh, xfer); +#### Defining Sizes for Data Types - // Log out the results - console.log(receipt); -})(); +When defining sizes for each data type, make sure to match the actual data length to the specified size to prevent serialization and deserialization errors: -async function tokenTransfer( - wh: Wormhole, - route: { - token: TokenId; - amount: bigint; - source: SignerStuff; - destination: SignerStuff; - delivery?: { - automatic: boolean; - nativeGas?: bigint; - }; - payload?: Uint8Array; - }, - roundTrip?: boolean -): Promise> { - // Create a TokenTransfer object to track the state of the transfer over time - const xfer = await wh.tokenTransfer( - route.token, - route.amount, - route.source.address, - route.destination.address, - route.delivery?.automatic ?? false, - route.payload, - route.delivery?.nativeGas - ); + - **`uint` and `int`** - the specified size must be large enough to accommodate the data value. For instance, storing a value greater than 255 in a single byte (`uint8`) will fail since it exceeds the byte’s capacity. Similarly, an undersized integer (e.g., specifying 2 bytes for a 4-byte integer) can lead to data loss or deserialization failure + - **`bytes`** - the data must match the specified byte length in the layout. For example, defining a field as 32 bytes (`size: 32`) requires the provided data to be exactly 32 bytes long; otherwise, serialization will fail - const quote = await TokenTransfer.quoteTransfer( - wh, - route.source.chain, - route.destination.chain, - xfer.transfer - ); - console.log(quote); +```typescript +// Pitfall: Mismatch between the size of data and the defined size in the layout +{ name: 'orderSender', binary: 'bytes', size: 32 } +// If the provided data is not exactly 32 bytes, this will fail +``` - if (xfer.transfer.automatic && quote.destinationToken.amount < 0) - throw 'The amount requested is too low to cover the fee and any native gas requested.'; +#### Incorrectly Defined Arrays - // 1) Submit the transactions to the source chain, passing a signer to sign any txns - console.log('Starting transfer'); - const srcTxids = await xfer.initiateTransfer(route.source.signer); - console.log(`Started transfer: `, srcTxids); +Arrays can be fixed-length or length-prefixed, so it’s important to define them correctly. Fixed-length arrays must match the specified length, while length-prefixed arrays need a `lengthSize` field. - // If automatic, we're done - if (route.delivery?.automatic) return xfer; +```typescript +// Pitfall: Array length does not match the expected size +{ name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 } +``` - // 2) Wait for the VAA to be signed and ready (not required for auto transfer) - console.log('Getting Attestation'); - const attestIds = await xfer.fetchAttestation(60_000); - console.log(`Got Attestation: `, attestIds); +### Best Practices - // 3) Redeem the VAA on the dest chain - console.log('Completing Transfer'); - const destTxids = await xfer.completeTransfer(route.destination.signer); - console.log(`Completed Transfer: `, destTxids); +These best practices and common pitfalls can help prevent bugs and improve the reliability of your implementation when working with layouts in the Wormhole SDK. - // If no need to send back, dip - if (!roundTrip) return xfer; +#### Reuse Predefined Layout Items - const { destinationToken: token } = quote; - return await tokenTransfer(wh, { - ...route, - token: token.token, - amount: token.amount, - source: route.destination, - destination: route.source, - }); -} - ``` +Rather than defining sizes or types manually, reuse the predefined layout items provided by the Wormhole SDK. These items ensure consistent formatting and enforce strong typing. -Internally, this uses the [TokenBridge](#token-bridge) protocol client to transfer tokens. Like other Protocols, the `TokenBridge` protocol provides a consistent set of methods across all chains to generate a set of transactions for that specific chain. +For instance, use the `chainItem` layout for chain IDs or `universalAddressItem` for blockchain addresses: -### Native USDC Transfers +```typescript +import { + chainItem, + universalAddressItem, +} from '@wormhole-foundation/sdk-core/layout-items'; -You can also transfer native USDC using [Circle's CCTP](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank}. Please note that if the transfer is set to `Automatic` mode, a fee for performing the relay will be included in the quote. This fee is deducted from the total amount requested to be sent. For example, if the user wishes to receive `1.0` on the destination, the amount sent should be adjusted to `1.0` plus the relay fee. The same principle applies to native gas drop offs. +const exampleLayout = [ + { name: 'sourceChain', ...chainItem() }, // Use predefined chain ID layout + { name: 'senderAddress', ...universalAddressItem }, // Use universal address layout +] as const; +``` -In the following example, the `wh.circleTransfer` function is called with several parameters to set up the transfer. It takes the amount to be transferred (in the token's base units), the sender's chain and address, and the receiver's chain and address. The function also allows specifying whether the transfer should be automatic, meaning it will be completed without further user intervention. +By leveraging predefined layout items, you reduce redundancy, maintain consistency, and ensure compatibility with Wormhole’s standards. -An optional payload can be included with the transfer, though it's set to undefined in this case. Finally, if the transfer is automatic, you can request that native gas (the blockchain's native currency used for transaction fees) be sent to the receiver along with the transferred tokens. +#### Use Class Instances -When waiting for the `VAA`, a timeout of `60,000` milliseconds is used. The amount of time required for the VAA to become available will [vary by network](https://developers.circle.com/stablecoins/docs/required-block-confirmations#mainnet){target=\_blank}. +Whenever possible, convert deserialized data into higher-level class instances. This makes it easier to validate, manipulate, and interact with structured data. For example, the [`UniversalAddress`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/universalAddress.ts#L17-L59){target=\_blank} class ensures consistent address handling: -```ts -// Amount as bigint (base units) - req.amount, - // Sender chain/address - src.address, - // Receiver chain/address - dst.address, - // Automatic delivery boolean - req.automatic, - // Payload to be sent with the transfer - undefined, - // If automatic, native gas can be requested to be sent to the receiver - req.nativeGas - ); +```typescript +import { UniversalAddress } from '@wormhole-foundation/sdk-core'; - // Note, if the transfer is requested to be Automatic, a fee for performing the relay - // will be present in the quote. The fee comes out of the amount requested to be sent. - // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. - // The same applies for native gas dropoff - const quote = await CircleTransfer.quoteTransfer( - src.chain, - dst.chain, - xfer.transfer - ); - console.log('Quote', quote); +const deserializedAddress = new UniversalAddress(someBinaryData); +``` - console.log('Starting Transfer'); - const srcTxids = await xfer.initiateTransfer(src.signer); - console.log(`Started Transfer: `, srcTxids); +Focusing on reusing predefined layout items and converting deserialized data into higher-level abstractions can ensure a more robust and maintainable implementation. - if (req.automatic) { - const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); - console.log(`Finished relay: `, relayStatus); - return; - } +#### Consistent Error Handling - console.log('Waiting for Attestation'); - const attestIds = await xfer.fetchAttestation(60_000); - console.log(`Got Attestation: `, attestIds); +Always handle errors during both serialization and deserialization. Catching exceptions allows you to log or resolve issues gracefully when working with potentially corrupted or invalid data. - console.log('Completing Transfer'); - const dstTxids = await xfer.completeTransfer(dst.signer); - console.log(`Completed Transfer: `, dstTxids); +```typescript +try { + const deserialized = deserializeLayout(fillLayout, data); +} catch (error) { + console.error('Deserialization failed:', error); } ``` -??? code "View the complete script" - ```ts - import { - Chain, - CircleTransfer, - Network, - Signer, - TransactionId, - TransferState, - Wormhole, - amount, - wormhole, -} from '@wormhole-foundation/sdk'; -import evm from '@wormhole-foundation/sdk/evm'; -import solana from '@wormhole-foundation/sdk/solana'; -import { SignerStuff, getSigner, waitForRelay } from './helpers/index.js'; +#### Leverage Reusable Layouts -/* -Notes: -Only a subset of chains are supported by Circle for CCTP, see core/base/src/constants/circle.ts for currently supported chains +Creating reusable layouts for commonly repeated structures improves code maintainability and reduces duplication. These layouts can represent fields or combinations of fields frequently encountered in cross-chain communication, such as chain IDs, addresses, and signatures. -AutoRelayer takes a 0.1 USDC fee when transferring to any chain beside Goerli, which is 1 USDC -*/ -// - -(async function () { - // Init the Wormhole object, passing in the config for which network - // to use (e.g. Mainnet/Testnet) and what Platforms to support - const wh = await wormhole('Testnet', [evm, solana]); +For example, define a reusable layout for chain IDs and addresses: - // Grab chain Contexts - const sendChain = wh.getChain('Avalanche'); - const rcvChain = wh.getChain('Solana'); +```typescript +const commonLayout = [ + { name: 'chainId', binary: 'uint', size: 2 }, + { name: 'address', binary: 'bytes', size: 32 }, +] as const satisfies Layout; - // Get signer from local key but anything that implements - // Signer interface (e.g. wrapper around web wallet) should work - const source = await getSigner(sendChain); - const destination = await getSigner(rcvChain); +// Reuse the common layout in different contexts +const exampleLayout = [ + ...commonLayout, + { name: 'sequence', binary: 'uint', size: 8 }, +]; +``` - // 6 decimals for USDC (except for BSC, so check decimals before using this) - const amt = amount.units(amount.parse('0.2', 6)); +By abstracting common elements into a single layout, you ensure consistency across different parts of your application and simplify future updates. - // Choose whether or not to have the attestation delivered for you - const automatic = false; +## Performance Considerations - // If the transfer is requested to be automatic, you can also request that - // during redemption, the receiver gets some amount of native gas transferred to them - // so that they may pay for subsequent transactions - // The amount specified here is denominated in the token being transferred (USDC here) - const nativeGas = automatic ? amount.units(amount.parse('0.0', 6)) : 0n; +Efficient serialization and deserialization are crucial when handling large amounts of cross-chain data. Below are some strategies and best practices to ensure optimal performance when using Wormhole SDK layouts. - await cctpTransfer(wh, source, destination, { - amount: amt, - automatic, - nativeGas, - }); +### Lazy Instantiation -})(); +Building a discriminator can be resource-intensive for complex or large datasets. The layout structures do not incur significant upfront costs, but deferring the creation of discriminators until needed can improve efficiency. -async function cctpTransfer( - wh: Wormhole, - src: SignerStuff, - dst: SignerStuff, - req: { - amount: bigint; - automatic: boolean; - nativeGas?: bigint; - } -) { +```typescript +const lazyDiscriminator = lazyInstantiate(() => layoutDiscriminator(layouts)); +``` - const xfer = await wh.circleTransfer( - // Amount as bigint (base units) - req.amount, - // Sender chain/address - src.address, - // Receiver chain/address - dst.address, - // Automatic delivery boolean - req.automatic, - // Payload to be sent with the transfer - undefined, - // If automatic, native gas can be requested to be sent to the receiver - req.nativeGas - ); +This approach ensures that discriminators are only built when required, helping to optimize performance, especially for complex or conditional layouts. - // Note, if the transfer is requested to be Automatic, a fee for performing the relay - // will be present in the quote. The fee comes out of the amount requested to be sent. - // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. - // The same applies for native gas dropoff - const quote = await CircleTransfer.quoteTransfer( - src.chain, - dst.chain, - xfer.transfer - ); - console.log('Quote', quote); +## Resources - console.log('Starting Transfer'); - const srcTxids = await xfer.initiateTransfer(src.signer); - console.log(`Started Transfer: `, srcTxids); +For further learning and practical experience, explore the following resources: - if (req.automatic) { - const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); - console.log(`Finished relay: `, relayStatus); - return; - } + - **Wormhole TypeScript SDK** - the [Wormhole SDK repository](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} contains the core implementation of layouts, including predefined layout items and utilities like `serializeLayout` and `deserializeLayout` - console.log('Waiting for Attestation'); - const attestIds = await xfer.fetchAttestation(60_000); - console.log(`Got Attestation: `, attestIds); + - **Layout tests repository** - for hands-on experimentation, check out this [layout package repository](https://github.com/nonergodic/layout){target=\_blank}, which provides examples and unit tests to help you better understand serialization, deserialization, and the strong typing mechanism. Running these tests locally is a great way to deepen your understanding of how layouts function in real-world scenarios +--- END CONTENT --- - console.log('Completing Transfer'); - const dstTxids = await xfer.completeTransfer(dst.signer); - console.log(`Completed Transfer: `, dstTxids); -} +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/vaas-protocols +--- BEGIN CONTENT --- +--- +title: VAAs and Protocols +description: Understand how VAAs enable cross-chain messaging and how to handle them using Wormhole's TypeScript and Solidity SDKs. +--- -export async function completeTransfer( - wh: Wormhole, - txid: TransactionId, - signer: Signer -): Promise { +# VAAs and Protocols - const xfer = await CircleTransfer.from(wh, txid); +## Introduction - const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); - console.log('Got attestation: ', attestIds); +Wormhole's core functionality revolves around [Verifiable Action Approvals](/docs/learn/infrastructure/vaas/){target=\_blank} (VAAs), which are signed messages enabling secure and decentralized communication across chains. This guide focuses on their practical usage within the Wormhole ecosystem, specifically when working with protocol-specific messages in the [TypeScript](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} and [Solidity](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} SDKs. - const dstTxIds = await xfer.completeTransfer(signer); - console.log('Completed transfer: ', dstTxIds); -} - ``` +For deeper insights into serialization, deserialization, and protocol design, refer to: -### Recovering Transfers +- [Data Layouts](/docs/build/toolkit/typescript-sdk/sdk-layout/){target=\_blank} for serialization concepts +- [Building Protocols and Payloads](/docs/build/toolkit/typescript-sdk/protocols-payloads/){target=\_blank} for designing custom protocol messages -It may be necessary to recover an abandoned transfer before it is completed. To do this, instantiate the `Transfer` class with the `from` static method and pass one of several types of identifiers. A `TransactionId` or `WormholeMessageId` may be used to recover the transfer. +This guide will help you understand how to handle VAAs and protocol messages in off-chain and on-chain scenarios. -```ts -const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); - console.log('Got attestation: ', attestIds); +## VAA Structure - const dstTxIds = await xfer.completeTransfer(signer); - console.log('Completed transfer: ', dstTxIds); -``` +Understanding the structure of VAAs is fundamental to working with Wormhole's SDKs. Each section of the VAA—Header, Envelope, and Payload—serves a specific role: -??? code "View the complete script" - ```ts hl_lines="130" - import { - Chain, - CircleTransfer, - Network, - Signer, - TransactionId, - TransferState, - Wormhole, - amount, - wormhole, -} from '@wormhole-foundation/sdk'; -import evm from '@wormhole-foundation/sdk/evm'; -import solana from '@wormhole-foundation/sdk/solana'; -import { SignerStuff, getSigner, waitForRelay } from './helpers/index.js'; +| Section | Description | +|----------|----------------------------------------------------------------------------------------------------------| +| Header | Includes the version and guardian signature information required to verify the VAA | +| Envelope | Contains metadata about the emitted message, such as the emitter chain, emitter address, and timestamp | +| Payload | Represents the actual message, in raw bytes, without a length prefix | -/* -Notes: -Only a subset of chains are supported by Circle for CCTP, see core/base/src/constants/circle.ts for currently supported chains +The VAA's body combines the Envelope and Payload. The Wormhole Guardians signed the core data and hashed (using `keccak256`) to generate the VAA's unique identifier. -AutoRelayer takes a 0.1 USDC fee when transferring to any chain beside Goerli, which is 1 USDC -*/ -// +When integrating protocols like Token Bridge or Wormhole Relayer: -(async function () { - // Init the Wormhole object, passing in the config for which network - // to use (e.g. Mainnet/Testnet) and what Platforms to support - const wh = await wormhole('Testnet', [evm, solana]); +- The TypeScript SDK handles VAAs off-chain, focusing on deserialization, validation, and payload extraction before submission +- The Solidity SDK processes VAAs on-chain, using libraries like `VaaLib` to decode and execute protocol actions - // Grab chain Contexts - const sendChain = wh.getChain('Avalanche'); - const rcvChain = wh.getChain('Solana'); +## VAAs in Protocol Contexts - // Get signer from local key but anything that implements - // Signer interface (e.g. wrapper around web wallet) should work - const source = await getSigner(sendChain); - const destination = await getSigner(rcvChain); +### How VAAs Enable Protocol-Specific Messaging - // 6 decimals for USDC (except for BSC, so check decimals before using this) - const amt = amount.units(amount.parse('0.2', 6)); +VAAs are the backbone of Wormhole's cross-chain communication, encapsulating critical protocol payloads that drive actions on different blockchains. Each protocol—such as [Token Bridge](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/tokenBridge){target=\_blank}, [Wormhole Relayer](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/relayer){target=\_blank}, or [Circle CCTP](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/circleBridge){target=\_blank}—uses VAAs to securely transmit its messages across chains. - // Choose whether or not to have the attestation delivered for you - const automatic = false; +Examples of mapping protocols to VAAs: - // If the transfer is requested to be automatic, you can also request that - // during redemption, the receiver gets some amount of native gas transferred to them - // so that they may pay for subsequent transactions - // The amount specified here is denominated in the token being transferred (USDC here) - const nativeGas = automatic ? amount.units(amount.parse('0.0', 6)) : 0n; +| Protocol | Payload Purpose | Example | +|-----------------|-----------------------------------------------------------|------------------------------------| +| Token Bridge | Transfers token data and metadata | Token transfer or redemption | +| Wormhole Relayer| Manages delivery instructions for messages across chains | Delivery fee or refund handling | +| Circle CCTP | Facilitates stablecoin mint-and-burn operations | Circle-issued stablecoin transfer | - await cctpTransfer(wh, source, destination, { - amount: amt, - automatic, - nativeGas, - }); +Each protocol integrates its payload format into the VAA structure, ensuring consistent message validation and execution across the ecosystem. -})(); +### TypeScript SDK: Off-Chain Handling of VAAs -async function cctpTransfer( - wh: Wormhole, - src: SignerStuff, - dst: SignerStuff, - req: { - amount: bigint; - automatic: boolean; - nativeGas?: bigint; - } -) { +The TypeScript SDK is designed for off-chain operations like reading, validating, and manipulating VAAs before submitting them to a chain. Developers can easily deserialize VAAs to extract protocol payloads and prepare actions such as initiating token transfers or constructing delivery instructions. - const xfer = await wh.circleTransfer( - // Amount as bigint (base units) - req.amount, - // Sender chain/address - src.address, - // Receiver chain/address - dst.address, - // Automatic delivery boolean - req.automatic, - // Payload to be sent with the transfer - undefined, - // If automatic, native gas can be requested to be sent to the receiver - req.nativeGas - ); +In the example below, we use the real [`envelopeLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dd6bd2463264680597519285ff559f9e92e85ca7/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} from Wormhole's TS SDK to deserialize and extract essential information like the emitter chain, sequence, and consistency level: - // Note, if the transfer is requested to be Automatic, a fee for performing the relay - // will be present in the quote. The fee comes out of the amount requested to be sent. - // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. - // The same applies for native gas dropoff - const quote = await CircleTransfer.quoteTransfer( - src.chain, - dst.chain, - xfer.transfer - ); - console.log('Quote', quote); +```typescript +import { deserializeLayout } from '@wormhole-foundation/sdk-base'; +import { + universalAddressItem, + sequenceItem, +} from '@wormhole-foundation/core/layout-items/index.js'; - console.log('Starting Transfer'); - const srcTxids = await xfer.initiateTransfer(src.signer); - console.log(`Started Transfer: `, srcTxids); +export const envelopeLayout = [ + { name: 'timestamp', binary: 'uint', size: 4 }, + { name: 'nonce', binary: 'uint', size: 4 }, + { name: 'emitterChain', binary: 'uint', size: 2 }, + { name: 'emitterAddress', ...universalAddressItem }, + { name: 'sequence', ...sequenceItem }, + { name: 'consistencyLevel', binary: 'uint', size: 1 }, +] as const satisfies Layout; - if (req.automatic) { - const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); - console.log(`Finished relay: `, relayStatus); - return; - } +const encodedEnvelope = new Uint8Array([ + /* binary envelope data */ +]); +const deserializedEnvelope = deserializeLayout(envelopeLayout, encodedEnvelope); +``` - console.log('Waiting for Attestation'); - const attestIds = await xfer.fetchAttestation(60_000); - console.log(`Got Attestation: `, attestIds); +For more details, you can refer to the [parseVAA example](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/examples/src/parseVaa.ts){target=\_blank} in the Wormhole SDK repository. - console.log('Completing Transfer'); - const dstTxids = await xfer.completeTransfer(dst.signer); - console.log(`Completed Transfer: `, dstTxids); -} +### Solidity SDK: On-Chain Handling of VAAs -export async function completeTransfer( - wh: Wormhole, - txid: TransactionId, - signer: Signer -): Promise { +The Solidity SDK enables on-chain processing of VAAs directly within smart contracts. This is essential for real-time validation, decoding, and execution of protocol-specific payloads. Developers can use libraries like [`VaaLib`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/e19013d08d1fdf5af9e6344c637e36a270422dd9/src/libraries/VaaLib.sol){target=\_blank} to parse the VAA header and payload, ensuring the message is authentic and consistent with Wormhole's validation. - const xfer = await CircleTransfer.from(wh, txid); +Below is an example of parsing an envelope on-chain using the Solidity SDK: - const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); - console.log('Got attestation: ', attestIds); +```solidity +// SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.19; - const dstTxIds = await xfer.completeTransfer(signer); - console.log('Completed transfer: ', dstTxIds); +import {VaaLib} from "wormhole-sdk/libraries/VaaLib.sol"; + +contract EnvelopeParser { + using VaaLib for bytes; + + function parseEnvelope( + bytes memory encodedVaa + ) + public + pure + returns ( + uint32 timestamp, + uint32 nonce, + uint16 emitterChainId, + bytes32 emitterAddress, + uint64 sequence, + uint8 consistencyLevel + ) + { + // Skip the header and decode the envelope + uint offset = VaaLib.skipVaaHeaderMemUnchecked(encodedVaa, 0); + return VaaLib.decodeVaaEnvelopeMemUnchecked(encodedVaa, offset); + } } - ``` +``` +--- END CONTENT --- -## Routes +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/wormhole-sdk +--- BEGIN CONTENT --- +--- +title: Wormhole TS SDK +description: Explore Wormhole's TypeScript SDK and learn how to perform different types of transfers, including native, token, and USDC. +--- -While a specific `WormholeTransfer`, such as `TokenTransfer` or `CCTPTransfer`, may be used, the developer must know exactly which transfer type to use for a given request. +# Wormhole TypeScript SDK -To provide a more flexible and generic interface, the `Wormhole` class provides a method to produce a `RouteResolver` that can be configured with a set of possible routes to be supported. +## Introduction -The following section demonstrates setting up and validating a token transfer using Wormhole's routing system. +The Wormhole TypeScript SDK is useful for interacting with the chains Wormhole supports and the [protocols](#protocols) built on top of Wormhole. This package bundles together functions, definitions, and constants that streamline the process of connecting chains and completing transfers using Wormhole. The SDK also offers targeted sub-packages for Wormhole-connected platforms, which allow you to add multichain support without creating outsized dependencies. -```ts -const resolver = wh.resolver([ - routes.TokenBridgeRoute, // manual token bridge - routes.AutomaticTokenBridgeRoute, // automatic token bridge - routes.CCTPRoute, // manual CCTP - routes.AutomaticCCTPRoute, // automatic CCTP - routes.AutomaticPorticoRoute, // Native eth transfers - ]); -``` +This section covers all you need to know about the functionality and ease of development offered through the Wormhole TypeScript SDK. Take a tour of the package to discover how it helps make integration easier. Learn more about how the SDK abstracts away complexities around concepts like platforms, contexts, and signers. Finally, you'll find guidance on usage, along with code examples, to show you how to use the tools of the SDK. -Once created, the resolver can be used to provide a list of input and possible output tokens. -```ts -const srcTokens = await resolver.supportedSourceTokens(sendChain); - console.log( - 'Allowed source tokens: ', - srcTokens.map((t) => canonicalAddress(t)) - ); +
- const sendToken = Wormhole.tokenId(sendChain.chain, 'native'); +- :octicons-download-16:{ .lg .middle } **Installation** - // Given the send token, what can we possibly get on the destination chain? - const destTokens = await resolver.supportedDestinationTokens( - sendToken, - sendChain, - destChain - ); - console.log( - 'For the given source token and routes configured, the following tokens may be receivable: ', - destTokens.map((t) => canonicalAddress(t)) - ); - // Grab the first one for the example - const destinationToken = destTokens[0]!; -``` + --- -Once the tokens are selected, a `RouteTransferRequest` may be created to provide a list of routes that can fulfill the request. Creating a transfer request fetches the token details since all routes will need to know about the tokens. + Find installation instructions for both the meta package and installing specific, individual packages -```ts -// Since all routes will need to know about the tokens - const tr = await routes.RouteTransferRequest.create(wh, { - source: sendToken, - destination: destinationToken, - }); + [:custom-arrow: Install the SDK](#installation) - // Resolve the transfer request to a set of routes that can perform it - const foundRoutes = await resolver.findRoutes(tr); - console.log( - 'For the transfer parameters, we found these routes: ', - foundRoutes - ); -``` +- :octicons-book-16:{ .lg .middle } **Concepts** -Choosing the best route is currently left to the developer, but strategies might include sorting by output amount or expected time to complete the transfer (no estimate is currently provided). + --- -After choosing the best route, extra parameters like `amount`, `nativeGasDropoff`, and `slippage` can be passed, depending on the specific route selected. A quote can be retrieved with the validated request. + Understand key concepts and how the SDK abstracts them away. Learn more about platforms, chain context, addresses, and signers -After successful validation, the code requests a transfer quote. This quote likely includes important details such as fees, estimated time, and the final amount to be received. If the quote is generated successfully, it's displayed for the user to review and decide whether to proceed with the transfer. This process ensures that all transfer details are properly set up and verified before any actual transfer occurs. + [:custom-arrow: Explore concepts](#concepts) -```ts -'This route offers the following default options', - bestRoute.getDefaultOptions() - ); +- :octicons-file-code-16:{ .lg .middle } **Usage** - // Specify the amount as a decimal string - const amt = '0.001'; - // Create the transfer params for this request - const transferParams = { amount: amt, options: { nativeGas: 0 } }; + --- - // Validate the transfer params passed, this returns a new type of ValidatedTransferParams - // which (believe it or not) is a validated version of the input params - // This new var must be passed to the next step, quote - const validated = await bestRoute.validate(tr, transferParams); - if (!validated.valid) throw validated.error; - console.log('Validated parameters: ', validated.params); + Guidance on using the SDK to add seamless interchain messaging to your application, including code examples - // Get a quote for the transfer, this too returns a new type that must - // be passed to the next step, execute (if you like the quote) - const quote = await bestRoute.quote(tr, validated.params); - if (!quote.success) throw quote.error; - console.log('Best route quote: ', quote); -``` + [:custom-arrow: Use the SDK](#usage) -Finally, assuming the quote looks good, the route can initiate the request with the quote and the `signer`. +- :octicons-code-square-16:{ .lg .middle } **TSdoc for SDK** -```ts -tr, - sender.signer, - quote, - receiver.address - ); - console.log('Initiated transfer with receipt: ', receipt); -``` + --- -??? code "View the complete script" + Review the TSdoc for the Wormhole TypeScript SDK for a detailed look at availabel methods, classes, interfaces, and definitions - ```ts - import { - Wormhole, - canonicalAddress, - routes, - wormhole, -} from '@wormhole-foundation/sdk'; + [:custom-arrow: View the TSdoc on GitHub](https://wormhole-foundation.github.io/wormhole-sdk-ts/){target=\_blank} -import evm from '@wormhole-foundation/sdk/evm'; -import solana from '@wormhole-foundation/sdk/solana'; -import { getSigner } from './helpers/index.js'; +
-(async function () { - // Setup - const wh = await wormhole('Testnet', [evm, solana]); +!!! warning + This package is a work in progress. The interface may change, and there are likely bugs. Please [report](https://github.com/wormhole-foundation/connect-sdk/issues){target=\_blank} any issues you find. - // Get chain contexts - const sendChain = wh.getChain('Avalanche'); - const destChain = wh.getChain('Solana'); +## Installation - // Get signers from local config - const sender = await getSigner(sendChain); - const receiver = await getSigner(destChain); +### Basic - // Create new resolver, passing the set of routes to consider - const resolver = wh.resolver([ - routes.TokenBridgeRoute, // manual token bridge - routes.AutomaticTokenBridgeRoute, // automatic token bridge - routes.CCTPRoute, // manual CCTP - routes.AutomaticCCTPRoute, // automatic CCTP - routes.AutomaticPorticoRoute, // Native eth transfers - ]); +To install the meta package using npm, run the following command in the root directory of your project: - // What tokens are available on the source chain? - const srcTokens = await resolver.supportedSourceTokens(sendChain); - console.log( - 'Allowed source tokens: ', - srcTokens.map((t) => canonicalAddress(t)) - ); +```bash +npm install @wormhole-foundation/sdk +``` - const sendToken = Wormhole.tokenId(sendChain.chain, 'native'); +This package combines all the individual packages to make setup easier while allowing for tree shaking. - // Given the send token, what can we possibly get on the destination chain? - const destTokens = await resolver.supportedDestinationTokens( - sendToken, - sendChain, - destChain - ); - console.log( - 'For the given source token and routes configured, the following tokens may be receivable: ', - destTokens.map((t) => canonicalAddress(t)) - ); - // Grab the first one for the example - const destinationToken = destTokens[0]!; +### Advanced - // Creating a transfer request fetches token details - // Since all routes will need to know about the tokens - const tr = await routes.RouteTransferRequest.create(wh, { - source: sendToken, - destination: destinationToken, - }); +Alternatively, you can install a specific set of published packages individually: - // Resolve the transfer request to a set of routes that can perform it - const foundRoutes = await resolver.findRoutes(tr); - console.log( - 'For the transfer parameters, we found these routes: ', - foundRoutes - ); +??? interface "`sdk-base` - exposes constants" - const bestRoute = foundRoutes[0]!; - console.log('Selected: ', bestRoute); + ```sh + npm install @wormhole-foundation/sdk-base + ``` - console.log( - 'This route offers the following default options', - bestRoute.getDefaultOptions() - ); +??? interface "`sdk-definitions` - exposes contract interfaces, basic types, and VAA payload definitions" - // Specify the amount as a decimal string - const amt = '0.001'; - // Create the transfer params for this request - const transferParams = { amount: amt, options: { nativeGas: 0 } }; + ```sh + npm install @wormhole-foundation/sdk-definitions + ``` - // Validate the transfer params passed, this returns a new type of ValidatedTransferParams - // which (believe it or not) is a validated version of the input params - // This new var must be passed to the next step, quote - const validated = await bestRoute.validate(tr, transferParams); - if (!validated.valid) throw validated.error; - console.log('Validated parameters: ', validated.params); +??? interface "`sdk-evm` - exposes EVM-specific utilities" - // Get a quote for the transfer, this too returns a new type that must - // be passed to the next step, execute (if you like the quote) - const quote = await bestRoute.quote(tr, validated.params); - if (!quote.success) throw quote.error; - console.log('Best route quote: ', quote); + ```sh + npm install @wormhole-foundation/sdk-evm + ``` - // If you're sure you want to do this, set this to true - const imSure = false; - if (imSure) { - // Now the transfer may be initiated - // A receipt will be returned, guess what you gotta do with that? - const receipt = await bestRoute.initiate( - tr, - sender.signer, - quote, - receiver.address - ); - console.log('Initiated transfer with receipt: ', receipt); +??? interface "`sdk-evm-tokenbridge` - exposes the EVM Token Bridge protocol client" - // Kick off a wait log, if there is an opportunity to complete, this function will do it - // See the implementation for how this works - await routes.checkAndCompleteTransfer(bestRoute, receipt, receiver.signer); - } else { - console.log('Not initiating transfer (set `imSure` to true to do so)'); - } -})(); + ```sh + npm install @wormhole-foundation/sdk-evm-tokenbridge ``` -See the `router.ts` example in the [examples directory](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/examples){target=\_blank} for a full working example. - -### Routes as Plugins +## Usage -Routes can be imported from any npm package that exports them and configured with the resolver. Custom routes must extend [`Route`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/0c57292368146c460abc9ce9e7f6a42be8e0b903/connect/src/routes/route.ts#L21-L64){target=\_blank} and implement [`StaticRouteMethods`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/0c57292368146c460abc9ce9e7f6a42be8e0b903/connect/src/routes/route.ts#L101){target=\_blank}. +Getting your integration started is simple. First, import Wormhole: ```ts -import { Network, routes } from '@wormhole-foundation/sdk-connect'; +import { wormhole } from '@wormhole-foundation/sdk'; -export class CustomRoute - extends routes.Route - implements routes.StaticRouteMethods -{ - static meta = { - name: 'CustomRoute', - }; - // implementation... -} -``` +import { Wormhole, amount, signSendWait } from '@wormhole-foundation/sdk'; +import algorand from '@wormhole-foundation/sdk/algorand'; +import aptos from '@wormhole-foundation/sdk/aptos'; +import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { getSigner } from './helpers/index.js'; -A noteworthy example of a route exported from a separate npm package is Wormhole Native Token Transfers (NTT). See the [`NttAutomaticRoute`](https://github.com/wormhole-foundation/native-token-transfers/blob/66f8e414223a77f5c736541db0a7a85396cab71c/sdk/route/src/automatic.ts#L48){target=\_blank} route implementation. +(async function () { + const wh = await wormhole('Testnet', [ + evm, + solana, + aptos, + algorand, + cosmwasm, + sui, + ]); -## See Also + const ctx = wh.getChain('Solana'); -The TSdoc is available [on GitHub](https://wormhole-foundation.github.io/wormhole-sdk-ts/){target=\_blank}. ---- END CONTENT --- + const rcv = wh.getChain('Algorand'); -Doc-Content: https://wormhole.com/docs/build/contract-integrations/cctp ---- BEGIN CONTENT --- ---- -title: Interacting with CCTP Contracts -description: Learn how to interact directly with Circle's CCTP Bridge contracts, including TokenMessenger, TokenMinter, and MessageTransmitter. ---- + const sender = await getSigner(ctx); + const receiver = await getSigner(rcv); -# Get Started with CCTP + // Get a Token Bridge contract client on the source + const sndTb = await ctx.getTokenBridge(); -## Introduction + // Send the native token of the source chain + const tokenId = Wormhole.tokenId(ctx.chain, 'native'); -Circle's [Cross-Chain Transfer Protocol (CCTP)](/docs/learn/messaging/cctp/){target=\_blank} by Circle is a permissionless utility that facilitates secure and efficient USDC transfers across blockchain networks through native burning and minting mechanisms. + // Bigint amount using `amount` module + const amt = amount.units(amount.parse('0.1', ctx.config.nativeTokenDecimals)); -As decentralized finance (DeFi) protocols evolve, the need for flexible, secure cross-chain messaging has expanded, requiring solutions beyond simple asset transfers. Wormhole enhances CCTP's capabilities by allowing developers to compose more complex cross-chain interactions. With Wormhole's generic messaging, applications can execute smart contract logic alongside native USDC transfers, enabling richer, more versatile cross-chain experiences. + // Create a transaction stream for transfers + const transfer = sndTb.transfer( + sender.address.address, + receiver.address, + tokenId.address, + amt + ); -This guide will walk you through getting started with Wormhole's CCTP contracts and show you how to integrate CCTP into your smart contracts, enabling the composition of advanced cross-chain functions with native USDC transfers. + // Sign and send the transaction + const txids = await signSendWait(ctx, transfer, sender.signer); + console.log('Sent: ', txids); -## Prerequisites + // Get the Wormhole message ID from the transaction + const [whm] = await ctx.parseTransaction(txids[txids.length - 1]!.txid); + console.log('Wormhole Messages: ', whm); -To interact with the Wormhole CCTP, you'll need the following: + const vaa = await wh.getVaa( + // Wormhole Message ID + whm!, + // Protocol:Payload name to use for decoding the VAA payload + 'TokenBridge:Transfer', + // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available + 60_000 + ); -- [The address of the CCTP contract](/docs/build/reference/contract-addresses/#cctp){target=\_blank} on the chains you're deploying your contract on -- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on + // Now get the token bridge on the redeem side + const rcvTb = await rcv.getTokenBridge(); -## Wormhole's CCTP Integration Contract + // Create a transaction stream for redeeming + const redeem = rcvTb.redeem(receiver.address.address, vaa!); -Wormhole's Circle Integration contract, `CircleIntegration.sol`, is the contract you'll interact with directly. It burns and mints Circle-supported tokens by using [Circle's CCTP contracts](#circles-cctp-contracts). + // Sign and send the transaction + const rcvTxids = await signSendWait(rcv, redeem, receiver.signer); + console.log('Sent: ', rcvTxids); -The Circle Integration contract emits Wormhole messages with arbitrary payloads to allow additional composability when performing cross-chain transfers of Circle-supported assets. + // Now check if the transfer is completed according to + // the destination token bridge + const finished = await rcvTb.isTransferCompleted(vaa!); + console.log('Transfer completed: ', finished); +})(); +``` -This contract can be found in [Wormhole's `wormhole-circle-integration` repository](https://github.com/wormhole-foundation/wormhole-circle-integration/){target=\_blank} on GitHub. +Then, import each of the ecosystem [platforms](#platforms) that you wish to support: -!!! note - Wormhole supports all CCTP-supported chains, but Circle currently supports only a [handful of chains](https://developers.circle.com/stablecoins/docs/supported-domains){target=\_blank}. Please refer to the [CCTP section of the Contract Addresses](/docs/build/reference/contract-addresses/#cctp){target=\_blank} reference page to view the complete list of supported chains. +```ts +import aptos from '@wormhole-foundation/sdk/aptos'; +import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +``` -??? code "Circle Integration contract" - ```solidity - // SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.19; -import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; -import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {IWormhole} from "wormhole/interfaces/IWormhole.sol"; -import {BytesLib} from "wormhole/libraries/external/BytesLib.sol"; +To make the [platform](#platforms) modules available for use, pass them to the Wormhole constructor: -import {ICircleBridge} from "../interfaces/circle/ICircleBridge.sol"; +```ts +evm, + solana, + aptos, + algorand, + cosmwasm, + sui, + ]); +``` -import {CircleIntegrationGovernance} from "./CircleIntegrationGovernance.sol"; -import {CircleIntegrationMessages} from "./CircleIntegrationMessages.sol"; +With a configured Wormhole object, you can do things like parse addresses for the provided platforms, get a [`ChainContext`](#chain-context) object, or fetch VAAs. -/** - * @notice This contract burns and mints Circle-supported tokens by using Circle's Cross-Chain Transfer Protocol. It also emits - * Wormhole messages with arbitrary payloads to allow for additional composability when performing cross-chain - * transfers of Circle-suppored assets. - */ -contract CircleIntegration is - CircleIntegrationMessages, - CircleIntegrationGovernance, - ReentrancyGuard -{ - using BytesLib for bytes; +```ts - /** - * @notice Emitted when Circle-supported assets have been minted to the mintRecipient - * @param emitterChainId Wormhole chain ID of emitter contract on source chain - * @param emitterAddress Address (bytes32 zero-left-padded) of emitter on source chain - * @param sequence Sequence of Wormhole message used to mint tokens - */ - event Redeemed( - uint16 indexed emitterChainId, - bytes32 indexed emitterAddress, - uint64 indexed sequence - ); +``` - /** - * @notice `transferTokensWithPayload` calls the Circle Bridge contract to burn Circle-supported tokens. It emits - * a Wormhole message containing a user-specified payload with instructions for what to do with - * the Circle-supported assets once they have been minted on the target chain. - * @dev reverts if: - * - user passes insufficient value to pay Wormhole message fee - * - `token` is not supported by Circle Bridge - * - `amount` is zero - * - `targetChain` is not supported - * - `mintRecipient` is bytes32(0) - * @param transferParams Struct containing the following attributes: - * - `token` Address of the token to be burned - * - `amount` Amount of `token` to be burned - * - `targetChain` Wormhole chain ID of the target blockchain - * - `mintRecipient` The recipient wallet or contract address on the target chain - * @param batchId ID for Wormhole message batching - * @param payload Arbitrary payload to be delivered to the target chain via Wormhole - * @return messageSequence Wormhole sequence number for this contract - */ - function transferTokensWithPayload( - TransferParameters memory transferParams, - uint32 batchId, - bytes memory payload - ) public payable nonReentrant returns (uint64 messageSequence) { - // cache wormhole instance and fees to save on gas - IWormhole wormhole = wormhole(); - uint256 wormholeFee = wormhole.messageFee(); +You can retrieve a VAA as follows. In this example, a timeout of `60,000` milliseconds is used. The amount of time required for the VAA to become available will vary by network. - // confirm that the caller has sent enough ether to pay for the wormhole message fee - require(msg.value == wormholeFee, "insufficient value"); +```ts +// Wormhole Message ID + whm!, + // Protocol:Payload name to use for decoding the VAA payload + 'TokenBridge:Transfer', + // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available + 60_000 + ); +``` - // Call the circle bridge and `depositForBurnWithCaller`. The `mintRecipient` - // should be the target contract (or wallet) composing on this contract. - (uint64 nonce, uint256 amountReceived) = _transferTokens( - transferParams.token, - transferParams.amount, - transferParams.targetChain, - transferParams.mintRecipient - ); +??? code "View the complete script" + ```ts + import { wormhole } from '@wormhole-foundation/sdk'; - // encode DepositWithPayload message - bytes memory encodedMessage = encodeDepositWithPayload( - DepositWithPayload({ - token: addressToBytes32(transferParams.token), - amount: amountReceived, - sourceDomain: localDomain(), - targetDomain: getDomainFromChainId(transferParams.targetChain), - nonce: nonce, - fromAddress: addressToBytes32(msg.sender), - mintRecipient: transferParams.mintRecipient, - payload: payload - }) - ); - - // send the DepositWithPayload wormhole message - messageSequence = wormhole.publishMessage{value: wormholeFee}( - batchId, - encodedMessage, - wormholeFinality() - ); - } +import { Wormhole, amount, signSendWait } from '@wormhole-foundation/sdk'; +import algorand from '@wormhole-foundation/sdk/algorand'; +import aptos from '@wormhole-foundation/sdk/aptos'; +import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { getSigner } from './helpers/index.js'; - function _transferTokens( - address token, - uint256 amount, - uint16 targetChain, - bytes32 mintRecipient - ) internal returns (uint64 nonce, uint256 amountReceived) { - // sanity check user input - require(amount > 0, "amount must be > 0"); - require(mintRecipient != bytes32(0), "invalid mint recipient"); - require(isAcceptedToken(token), "token not accepted"); - require( - getRegisteredEmitter(targetChain) != bytes32(0), - "target contract not registered" - ); +(async function () { + const wh = await wormhole('Testnet', [ + evm, + solana, + aptos, + algorand, + cosmwasm, + sui, + ]); - // take custody of tokens - amountReceived = custodyTokens(token, amount); + const ctx = wh.getChain('Solana'); - // cache Circle Bridge instance - ICircleBridge circleBridge = circleBridge(); + const rcv = wh.getChain('Algorand'); - // approve the Circle Bridge to spend tokens - SafeERC20.safeApprove( - IERC20(token), - address(circleBridge), - amountReceived - ); + const sender = await getSigner(ctx); + const receiver = await getSigner(rcv); - // burn tokens on the bridge - nonce = circleBridge.depositForBurnWithCaller( - amountReceived, - getDomainFromChainId(targetChain), - mintRecipient, - token, - getRegisteredEmitter(targetChain) - ); - } + // Get a Token Bridge contract client on the source + const sndTb = await ctx.getTokenBridge(); - function custodyTokens( - address token, - uint256 amount - ) internal returns (uint256) { - // query own token balance before transfer - (, bytes memory queriedBalanceBefore) = token.staticcall( - abi.encodeWithSelector(IERC20.balanceOf.selector, address(this)) - ); - uint256 balanceBefore = abi.decode(queriedBalanceBefore, (uint256)); + // Send the native token of the source chain + const tokenId = Wormhole.tokenId(ctx.chain, 'native'); - // deposit tokens - SafeERC20.safeTransferFrom( - IERC20(token), - msg.sender, - address(this), - amount - ); + // Bigint amount using `amount` module + const amt = amount.units(amount.parse('0.1', ctx.config.nativeTokenDecimals)); - // query own token balance after transfer - (, bytes memory queriedBalanceAfter) = token.staticcall( - abi.encodeWithSelector(IERC20.balanceOf.selector, address(this)) - ); - uint256 balanceAfter = abi.decode(queriedBalanceAfter, (uint256)); + // Create a transaction stream for transfers + const transfer = sndTb.transfer( + sender.address.address, + receiver.address, + tokenId.address, + amt + ); - return balanceAfter - balanceBefore; - } + // Sign and send the transaction + const txids = await signSendWait(ctx, transfer, sender.signer); + console.log('Sent: ', txids); - /** - * @notice `redeemTokensWithPayload` verifies the Wormhole message from the source chain and - * verifies that the passed Circle Bridge message is valid. It calls the Circle Bridge - * contract by passing the Circle message and attestation to mint tokens to the specified - * mint recipient. It also verifies that the caller is the specified mint recipient to ensure - * atomic execution of the additional instructions in the Wormhole message. - * @dev reverts if: - * - Wormhole message is not properly attested - * - Wormhole message was not emitted from a registered contrat - * - Wormhole message was already consumed by this contract - * - msg.sender is not the encoded mintRecipient - * - Circle Bridge message and Wormhole message are not associated - * - `receiveMessage` call to Circle Transmitter fails - * @param params Struct containing the following attributes: - * - `encodedWormholeMessage` Wormhole message emitted by a registered contract including - * information regarding the token burn on the source chain and an arbitrary message. - * - `circleBridgeMessage` Message emitted by Circle Bridge contract with information regarding - * the token burn on the source chain. - * - `circleAttestation` Serialized EC Signature attesting the cross-chain transfer - * @return depositInfo Struct containing the following attributes: - * - `token` Address (bytes32 left-zero-padded) of token to be minted - * - `amount` Amount of tokens to be minted - * - `sourceDomain` Circle domain for the source chain - * - `targetDomain` Circle domain for the target chain - * - `nonce` Circle sequence number for the transfer - * - `fromAddress` Source CircleIntegration contract caller's address - * - `mintRecipient` Recipient of minted tokens (must be caller of this contract) - * - `payload` Arbitrary Wormhole message payload - */ - function redeemTokensWithPayload( - RedeemParameters calldata params - ) public returns (DepositWithPayload memory depositInfo) { - // verify the wormhole message - IWormhole.VM memory verifiedMessage = verifyWormholeRedeemMessage( - params.encodedWormholeMessage - ); + // Get the Wormhole message ID from the transaction + const [whm] = await ctx.parseTransaction(txids[txids.length - 1]!.txid); + console.log('Wormhole Messages: ', whm); - // Decode the message payload into the DepositWithPayload struct. Call the Circle TokenMinter - // contract to determine the address of the encoded token on this chain. - depositInfo = decodeDepositWithPayload(verifiedMessage.payload); - depositInfo.token = fetchLocalTokenAddress( - depositInfo.sourceDomain, - depositInfo.token - ); + const vaa = await wh.getVaa( + // Wormhole Message ID + whm!, + // Protocol:Payload name to use for decoding the VAA payload + 'TokenBridge:Transfer', + // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available + 60_000 + ); - // confirm that circle gave us a valid token address - require(depositInfo.token != bytes32(0), "invalid local token address"); + // Now get the token bridge on the redeem side + const rcvTb = await rcv.getTokenBridge(); - // confirm that the caller is the `mintRecipient` to ensure atomic execution - require( - addressToBytes32(msg.sender) == depositInfo.mintRecipient, - "caller must be mintRecipient" - ); + // Create a transaction stream for redeeming + const redeem = rcvTb.redeem(receiver.address.address, vaa!); - // confirm that the caller passed the correct message pair - require( - verifyCircleMessage( - params.circleBridgeMessage, - depositInfo.sourceDomain, - depositInfo.targetDomain, - depositInfo.nonce - ), - "invalid message pair" - ); + // Sign and send the transaction + const rcvTxids = await signSendWait(rcv, redeem, receiver.signer); + console.log('Sent: ', rcvTxids); - // call the circle bridge to mint tokens to the recipient - bool success = circleTransmitter().receiveMessage( - params.circleBridgeMessage, - params.circleAttestation - ); - require(success, "CIRCLE_INTEGRATION: failed to mint tokens"); + // Now check if the transfer is completed according to + // the destination token bridge + const finished = await rcvTb.isTransferCompleted(vaa!); + console.log('Transfer completed: ', finished); +})(); + ``` - // emit Redeemed event - emit Redeemed( - verifiedMessage.emitterChainId, - verifiedMessage.emitterAddress, - verifiedMessage.sequence - ); - } +Optionally, you can override the default configuration with a partial `WormholeConfig` object to specify particular fields, such as a different RPC endpoint. - function verifyWormholeRedeemMessage( - bytes memory encodedMessage - ) internal returns (IWormhole.VM memory) { - require(evmChain() == block.chainid, "invalid evm chain"); +```ts +const wh = await wormhole('Testnet', [solana], { + chains: { + Solana: { + contracts: { + coreBridge: '11111111111111111111111111111', + }, + rpc: 'https://api.devnet.solana.com', + }, + }, +}); +``` - // parse and verify the Wormhole core message - ( - IWormhole.VM memory verifiedMessage, - bool valid, - string memory reason - ) = wormhole().parseAndVerifyVM(encodedMessage); +??? code "View the complete script" + ```ts + import { wormhole } from '@wormhole-foundation/sdk'; +import solana from '@wormhole-foundation/sdk/solana'; +(async function () { + const wh = await wormhole('Testnet', [solana], { + chains: { + Solana: { + contracts: { + coreBridge: '11111111111111111111111111111', + }, + rpc: 'https://api.devnet.solana.com', + }, + }, + }); + console.log(wh.config.chains.Solana); +})(); + ``` - // confirm that the core layer verified the message - require(valid, reason); +## Concepts - // verify that this message was emitted by a trusted contract - require(verifyEmitter(verifiedMessage), "unknown emitter"); +Understanding several higher-level Wormhole concepts and how the SDK abstracts them away will help you use the tools most effectively. The following sections will introduce and discuss the concepts of platforms, chain contexts, addresses, signers, and protocols, how they are used in the Wormhole context, and how the SDK helps ease development in each conceptual area. - // revert if this message has been consumed already - require( - !isMessageConsumed(verifiedMessage.hash), - "message already consumed" - ); - consumeMessage(verifiedMessage.hash); +### Platforms - return verifiedMessage; - } +While every chain has unique attributes, chains from the same platform typically have standard functionalities they share. The SDK includes `Platform` modules, which create a standardized interface for interacting with the chains of a supported platform. The contents of a module vary by platform but can include: - function verifyEmitter( - IWormhole.VM memory vm - ) internal view returns (bool) { - // verify that the sender of the wormhole message is a trusted - return (getRegisteredEmitter(vm.emitterChainId) == vm.emitterAddress && - vm.emitterAddress != bytes32(0)); - } +- Protocols, such as [Wormhole core](#wormhole-core), preconfigured to suit the selected platform +- Definitions and configurations for types, signers, addresses, and chains +- Helpers configured for dealing with unsigned transactions on the selected platform - function verifyCircleMessage( - bytes memory circleMessage, - uint32 sourceDomain, - uint32 targetDomain, - uint64 nonce - ) internal pure returns (bool) { - // parse the circle bridge message inline - uint32 circleSourceDomain = circleMessage.toUint32(4); - uint32 circleTargetDomain = circleMessage.toUint32(8); - uint64 circleNonce = circleMessage.toUint64(12); +These modules also import and expose essential functions and define types or constants from the chain's native ecosystem to reduce the dependencies needed to interact with a chain using Wormhole. Rather than installing the entire native package for each desired platform, you can install a targeted package of standardized functions and definitions essential to connecting with Wormhole, keeping project dependencies as slim as possible. - // confirm that both the Wormhole message and Circle message share the same transfer info - return (sourceDomain == circleSourceDomain && - targetDomain == circleTargetDomain && - nonce == circleNonce); - } - /** - * @notice Fetches the local token address given an address and domain from - * a different chain. - * @param sourceDomain Circle domain for the sending chain. - * @param sourceToken Address of the token for the sending chain. - * @return Address bytes32 formatted address of the `sourceToken` on this chain. - */ - function fetchLocalTokenAddress( - uint32 sourceDomain, - bytes32 sourceToken - ) public view returns (bytes32) { - return - addressToBytes32( - circleTokenMinter().remoteTokensToLocalTokens( - keccak256(abi.encodePacked(sourceDomain, sourceToken)) - ) - ); - } +Wormhole currently supports the following platforms: - /** - * @notice Converts type address to bytes32 (left-zero-padded) - * @param address_ Address to convert to bytes32 - * @return Address bytes32 - */ - function addressToBytes32(address address_) public pure returns (bytes32) { - return bytes32(uint256(uint160(address_))); - } -} - ``` +- EVM +- Solana +- Cosmos +- Sui +- Aptos +- Algorand -The functions provided by the Circle Integration contract are as follows: +See the [Platforms folder of the TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/platforms){target=\_blank} for an up-to-date list of the platforms supported by the Wormhole TypeScript SDK. -- **`transferTokensWithPayload`** - calls the Circle Bridge contract to burn Circle-supported tokens. It emits a Wormhole message containing a user-specified payload with instructions for what to do with the Circle-supported assets once they have been minted on the target chain +### Chain Context - ??? interface "Parameters" +The `definitions` package of the SDK includes the `ChainContext` class, which creates an interface for working with connected chains in a standardized way. This class contains the network, chain, and platform configurations for connected chains and cached RPC and protocol clients. The `ChainContext` class also exposes chain-specific methods and utilities. Much of the functionality comes from the `Platform` methods but some specific chains may have overridden methods via the context. This is also where the `Network`, `Chain`, and `Platform` type parameters which are used throughout the package are defined. - `transferParams` ++"TransferParameters"++ +```ts +const srcChain = wh.getChain(senderAddress.chain); +const dstChain = wh.getChain(receiverAddress.chain); - A tuple containing the parameters for the transfer. +const tb = await srcChain.getTokenBridge(); // => TokenBridge<'Evm'> +srcChain.getRpcClient(); // => RpcClient<'Evm'> +``` - ??? child "`TransferParameters` struct" +### Addresses - `token` ++"address"++ +The SDK uses the `UniversalAddress` class to implement the `Address` interface, which all address types must implement. Addresses from various networks are parsed into their byte representation and modified as needed to ensure they are exactly 32 bytes long. Each platform also has an address type that understands the native address formats, referred to as `NativeAddress.` These abstractions allow you to work with addresses consistently regardless of the underlying chain. - Address of the token to be burned. +```ts +// It's possible to convert a string address to its Native address +const ethAddr: NativeAddress<'Evm'> = toNative('Ethereum', '0xbeef...'); - --- +// A common type in the SDK is the `ChainAddress` which provides +// the additional context of the `Chain` this address is relevant for +const senderAddress: ChainAddress = Wormhole.chainAddress( + 'Ethereum', + '0xbeef...' +); +const receiverAddress: ChainAddress = Wormhole.chainAddress( + 'Solana', + 'Sol1111...' +); - `amount` ++"uint256"++ +// Convert the ChainAddress back to its canonical string address format +const strAddress = Wormhole.canonicalAddress(senderAddress); // => '0xbeef...' - Amount of the token to be burned. +// Or if the ethAddr above is for an emitter and you need the UniversalAddress +const emitterAddr = ethAddr.toUniversalAddress().toString(); +``` - --- +### Tokens - `targetChain` ++"uint16"++ +Similar to the `ChainAddress` type, the `TokenId` type provides the chain and address of a given token. The following snippet introduces `TokenId`, a way to uniquely identify any token, whether it's a standard token or a blockchain's native currency (like ETH for Ethereum). - Wormhole chain ID of the target blockchain. +Wormhole uses their contract address to create a `TokenId` for standard tokens. For native currencies, Wormhole uses the keyword `native` instead of an address. This makes it easy to work with any type of token consistently. - --- +Finally, the snippet demonstrates how to convert a `TokenId` back into a regular address format when needed. - `mintRecipient` ++"bytes32"++ +```ts +const sourceToken: TokenId = Wormhole.tokenId('Ethereum', '0xbeef...'); - The recipient wallet or contract address on the target chain. +const gasToken: TokenId = Wormhole.tokenId('Ethereum', 'native'); - --- +const strAddress = Wormhole.canonicalAddress(senderAddress); // => '0xbeef...' +``` - `batchId` ++"uint32"++ +### Signers - The ID for Wormhole message batching. +Certain methods of signing transactions require a `Signer` interface in the SDK. Depending on the specific requirements, this interface can be fulfilled by either a `SignOnlySigner` or a `SignAndSendSigner`. A signer can be created by wrapping an offline or web wallet. - --- +A `SignOnlySigner` is used when the signer isn't connected to the network or prefers not to broadcast transactions themselves. It accepts an array of unsigned transactions and returns an array of signed and serialized transactions. Before signing, the transactions may be inspected or altered. It's important to note that the serialization process is chain-specific. Refer to the testing signers (e.g., [EVM](https://github.com/wormhole-foundation/connect-sdk/blob/main/platforms/evm/src/signer.ts){target=\_blank} or [Solana](https://github.com/wormhole-foundation/connect-sdk/blob/main/platforms/solana/src/signer.ts){target=\_blank}) for an example of how to implement a signer for a specific chain or platform. - `payload` ++"bytes"++ +Conversely, a `SignAndSendSigner` is appropriate when the signer is connected to the network and intends to broadcast the transactions. This type of signer also accepts an array of unsigned transactions but returns an array of transaction IDs corresponding to the order of the unsigned transactions. - Arbitrary payload to be delivered to the target chain via Wormhole. +```ts +export type Signer = SignOnlySigner | SignAndSendSigner; - ??? interface "Returns" +export interface SignOnlySigner { + chain(): ChainName; + address(): string; + // Accept an array of unsigned transactions and return + // an array of signed and serialized transactions. + // The transactions may be inspected or altered before + // signing. + sign(tx: UnsignedTransaction[]): Promise; +} - `messageSequence` ++"uint64"++ +export interface SignAndSendSigner { + chain(): ChainName; + address(): string; + // Accept an array of unsigned transactions and return + // an array of transaction ids in the same order as the + // unsignedTransactions array. + signAndSend(tx: UnsignedTransaction[]): Promise; +} +``` - Wormhole sequence number for this contract. +#### Set Up a Signer with Ethers.js -- `redeemTokensWithPayload` - verifies the Wormhole message from the source chain and verifies that the passed Circle Bridge message is valid. It calls the Circle Bridge contract by passing the Circle message and attestation to the `receiveMessage` function, which is responsible for minting tokens to the specified mint recipient. It also verifies that the caller is the specified mint recipient to ensure atomic execution of the additional instructions in the Wormhole message +To sign transactions programmatically with the Wormhole SDK, you can use Ethers.js to manage private keys and handle signing. Here's an example of setting up a signer using Ethers.js: - ??? interface "Parameters" +```javascript +import { ethers } from 'ethers'; - `params` ++"RedeemParameters"++ +// Update the following variables +const rpcUrl = 'INSERT_RPC_URL'; +const privateKey = 'INSERT_PRIVATE_KEY'; +const toAddress = 'INSERT_RECIPIENT_ADDRESS'; - A tuple containing the parameters for the redemption. +// Set up a provider and signer +const provider = new ethers.JsonRpcProvider(rpcUrl); +const signer = new ethers.Wallet(privateKey, provider); - ??? child "`RedeemParameters` struct" +// Example: Signing and sending a transaction +async function sendTransaction() { + const tx = { + to: toAddress, + value: ethers.parseUnits('0.1'), // Sending 0.1 ETH + gasPrice: await provider.getGasPrice(), + gasLimit: ethers.toBeHex(21000), + }; - `encodedWormholeMessage` ++"bytes"++ + const transaction = await signer.sendTransaction(tx); + console.log('Transaction hash:', transaction.hash); +} +sendTransaction(); +``` - Wormhole message emitted by a registered contract including information regarding the token burn on the source chain and an arbitrary message. + - **`provider`** - responsible for connecting to the Ethereum network (or any EVM-compatible network). It acts as a bridge between your application and the blockchain, allowing you to fetch data, check the state of the blockchain, and submit transactions - --- + - **`signer`** - represents the account that will sign the transaction. In this case, you’re creating a signer using the private key associated with the account. The signer is responsible for authorizing transactions by digitally signing them with the private key - `circleBridgeMessage` ++"bytes"++ + - **`Wallet`** - combines both the provider (for blockchain interaction) and the signer (for transaction authorization), allowing you to sign and send transactions programmatically - Message emitted by Circle Bridge contract with information regarding the token burn on the source chain. +These components work together to create, sign, and submit a transaction to the blockchain. - --- +???- tip "Managing Private Keys Securely" + Handling private keys is unavoidable, so it’s crucial to manage them securely. Here are some best practices: - `circleAttestation` ++"bytes"++ + - **Use environment variables** - avoid hardcoding private keys in your code. Use environment variables or secret management tools to inject private keys securely + - **Hardware wallets** - for production environments, consider integrating hardware wallets to keep private keys secure while allowing programmatic access through the SDK - Serialized EC signature attesting the cross-chain transfer. +### Protocols - ??? interface "Returns" +While Wormhole is a Generic Message Passing (GMP) protocol, several protocols have been built to provide specific functionality. If available, each protocol will have a platform-specific implementation. These implementations provide methods to generate transactions or read state from the contract on-chain. - `depositInfo` ++"DepositWithPayload"++ +#### Wormhole Core - Information about the deposit. +The core protocol underlies all Wormhole activity. This protocol is responsible for emitting the message containing the information necessary to perform bridging, including the [emitter address](https://docs.wormhole.com/wormhole/reference/glossary#emitter){target=\_blank}, the [sequence number](https://docs.wormhole.com/wormhole/reference/glossary#sequence){target=\_blank} for the message, and the payload of the message itself. - ??? child "`DepositWithPayload` struct" +The following example demonstrates sending and verifying a message using the Wormhole Core protocol on Solana. - `token` ++"bytes32"++ +First, initialize a Wormhole instance for the Testnet environment, specifically for the Solana chain. Then, obtain a signer and its associated address, which will be used to sign transactions. - Address (`bytes32` left-zero-padded) of token to be minted. +Next, get a reference to the core messaging bridge, which is the main interface for interacting with Wormhole's cross-chain messaging capabilities. +The code then prepares a message for publication. This message includes: - --- +- The sender's address +- The message payload (in this case, the encoded string `lol`) +- A nonce (set to `0` here, but can be any user-defined value to uniquely identify the message) +- A consistency level (set to `0`, which determines the finality requirements for the message) - `amount` ++"uint256"++ +After preparing the message, the next steps are to generate, sign, and send the transaction or transactions required to publish the message on the Solana blockchain. Once the transaction is confirmed, the Wormhole message ID is extracted from the transaction logs. This ID is crucial for tracking the message across chains. - Amount of tokens to be minted. - - --- +The code then waits for the Wormhole network to process and sign the message, turning it into a Verified Action Approval (VAA). This VAA is retrieved in a `Uint8Array` format, with a timeout of 60 seconds. - `sourceDomain` ++"uint32"++ +Lastly, the code will demonstrate how to verify the message on the receiving end. A verification transaction is prepared using the original sender's address and the VAA, and finally, this transaction is signed and sent. - Circle domain for the source chain. +???+ code "View the complete script" + ```ts + import { encoding, signSendWait, wormhole } from '@wormhole-foundation/sdk'; +import { getSigner } from './helpers/index.js'; +import solana from '@wormhole-foundation/sdk/solana'; +import evm from '@wormhole-foundation/sdk/evm'; - --- +(async function () { + const wh = await wormhole('Testnet', [solana, evm]); - `targetDomain` ++"uint32"++ + const chain = wh.getChain('Avalanche'); + const { signer, address } = await getSigner(chain); - Circle domain for the target chain. + // Get a reference to the core messaging bridge + const coreBridge = await chain.getWormholeCore(); - --- + // Generate transactions, sign and send them + const publishTxs = coreBridge.publishMessage( + // Address of sender (emitter in VAA) + address.address, + // Message to send (payload in VAA) + encoding.bytes.encode('lol'), + // Nonce (user defined, no requirement for a specific value, useful to provide a unique identifier for the message) + 0, + // ConsistencyLevel (ie finality of the message, see wormhole docs for more) + 0 + ); + // Send the transaction(s) to publish the message + const txids = await signSendWait(chain, publishTxs, signer); - `nonce` ++"uint64"++ + // Take the last txid in case multiple were sent + // The last one should be the one containing the relevant + // event or log info + const txid = txids[txids.length - 1]; - Circle sequence number for the transfer. + // Grab the wormhole message id from the transaction logs or storage + const [whm] = await chain.parseTransaction(txid!.txid); - --- + // Wait for the vaa to be signed and available with a timeout + const vaa = await wh.getVaa(whm!, 'Uint8Array', 60_000); + console.log(vaa); - `fromAddress` ++"bytes32"++ + // Note: calling verifyMessage manually is typically not a useful thing to do + // As the VAA is typically submitted to the counterpart contract for + // A given protocol and the counterpart contract will verify the VAA + // This is simply for demo purposes + const verifyTxs = coreBridge.verifyMessage(address.address, vaa!); + console.log(await signSendWait(chain, verifyTxs, signer)); +})(); + ``` - Source Circle Integration contract caller's address. +The payload contains the information necessary to perform whatever action is required based on the protocol that uses it. - --- +#### Token Bridge - `mintRecipient` ++"bytes32"++ +The most familiar protocol built on Wormhole is the Token Bridge. Every chain has a `TokenBridge` protocol client that provides a consistent interface for interacting with the Token Bridge, which includes methods to generate the transactions required to transfer tokens and methods to generate and redeem attestations. `WormholeTransfer` abstractions are the recommended way to interact with these protocols, but it is possible to use them directly. - Recipient of minted tokens (must be caller of this contract). +```ts +import { signSendWait } from '@wormhole-foundation/sdk'; - --- +const tb = await srcChain.getTokenBridge(); - `payload` ++"bytes"++ +const token = '0xdeadbeef...'; +const txGenerator = tb.createAttestation(token); +const txids = await signSendWait(srcChain, txGenerator, src.signer); +``` - Arbitrary Wormhole message payload. +Supported protocols are defined in the [definitions module](https://github.com/wormhole-foundation/connect-sdk/tree/main/core/definitions/src/protocols){target=\_blank}. - ??? interface "Emits" +## Transfers - `Redeemed` - event emitted when Circle-supported assets have been minted to the `mintRecipient` +While using the [`ChainContext`](#chain-context) and [`Protocol`](#protocols) clients directly is possible, the SDK provides some helpful abstractions for transferring tokens. - ??? child "Event arguments" +The `WormholeTransfer` interface provides a convenient abstraction to encapsulate the steps involved in a cross-chain transfer. - `emitterChainId` ++"uint16"++ +### Token Transfers - Wormhole chain ID of emitter contract on source chain. +Performing a token transfer is trivial for any source and destination chains. You can create a new `Wormhole` object to make objects like `TokenTransfer` and `CircleTransfer`, to transfer tokens between chains. - --- +The following example demonstrates the process of initiating and completing a token transfer. It starts by creating a `TokenTransfer` object, which tracks the transfer's state throughout its lifecycle. The code then obtains a quote for the transfer, ensuring the amount is sufficient to cover fees and any requested native gas. - `emitterAddress` ++"bytes32"++ +The transfer process is divided into three main steps: - Address (`bytes32` zero-left-padded) of emitter on source chain. +1. Initiating the transfer on the source chain +2. Waiting for the transfer to be attested (if not automatic) +3. Completing the transfer on the destination chain - --- +For automatic transfers, the process ends after initiation. The code waits for the transfer to be attested for manual transfers and then completes it on the destination chain. - `sequence` ++"uint64"++ +```ts +const xfer = await wh.tokenTransfer( + route.token, + route.amount, + route.source.address, + route.destination.address, + route.delivery?.automatic ?? false, + route.payload, + route.delivery?.nativeGas + ); - Sequence of Wormhole message used to mint tokens. + const quote = await TokenTransfer.quoteTransfer( + wh, + route.source.chain, + route.destination.chain, + xfer.transfer + ); + console.log(quote); -## Circle's CCTP Contracts + if (xfer.transfer.automatic && quote.destinationToken.amount < 0) + throw 'The amount requested is too low to cover the fee and any native gas requested.'; -Three key contracts power Circle's CCTP: + // 1) Submit the transactions to the source chain, passing a signer to sign any txns + console.log('Starting transfer'); + const srcTxids = await xfer.initiateTransfer(route.source.signer); + console.log(`Started transfer: `, srcTxids); -- **`TokenMessenger`** - the entry point for cross-chain USDC transfers, routing messages to initiate USDC burns on the source chain, and mint USDC on the destination chain -- **`MessageTransmitter`** - handles generic message passing, sending messages from the source chain and receiving them on the destination chain -- **`TokenMinter`** - responsible for the actual minting and burning of USDC, utilizing chain-specific settings for both the burners and minters across different networks + // If automatic, we're done + if (route.delivery?.automatic) return xfer; -The following sections will examine these contracts in-depth, focusing on the methods invoked indirectly through function calls in the Wormhole Circle Integration contract. + // 2) Wait for the VAA to be signed and ready (not required for auto transfer) + console.log('Getting Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); -!!! note - When using Wormhole's CCTP integration, you will not directly interact with these contracts. You will indirectly interact with them through the Wormhole Circle Integration contract. + // 3) Redeem the VAA on the dest chain + console.log('Completing Transfer'); + const destTxids = await xfer.completeTransfer(route.destination.signer); + console.log(`Completed Transfer: `, destTxids); +``` -These contracts can be found in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/){target=\_blank} on GitHub. +??? code "View the complete script" + ```ts hl_lines="122" + import { + Chain, + Network, + TokenId, + TokenTransfer, + Wormhole, + amount, + isTokenId, + wormhole, +} from '@wormhole-foundation/sdk'; -### Token Messenger Contract +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { SignerStuff, getSigner, waitLog } from './helpers/index.js'; -The Token Messenger contract enables cross-chain USDC transfers by coordinating message exchanges between blockchains. It works alongside the Message Transmitter contract to relay messages for burning USDC on a source chain and minting it on a destination chain. The contract emits events to track both the burning of tokens and their subsequent minting on the destination chain. +(async function () { + // Init Wormhole object, passing config for which network + // to use (e.g. Mainnet/Testnet) and what Platforms to support + const wh = await wormhole('Testnet', [evm, solana]); -To ensure secure communication, the Token Messenger restricts message handling to registered remote Token Messenger contracts only. It verifies the proper conditions for token burning and manages local and remote minters using chain-specific settings. + // Grab chain Contexts -- these hold a reference to a cached rpc client + const sendChain = wh.getChain('Avalanche'); + const rcvChain = wh.getChain('Solana'); -Additionally, the contract provides methods for updating or replacing previously sent burn messages, adding or removing remote Token Messenger contracts, and managing the minting process for cross-chain transfers. + // Shortcut to allow transferring native gas token + const token = Wormhole.tokenId(sendChain.chain, 'native'); -??? code "Token Messenger contract" - ```solidity - /* - * Copyright (c) 2022, Circle Internet Financial Limited. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -pragma solidity 0.7.6; + // A TokenId is just a `{chain, address}` pair and an alias for ChainAddress + // The `address` field must be a parsed address. + // You can get a TokenId (or ChainAddress) prepared for you + // by calling the static `chainAddress` method on the Wormhole class. + // e.g. + // wAvax on Solana + // const token = Wormhole.tokenId("Solana", "3Ftc5hTz9sG4huk79onufGiebJNDMZNL8HYgdMJ9E7JR"); + // wSol on Avax + // const token = Wormhole.tokenId("Avalanche", "0xb10563644a6AB8948ee6d7f5b0a1fb15AaEa1E03"); -import "./interfaces/IMessageHandler.sol"; -import "./interfaces/ITokenMinter.sol"; -import "./interfaces/IMintBurnToken.sol"; -import "./interfaces/IMessageTransmitter.sol"; -import "./messages/BurnMessage.sol"; -import "./messages/Message.sol"; -import "./roles/Rescuable.sol"; + // Normalized given token decimals later but can just pass bigints as base units + // Note: The Token bridge will dedust past 8 decimals + // This means any amount specified past that point will be returned + // To the caller + const amt = '0.05'; -/** - * @title TokenMessenger - * @notice Sends messages and receives messages to/from MessageTransmitters - * and to/from TokenMinters - */ -contract TokenMessenger is IMessageHandler, Rescuable { - // ============ Events ============ - /** - * @notice Emitted when a DepositForBurn message is sent - * @param nonce unique nonce reserved by message - * @param burnToken address of token burnt on source domain - * @param amount deposit amount - * @param depositor address where deposit is transferred from - * @param mintRecipient address receiving minted tokens on destination domain as bytes32 - * @param destinationDomain destination domain - * @param destinationTokenMessenger address of TokenMessenger on destination domain as bytes32 - * @param destinationCaller authorized caller as bytes32 of receiveMessage() on destination domain, if not equal to bytes32(0). - * If equal to bytes32(0), any address can call receiveMessage(). - */ - event DepositForBurn( - uint64 indexed nonce, - address indexed burnToken, - uint256 amount, - address indexed depositor, - bytes32 mintRecipient, - uint32 destinationDomain, - bytes32 destinationTokenMessenger, - bytes32 destinationCaller - ); + // With automatic set to true, perform an automatic transfer. This will invoke a relayer + // Contract intermediary that knows to pick up the transfers + // With automatic set to false, perform a manual transfer from source to destination + // Of the token + // On the destination side, a wrapped version of the token will be minted + // To the address specified in the transfer VAA + const automatic = false; - /** - * @notice Emitted when tokens are minted - * @param mintRecipient recipient address of minted tokens - * @param amount amount of minted tokens - * @param mintToken contract address of minted token - */ - event MintAndWithdraw( - address indexed mintRecipient, - uint256 amount, - address indexed mintToken - ); + // The Wormhole relayer has the ability to deliver some native gas funds to the destination account + // The amount specified for native gas will be swapped for the native gas token according + // To the swap rate provided by the contract, denominated in native gas tokens + const nativeGas = automatic ? '0.01' : undefined; - /** - * @notice Emitted when a remote TokenMessenger is added - * @param domain remote domain - * @param tokenMessenger TokenMessenger on remote domain - */ - event RemoteTokenMessengerAdded(uint32 domain, bytes32 tokenMessenger); + // Get signer from local key but anything that implements + // Signer interface (e.g. wrapper around web wallet) should work + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); - /** - * @notice Emitted when a remote TokenMessenger is removed - * @param domain remote domain - * @param tokenMessenger TokenMessenger on remote domain - */ - event RemoteTokenMessengerRemoved(uint32 domain, bytes32 tokenMessenger); + // Used to normalize the amount to account for the tokens decimals + const decimals = isTokenId(token) + ? Number(await wh.getDecimals(token.chain, token.address)) + : sendChain.config.nativeTokenDecimals; - /** - * @notice Emitted when the local minter is added - * @param localMinter address of local minter - * @notice Emitted when the local minter is added - */ - event LocalMinterAdded(address localMinter); + // Set this to true if you want to perform a round trip transfer + const roundTrip: boolean = false; - /** - * @notice Emitted when the local minter is removed - * @param localMinter address of local minter - * @notice Emitted when the local minter is removed - */ - event LocalMinterRemoved(address localMinter); + // Set this to the transfer txid of the initiating transaction to recover a token transfer + // And attempt to fetch details about its progress. + let recoverTxid = undefined; - // ============ Libraries ============ - using TypedMemView for bytes; - using TypedMemView for bytes29; - using BurnMessage for bytes29; - using Message for bytes29; + // Finally create and perform the transfer given the parameters set above + const xfer = !recoverTxid + ? // Perform the token transfer + await tokenTransfer( + wh, + { + token, + amount: amount.units(amount.parse(amt, decimals)), + source, + destination, + delivery: { + automatic, + nativeGas: nativeGas + ? amount.units(amount.parse(nativeGas, decimals)) + : undefined, + }, + }, + roundTrip + ) + : // Recover the transfer from the originating txid + await TokenTransfer.from(wh, { + chain: source.chain.chain, + txid: recoverTxid, + }); - // ============ State Variables ============ - // Local Message Transmitter responsible for sending and receiving messages to/from remote domains - IMessageTransmitter public immutable localMessageTransmitter; + const receipt = await waitLog(wh, xfer); - // Version of message body format - uint32 public immutable messageBodyVersion; + // Log out the results + console.log(receipt); +})(); - // Minter responsible for minting and burning tokens on the local domain - ITokenMinter public localMinter; +async function tokenTransfer( + wh: Wormhole, + route: { + token: TokenId; + amount: bigint; + source: SignerStuff; + destination: SignerStuff; + delivery?: { + automatic: boolean; + nativeGas?: bigint; + }; + payload?: Uint8Array; + }, + roundTrip?: boolean +): Promise> { + // Create a TokenTransfer object to track the state of the transfer over time + const xfer = await wh.tokenTransfer( + route.token, + route.amount, + route.source.address, + route.destination.address, + route.delivery?.automatic ?? false, + route.payload, + route.delivery?.nativeGas + ); - // Valid TokenMessengers on remote domains - mapping(uint32 => bytes32) public remoteTokenMessengers; + const quote = await TokenTransfer.quoteTransfer( + wh, + route.source.chain, + route.destination.chain, + xfer.transfer + ); + console.log(quote); - // ============ Modifiers ============ - /** - * @notice Only accept messages from a registered TokenMessenger contract on given remote domain - * @param domain The remote domain - * @param tokenMessenger The address of the TokenMessenger contract for the given remote domain - */ - modifier onlyRemoteTokenMessenger(uint32 domain, bytes32 tokenMessenger) { - require( - _isRemoteTokenMessenger(domain, tokenMessenger), - "Remote TokenMessenger unsupported" - ); - _; - } + if (xfer.transfer.automatic && quote.destinationToken.amount < 0) + throw 'The amount requested is too low to cover the fee and any native gas requested.'; - /** - * @notice Only accept messages from the registered message transmitter on local domain - */ - modifier onlyLocalMessageTransmitter() { - // Caller must be the registered message transmitter for this domain - require(_isLocalMessageTransmitter(), "Invalid message transmitter"); - _; - } + // 1) Submit the transactions to the source chain, passing a signer to sign any txns + console.log('Starting transfer'); + const srcTxids = await xfer.initiateTransfer(route.source.signer); + console.log(`Started transfer: `, srcTxids); - // ============ Constructor ============ - /** - * @param _messageTransmitter Message transmitter address - * @param _messageBodyVersion Message body version - */ - constructor(address _messageTransmitter, uint32 _messageBodyVersion) { - require( - _messageTransmitter != address(0), - "MessageTransmitter not set" - ); - localMessageTransmitter = IMessageTransmitter(_messageTransmitter); - messageBodyVersion = _messageBodyVersion; - } + // If automatic, we're done + if (route.delivery?.automatic) return xfer; - // ============ External Functions ============ - /** - * @notice Deposits and burns tokens from sender to be minted on destination domain. - * Emits a `DepositForBurn` event. - * @dev reverts if: - * - given burnToken is not supported - * - given destinationDomain has no TokenMessenger registered - * - transferFrom() reverts. For example, if sender's burnToken balance or approved allowance - * to this contract is less than `amount`. - * - burn() reverts. For example, if `amount` is 0. - * - MessageTransmitter returns false or reverts. - * @param amount amount of tokens to burn - * @param destinationDomain destination domain - * @param mintRecipient address of mint recipient on destination domain - * @param burnToken address of contract to burn deposited tokens, on local domain - * @return _nonce unique nonce reserved by message - */ - function depositForBurn( - uint256 amount, - uint32 destinationDomain, - bytes32 mintRecipient, - address burnToken - ) external returns (uint64 _nonce) { - return - _depositForBurn( - amount, - destinationDomain, - mintRecipient, - burnToken, - // (bytes32(0) here indicates that any address can call receiveMessage() - // on the destination domain, triggering mint to specified `mintRecipient`) - bytes32(0) - ); - } + // 2) Wait for the VAA to be signed and ready (not required for auto transfer) + console.log('Getting Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); - /** - * @notice Deposits and burns tokens from sender to be minted on destination domain. The mint - * on the destination domain must be called by `destinationCaller`. - * WARNING: if the `destinationCaller` does not represent a valid address as bytes32, then it will not be possible - * to broadcast the message on the destination domain. This is an advanced feature, and the standard - * depositForBurn() should be preferred for use cases where a specific destination caller is not required. - * Emits a `DepositForBurn` event. - * @dev reverts if: - * - given destinationCaller is zero address - * - given burnToken is not supported - * - given destinationDomain has no TokenMessenger registered - * - transferFrom() reverts. For example, if sender's burnToken balance or approved allowance - * to this contract is less than `amount`. - * - burn() reverts. For example, if `amount` is 0. - * - MessageTransmitter returns false or reverts. - * @param amount amount of tokens to burn - * @param destinationDomain destination domain - * @param mintRecipient address of mint recipient on destination domain - * @param burnToken address of contract to burn deposited tokens, on local domain - * @param destinationCaller caller on the destination domain, as bytes32 - * @return nonce unique nonce reserved by message - */ - function depositForBurnWithCaller( - uint256 amount, - uint32 destinationDomain, - bytes32 mintRecipient, - address burnToken, - bytes32 destinationCaller - ) external returns (uint64 nonce) { - // Destination caller must be nonzero. To allow any destination caller, use depositForBurn(). - require(destinationCaller != bytes32(0), "Invalid destination caller"); + // 3) Redeem the VAA on the dest chain + console.log('Completing Transfer'); + const destTxids = await xfer.completeTransfer(route.destination.signer); + console.log(`Completed Transfer: `, destTxids); - return - _depositForBurn( - amount, - destinationDomain, - mintRecipient, - burnToken, - destinationCaller - ); - } + // If no need to send back, dip + if (!roundTrip) return xfer; - /** - * @notice Replace a BurnMessage to change the mint recipient and/or - * destination caller. Allows the sender of a previous BurnMessage - * (created by depositForBurn or depositForBurnWithCaller) - * to send a new BurnMessage to replace the original. - * The new BurnMessage will reuse the amount and burn token of the original, - * without requiring a new deposit. - * @dev The new message will reuse the original message's nonce. For a - * given nonce, all replacement message(s) and the original message are - * valid to broadcast on the destination domain, until the first message - * at the nonce confirms, at which point all others are invalidated. - * Note: The msg.sender of the replaced message must be the same as the - * msg.sender of the original message. - * @param originalMessage original message bytes (to replace) - * @param originalAttestation original attestation bytes - * @param newDestinationCaller the new destination caller, which may be the - * same as the original destination caller, a new destination caller, or an empty - * destination caller (bytes32(0), indicating that any destination caller is valid.) - * @param newMintRecipient the new mint recipient, which may be the same as the - * original mint recipient, or different. - */ - function replaceDepositForBurn( - bytes calldata originalMessage, - bytes calldata originalAttestation, - bytes32 newDestinationCaller, - bytes32 newMintRecipient - ) external { - bytes29 _originalMsg = originalMessage.ref(0); - _originalMsg._validateMessageFormat(); - bytes29 _originalMsgBody = _originalMsg._messageBody(); - _originalMsgBody._validateBurnMessageFormat(); + const { destinationToken: token } = quote; + return await tokenTransfer(wh, { + ...route, + token: token.token, + amount: token.amount, + source: route.destination, + destination: route.source, + }); +} + ``` - bytes32 _originalMsgSender = _originalMsgBody._getMessageSender(); - // _originalMsgSender must match msg.sender of original message - require( - msg.sender == Message.bytes32ToAddress(_originalMsgSender), - "Invalid sender for message" - ); - require( - newMintRecipient != bytes32(0), - "Mint recipient must be nonzero" - ); +Internally, this uses the [TokenBridge](#token-bridge) protocol client to transfer tokens. Like other Protocols, the `TokenBridge` protocol provides a consistent set of methods across all chains to generate a set of transactions for that specific chain. - bytes32 _burnToken = _originalMsgBody._getBurnToken(); - uint256 _amount = _originalMsgBody._getAmount(); +### Native USDC Transfers - bytes memory _newMessageBody = BurnMessage._formatMessage( - messageBodyVersion, - _burnToken, - newMintRecipient, - _amount, - _originalMsgSender - ); +You can also transfer native USDC using [Circle's CCTP](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank}. Please note that if the transfer is set to `Automatic` mode, a fee for performing the relay will be included in the quote. This fee is deducted from the total amount requested to be sent. For example, if the user wishes to receive `1.0` on the destination, the amount sent should be adjusted to `1.0` plus the relay fee. The same principle applies to native gas drop offs. - localMessageTransmitter.replaceMessage( - originalMessage, - originalAttestation, - _newMessageBody, - newDestinationCaller - ); +In the following example, the `wh.circleTransfer` function is called with several parameters to set up the transfer. It takes the amount to be transferred (in the token's base units), the sender's chain and address, and the receiver's chain and address. The function also allows specifying whether the transfer should be automatic, meaning it will be completed without further user intervention. - emit DepositForBurn( - _originalMsg._nonce(), - Message.bytes32ToAddress(_burnToken), - _amount, - msg.sender, - newMintRecipient, - _originalMsg._destinationDomain(), - _originalMsg._recipient(), - newDestinationCaller - ); - } +An optional payload can be included with the transfer, though it's set to undefined in this case. Finally, if the transfer is automatic, you can request that native gas (the blockchain's native currency used for transaction fees) be sent to the receiver along with the transferred tokens. - /** - * @notice Handles an incoming message received by the local MessageTransmitter, - * and takes the appropriate action. For a burn message, mints the - * associated token to the requested recipient on the local domain. - * @dev Validates the local sender is the local MessageTransmitter, and the - * remote sender is a registered remote TokenMessenger for `remoteDomain`. - * @param remoteDomain The domain where the message originated from. - * @param sender The sender of the message (remote TokenMessenger). - * @param messageBody The message body bytes. - * @return success Bool, true if successful. - */ - function handleReceiveMessage( - uint32 remoteDomain, - bytes32 sender, - bytes calldata messageBody - ) - external - override - onlyLocalMessageTransmitter - onlyRemoteTokenMessenger(remoteDomain, sender) - returns (bool) - { - bytes29 _msg = messageBody.ref(0); - _msg._validateBurnMessageFormat(); - require( - _msg._getVersion() == messageBodyVersion, - "Invalid message body version" - ); +When waiting for the `VAA`, a timeout of `60,000` milliseconds is used. The amount of time required for the VAA to become available will [vary by network](https://developers.circle.com/stablecoins/docs/required-block-confirmations#mainnet){target=\_blank}. - bytes32 _mintRecipient = _msg._getMintRecipient(); - bytes32 _burnToken = _msg._getBurnToken(); - uint256 _amount = _msg._getAmount(); +```ts +// Amount as bigint (base units) + req.amount, + // Sender chain/address + src.address, + // Receiver chain/address + dst.address, + // Automatic delivery boolean + req.automatic, + // Payload to be sent with the transfer + undefined, + // If automatic, native gas can be requested to be sent to the receiver + req.nativeGas + ); - ITokenMinter _localMinter = _getLocalMinter(); + // Note, if the transfer is requested to be Automatic, a fee for performing the relay + // will be present in the quote. The fee comes out of the amount requested to be sent. + // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. + // The same applies for native gas dropoff + const quote = await CircleTransfer.quoteTransfer( + src.chain, + dst.chain, + xfer.transfer + ); + console.log('Quote', quote); - _mintAndWithdraw( - address(_localMinter), - remoteDomain, - _burnToken, - Message.bytes32ToAddress(_mintRecipient), - _amount - ); + console.log('Starting Transfer'); + const srcTxids = await xfer.initiateTransfer(src.signer); + console.log(`Started Transfer: `, srcTxids); - return true; - } + if (req.automatic) { + const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); + console.log(`Finished relay: `, relayStatus); + return; + } - /** - * @notice Add the TokenMessenger for a remote domain. - * @dev Reverts if there is already a TokenMessenger set for domain. - * @param domain Domain of remote TokenMessenger. - * @param tokenMessenger Address of remote TokenMessenger as bytes32. - */ - function addRemoteTokenMessenger(uint32 domain, bytes32 tokenMessenger) - external - onlyOwner - { - require(tokenMessenger != bytes32(0), "bytes32(0) not allowed"); + console.log('Waiting for Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); - require( - remoteTokenMessengers[domain] == bytes32(0), - "TokenMessenger already set" - ); + console.log('Completing Transfer'); + const dstTxids = await xfer.completeTransfer(dst.signer); + console.log(`Completed Transfer: `, dstTxids); +} +``` - remoteTokenMessengers[domain] = tokenMessenger; - emit RemoteTokenMessengerAdded(domain, tokenMessenger); - } +??? code "View the complete script" + ```ts + import { + Chain, + CircleTransfer, + Network, + Signer, + TransactionId, + TransferState, + Wormhole, + amount, + wormhole, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { SignerStuff, getSigner, waitForRelay } from './helpers/index.js'; - /** - * @notice Remove the TokenMessenger for a remote domain. - * @dev Reverts if there is no TokenMessenger set for `domain`. - * @param domain Domain of remote TokenMessenger - */ - function removeRemoteTokenMessenger(uint32 domain) external onlyOwner { - // No TokenMessenger set for given remote domain. - require( - remoteTokenMessengers[domain] != bytes32(0), - "No TokenMessenger set" - ); +/* +Notes: +Only a subset of chains are supported by Circle for CCTP, see core/base/src/constants/circle.ts for currently supported chains - bytes32 _removedTokenMessenger = remoteTokenMessengers[domain]; - delete remoteTokenMessengers[domain]; - emit RemoteTokenMessengerRemoved(domain, _removedTokenMessenger); - } +AutoRelayer takes a 0.1 USDC fee when transferring to any chain beside Goerli, which is 1 USDC +*/ +// - /** - * @notice Add minter for the local domain. - * @dev Reverts if a minter is already set for the local domain. - * @param newLocalMinter The address of the minter on the local domain. - */ - function addLocalMinter(address newLocalMinter) external onlyOwner { - require(newLocalMinter != address(0), "Zero address not allowed"); +(async function () { + // Init the Wormhole object, passing in the config for which network + // to use (e.g. Mainnet/Testnet) and what Platforms to support + const wh = await wormhole('Testnet', [evm, solana]); - require( - address(localMinter) == address(0), - "Local minter is already set." - ); + // Grab chain Contexts + const sendChain = wh.getChain('Avalanche'); + const rcvChain = wh.getChain('Solana'); - localMinter = ITokenMinter(newLocalMinter); + // Get signer from local key but anything that implements + // Signer interface (e.g. wrapper around web wallet) should work + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); - emit LocalMinterAdded(newLocalMinter); - } + // 6 decimals for USDC (except for BSC, so check decimals before using this) + const amt = amount.units(amount.parse('0.2', 6)); - /** - * @notice Remove the minter for the local domain. - * @dev Reverts if the minter of the local domain is not set. - */ - function removeLocalMinter() external onlyOwner { - address _localMinterAddress = address(localMinter); - require(_localMinterAddress != address(0), "No local minter is set."); + // Choose whether or not to have the attestation delivered for you + const automatic = false; - delete localMinter; - emit LocalMinterRemoved(_localMinterAddress); - } + // If the transfer is requested to be automatic, you can also request that + // during redemption, the receiver gets some amount of native gas transferred to them + // so that they may pay for subsequent transactions + // The amount specified here is denominated in the token being transferred (USDC here) + const nativeGas = automatic ? amount.units(amount.parse('0.0', 6)) : 0n; - // ============ Internal Utils ============ - /** - * @notice Deposits and burns tokens from sender to be minted on destination domain. - * Emits a `DepositForBurn` event. - * @param _amount amount of tokens to burn (must be non-zero) - * @param _destinationDomain destination domain - * @param _mintRecipient address of mint recipient on destination domain - * @param _burnToken address of contract to burn deposited tokens, on local domain - * @param _destinationCaller caller on the destination domain, as bytes32 - * @return nonce unique nonce reserved by message - */ - function _depositForBurn( - uint256 _amount, - uint32 _destinationDomain, - bytes32 _mintRecipient, - address _burnToken, - bytes32 _destinationCaller - ) internal returns (uint64 nonce) { - require(_amount > 0, "Amount must be nonzero"); - require(_mintRecipient != bytes32(0), "Mint recipient must be nonzero"); + await cctpTransfer(wh, source, destination, { + amount: amt, + automatic, + nativeGas, + }); - bytes32 _destinationTokenMessenger = _getRemoteTokenMessenger( - _destinationDomain - ); +})(); - ITokenMinter _localMinter = _getLocalMinter(); - IMintBurnToken _mintBurnToken = IMintBurnToken(_burnToken); - require( - _mintBurnToken.transferFrom( - msg.sender, - address(_localMinter), - _amount - ), - "Transfer operation failed" - ); - _localMinter.burn(_burnToken, _amount); +async function cctpTransfer( + wh: Wormhole, + src: SignerStuff, + dst: SignerStuff, + req: { + amount: bigint; + automatic: boolean; + nativeGas?: bigint; + } +) { - // Format message body - bytes memory _burnMessage = BurnMessage._formatMessage( - messageBodyVersion, - Message.addressToBytes32(_burnToken), - _mintRecipient, - _amount, - Message.addressToBytes32(msg.sender) - ); - - uint64 _nonceReserved = _sendDepositForBurnMessage( - _destinationDomain, - _destinationTokenMessenger, - _destinationCaller, - _burnMessage - ); + const xfer = await wh.circleTransfer( + // Amount as bigint (base units) + req.amount, + // Sender chain/address + src.address, + // Receiver chain/address + dst.address, + // Automatic delivery boolean + req.automatic, + // Payload to be sent with the transfer + undefined, + // If automatic, native gas can be requested to be sent to the receiver + req.nativeGas + ); - emit DepositForBurn( - _nonceReserved, - _burnToken, - _amount, - msg.sender, - _mintRecipient, - _destinationDomain, - _destinationTokenMessenger, - _destinationCaller - ); + // Note, if the transfer is requested to be Automatic, a fee for performing the relay + // will be present in the quote. The fee comes out of the amount requested to be sent. + // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. + // The same applies for native gas dropoff + const quote = await CircleTransfer.quoteTransfer( + src.chain, + dst.chain, + xfer.transfer + ); + console.log('Quote', quote); - return _nonceReserved; - } + console.log('Starting Transfer'); + const srcTxids = await xfer.initiateTransfer(src.signer); + console.log(`Started Transfer: `, srcTxids); - /** - * @notice Sends a BurnMessage through the local message transmitter - * @dev calls local message transmitter's sendMessage() function if `_destinationCaller` == bytes32(0), - * or else calls sendMessageWithCaller(). - * @param _destinationDomain destination domain - * @param _destinationTokenMessenger address of registered TokenMessenger contract on destination domain, as bytes32 - * @param _destinationCaller caller on the destination domain, as bytes32. If `_destinationCaller` == bytes32(0), - * any address can call receiveMessage() on destination domain. - * @param _burnMessage formatted BurnMessage bytes (message body) - * @return nonce unique nonce reserved by message - */ - function _sendDepositForBurnMessage( - uint32 _destinationDomain, - bytes32 _destinationTokenMessenger, - bytes32 _destinationCaller, - bytes memory _burnMessage - ) internal returns (uint64 nonce) { - if (_destinationCaller == bytes32(0)) { - return - localMessageTransmitter.sendMessage( - _destinationDomain, - _destinationTokenMessenger, - _burnMessage - ); - } else { - return - localMessageTransmitter.sendMessageWithCaller( - _destinationDomain, - _destinationTokenMessenger, - _destinationCaller, - _burnMessage - ); - } - } + if (req.automatic) { + const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); + console.log(`Finished relay: `, relayStatus); + return; + } - /** - * @notice Mints tokens to a recipient - * @param _tokenMinter address of TokenMinter contract - * @param _remoteDomain domain where burned tokens originate from - * @param _burnToken address of token burned - * @param _mintRecipient recipient address of minted tokens - * @param _amount amount of minted tokens - */ - function _mintAndWithdraw( - address _tokenMinter, - uint32 _remoteDomain, - bytes32 _burnToken, - address _mintRecipient, - uint256 _amount - ) internal { - ITokenMinter _minter = ITokenMinter(_tokenMinter); - address _mintToken = _minter.mint( - _remoteDomain, - _burnToken, - _mintRecipient, - _amount - ); + console.log('Waiting for Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); - emit MintAndWithdraw(_mintRecipient, _amount, _mintToken); - } + console.log('Completing Transfer'); + const dstTxids = await xfer.completeTransfer(dst.signer); + console.log(`Completed Transfer: `, dstTxids); +} - /** - * @notice return the remote TokenMessenger for the given `_domain` if one exists, else revert. - * @param _domain The domain for which to get the remote TokenMessenger - * @return _tokenMessenger The address of the TokenMessenger on `_domain` as bytes32 - */ - function _getRemoteTokenMessenger(uint32 _domain) - internal - view - returns (bytes32) - { - bytes32 _tokenMessenger = remoteTokenMessengers[_domain]; - require(_tokenMessenger != bytes32(0), "No TokenMessenger for domain"); - return _tokenMessenger; - } +export async function completeTransfer( + wh: Wormhole, + txid: TransactionId, + signer: Signer +): Promise { - /** - * @notice return the local minter address if it is set, else revert. - * @return local minter as ITokenMinter. - */ - function _getLocalMinter() internal view returns (ITokenMinter) { - require(address(localMinter) != address(0), "Local minter is not set"); - return localMinter; - } + const xfer = await CircleTransfer.from(wh, txid); - /** - * @notice Return true if the given remote domain and TokenMessenger is registered - * on this TokenMessenger. - * @param _domain The remote domain of the message. - * @param _tokenMessenger The address of the TokenMessenger on remote domain. - * @return true if a remote TokenMessenger is registered for `_domain` and `_tokenMessenger`, - * on this TokenMessenger. - */ - function _isRemoteTokenMessenger(uint32 _domain, bytes32 _tokenMessenger) - internal - view - returns (bool) - { - return - _tokenMessenger != bytes32(0) && - remoteTokenMessengers[_domain] == _tokenMessenger; - } + const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); + console.log('Got attestation: ', attestIds); - /** - * @notice Returns true if the message sender is the local registered MessageTransmitter - * @return true if message sender is the registered local message transmitter - */ - function _isLocalMessageTransmitter() internal view returns (bool) { - return - address(localMessageTransmitter) != address(0) && - msg.sender == address(localMessageTransmitter); - } + const dstTxIds = await xfer.completeTransfer(signer); + console.log('Completed transfer: ', dstTxIds); } ``` - This contract and the interfaces, contracts, and libraries it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/TokenMessenger.sol){target=\_blank} on GitHub. - -The functions provided by the Token Messenger contract are as follows: +### Recovering Transfers -- **`depositForBurn`** - deposits and burns tokens from the sender to be minted on the destination domain. Minted tokens will be transferred to `mintRecipient` +It may be necessary to recover an abandoned transfer before it is completed. To do this, instantiate the `Transfer` class with the `from` static method and pass one of several types of identifiers. A `TransactionId` or `WormholeMessageId` may be used to recover the transfer. - ??? interface "Parameters" +```ts +const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); + console.log('Got attestation: ', attestIds); - `amount` ++"uint256"++ - - The amount of tokens to burn. + const dstTxIds = await xfer.completeTransfer(signer); + console.log('Completed transfer: ', dstTxIds); +``` - --- +??? code "View the complete script" + ```ts hl_lines="130" + import { + Chain, + CircleTransfer, + Network, + Signer, + TransactionId, + TransferState, + Wormhole, + amount, + wormhole, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { SignerStuff, getSigner, waitForRelay } from './helpers/index.js'; - `destinationDomain` ++"uint32"++ - - The network where the token will be minted after burn. +/* +Notes: +Only a subset of chains are supported by Circle for CCTP, see core/base/src/constants/circle.ts for currently supported chains - --- +AutoRelayer takes a 0.1 USDC fee when transferring to any chain beside Goerli, which is 1 USDC +*/ +// - `mintRecipient` ++"bytes32"++ - - Address of mint recipient on destination domain. +(async function () { + // Init the Wormhole object, passing in the config for which network + // to use (e.g. Mainnet/Testnet) and what Platforms to support + const wh = await wormhole('Testnet', [evm, solana]); - --- + // Grab chain Contexts + const sendChain = wh.getChain('Avalanche'); + const rcvChain = wh.getChain('Solana'); - `burnToken` ++"address"++ - - Address of contract to burn deposited tokens, on local domain. + // Get signer from local key but anything that implements + // Signer interface (e.g. wrapper around web wallet) should work + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); - ??? interface "Returns" + // 6 decimals for USDC (except for BSC, so check decimals before using this) + const amt = amount.units(amount.parse('0.2', 6)); - `_nonce` ++"uint64"++ - - Unique nonce reserved by message. + // Choose whether or not to have the attestation delivered for you + const automatic = false; - ??? interface "Emits" + // If the transfer is requested to be automatic, you can also request that + // during redemption, the receiver gets some amount of native gas transferred to them + // so that they may pay for subsequent transactions + // The amount specified here is denominated in the token being transferred (USDC here) + const nativeGas = automatic ? amount.units(amount.parse('0.0', 6)) : 0n; - `DepositForBurn` - event emitted when `depositForBurn` is called. The `destinationCaller` is set to `bytes32(0)` to allow any address to call `receiveMessage` on the destination domain + await cctpTransfer(wh, source, destination, { + amount: amt, + automatic, + nativeGas, + }); - ??? child "Event Arguments" +})(); - `nonce` ++"uint64"++ - - Unique nonce reserved by message (indexed). +async function cctpTransfer( + wh: Wormhole, + src: SignerStuff, + dst: SignerStuff, + req: { + amount: bigint; + automatic: boolean; + nativeGas?: bigint; + } +) { - --- + const xfer = await wh.circleTransfer( + // Amount as bigint (base units) + req.amount, + // Sender chain/address + src.address, + // Receiver chain/address + dst.address, + // Automatic delivery boolean + req.automatic, + // Payload to be sent with the transfer + undefined, + // If automatic, native gas can be requested to be sent to the receiver + req.nativeGas + ); - `burnToken` ++"address"++ - - Address of token burnt on source domain. + // Note, if the transfer is requested to be Automatic, a fee for performing the relay + // will be present in the quote. The fee comes out of the amount requested to be sent. + // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. + // The same applies for native gas dropoff + const quote = await CircleTransfer.quoteTransfer( + src.chain, + dst.chain, + xfer.transfer + ); + console.log('Quote', quote); - --- + console.log('Starting Transfer'); + const srcTxids = await xfer.initiateTransfer(src.signer); + console.log(`Started Transfer: `, srcTxids); - `amount` ++"uint256"++ - - The deposit amount. + if (req.automatic) { + const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); + console.log(`Finished relay: `, relayStatus); + return; + } - --- + console.log('Waiting for Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); - `depositor` ++"address"++ - - Address where deposit is transferred from. + console.log('Completing Transfer'); + const dstTxids = await xfer.completeTransfer(dst.signer); + console.log(`Completed Transfer: `, dstTxids); +} - --- +export async function completeTransfer( + wh: Wormhole, + txid: TransactionId, + signer: Signer +): Promise { - `mintRecipient` ++"bytes32"++ - - Address receiving minted tokens on destination domain. + const xfer = await CircleTransfer.from(wh, txid); - --- + const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); + console.log('Got attestation: ', attestIds); - `destinationDomain` ++"uint32"++ - - - Destination domain. + const dstTxIds = await xfer.completeTransfer(signer); + console.log('Completed transfer: ', dstTxIds); +} + ``` - --- +## Routes - `destinationTokenMessenger` ++"bytes32"++ - - Address of `TokenMessenger` on destination domain. - - --- +While a specific `WormholeTransfer`, such as `TokenTransfer` or `CCTPTransfer`, may be used, the developer must know exactly which transfer type to use for a given request. - `destinationCaller` ++"bytes32"++ - - Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. +To provide a more flexible and generic interface, the `Wormhole` class provides a method to produce a `RouteResolver` that can be configured with a set of possible routes to be supported. -- **`depositForBurnWithCaller`** - deposits and burns tokens from the sender to be minted on the destination domain. This method differs from `depositForBurn` in that the mint on the destination domain can only be called by the designated `destinationCaller` address +The following section demonstrates setting up and validating a token transfer using Wormhole's routing system. - ??? interface "Parameters" +```ts +const resolver = wh.resolver([ + routes.TokenBridgeRoute, // manual token bridge + routes.AutomaticTokenBridgeRoute, // automatic token bridge + routes.CCTPRoute, // manual CCTP + routes.AutomaticCCTPRoute, // automatic CCTP + routes.AutomaticPorticoRoute, // Native eth transfers + ]); +``` - `amount` ++"uint256"++ - - The amount of tokens to burn. +Once created, the resolver can be used to provide a list of input and possible output tokens. - --- +```ts +const srcTokens = await resolver.supportedSourceTokens(sendChain); + console.log( + 'Allowed source tokens: ', + srcTokens.map((t) => canonicalAddress(t)) + ); - `destinationDomain` ++"uint32"++ - - The network where the token will be minted after burn. + const sendToken = Wormhole.tokenId(sendChain.chain, 'native'); - --- + // Given the send token, what can we possibly get on the destination chain? + const destTokens = await resolver.supportedDestinationTokens( + sendToken, + sendChain, + destChain + ); + console.log( + 'For the given source token and routes configured, the following tokens may be receivable: ', + destTokens.map((t) => canonicalAddress(t)) + ); + // Grab the first one for the example + const destinationToken = destTokens[0]!; +``` - `mintRecipient` ++"bytes32"++ - - Address of mint recipient on destination domain. +Once the tokens are selected, a `RouteTransferRequest` may be created to provide a list of routes that can fulfill the request. Creating a transfer request fetches the token details since all routes will need to know about the tokens. - --- +```ts +// Since all routes will need to know about the tokens + const tr = await routes.RouteTransferRequest.create(wh, { + source: sendToken, + destination: destinationToken, + }); - `burnToken` ++"address"++ - - Address of contract to burn deposited tokens, on local domain. + // Resolve the transfer request to a set of routes that can perform it + const foundRoutes = await resolver.findRoutes(tr); + console.log( + 'For the transfer parameters, we found these routes: ', + foundRoutes + ); +``` - --- +Choosing the best route is currently left to the developer, but strategies might include sorting by output amount or expected time to complete the transfer (no estimate is currently provided). - `destinationCaller` ++"bytes32"++ - - Address of the caller on the destination domain who will trigger the mint. +After choosing the best route, extra parameters like `amount`, `nativeGasDropoff`, and `slippage` can be passed, depending on the specific route selected. A quote can be retrieved with the validated request. - ??? interface "Returns" +After successful validation, the code requests a transfer quote. This quote likely includes important details such as fees, estimated time, and the final amount to be received. If the quote is generated successfully, it's displayed for the user to review and decide whether to proceed with the transfer. This process ensures that all transfer details are properly set up and verified before any actual transfer occurs. - `_nonce` ++"uint64"++ - - Unique nonce reserved by message. +```ts +'This route offers the following default options', + bestRoute.getDefaultOptions() + ); - ??? interface "Emits" + // Specify the amount as a decimal string + const amt = '0.001'; + // Create the transfer params for this request + const transferParams = { amount: amt, options: { nativeGas: 0 } }; - `DepositForBurn` - event emitted when `depositForBurnWithCaller` is called + // Validate the transfer params passed, this returns a new type of ValidatedTransferParams + // which (believe it or not) is a validated version of the input params + // This new var must be passed to the next step, quote + const validated = await bestRoute.validate(tr, transferParams); + if (!validated.valid) throw validated.error; + console.log('Validated parameters: ', validated.params); - ??? child "Event Arguments" + // Get a quote for the transfer, this too returns a new type that must + // be passed to the next step, execute (if you like the quote) + const quote = await bestRoute.quote(tr, validated.params); + if (!quote.success) throw quote.error; + console.log('Best route quote: ', quote); +``` - `nonce` ++"uint64"++ - - Unique nonce reserved by message (indexed). +Finally, assuming the quote looks good, the route can initiate the request with the quote and the `signer`. - --- +```ts +tr, + sender.signer, + quote, + receiver.address + ); + console.log('Initiated transfer with receipt: ', receipt); +``` - `burnToken` ++"address"++ - - Address of token burnt on source domain. +??? code "View the complete script" - --- + ```ts + import { + Wormhole, + canonicalAddress, + routes, + wormhole, +} from '@wormhole-foundation/sdk'; - `amount` ++"uint256"++ - - The deposit amount. +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { getSigner } from './helpers/index.js'; - --- +(async function () { + // Setup + const wh = await wormhole('Testnet', [evm, solana]); - `depositor` ++"address"++ - - Address where deposit is transferred from. + // Get chain contexts + const sendChain = wh.getChain('Avalanche'); + const destChain = wh.getChain('Solana'); - --- + // Get signers from local config + const sender = await getSigner(sendChain); + const receiver = await getSigner(destChain); - `mintRecipient` ++"bytes32"++ - - Address receiving minted tokens on destination domain. + // Create new resolver, passing the set of routes to consider + const resolver = wh.resolver([ + routes.TokenBridgeRoute, // manual token bridge + routes.AutomaticTokenBridgeRoute, // automatic token bridge + routes.CCTPRoute, // manual CCTP + routes.AutomaticCCTPRoute, // automatic CCTP + routes.AutomaticPorticoRoute, // Native eth transfers + ]); - --- - - `destinationDomain` ++"uint32"++ - - - Destination domain. + // What tokens are available on the source chain? + const srcTokens = await resolver.supportedSourceTokens(sendChain); + console.log( + 'Allowed source tokens: ', + srcTokens.map((t) => canonicalAddress(t)) + ); - --- + const sendToken = Wormhole.tokenId(sendChain.chain, 'native'); - `destinationTokenMessenger` ++"bytes32"++ - - Address of `TokenMessenger` on destination domain. - - --- + // Given the send token, what can we possibly get on the destination chain? + const destTokens = await resolver.supportedDestinationTokens( + sendToken, + sendChain, + destChain + ); + console.log( + 'For the given source token and routes configured, the following tokens may be receivable: ', + destTokens.map((t) => canonicalAddress(t)) + ); + // Grab the first one for the example + const destinationToken = destTokens[0]!; - `destinationCaller` ++"bytes32"++ - - Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. + // Creating a transfer request fetches token details + // Since all routes will need to know about the tokens + const tr = await routes.RouteTransferRequest.create(wh, { + source: sendToken, + destination: destinationToken, + }); -- **`replaceDepositForBurn`** — replaces a previous `BurnMessage` to modify the mint recipient and/or the destination caller. The replacement message reuses the `_nonce` created by the original message, which allows the original message's sender to update the details without requiring a new deposit + // Resolve the transfer request to a set of routes that can perform it + const foundRoutes = await resolver.findRoutes(tr); + console.log( + 'For the transfer parameters, we found these routes: ', + foundRoutes + ); - ??? interface "Parameters" + const bestRoute = foundRoutes[0]!; + console.log('Selected: ', bestRoute); - `originalMessage` ++"bytes"++ - - The original burn message to be replaced. + console.log( + 'This route offers the following default options', + bestRoute.getDefaultOptions() + ); - --- + // Specify the amount as a decimal string + const amt = '0.001'; + // Create the transfer params for this request + const transferParams = { amount: amt, options: { nativeGas: 0 } }; - `originalAttestation` ++"bytes"++ - - The attestation of the original message. + // Validate the transfer params passed, this returns a new type of ValidatedTransferParams + // which (believe it or not) is a validated version of the input params + // This new var must be passed to the next step, quote + const validated = await bestRoute.validate(tr, transferParams); + if (!validated.valid) throw validated.error; + console.log('Validated parameters: ', validated.params); - --- + // Get a quote for the transfer, this too returns a new type that must + // be passed to the next step, execute (if you like the quote) + const quote = await bestRoute.quote(tr, validated.params); + if (!quote.success) throw quote.error; + console.log('Best route quote: ', quote); - `newDestinationCaller` ++"bytes32"++ - - The new caller on the destination domain, can be the same or updated. + // If you're sure you want to do this, set this to true + const imSure = false; + if (imSure) { + // Now the transfer may be initiated + // A receipt will be returned, guess what you gotta do with that? + const receipt = await bestRoute.initiate( + tr, + sender.signer, + quote, + receiver.address + ); + console.log('Initiated transfer with receipt: ', receipt); - --- + // Kick off a wait log, if there is an opportunity to complete, this function will do it + // See the implementation for how this works + await routes.checkAndCompleteTransfer(bestRoute, receipt, receiver.signer); + } else { + console.log('Not initiating transfer (set `imSure` to true to do so)'); + } +})(); + ``` - `newMintRecipient` ++"bytes32"++ - - The new recipient for the minted tokens, can be the same or updated. +See the `router.ts` example in the [examples directory](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/examples){target=\_blank} for a full working example. - ??? interface "Returns" +### Routes as Plugins - None. +Routes can be imported from any npm package that exports them and configured with the resolver. Custom routes must extend [`Route`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/0c57292368146c460abc9ce9e7f6a42be8e0b903/connect/src/routes/route.ts#L21-L64){target=\_blank} and implement [`StaticRouteMethods`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/0c57292368146c460abc9ce9e7f6a42be8e0b903/connect/src/routes/route.ts#L101){target=\_blank}. - ??? interface "Emits" +```ts +import { Network, routes } from '@wormhole-foundation/sdk-connect'; - `DepositForBurn` - event emitted when `replaceDepositForBurn` is called. Note that the `destinationCaller` will reflect the new destination caller, which may be the same as the original destination caller, a new destination caller, or an empty destination caller (`bytes32(0)`), indicating that any destination caller is valid +export class CustomRoute + extends routes.Route + implements routes.StaticRouteMethods +{ + static meta = { + name: 'CustomRoute', + }; + // implementation... +} +``` - ??? child "Event Arguments" +A noteworthy example of a route exported from a separate npm package is Wormhole Native Token Transfers (NTT). See the [`NttAutomaticRoute`](https://github.com/wormhole-foundation/native-token-transfers/blob/66f8e414223a77f5c736541db0a7a85396cab71c/sdk/route/src/automatic.ts#L48){target=\_blank} route implementation. - `nonce` ++"uint64"++ - - Unique nonce reserved by message (indexed). +## See Also - --- +The TSdoc is available [on GitHub](https://wormhole-foundation.github.io/wormhole-sdk-ts/){target=\_blank}. +--- END CONTENT --- - `burnToken` ++"address"++ - - Address of token burnt on source domain. +Doc-Content: https://wormhole.com/docs/build/transfers/cctp +--- BEGIN CONTENT --- +--- +title: Interacting with CCTP Contracts +description: Learn how to interact directly with Circle's CCTP Bridge contracts, including TokenMessenger, TokenMinter, and MessageTransmitter. +--- - --- +# Get Started with CCTP - `amount` ++"uint256"++ - - The deposit amount. +## Introduction - --- +Circle's [Cross-Chain Transfer Protocol (CCTP)](/docs/learn/transfers/cctp/){target=\_blank} by Circle is a permissionless utility that facilitates secure and efficient USDC transfers across blockchain networks through native burning and minting mechanisms. - `depositor` ++"address"++ - - Address where deposit is transferred from. +As decentralized finance (DeFi) protocols evolve, the need for flexible, secure cross-chain messaging has expanded, requiring solutions beyond simple asset transfers. Wormhole enhances CCTP's capabilities by allowing developers to compose more complex cross-chain interactions. With Wormhole's generic messaging, applications can execute smart contract logic alongside native USDC transfers, enabling richer, more versatile cross-chain experiences. - --- +This guide will walk you through getting started with Wormhole's CCTP contracts and show you how to integrate CCTP into your smart contracts, enabling the composition of advanced cross-chain functions with native USDC transfers. - `mintRecipient` ++"bytes32"++ - - Address receiving minted tokens on destination domain. +## Prerequisites - --- +To interact with the Wormhole CCTP, you'll need the following: - `destinationDomain` ++"uint32"++ - - - Destination domain. +- [The address of the CCTP contract](/docs/build/reference/contract-addresses/#cctp){target=\_blank} on the chains you're deploying your contract on +- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on - --- +## Wormhole's CCTP Integration Contract - `destinationTokenMessenger` ++"bytes32"++ - - Address of `TokenMessenger` on destination domain. - - --- +Wormhole's Circle Integration contract, `CircleIntegration.sol`, is the contract you'll interact with directly. It burns and mints Circle-supported tokens by using [Circle's CCTP contracts](#circles-cctp-contracts). - `destinationCaller` ++"bytes32"++ - - Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. +The Circle Integration contract emits Wormhole messages with arbitrary payloads to allow additional composability when performing cross-chain transfers of Circle-supported assets. -- **`handleReceiveMessage`** - handles an incoming message received by the local `MessageTransmitter` and takes the appropriate action. For a burn message, it mints the associated token to the requested recipient on the local domain. +This contract can be found in [Wormhole's `wormhole-circle-integration` repository](https://github.com/wormhole-foundation/wormhole-circle-integration/){target=\_blank} on GitHub. - ???+ note +!!! note + Wormhole supports all CCTP-supported chains, but Circle currently supports only a [handful of chains](https://developers.circle.com/stablecoins/docs/supported-domains){target=\_blank}. Please refer to the [CCTP section of the Contract Addresses](/docs/build/reference/contract-addresses/#cctp){target=\_blank} reference page to view the complete list of supported chains. - Though this function can only be called by the local `MessageTransmitter`, it is included here as it emits the essential event for minting tokens and withdrawing to send to the recipient. +??? code "Circle Integration contract" + ```solidity + // SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.19; - ??? interface "Parameters" +import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IWormhole} from "wormhole/interfaces/IWormhole.sol"; +import {BytesLib} from "wormhole/libraries/external/BytesLib.sol"; - `remoteDomain` ++"uint32"++ - - The domain where the message originated. +import {ICircleBridge} from "../interfaces/circle/ICircleBridge.sol"; - --- +import {CircleIntegrationGovernance} from "./CircleIntegrationGovernance.sol"; +import {CircleIntegrationMessages} from "./CircleIntegrationMessages.sol"; - `sender` ++"bytes32"++ - - The address of the sender of the message. +/** + * @notice This contract burns and mints Circle-supported tokens by using Circle's Cross-Chain Transfer Protocol. It also emits + * Wormhole messages with arbitrary payloads to allow for additional composability when performing cross-chain + * transfers of Circle-suppored assets. + */ +contract CircleIntegration is + CircleIntegrationMessages, + CircleIntegrationGovernance, + ReentrancyGuard +{ + using BytesLib for bytes; - --- + /** + * @notice Emitted when Circle-supported assets have been minted to the mintRecipient + * @param emitterChainId Wormhole chain ID of emitter contract on source chain + * @param emitterAddress Address (bytes32 zero-left-padded) of emitter on source chain + * @param sequence Sequence of Wormhole message used to mint tokens + */ + event Redeemed( + uint16 indexed emitterChainId, + bytes32 indexed emitterAddress, + uint64 indexed sequence + ); - `messageBody` ++"bytes"++ - - The bytes making up the body of the message. + /** + * @notice `transferTokensWithPayload` calls the Circle Bridge contract to burn Circle-supported tokens. It emits + * a Wormhole message containing a user-specified payload with instructions for what to do with + * the Circle-supported assets once they have been minted on the target chain. + * @dev reverts if: + * - user passes insufficient value to pay Wormhole message fee + * - `token` is not supported by Circle Bridge + * - `amount` is zero + * - `targetChain` is not supported + * - `mintRecipient` is bytes32(0) + * @param transferParams Struct containing the following attributes: + * - `token` Address of the token to be burned + * - `amount` Amount of `token` to be burned + * - `targetChain` Wormhole chain ID of the target blockchain + * - `mintRecipient` The recipient wallet or contract address on the target chain + * @param batchId ID for Wormhole message batching + * @param payload Arbitrary payload to be delivered to the target chain via Wormhole + * @return messageSequence Wormhole sequence number for this contract + */ + function transferTokensWithPayload( + TransferParameters memory transferParams, + uint32 batchId, + bytes memory payload + ) public payable nonReentrant returns (uint64 messageSequence) { + // cache wormhole instance and fees to save on gas + IWormhole wormhole = wormhole(); + uint256 wormholeFee = wormhole.messageFee(); - ??? interface "Returns" + // confirm that the caller has sent enough ether to pay for the wormhole message fee + require(msg.value == wormholeFee, "insufficient value"); - `success` ++"boolean"++ - - Returns `true` if successful, otherwise, it returns `false`. + // Call the circle bridge and `depositForBurnWithCaller`. The `mintRecipient` + // should be the target contract (or wallet) composing on this contract. + (uint64 nonce, uint256 amountReceived) = _transferTokens( + transferParams.token, + transferParams.amount, + transferParams.targetChain, + transferParams.mintRecipient + ); - ??? interface "Emits" + // encode DepositWithPayload message + bytes memory encodedMessage = encodeDepositWithPayload( + DepositWithPayload({ + token: addressToBytes32(transferParams.token), + amount: amountReceived, + sourceDomain: localDomain(), + targetDomain: getDomainFromChainId(transferParams.targetChain), + nonce: nonce, + fromAddress: addressToBytes32(msg.sender), + mintRecipient: transferParams.mintRecipient, + payload: payload + }) + ); - `MintAndWithdraw` - event emitted when tokens are minted + // send the DepositWithPayload wormhole message + messageSequence = wormhole.publishMessage{value: wormholeFee}( + batchId, + encodedMessage, + wormholeFinality() + ); + } - ??? child "Event arguments" + function _transferTokens( + address token, + uint256 amount, + uint16 targetChain, + bytes32 mintRecipient + ) internal returns (uint64 nonce, uint256 amountReceived) { + // sanity check user input + require(amount > 0, "amount must be > 0"); + require(mintRecipient != bytes32(0), "invalid mint recipient"); + require(isAcceptedToken(token), "token not accepted"); + require( + getRegisteredEmitter(targetChain) != bytes32(0), + "target contract not registered" + ); - `localMinter` ++"address"++ - - Minter responsible for minting and burning tokens on the local domain. + // take custody of tokens + amountReceived = custodyTokens(token, amount); - --- + // cache Circle Bridge instance + ICircleBridge circleBridge = circleBridge(); - `remoteDomain` ++"uint32"++ - - The domain where the message originated from. + // approve the Circle Bridge to spend tokens + SafeERC20.safeApprove( + IERC20(token), + address(circleBridge), + amountReceived + ); - --- + // burn tokens on the bridge + nonce = circleBridge.depositForBurnWithCaller( + amountReceived, + getDomainFromChainId(targetChain), + mintRecipient, + token, + getRegisteredEmitter(targetChain) + ); + } - `burnToken` ++"address"++ - - Address of contract to burn deposited tokens, on local domain. + function custodyTokens( + address token, + uint256 amount + ) internal returns (uint256) { + // query own token balance before transfer + (, bytes memory queriedBalanceBefore) = token.staticcall( + abi.encodeWithSelector(IERC20.balanceOf.selector, address(this)) + ); + uint256 balanceBefore = abi.decode(queriedBalanceBefore, (uint256)); - --- + // deposit tokens + SafeERC20.safeTransferFrom( + IERC20(token), + msg.sender, + address(this), + amount + ); - `mintRecipient` ++"address"++ - - Recipient address of minted tokens (indexed). + // query own token balance after transfer + (, bytes memory queriedBalanceAfter) = token.staticcall( + abi.encodeWithSelector(IERC20.balanceOf.selector, address(this)) + ); + uint256 balanceAfter = abi.decode(queriedBalanceAfter, (uint256)); - --- + return balanceAfter - balanceBefore; + } - `amount` ++"uint256"++ - - Amount of minted tokens. + /** + * @notice `redeemTokensWithPayload` verifies the Wormhole message from the source chain and + * verifies that the passed Circle Bridge message is valid. It calls the Circle Bridge + * contract by passing the Circle message and attestation to mint tokens to the specified + * mint recipient. It also verifies that the caller is the specified mint recipient to ensure + * atomic execution of the additional instructions in the Wormhole message. + * @dev reverts if: + * - Wormhole message is not properly attested + * - Wormhole message was not emitted from a registered contrat + * - Wormhole message was already consumed by this contract + * - msg.sender is not the encoded mintRecipient + * - Circle Bridge message and Wormhole message are not associated + * - `receiveMessage` call to Circle Transmitter fails + * @param params Struct containing the following attributes: + * - `encodedWormholeMessage` Wormhole message emitted by a registered contract including + * information regarding the token burn on the source chain and an arbitrary message. + * - `circleBridgeMessage` Message emitted by Circle Bridge contract with information regarding + * the token burn on the source chain. + * - `circleAttestation` Serialized EC Signature attesting the cross-chain transfer + * @return depositInfo Struct containing the following attributes: + * - `token` Address (bytes32 left-zero-padded) of token to be minted + * - `amount` Amount of tokens to be minted + * - `sourceDomain` Circle domain for the source chain + * - `targetDomain` Circle domain for the target chain + * - `nonce` Circle sequence number for the transfer + * - `fromAddress` Source CircleIntegration contract caller's address + * - `mintRecipient` Recipient of minted tokens (must be caller of this contract) + * - `payload` Arbitrary Wormhole message payload + */ + function redeemTokensWithPayload( + RedeemParameters calldata params + ) public returns (DepositWithPayload memory depositInfo) { + // verify the wormhole message + IWormhole.VM memory verifiedMessage = verifyWormholeRedeemMessage( + params.encodedWormholeMessage + ); -### Message Transmitter Contract + // Decode the message payload into the DepositWithPayload struct. Call the Circle TokenMinter + // contract to determine the address of the encoded token on this chain. + depositInfo = decodeDepositWithPayload(verifiedMessage.payload); + depositInfo.token = fetchLocalTokenAddress( + depositInfo.sourceDomain, + depositInfo.token + ); -The Message Transmitter contract ensures secure messaging across blockchain domains by managing message dispatch and tracking communication with events like `MessageSent` and `MessageReceived`. It uses a unique nonce for each message, which ensures proper validation, verifies attestation signatures, and prevents replay attacks. + // confirm that circle gave us a valid token address + require(depositInfo.token != bytes32(0), "invalid local token address"); -The contract supports flexible delivery options, allowing messages to be sent to a specific `destinationCaller` or broadcast more generally. It also includes domain-specific configurations to manage communication between chains. + // confirm that the caller is the `mintRecipient` to ensure atomic execution + require( + addressToBytes32(msg.sender) == depositInfo.mintRecipient, + "caller must be mintRecipient" + ); -Additional features include replacing previously sent messages, setting maximum message body sizes, and verifying that messages are received only once per nonce to maintain network integrity. + // confirm that the caller passed the correct message pair + require( + verifyCircleMessage( + params.circleBridgeMessage, + depositInfo.sourceDomain, + depositInfo.targetDomain, + depositInfo.nonce + ), + "invalid message pair" + ); -??? code "Message Transmitter contract" - ```solidity - /* - * Copyright (c) 2022, Circle Internet Financial Limited. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -pragma solidity 0.7.6; + // call the circle bridge to mint tokens to the recipient + bool success = circleTransmitter().receiveMessage( + params.circleBridgeMessage, + params.circleAttestation + ); + require(success, "CIRCLE_INTEGRATION: failed to mint tokens"); -import "@memview-sol/contracts/TypedMemView.sol"; -import "./interfaces/IMessageTransmitter.sol"; -import "./interfaces/IMessageHandler.sol"; -import "./messages/Message.sol"; -import "./roles/Pausable.sol"; -import "./roles/Rescuable.sol"; -import "./roles/Attestable.sol"; + // emit Redeemed event + emit Redeemed( + verifiedMessage.emitterChainId, + verifiedMessage.emitterAddress, + verifiedMessage.sequence + ); + } -/** - * @title MessageTransmitter - * @notice Contract responsible for sending and receiving messages across chains. - */ -contract MessageTransmitter is - IMessageTransmitter, - Pausable, - Rescuable, - Attestable -{ - // ============ Events ============ - /** - * @notice Emitted when a new message is dispatched - * @param message Raw bytes of message - */ - event MessageSent(bytes message); + function verifyWormholeRedeemMessage( + bytes memory encodedMessage + ) internal returns (IWormhole.VM memory) { + require(evmChain() == block.chainid, "invalid evm chain"); - /** - * @notice Emitted when a new message is received - * @param caller Caller (msg.sender) on destination domain - * @param sourceDomain The source domain this message originated from - * @param nonce The nonce unique to this message - * @param sender The sender of this message - * @param messageBody message body bytes - */ - event MessageReceived( - address indexed caller, - uint32 sourceDomain, - uint64 indexed nonce, - bytes32 sender, - bytes messageBody - ); + // parse and verify the Wormhole core message + ( + IWormhole.VM memory verifiedMessage, + bool valid, + string memory reason + ) = wormhole().parseAndVerifyVM(encodedMessage); - /** - * @notice Emitted when max message body size is updated - * @param newMaxMessageBodySize new maximum message body size, in bytes - */ - event MaxMessageBodySizeUpdated(uint256 newMaxMessageBodySize); - - // ============ Libraries ============ - using TypedMemView for bytes; - using TypedMemView for bytes29; - using Message for bytes29; + // confirm that the core layer verified the message + require(valid, reason); - // ============ State Variables ============ - // Domain of chain on which the contract is deployed - uint32 public immutable localDomain; + // verify that this message was emitted by a trusted contract + require(verifyEmitter(verifiedMessage), "unknown emitter"); - // Message Format version - uint32 public immutable version; + // revert if this message has been consumed already + require( + !isMessageConsumed(verifiedMessage.hash), + "message already consumed" + ); + consumeMessage(verifiedMessage.hash); - // Maximum size of message body, in bytes. - // This value is set by owner. - uint256 public maxMessageBodySize; + return verifiedMessage; + } - // Next available nonce from this source domain - uint64 public nextAvailableNonce; + function verifyEmitter( + IWormhole.VM memory vm + ) internal view returns (bool) { + // verify that the sender of the wormhole message is a trusted + return (getRegisteredEmitter(vm.emitterChainId) == vm.emitterAddress && + vm.emitterAddress != bytes32(0)); + } - // Maps a bytes32 hash of (sourceDomain, nonce) -> uint256 (0 if unused, 1 if used) - mapping(bytes32 => uint256) public usedNonces; + function verifyCircleMessage( + bytes memory circleMessage, + uint32 sourceDomain, + uint32 targetDomain, + uint64 nonce + ) internal pure returns (bool) { + // parse the circle bridge message inline + uint32 circleSourceDomain = circleMessage.toUint32(4); + uint32 circleTargetDomain = circleMessage.toUint32(8); + uint64 circleNonce = circleMessage.toUint64(12); - // ============ Constructor ============ - constructor( - uint32 _localDomain, - address _attester, - uint32 _maxMessageBodySize, - uint32 _version - ) Attestable(_attester) { - localDomain = _localDomain; - maxMessageBodySize = _maxMessageBodySize; - version = _version; + // confirm that both the Wormhole message and Circle message share the same transfer info + return (sourceDomain == circleSourceDomain && + targetDomain == circleTargetDomain && + nonce == circleNonce); } - // ============ External Functions ============ /** - * @notice Send the message to the destination domain and recipient - * @dev Increment nonce, format the message, and emit `MessageSent` event with message information. - * @param destinationDomain Domain of destination chain - * @param recipient Address of message recipient on destination chain as bytes32 - * @param messageBody Raw bytes content of message - * @return nonce reserved by message + * @notice Fetches the local token address given an address and domain from + * a different chain. + * @param sourceDomain Circle domain for the sending chain. + * @param sourceToken Address of the token for the sending chain. + * @return Address bytes32 formatted address of the `sourceToken` on this chain. */ - function sendMessage( - uint32 destinationDomain, - bytes32 recipient, - bytes calldata messageBody - ) external override whenNotPaused returns (uint64) { - bytes32 _emptyDestinationCaller = bytes32(0); - uint64 _nonce = _reserveAndIncrementNonce(); - bytes32 _messageSender = Message.addressToBytes32(msg.sender); - - _sendMessage( - destinationDomain, - recipient, - _emptyDestinationCaller, - _messageSender, - _nonce, - messageBody - ); - - return _nonce; + function fetchLocalTokenAddress( + uint32 sourceDomain, + bytes32 sourceToken + ) public view returns (bytes32) { + return + addressToBytes32( + circleTokenMinter().remoteTokensToLocalTokens( + keccak256(abi.encodePacked(sourceDomain, sourceToken)) + ) + ); } /** - * @notice Replace a message with a new message body and/or destination caller. - * @dev The `originalAttestation` must be a valid attestation of `originalMessage`. - * Reverts if msg.sender does not match sender of original message, or if the source domain of the original message - * does not match this MessageTransmitter's local domain. - * @param originalMessage original message to replace - * @param originalAttestation attestation of `originalMessage` - * @param newMessageBody new message body of replaced message - * @param newDestinationCaller the new destination caller, which may be the - * same as the original destination caller, a new destination caller, or an empty - * destination caller (bytes32(0), indicating that any destination caller is valid.) + * @notice Converts type address to bytes32 (left-zero-padded) + * @param address_ Address to convert to bytes32 + * @return Address bytes32 */ - function replaceMessage( - bytes calldata originalMessage, - bytes calldata originalAttestation, - bytes calldata newMessageBody, - bytes32 newDestinationCaller - ) external override whenNotPaused { - // Validate each signature in the attestation - _verifyAttestationSignatures(originalMessage, originalAttestation); + function addressToBytes32(address address_) public pure returns (bytes32) { + return bytes32(uint256(uint160(address_))); + } +} + ``` - bytes29 _originalMsg = originalMessage.ref(0); +The functions provided by the Circle Integration contract are as follows: - // Validate message format - _originalMsg._validateMessageFormat(); +- **`transferTokensWithPayload`** - calls the Circle Bridge contract to burn Circle-supported tokens. It emits a Wormhole message containing a user-specified payload with instructions for what to do with the Circle-supported assets once they have been minted on the target chain - // Validate message sender - bytes32 _sender = _originalMsg._sender(); - require( - msg.sender == Message.bytes32ToAddress(_sender), - "Sender not permitted to use nonce" - ); + ??? interface "Parameters" - // Validate source domain - uint32 _sourceDomain = _originalMsg._sourceDomain(); - require( - _sourceDomain == localDomain, - "Message not originally sent from this domain" - ); + `transferParams` ++"TransferParameters"++ - uint32 _destinationDomain = _originalMsg._destinationDomain(); - bytes32 _recipient = _originalMsg._recipient(); - uint64 _nonce = _originalMsg._nonce(); + A tuple containing the parameters for the transfer. - _sendMessage( - _destinationDomain, - _recipient, - newDestinationCaller, - _sender, - _nonce, - newMessageBody - ); - } + ??? child "`TransferParameters` struct" - /** - * @notice Send the message to the destination domain and recipient, for a specified `destinationCaller` on the - * destination domain. - * @dev Increment nonce, format the message, and emit `MessageSent` event with message information. - * WARNING: if the `destinationCaller` does not represent a valid address, then it will not be possible - * to broadcast the message on the destination domain. This is an advanced feature, and the standard - * sendMessage() should be preferred for use cases where a specific destination caller is not required. - * @param destinationDomain Domain of destination chain - * @param recipient Address of message recipient on destination domain as bytes32 - * @param destinationCaller caller on the destination domain, as bytes32 - * @param messageBody Raw bytes content of message - * @return nonce reserved by message - */ - function sendMessageWithCaller( - uint32 destinationDomain, - bytes32 recipient, - bytes32 destinationCaller, - bytes calldata messageBody - ) external override whenNotPaused returns (uint64) { - require( - destinationCaller != bytes32(0), - "Destination caller must be nonzero" - ); + `token` ++"address"++ - uint64 _nonce = _reserveAndIncrementNonce(); - bytes32 _messageSender = Message.addressToBytes32(msg.sender); + Address of the token to be burned. - _sendMessage( - destinationDomain, - recipient, - destinationCaller, - _messageSender, - _nonce, - messageBody - ); + --- - return _nonce; - } + `amount` ++"uint256"++ - /** - * @notice Receive a message. Messages with a given nonce - * can only be broadcast once for a (sourceDomain, destinationDomain) - * pair. The message body of a valid message is passed to the - * specified recipient for further processing. - * - * @dev Attestation format: - * A valid attestation is the concatenated 65-byte signature(s) of exactly - * `thresholdSignature` signatures, in increasing order of attester address. - * ***If the attester addresses recovered from signatures are not in - * increasing order, signature verification will fail.*** - * If incorrect number of signatures or duplicate signatures are supplied, - * signature verification will fail. - * - * Message format: - * Field Bytes Type Index - * version 4 uint32 0 - * sourceDomain 4 uint32 4 - * destinationDomain 4 uint32 8 - * nonce 8 uint64 12 - * sender 32 bytes32 20 - * recipient 32 bytes32 52 - * messageBody dynamic bytes 84 - * @param message Message bytes - * @param attestation Concatenated 65-byte signature(s) of `message`, in increasing order - * of the attester address recovered from signatures. - * @return success bool, true if successful - */ - function receiveMessage(bytes calldata message, bytes calldata attestation) - external - override - whenNotPaused - returns (bool success) - { - // Validate each signature in the attestation - _verifyAttestationSignatures(message, attestation); + Amount of the token to be burned. - bytes29 _msg = message.ref(0); + --- - // Validate message format - _msg._validateMessageFormat(); + `targetChain` ++"uint16"++ - // Validate domain - require( - _msg._destinationDomain() == localDomain, - "Invalid destination domain" - ); + Wormhole chain ID of the target blockchain. - // Validate destination caller - if (_msg._destinationCaller() != bytes32(0)) { - require( - _msg._destinationCaller() == - Message.addressToBytes32(msg.sender), - "Invalid caller for message" - ); - } + --- - // Validate version - require(_msg._version() == version, "Invalid message version"); + `mintRecipient` ++"bytes32"++ - // Validate nonce is available - uint32 _sourceDomain = _msg._sourceDomain(); - uint64 _nonce = _msg._nonce(); - bytes32 _sourceAndNonce = _hashSourceAndNonce(_sourceDomain, _nonce); - require(usedNonces[_sourceAndNonce] == 0, "Nonce already used"); - // Mark nonce used - usedNonces[_sourceAndNonce] = 1; + The recipient wallet or contract address on the target chain. - // Handle receive message - bytes32 _sender = _msg._sender(); - bytes memory _messageBody = _msg._messageBody().clone(); - require( - IMessageHandler(Message.bytes32ToAddress(_msg._recipient())) - .handleReceiveMessage(_sourceDomain, _sender, _messageBody), - "handleReceiveMessage() failed" - ); + --- - // Emit MessageReceived event - emit MessageReceived( - msg.sender, - _sourceDomain, - _nonce, - _sender, - _messageBody - ); - return true; - } + `batchId` ++"uint32"++ - /** - * @notice Sets the max message body size - * @dev This value should not be reduced without good reason, - * to avoid impacting users who rely on large messages. - * @param newMaxMessageBodySize new max message body size, in bytes - */ - function setMaxMessageBodySize(uint256 newMaxMessageBodySize) - external - onlyOwner - { - maxMessageBodySize = newMaxMessageBodySize; - emit MaxMessageBodySizeUpdated(maxMessageBodySize); - } + The ID for Wormhole message batching. - // ============ Internal Utils ============ - /** - * @notice Send the message to the destination domain and recipient. If `_destinationCaller` is not equal to bytes32(0), - * the message can only be received on the destination chain when called by `_destinationCaller`. - * @dev Format the message and emit `MessageSent` event with message information. - * @param _destinationDomain Domain of destination chain - * @param _recipient Address of message recipient on destination domain as bytes32 - * @param _destinationCaller caller on the destination domain, as bytes32 - * @param _sender message sender, as bytes32 - * @param _nonce nonce reserved for message - * @param _messageBody Raw bytes content of message - */ - function _sendMessage( - uint32 _destinationDomain, - bytes32 _recipient, - bytes32 _destinationCaller, - bytes32 _sender, - uint64 _nonce, - bytes calldata _messageBody - ) internal { - // Validate message body length - require( - _messageBody.length <= maxMessageBodySize, - "Message body exceeds max size" - ); + --- - require(_recipient != bytes32(0), "Recipient must be nonzero"); + `payload` ++"bytes"++ - // serialize message - bytes memory _message = Message._formatMessage( - version, - localDomain, - _destinationDomain, - _nonce, - _sender, - _recipient, - _destinationCaller, - _messageBody - ); + Arbitrary payload to be delivered to the target chain via Wormhole. - // Emit MessageSent event - emit MessageSent(_message); - } + ??? interface "Returns" - /** - * @notice hashes `_source` and `_nonce`. - * @param _source Domain of chain where the transfer originated - * @param _nonce The unique identifier for the message from source to - destination - * @return hash of source and nonce - */ - function _hashSourceAndNonce(uint32 _source, uint64 _nonce) - internal - pure - returns (bytes32) - { - return keccak256(abi.encodePacked(_source, _nonce)); - } + `messageSequence` ++"uint64"++ - /** - * Reserve and increment next available nonce - * @return nonce reserved - */ - function _reserveAndIncrementNonce() internal returns (uint64) { - uint64 _nonceReserved = nextAvailableNonce; - nextAvailableNonce = nextAvailableNonce + 1; - return _nonceReserved; - } -} - ``` + Wormhole sequence number for this contract. - This contract and the interfaces, contracts, and libraries it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/MessageTransmitter.sol){target=\_blank} on GitHub. +- `redeemTokensWithPayload` - verifies the Wormhole message from the source chain and verifies that the passed Circle Bridge message is valid. It calls the Circle Bridge contract by passing the Circle message and attestation to the `receiveMessage` function, which is responsible for minting tokens to the specified mint recipient. It also verifies that the caller is the specified mint recipient to ensure atomic execution of the additional instructions in the Wormhole message -The functions provided by the Message Transmitter contract are as follows: + ??? interface "Parameters" -- **`receiveMessage`** — processes and validates an incoming message and its attestation. If valid, it triggers further action based on the message body + `params` ++"RedeemParameters"++ - ??? interface "Parameters" + A tuple containing the parameters for the redemption. - `message` ++"bytes"++ - - The message to be processed, including details such as sender, recipient, and message body. + ??? child "`RedeemParameters` struct" - --- + `encodedWormholeMessage` ++"bytes"++ - `attestation` ++"bytes"++ - - Concatenated 65-byte signature(s) that attest to the validity of the `message`. + Wormhole message emitted by a registered contract including information regarding the token burn on the source chain and an arbitrary message. - ??? interface "Returns" + --- - `success` ++"boolean"++ - - Returns `true` if successful, otherwise, returns `false`. + `circleBridgeMessage` ++"bytes"++ - ??? interface "Emits" + Message emitted by Circle Bridge contract with information regarding the token burn on the source chain. - `MessageReceived` - event emitted when a new message is received + --- - ??? child "Event arguments" + `circleAttestation` ++"bytes"++ - `caller` ++"address"++ - - Caller on destination domain. + Serialized EC signature attesting the cross-chain transfer. - --- + ??? interface "Returns" - `sourceDomain` ++"uint32"++ - - The source domain this message originated from. + `depositInfo` ++"DepositWithPayload"++ - --- + Information about the deposit. - `nonce` ++"uint64"++ - - Nonce unique to this message (indexed). + ??? child "`DepositWithPayload` struct" - --- + `token` ++"bytes32"++ - `sender` ++"bytes32"++ - - Sender of this message. + Address (`bytes32` left-zero-padded) of token to be minted. --- - `messageBody` ++"bytes"++ + `amount` ++"uint256"++ + + Amount of tokens to be minted. - The body of the message. + --- -- **`sendMessage`** — sends a message to the destination domain and recipient. It increments the `nonce`, assigns a unique `nonce` to the message, and emits a `MessageSent` event + `sourceDomain` ++"uint32"++ - ??? interface "Parameters" + Circle domain for the source chain. - `destinationDomain` ++"uint32"++ - - The target blockchain network where the message is to be sent. + --- - --- + `targetDomain` ++"uint32"++ - `recipient` ++"bytes32"++ - - The recipient's address on the destination domain. + Circle domain for the target chain. - --- + --- - `messageBody` ++"bytes"++ - - The raw bytes content of the message. + `nonce` ++"uint64"++ - ??? interface "Returns" + Circle sequence number for the transfer. - `nonce` ++"uint64"++ - - Nonce unique to this message. + --- - ??? interface "Emits" + `fromAddress` ++"bytes32"++ - `MessageSent` - event emitted when a new message is dispatched + Source Circle Integration contract caller's address. -??? child "Event arguments" + --- - `message` ++"bytes"++ - - The raw bytes of the message. + `mintRecipient` ++"bytes32"++ -- **`sendMessageWithCaller`** — sends a message to the destination domain and recipient, requiring a specific caller to trigger the message on the target chain. It increments the `nonce`, assigns a unique `nonce` to the message, and emits a `MessageSent` event + Recipient of minted tokens (must be caller of this contract). - ??? interface "Parameters" + --- - `destinationDomain` ++"uint32"++ - - The target blockchain network where the message is to be sent. + `payload` ++"bytes"++ - --- + Arbitrary Wormhole message payload. - `recipient` ++"bytes32"++ - - The recipient's address on the destination domain. + ??? interface "Emits" - --- + `Redeemed` - event emitted when Circle-supported assets have been minted to the `mintRecipient` - `destinationCaller` ++"bytes32"++ - - The caller on the destination domain. + ??? child "Event arguments" - --- + `emitterChainId` ++"uint16"++ - `messageBody` ++"bytes"++ - - The raw bytes content of the message. + Wormhole chain ID of emitter contract on source chain. - ??? interface "Returns" + --- - `nonce` ++"uint64"++ - - Nonce unique to this message. + `emitterAddress` ++"bytes32"++ - ??? interface "Emits" + Address (`bytes32` zero-left-padded) of emitter on source chain. - `MessageSent` - event emitted when a new message is dispatched + --- -??? child "Event arguments" + `sequence` ++"uint64"++ - `message` ++"bytes"++ - - The raw bytes of the message. + Sequence of Wormhole message used to mint tokens. -- **`replaceMessage`** — replaces an original message with a new message body and/or updates the destination caller. The replacement message reuses the `_nonce` created by the original message +## Circle's CCTP Contracts - ??? interface "Parameters" - - `originalMessage` ++"bytes"++ - - The original message to be replaced. - - --- - - `originalAttestation` ++"bytes"++ - - Attestation verifying the original message. - - --- - - `newMessageBody` ++"bytes"++ - - The new content for the replaced message. - - --- - - `newDestinationCaller` ++"bytes32"++ - - The new destination caller, which may be the same as the original destination caller, a new destination caller, or an empty destination caller (`bytes32(0)`), indicating that any destination caller is valid. - - ??? interface "Returns" - - None. +Three key contracts power Circle's CCTP: - ??? interface "Emits" +- **`TokenMessenger`** - the entry point for cross-chain USDC transfers, routing messages to initiate USDC burns on the source chain, and mint USDC on the destination chain +- **`MessageTransmitter`** - handles generic message passing, sending messages from the source chain and receiving them on the destination chain +- **`TokenMinter`** - responsible for the actual minting and burning of USDC, utilizing chain-specific settings for both the burners and minters across different networks - `MessageSent` - event emitted when a new message is dispatched +The following sections will examine these contracts in-depth, focusing on the methods invoked indirectly through function calls in the Wormhole Circle Integration contract. -??? child "Event arguments" +!!! note + When using Wormhole's CCTP integration, you will not directly interact with these contracts. You will indirectly interact with them through the Wormhole Circle Integration contract. - `message` ++"bytes"++ - - The raw bytes of the message. +These contracts can be found in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/){target=\_blank} on GitHub. -### Token Minter Contract +### Token Messenger Contract -The Token Minter contract manages the minting and burning of tokens across different blockchain domains. It maintains a registry that links local tokens to their corresponding remote tokens, ensuring that tokens maintain a 1:1 exchange rate across domains. +The Token Messenger contract enables cross-chain USDC transfers by coordinating message exchanges between blockchains. It works alongside the Message Transmitter contract to relay messages for burning USDC on a source chain and minting it on a destination chain. The contract emits events to track both the burning of tokens and their subsequent minting on the destination chain. -The contract restricts minting and burning functions to a designated Token Messenger, which ensures secure and reliable cross-chain operations. When tokens are burned on a remote domain, an equivalent amount is minted on the local domain for a specified recipient, and vice versa. +To ensure secure communication, the Token Messenger restricts message handling to registered remote Token Messenger contracts only. It verifies the proper conditions for token burning and manages local and remote minters using chain-specific settings. -To enhance control and flexibility, the contract includes mechanisms to pause operations, set burn limits, and update the Token Controller, which governs token minting permissions. Additionally, it provides functionality to add or remove the local Token Messenger and retrieve the local token address associated with a remote token. +Additionally, the contract provides methods for updating or replacing previously sent burn messages, adding or removing remote Token Messenger contracts, and managing the minting process for cross-chain transfers. -??? code "Token Minter contract" +??? code "Token Messenger contract" ```solidity /* * Copyright (c) 2022, Circle Internet Financial Limited. @@ -7716,6330 +6818,6352 @@ To enhance control and flexibility, the contract includes mechanisms to pause op */ pragma solidity 0.7.6; +import "./interfaces/IMessageHandler.sol"; import "./interfaces/ITokenMinter.sol"; import "./interfaces/IMintBurnToken.sol"; -import "./roles/Pausable.sol"; +import "./interfaces/IMessageTransmitter.sol"; +import "./messages/BurnMessage.sol"; +import "./messages/Message.sol"; import "./roles/Rescuable.sol"; -import "./roles/TokenController.sol"; -import "./TokenMessenger.sol"; /** - * @title TokenMinter - * @notice Token Minter and Burner - * @dev Maintains registry of local mintable tokens and corresponding tokens on remote domains. - * This registry can be used by caller to determine which token on local domain to mint for a - * burned token on a remote domain, and vice versa. - * It is assumed that local and remote tokens are fungible at a constant 1:1 exchange rate. + * @title TokenMessenger + * @notice Sends messages and receives messages to/from MessageTransmitters + * and to/from TokenMinters */ -contract TokenMinter is ITokenMinter, TokenController, Pausable, Rescuable { +contract TokenMessenger is IMessageHandler, Rescuable { // ============ Events ============ /** - * @notice Emitted when a local TokenMessenger is added - * @param localTokenMessenger address of local TokenMessenger - * @notice Emitted when a local TokenMessenger is added + * @notice Emitted when a DepositForBurn message is sent + * @param nonce unique nonce reserved by message + * @param burnToken address of token burnt on source domain + * @param amount deposit amount + * @param depositor address where deposit is transferred from + * @param mintRecipient address receiving minted tokens on destination domain as bytes32 + * @param destinationDomain destination domain + * @param destinationTokenMessenger address of TokenMessenger on destination domain as bytes32 + * @param destinationCaller authorized caller as bytes32 of receiveMessage() on destination domain, if not equal to bytes32(0). + * If equal to bytes32(0), any address can call receiveMessage(). */ - event LocalTokenMessengerAdded(address localTokenMessenger); + event DepositForBurn( + uint64 indexed nonce, + address indexed burnToken, + uint256 amount, + address indexed depositor, + bytes32 mintRecipient, + uint32 destinationDomain, + bytes32 destinationTokenMessenger, + bytes32 destinationCaller + ); /** - * @notice Emitted when a local TokenMessenger is removed - * @param localTokenMessenger address of local TokenMessenger - * @notice Emitted when a local TokenMessenger is removed + * @notice Emitted when tokens are minted + * @param mintRecipient recipient address of minted tokens + * @param amount amount of minted tokens + * @param mintToken contract address of minted token */ - event LocalTokenMessengerRemoved(address localTokenMessenger); - - // ============ State Variables ============ - // Local TokenMessenger with permission to call mint and burn on this TokenMinter - address public localTokenMessenger; + event MintAndWithdraw( + address indexed mintRecipient, + uint256 amount, + address indexed mintToken + ); - // ============ Modifiers ============ /** - * @notice Only accept messages from the registered message transmitter on local domain + * @notice Emitted when a remote TokenMessenger is added + * @param domain remote domain + * @param tokenMessenger TokenMessenger on remote domain */ - modifier onlyLocalTokenMessenger() { - require(_isLocalTokenMessenger(), "Caller not local TokenMessenger"); - _; - } + event RemoteTokenMessengerAdded(uint32 domain, bytes32 tokenMessenger); - // ============ Constructor ============ /** - * @param _tokenController Token controller address + * @notice Emitted when a remote TokenMessenger is removed + * @param domain remote domain + * @param tokenMessenger TokenMessenger on remote domain */ - constructor(address _tokenController) { - _setTokenController(_tokenController); - } + event RemoteTokenMessengerRemoved(uint32 domain, bytes32 tokenMessenger); - // ============ External Functions ============ /** - * @notice Mints `amount` of local tokens corresponding to the - * given (`sourceDomain`, `burnToken`) pair, to `to` address. - * @dev reverts if the (`sourceDomain`, `burnToken`) pair does not - * map to a nonzero local token address. This mapping can be queried using - * getLocalToken(). - * @param sourceDomain Source domain where `burnToken` was burned. - * @param burnToken Burned token address as bytes32. - * @param to Address to receive minted tokens, corresponding to `burnToken`, - * on this domain. - * @param amount Amount of tokens to mint. Must be less than or equal - * to the minterAllowance of this TokenMinter for given `_mintToken`. - * @return mintToken token minted. + * @notice Emitted when the local minter is added + * @param localMinter address of local minter + * @notice Emitted when the local minter is added */ - function mint( - uint32 sourceDomain, - bytes32 burnToken, - address to, - uint256 amount - ) - external - override - whenNotPaused - onlyLocalTokenMessenger - returns (address mintToken) - { - address _mintToken = _getLocalToken(sourceDomain, burnToken); - require(_mintToken != address(0), "Mint token not supported"); - IMintBurnToken _token = IMintBurnToken(_mintToken); - - require(_token.mint(to, amount), "Mint operation failed"); - return _mintToken; - } + event LocalMinterAdded(address localMinter); /** - * @notice Burn tokens owned by this TokenMinter. - * @param burnToken burnable token address. - * @param burnAmount amount of tokens to burn. Must be - * > 0, and <= maximum burn amount per message. + * @notice Emitted when the local minter is removed + * @param localMinter address of local minter + * @notice Emitted when the local minter is removed */ - function burn(address burnToken, uint256 burnAmount) - external - override - whenNotPaused - onlyLocalTokenMessenger - onlyWithinBurnLimit(burnToken, burnAmount) - { - IMintBurnToken _token = IMintBurnToken(burnToken); - _token.burn(burnAmount); - } + event LocalMinterRemoved(address localMinter); - /** - * @notice Add TokenMessenger for the local domain. Only this TokenMessenger - * has permission to call mint() and burn() on this TokenMinter. - * @dev Reverts if a TokenMessenger is already set for the local domain. - * @param newLocalTokenMessenger The address of the new TokenMessenger on the local domain. - */ - function addLocalTokenMessenger(address newLocalTokenMessenger) - external - onlyOwner - { - require( - newLocalTokenMessenger != address(0), - "Invalid TokenMessenger address" - ); + // ============ Libraries ============ + using TypedMemView for bytes; + using TypedMemView for bytes29; + using BurnMessage for bytes29; + using Message for bytes29; - require( - localTokenMessenger == address(0), - "Local TokenMessenger already set" - ); + // ============ State Variables ============ + // Local Message Transmitter responsible for sending and receiving messages to/from remote domains + IMessageTransmitter public immutable localMessageTransmitter; - localTokenMessenger = newLocalTokenMessenger; + // Version of message body format + uint32 public immutable messageBodyVersion; - emit LocalTokenMessengerAdded(localTokenMessenger); - } + // Minter responsible for minting and burning tokens on the local domain + ITokenMinter public localMinter; + + // Valid TokenMessengers on remote domains + mapping(uint32 => bytes32) public remoteTokenMessengers; + // ============ Modifiers ============ /** - * @notice Remove the TokenMessenger for the local domain. - * @dev Reverts if the TokenMessenger of the local domain is not set. + * @notice Only accept messages from a registered TokenMessenger contract on given remote domain + * @param domain The remote domain + * @param tokenMessenger The address of the TokenMessenger contract for the given remote domain */ - function removeLocalTokenMessenger() external onlyOwner { - address _localTokenMessengerBeforeRemoval = localTokenMessenger; + modifier onlyRemoteTokenMessenger(uint32 domain, bytes32 tokenMessenger) { require( - _localTokenMessengerBeforeRemoval != address(0), - "No local TokenMessenger is set" + _isRemoteTokenMessenger(domain, tokenMessenger), + "Remote TokenMessenger unsupported" ); - - delete localTokenMessenger; - emit LocalTokenMessengerRemoved(_localTokenMessengerBeforeRemoval); + _; } /** - * @notice Set tokenController to `newTokenController`, and - * emit `SetTokenController` event. - * @dev newTokenController must be nonzero. - * @param newTokenController address of new token controller + * @notice Only accept messages from the registered message transmitter on local domain */ - function setTokenController(address newTokenController) - external - override - onlyOwner - { - _setTokenController(newTokenController); + modifier onlyLocalMessageTransmitter() { + // Caller must be the registered message transmitter for this domain + require(_isLocalMessageTransmitter(), "Invalid message transmitter"); + _; } + // ============ Constructor ============ /** - * @notice Get the local token address associated with the given - * remote domain and token. - * @param remoteDomain Remote domain - * @param remoteToken Remote token - * @return local token address + * @param _messageTransmitter Message transmitter address + * @param _messageBodyVersion Message body version */ - function getLocalToken(uint32 remoteDomain, bytes32 remoteToken) - external - view - override - returns (address) - { - return _getLocalToken(remoteDomain, remoteToken); + constructor(address _messageTransmitter, uint32 _messageBodyVersion) { + require( + _messageTransmitter != address(0), + "MessageTransmitter not set" + ); + localMessageTransmitter = IMessageTransmitter(_messageTransmitter); + messageBodyVersion = _messageBodyVersion; } - // ============ Internal Utils ============ + // ============ External Functions ============ /** - * @notice Returns true if the message sender is the registered local TokenMessenger - * @return True if the message sender is the registered local TokenMessenger + * @notice Deposits and burns tokens from sender to be minted on destination domain. + * Emits a `DepositForBurn` event. + * @dev reverts if: + * - given burnToken is not supported + * - given destinationDomain has no TokenMessenger registered + * - transferFrom() reverts. For example, if sender's burnToken balance or approved allowance + * to this contract is less than `amount`. + * - burn() reverts. For example, if `amount` is 0. + * - MessageTransmitter returns false or reverts. + * @param amount amount of tokens to burn + * @param destinationDomain destination domain + * @param mintRecipient address of mint recipient on destination domain + * @param burnToken address of contract to burn deposited tokens, on local domain + * @return _nonce unique nonce reserved by message */ - function _isLocalTokenMessenger() internal view returns (bool) { + function depositForBurn( + uint256 amount, + uint32 destinationDomain, + bytes32 mintRecipient, + address burnToken + ) external returns (uint64 _nonce) { return - address(localTokenMessenger) != address(0) && - msg.sender == address(localTokenMessenger); + _depositForBurn( + amount, + destinationDomain, + mintRecipient, + burnToken, + // (bytes32(0) here indicates that any address can call receiveMessage() + // on the destination domain, triggering mint to specified `mintRecipient`) + bytes32(0) + ); } -} - ``` - - This contract and the interfaces and contracts it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/TokenMinter.sol){target=\_blank} on GitHub. -Most of the methods of the Token Minter contract can be called only by the registered Token Messenger. However, there is one publicly accessible method, a public view function that allows anyone to query the local token associated with a remote domain and token. - -- **`getLocalToken`** — a read-only function that returns the local token address associated with a given remote domain and token - - ??? interface "Parameters" + /** + * @notice Deposits and burns tokens from sender to be minted on destination domain. The mint + * on the destination domain must be called by `destinationCaller`. + * WARNING: if the `destinationCaller` does not represent a valid address as bytes32, then it will not be possible + * to broadcast the message on the destination domain. This is an advanced feature, and the standard + * depositForBurn() should be preferred for use cases where a specific destination caller is not required. + * Emits a `DepositForBurn` event. + * @dev reverts if: + * - given destinationCaller is zero address + * - given burnToken is not supported + * - given destinationDomain has no TokenMessenger registered + * - transferFrom() reverts. For example, if sender's burnToken balance or approved allowance + * to this contract is less than `amount`. + * - burn() reverts. For example, if `amount` is 0. + * - MessageTransmitter returns false or reverts. + * @param amount amount of tokens to burn + * @param destinationDomain destination domain + * @param mintRecipient address of mint recipient on destination domain + * @param burnToken address of contract to burn deposited tokens, on local domain + * @param destinationCaller caller on the destination domain, as bytes32 + * @return nonce unique nonce reserved by message + */ + function depositForBurnWithCaller( + uint256 amount, + uint32 destinationDomain, + bytes32 mintRecipient, + address burnToken, + bytes32 destinationCaller + ) external returns (uint64 nonce) { + // Destination caller must be nonzero. To allow any destination caller, use depositForBurn(). + require(destinationCaller != bytes32(0), "Invalid destination caller"); - `remoteDomain` ++"uint32"++ - - The remote blockchain domain where the token resides. + return + _depositForBurn( + amount, + destinationDomain, + mintRecipient, + burnToken, + destinationCaller + ); + } - --- + /** + * @notice Replace a BurnMessage to change the mint recipient and/or + * destination caller. Allows the sender of a previous BurnMessage + * (created by depositForBurn or depositForBurnWithCaller) + * to send a new BurnMessage to replace the original. + * The new BurnMessage will reuse the amount and burn token of the original, + * without requiring a new deposit. + * @dev The new message will reuse the original message's nonce. For a + * given nonce, all replacement message(s) and the original message are + * valid to broadcast on the destination domain, until the first message + * at the nonce confirms, at which point all others are invalidated. + * Note: The msg.sender of the replaced message must be the same as the + * msg.sender of the original message. + * @param originalMessage original message bytes (to replace) + * @param originalAttestation original attestation bytes + * @param newDestinationCaller the new destination caller, which may be the + * same as the original destination caller, a new destination caller, or an empty + * destination caller (bytes32(0), indicating that any destination caller is valid.) + * @param newMintRecipient the new mint recipient, which may be the same as the + * original mint recipient, or different. + */ + function replaceDepositForBurn( + bytes calldata originalMessage, + bytes calldata originalAttestation, + bytes32 newDestinationCaller, + bytes32 newMintRecipient + ) external { + bytes29 _originalMsg = originalMessage.ref(0); + _originalMsg._validateMessageFormat(); + bytes29 _originalMsgBody = _originalMsg._messageBody(); + _originalMsgBody._validateBurnMessageFormat(); - `remoteToken` ++"bytes32"++ - - The address of the token on the remote domain. + bytes32 _originalMsgSender = _originalMsgBody._getMessageSender(); + // _originalMsgSender must match msg.sender of original message + require( + msg.sender == Message.bytes32ToAddress(_originalMsgSender), + "Invalid sender for message" + ); + require( + newMintRecipient != bytes32(0), + "Mint recipient must be nonzero" + ); - ??? interface "Returns" + bytes32 _burnToken = _originalMsgBody._getBurnToken(); + uint256 _amount = _originalMsgBody._getAmount(); - ++"address"++ - - The local token address. + bytes memory _newMessageBody = BurnMessage._formatMessage( + messageBodyVersion, + _burnToken, + newMintRecipient, + _amount, + _originalMsgSender + ); -## How to Interact with CCTP Contracts + localMessageTransmitter.replaceMessage( + originalMessage, + originalAttestation, + _newMessageBody, + newDestinationCaller + ); -Before writing your own contracts, it's essential to understand the key functions and events of the Wormhole CCTP contracts. The primary functionality revolves around the following: + emit DepositForBurn( + _originalMsg._nonce(), + Message.bytes32ToAddress(_burnToken), + _amount, + msg.sender, + newMintRecipient, + _originalMsg._destinationDomain(), + _originalMsg._recipient(), + newDestinationCaller + ); + } -- **Sending tokens with a message payload** - initiating a cross-chain transfer of Circle-supported assets along with a message payload to a specific target address on the target chain -- **Receiving tokens with a message payload** - validating messages received from other chains via Wormhole and then minting the tokens for the recipient + /** + * @notice Handles an incoming message received by the local MessageTransmitter, + * and takes the appropriate action. For a burn message, mints the + * associated token to the requested recipient on the local domain. + * @dev Validates the local sender is the local MessageTransmitter, and the + * remote sender is a registered remote TokenMessenger for `remoteDomain`. + * @param remoteDomain The domain where the message originated from. + * @param sender The sender of the message (remote TokenMessenger). + * @param messageBody The message body bytes. + * @return success Bool, true if successful. + */ + function handleReceiveMessage( + uint32 remoteDomain, + bytes32 sender, + bytes calldata messageBody + ) + external + override + onlyLocalMessageTransmitter + onlyRemoteTokenMessenger(remoteDomain, sender) + returns (bool) + { + bytes29 _msg = messageBody.ref(0); + _msg._validateBurnMessageFormat(); + require( + _msg._getVersion() == messageBodyVersion, + "Invalid message body version" + ); -### Sending Tokens and Messages + bytes32 _mintRecipient = _msg._getMintRecipient(); + bytes32 _burnToken = _msg._getBurnToken(); + uint256 _amount = _msg._getAmount(); -To initiate a cross-chain transfer, you must call the `transferTokensWithPayload` method of Wormhole's Circle Integration (CCTP) contract. Once you have initiated a transfer, you must fetch the attested Wormhole message and parse the transaction logs to locate a transfer message emitted by the Circle Bridge contract. Then, a request must be sent to Circle's off-chain process with the transfer message to grab the attestation from the process's response, which validates the token mint on the target chain. + ITokenMinter _localMinter = _getLocalMinter(); -To streamline this process, you can use the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk/tree/main){target=\_blank}, which exposes the [`WormholeRelayerSDK.sol` contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank}, including the [`CCTPSender` abstract contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/CCTPBase.sol){target=\_blank}. By inheriting this contract, you can transfer USDC while automatically relaying the message payload to the destination chain via a Wormhole-deployed relayer. + _mintAndWithdraw( + address(_localMinter), + remoteDomain, + _burnToken, + Message.bytes32ToAddress(_mintRecipient), + _amount + ); -??? code "CCTP Sender contract" + return true; + } - ```solidity - abstract contract CCTPSender is CCTPBase { - uint8 internal constant CONSISTENCY_LEVEL_FINALIZED = 15; + /** + * @notice Add the TokenMessenger for a remote domain. + * @dev Reverts if there is already a TokenMessenger set for domain. + * @param domain Domain of remote TokenMessenger. + * @param tokenMessenger Address of remote TokenMessenger as bytes32. + */ + function addRemoteTokenMessenger(uint32 domain, bytes32 tokenMessenger) + external + onlyOwner + { + require(tokenMessenger != bytes32(0), "bytes32(0) not allowed"); - using CCTPMessageLib for *; + require( + remoteTokenMessengers[domain] == bytes32(0), + "TokenMessenger already set" + ); - mapping(uint16 => uint32) public chainIdToCCTPDomain; + remoteTokenMessengers[domain] = tokenMessenger; + emit RemoteTokenMessengerAdded(domain, tokenMessenger); + } /** - * Sets the CCTP Domain corresponding to chain 'chain' to be 'cctpDomain' - * So that transfers of USDC to chain 'chain' use the target CCTP domain 'cctpDomain' - * - * This action can only be performed by 'cctpConfigurationOwner', who is set to be the deployer - * - * Currently, cctp domains are: - * Ethereum: Wormhole chain id 2, cctp domain 0 - * Avalanche: Wormhole chain id 6, cctp domain 1 - * Optimism: Wormhole chain id 24, cctp domain 2 - * Arbitrum: Wormhole chain id 23, cctp domain 3 - * Base: Wormhole chain id 30, cctp domain 6 - * - * These can be set via: - * setCCTPDomain(2, 0); - * setCCTPDomain(6, 1); - * setCCTPDomain(24, 2); - * setCCTPDomain(23, 3); - * setCCTPDomain(30, 6); + * @notice Remove the TokenMessenger for a remote domain. + * @dev Reverts if there is no TokenMessenger set for `domain`. + * @param domain Domain of remote TokenMessenger */ - function setCCTPDomain(uint16 chain, uint32 cctpDomain) public { + function removeRemoteTokenMessenger(uint32 domain) external onlyOwner { + // No TokenMessenger set for given remote domain. require( - msg.sender == cctpConfigurationOwner, - "Not allowed to set CCTP Domain" + remoteTokenMessengers[domain] != bytes32(0), + "No TokenMessenger set" ); - chainIdToCCTPDomain[chain] = cctpDomain; - } - function getCCTPDomain(uint16 chain) internal view returns (uint32) { - return chainIdToCCTPDomain[chain]; + bytes32 _removedTokenMessenger = remoteTokenMessengers[domain]; + delete remoteTokenMessengers[domain]; + emit RemoteTokenMessengerRemoved(domain, _removedTokenMessenger); } /** - * transferUSDC wraps common boilerplate for sending tokens to another chain using IWormholeRelayer - * - approves the Circle TokenMessenger contract to spend 'amount' of USDC - * - calls Circle's 'depositForBurnWithCaller' - * - returns key for inclusion in WormholeRelayer `additionalVaas` argument - * - * Note: this requires that only the targetAddress can redeem transfers. - * + * @notice Add minter for the local domain. + * @dev Reverts if a minter is already set for the local domain. + * @param newLocalMinter The address of the minter on the local domain. */ + function addLocalMinter(address newLocalMinter) external onlyOwner { + require(newLocalMinter != address(0), "Zero address not allowed"); - function transferUSDC( - uint256 amount, - uint16 targetChain, - address targetAddress - ) internal returns (MessageKey memory) { - IERC20(USDC).approve(address(circleTokenMessenger), amount); - bytes32 targetAddressBytes32 = addressToBytes32CCTP(targetAddress); - uint64 nonce = circleTokenMessenger.depositForBurnWithCaller( - amount, - getCCTPDomain(targetChain), - targetAddressBytes32, - USDC, - targetAddressBytes32 + require( + address(localMinter) == address(0), + "Local minter is already set." ); - return - MessageKey( - CCTPMessageLib.CCTP_KEY_TYPE, - abi.encodePacked(getCCTPDomain(wormhole.chainId()), nonce) - ); - } - // Publishes a CCTP transfer of 'amount' of USDC - // and requests a delivery of the transfer along with 'payload' to 'targetAddress' on 'targetChain' - // - // The second step is done by publishing a wormhole message representing a request - // to call 'receiveWormholeMessages' on the address 'targetAddress' on chain 'targetChain' - // with the payload 'abi.encode(amount, payload)' - // (and we encode the amount so it can be checked on the target chain) - function sendUSDCWithPayloadToEvm( - uint16 targetChain, - address targetAddress, - bytes memory payload, - uint256 receiverValue, - uint256 gasLimit, - uint256 amount - ) internal returns (uint64 sequence) { - MessageKey[] memory messageKeys = new MessageKey[](1); - messageKeys[0] = transferUSDC(amount, targetChain, targetAddress); + localMinter = ITokenMinter(newLocalMinter); - bytes memory userPayload = abi.encode(amount, payload); - address defaultDeliveryProvider = wormholeRelayer - .getDefaultDeliveryProvider(); + emit LocalMinterAdded(newLocalMinter); + } - (uint256 cost, ) = wormholeRelayer.quoteEVMDeliveryPrice( - targetChain, - receiverValue, - gasLimit - ); + /** + * @notice Remove the minter for the local domain. + * @dev Reverts if the minter of the local domain is not set. + */ + function removeLocalMinter() external onlyOwner { + address _localMinterAddress = address(localMinter); + require(_localMinterAddress != address(0), "No local minter is set."); - sequence = wormholeRelayer.sendToEvm{value: cost}( - targetChain, - targetAddress, - userPayload, - receiverValue, - 0, - gasLimit, - targetChain, - address(0x0), - defaultDeliveryProvider, - messageKeys, - CONSISTENCY_LEVEL_FINALIZED - ); + delete localMinter; + emit LocalMinterRemoved(_localMinterAddress); } - function addressToBytes32CCTP(address addr) private pure returns (bytes32) { - return bytes32(uint256(uint160(addr))); - } -} - ``` + // ============ Internal Utils ============ + /** + * @notice Deposits and burns tokens from sender to be minted on destination domain. + * Emits a `DepositForBurn` event. + * @param _amount amount of tokens to burn (must be non-zero) + * @param _destinationDomain destination domain + * @param _mintRecipient address of mint recipient on destination domain + * @param _burnToken address of contract to burn deposited tokens, on local domain + * @param _destinationCaller caller on the destination domain, as bytes32 + * @return nonce unique nonce reserved by message + */ + function _depositForBurn( + uint256 _amount, + uint32 _destinationDomain, + bytes32 _mintRecipient, + address _burnToken, + bytes32 _destinationCaller + ) internal returns (uint64 nonce) { + require(_amount > 0, "Amount must be nonzero"); + require(_mintRecipient != bytes32(0), "Mint recipient must be nonzero"); -The `CCTPSender` abstract contract exposes the `sendUSDCWithPayloadToEvm` function. This function publishes a CCTP transfer of the provided `amount` of USDC and requests that the transfer be delivered along with a `payload` to the specified `targetAddress` on the `targetChain`. + bytes32 _destinationTokenMessenger = _getRemoteTokenMessenger( + _destinationDomain + ); -```solidity -function sendUSDCWithPayloadToEvm( - uint16 targetChain, - address targetAddress, - bytes memory payload, - uint256 receiverValue, - uint256 gasLimit, - uint256 amount -) internal returns (uint64 sequence) -``` + ITokenMinter _localMinter = _getLocalMinter(); + IMintBurnToken _mintBurnToken = IMintBurnToken(_burnToken); + require( + _mintBurnToken.transferFrom( + msg.sender, + address(_localMinter), + _amount + ), + "Transfer operation failed" + ); + _localMinter.burn(_burnToken, _amount); -??? interface "Parameters" + // Format message body + bytes memory _burnMessage = BurnMessage._formatMessage( + messageBodyVersion, + Message.addressToBytes32(_burnToken), + _mintRecipient, + _amount, + Message.addressToBytes32(msg.sender) + ); - `targetChain` ++"uint16"++ + uint64 _nonceReserved = _sendDepositForBurnMessage( + _destinationDomain, + _destinationTokenMessenger, + _destinationCaller, + _burnMessage + ); - The target chain for the transfer. + emit DepositForBurn( + _nonceReserved, + _burnToken, + _amount, + msg.sender, + _mintRecipient, + _destinationDomain, + _destinationTokenMessenger, + _destinationCaller + ); - --- + return _nonceReserved; + } - `targetAddress` ++"address"++ + /** + * @notice Sends a BurnMessage through the local message transmitter + * @dev calls local message transmitter's sendMessage() function if `_destinationCaller` == bytes32(0), + * or else calls sendMessageWithCaller(). + * @param _destinationDomain destination domain + * @param _destinationTokenMessenger address of registered TokenMessenger contract on destination domain, as bytes32 + * @param _destinationCaller caller on the destination domain, as bytes32. If `_destinationCaller` == bytes32(0), + * any address can call receiveMessage() on destination domain. + * @param _burnMessage formatted BurnMessage bytes (message body) + * @return nonce unique nonce reserved by message + */ + function _sendDepositForBurnMessage( + uint32 _destinationDomain, + bytes32 _destinationTokenMessenger, + bytes32 _destinationCaller, + bytes memory _burnMessage + ) internal returns (uint64 nonce) { + if (_destinationCaller == bytes32(0)) { + return + localMessageTransmitter.sendMessage( + _destinationDomain, + _destinationTokenMessenger, + _burnMessage + ); + } else { + return + localMessageTransmitter.sendMessageWithCaller( + _destinationDomain, + _destinationTokenMessenger, + _destinationCaller, + _burnMessage + ); + } + } - The target address for the transfer. + /** + * @notice Mints tokens to a recipient + * @param _tokenMinter address of TokenMinter contract + * @param _remoteDomain domain where burned tokens originate from + * @param _burnToken address of token burned + * @param _mintRecipient recipient address of minted tokens + * @param _amount amount of minted tokens + */ + function _mintAndWithdraw( + address _tokenMinter, + uint32 _remoteDomain, + bytes32 _burnToken, + address _mintRecipient, + uint256 _amount + ) internal { + ITokenMinter _minter = ITokenMinter(_tokenMinter); + address _mintToken = _minter.mint( + _remoteDomain, + _burnToken, + _mintRecipient, + _amount + ); - --- + emit MintAndWithdraw(_mintRecipient, _amount, _mintToken); + } - `payload` ++"bytes"++ + /** + * @notice return the remote TokenMessenger for the given `_domain` if one exists, else revert. + * @param _domain The domain for which to get the remote TokenMessenger + * @return _tokenMessenger The address of the TokenMessenger on `_domain` as bytes32 + */ + function _getRemoteTokenMessenger(uint32 _domain) + internal + view + returns (bytes32) + { + bytes32 _tokenMessenger = remoteTokenMessengers[_domain]; + require(_tokenMessenger != bytes32(0), "No TokenMessenger for domain"); + return _tokenMessenger; + } - Arbitrary payload to be delivered to the target chain via Wormhole. + /** + * @notice return the local minter address if it is set, else revert. + * @return local minter as ITokenMinter. + */ + function _getLocalMinter() internal view returns (ITokenMinter) { + require(address(localMinter) != address(0), "Local minter is not set"); + return localMinter; + } - --- + /** + * @notice Return true if the given remote domain and TokenMessenger is registered + * on this TokenMessenger. + * @param _domain The remote domain of the message. + * @param _tokenMessenger The address of the TokenMessenger on remote domain. + * @return true if a remote TokenMessenger is registered for `_domain` and `_tokenMessenger`, + * on this TokenMessenger. + */ + function _isRemoteTokenMessenger(uint32 _domain, bytes32 _tokenMessenger) + internal + view + returns (bool) + { + return + _tokenMessenger != bytes32(0) && + remoteTokenMessengers[_domain] == _tokenMessenger; + } - `gasLimit` ++"uint256"++ + /** + * @notice Returns true if the message sender is the local registered MessageTransmitter + * @return true if message sender is the registered local message transmitter + */ + function _isLocalMessageTransmitter() internal view returns (bool) { + return + address(localMessageTransmitter) != address(0) && + msg.sender == address(localMessageTransmitter); + } +} + ``` - The gas limit with which to call `targetAddress`. + This contract and the interfaces, contracts, and libraries it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/TokenMessenger.sol){target=\_blank} on GitHub. - --- +The functions provided by the Token Messenger contract are as follows: - `amount` ++"uint256"++ +- **`depositForBurn`** - deposits and burns tokens from the sender to be minted on the destination domain. Minted tokens will be transferred to `mintRecipient` - The amount of USDC to transfer. + ??? interface "Parameters" - --- + `amount` ++"uint256"++ + + The amount of tokens to burn. -??? interface "Returns" + --- - `sequence` ++"uint64"++ + `destinationDomain` ++"uint32"++ + + The network where the token will be minted after burn. - Sequence number of the published VAA containing the delivery instructions. + --- -When the `sendUSDCWithPayloadToEvm` function is called, the following series of actions are executed: + `mintRecipient` ++"bytes32"++ + + Address of mint recipient on destination domain. -1. **USDC transfer initiation**: + --- - - The Circle Token Messenger contract is approved to spend the specified amount of USDC. - - The `depositForBurnWithCaller` function of the Token Messenger contract is invoked - - A key is returned, which is to be provided to the Wormhole relayer for message delivery + `burnToken` ++"address"++ + + Address of contract to burn deposited tokens, on local domain. -2. **Message encoding** - the message `payload` is encoded for transmission via the Wormhole relayer. The encoded value also includes the `amount` so that it can be checked on the target chain -3. **Retrieving delivery provider** - the current default delivery provider's address is retrieved -4. **Cost calculation** - the transfer cost is calculated using the Wormhole relayer's `quoteEVMDeliveryPrice` function -5. **Message dispatch**: + ??? interface "Returns" - - The `sendToEvm` function of the Wormhole relayer is called with the encoded payload, the delivery provider's address, and the arguments passed to `sendUSDCWithPayloadToEvm` - - The function must be called with `msg.value` set to the previously calculated cost (from step 4) - - This function publishes an instruction for the delivery provider to relay the payload and VAAs specified by the key (from step 1) to the target address on the target chain + `_nonce` ++"uint64"++ + + Unique nonce reserved by message. -A simple example implementation is as follows: + ??? interface "Emits" -```solidity -function sendCrossChainDeposit( - uint16 targetChain, - address targetAddress, - address recipient, - uint256 amount, - uint256, - gasLimit -) public payable { - uint256 cost = quoteCrossChainDeposit(targetChain); - require( - msg.value == cost, - "msg.value must be quoteCrossChainDeposit(targetChain)" - ); + `DepositForBurn` - event emitted when `depositForBurn` is called. The `destinationCaller` is set to `bytes32(0)` to allow any address to call `receiveMessage` on the destination domain - IERC20(USDC).transferFrom(msg.sender, address(this), amount); + ??? child "Event Arguments" - bytes memory payload = abi.encode(recipient); - sendUSDCWithPayloadToEvm( - targetChain, - targetAddress, // address (on targetChain) to send token and payload to - payload, - 0, // receiver value - gasLimit, - amount - ); -} -``` + `nonce` ++"uint64"++ + + Unique nonce reserved by message (indexed). -The above example sends a specified amount of USDC and the recipient's address as a payload to a target contract on another chain, ensuring that the correct cost is provided for the cross-chain transfer. + --- -### Receiving Tokens and Messages + `burnToken` ++"address"++ + + Address of token burnt on source domain. -To complete the cross-chain transfer, you must invoke the `redeemTokensWithPayload` function on the target Wormhole Circle Integration contract. This function verifies the message's authenticity, decodes the payload, confirms the recipient and sender, checks message delivery, and then calls the `receiveMessage` function of the [Message Transmitter](#message-transmitter-contract) contract. + --- -Using the Wormhole-deployed relayer automatically triggers the `receiveWormholeMessages` function. This function is defined in the [`WormholeRelayerSDK.sol` contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank} from the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk/tree/main){target=\_blank} and is implemented within the [`CCTPReceiver` abstract contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/CCTPBase.sol){target=\_blank}. + `amount` ++"uint256"++ + + The deposit amount. -??? code "CCTP Receiver contract" + --- - ```solidity - abstract contract CCTPReceiver is CCTPBase { - function redeemUSDC( - bytes memory cctpMessage - ) internal returns (uint256 amount) { - (bytes memory message, bytes memory signature) = abi.decode( - cctpMessage, - (bytes, bytes) - ); - uint256 beforeBalance = IERC20(USDC).balanceOf(address(this)); - circleMessageTransmitter.receiveMessage(message, signature); - return IERC20(USDC).balanceOf(address(this)) - beforeBalance; - } + `depositor` ++"address"++ + + Address where deposit is transferred from. - function receiveWormholeMessages( - bytes memory payload, - bytes[] memory additionalMessages, - bytes32 sourceAddress, - uint16 sourceChain, - bytes32 deliveryHash - ) external payable { - // Currently, 'sendUSDCWithPayloadToEVM' only sends one CCTP transfer - // That can be modified if the integrator desires to send multiple CCTP transfers - // in which case the following code would have to be modified to support - // redeeming these multiple transfers and checking that their 'amount's are accurate - require( - additionalMessages.length <= 1, - "CCTP: At most one Message is supported" - ); + --- - uint256 amountUSDCReceived; - if (additionalMessages.length == 1) - amountUSDCReceived = redeemUSDC(additionalMessages[0]); + `mintRecipient` ++"bytes32"++ + + Address receiving minted tokens on destination domain. - (uint256 amount, bytes memory userPayload) = abi.decode( - payload, - (uint256, bytes) - ); + --- - // Check that the correct amount was received - // It is important to verify that the 'USDC' sent in by the relayer is the same amount - // that the sender sent in on the source chain - require(amount == amountUSDCReceived, "Wrong amount received"); + `destinationDomain` ++"uint32"++ - + + Destination domain. - receivePayloadAndUSDC( - userPayload, - amountUSDCReceived, - sourceAddress, - sourceChain, - deliveryHash - ); - } + --- - // Implement this function to handle in-bound deliveries that include a CCTP transfer - function receivePayloadAndUSDC( - bytes memory payload, - uint256 amountUSDCReceived, - bytes32 sourceAddress, - uint16 sourceChain, - bytes32 deliveryHash - ) internal virtual {} -} - ``` + `destinationTokenMessenger` ++"bytes32"++ + + Address of `TokenMessenger` on destination domain. + + --- -Although you do not need to interact with the `receiveWormholeMessages` function directly, it's important to understand what it does. This function processes cross-chain messages and USDC transfers via Wormhole's Circle (CCTP) Bridge. Here's a summary of what it does: + `destinationCaller` ++"bytes32"++ + + Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. -1. **Validate additional messages** - the function checks that there is at most one CCTP transfer message in the `additionalMessages` array, as it currently only supports processing a single CCTP transfer -2. **Redeem USDC**: - - If there is a CCTP message, it calls the `redeemUSDC` function of the `CCTPReceiver` contract to decode and redeem the USDC - - This results in the call of the `receiveMessage` function of Circle's Message Transmitter contract to redeem the USDC based on the provided message and signature - - The amount of USDC received is calculated by subtracting the contract's previous balance from the current balance after redeeming the USDC -3. **Decode payload** - the incoming payload is decoded, extracting both the expected amount of USDC and a `userPayload` (which could be any additional data) -4. **Verify the amount** - it ensures that the amount of USDC received matches the amount encoded in the payload. If the amounts don't match, the transaction is reverted -5. **Handle the payload and USDC** - after verifying the amounts, `receivePayloadAndUSDC` is called, which is meant to handle the actual logic for processing the received payload and USDC transfer +- **`depositForBurnWithCaller`** - deposits and burns tokens from the sender to be minted on the destination domain. This method differs from `depositForBurn` in that the mint on the destination domain can only be called by the designated `destinationCaller` address -You'll need to implement the `receivePayloadAndUSDC` function to transfer the USDC and handle the payload as your application needs. A simple example implementation is as follows: + ??? interface "Parameters" -```solidity -function receivePayloadAndUSDC( - bytes memory payload, - uint256 amountUSDCReceived, - bytes32, // sourceAddress - uint16, // sourceChain - bytes32 // deliveryHash -) internal override onlyWormholeRelayer { - address recipient = abi.decode(payload, (address)); + `amount` ++"uint256"++ + + The amount of tokens to burn. - IERC20(USDC).transfer(recipient, amountUSDCReceived); -} -``` + --- -## Complete Example + `destinationDomain` ++"uint32"++ + + The network where the token will be minted after burn. -To view a complete example of creating a contract that integrates with Wormhole's CCTP contracts to send and receive USDC cross-chain, check out the [Hello USDC](https://github.com/wormhole-foundation/hello-usdc){target=\_blank} repository on GitHub. ---- END CONTENT --- + --- -Doc-Content: https://wormhole.com/docs/build/contract-integrations/core-contracts ---- BEGIN CONTENT --- ---- -title: Get Started with Core Contracts -description: This guide walks through the key methods of the Core Contracts, providing you with the knowledge needed to integrate them into your cross-chain contracts ---- + `mintRecipient` ++"bytes32"++ + + Address of mint recipient on destination domain. -# Get Started with Core Contracts + --- -## Introduction + `burnToken` ++"address"++ + + Address of contract to burn deposited tokens, on local domain. -Wormhole's Core Contracts, deployed on each supported blockchain network, enable the fundamental operations of sending and receiving cross-chain messages. + --- -While the implementation details of the Core Contracts varies by network, the core functionality remains consistent across chains. Each version of the Core Contract facilitates secure and reliable cross-chain communication, ensuring that developers can effectively publish and verify messages. + `destinationCaller` ++"bytes32"++ + + Address of the caller on the destination domain who will trigger the mint. -This guide will walk you through the variations and key methods of the Core Contracts, providing you with the knowledge needed to integrate them into your cross-chain contracts. To learn more about Core Contracts' features and how it works, please refer to the [Core Contracts](/docs/learn/infrastructure/core-contracts/){target=\_blank} page in the Learn section. + ??? interface "Returns" -## Prerequisites + `_nonce` ++"uint64"++ + + Unique nonce reserved by message. -To interact with the Wormhole Core Contract, you'll need the following: + ??? interface "Emits" -- [The address of the Core Contract](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on the chains you're deploying your contract on -- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on -- [The consistency levels](/docs/build/reference/consistency-levels/){target=\_blank} (required finality) for the chains you're deploying your contract on + `DepositForBurn` - event emitted when `depositForBurnWithCaller` is called -## How to Interact with Core Contracts + ??? child "Event Arguments" -Before writing your own contracts, it's essential to understand the key functions and events of the Wormhole Core Contracts. The primary functionality revolves around: + `nonce` ++"uint64"++ + + Unique nonce reserved by message (indexed). -- **Sending messages** - submitting messages to the Wormhole network for cross-chain communication -- **Receiving and verifying messages** - validating messages received from other chains via the Wormhole network + --- -While the implementation details of the Core Contracts vary by network, the core functionality remains consistent across chains. + `burnToken` ++"address"++ + + Address of token burnt on source domain. -### Sending Messages + --- + + `amount` ++"uint256"++ + + The deposit amount. -To send a message, regardless of the environment or chain, the Core Contract is invoked with a message argument from an [emitter](/docs/learn/fundamentals/glossary/#emitter){target=\_blank}. This emitter might be your contract or an existing application such as the [Token Bridge](/docs/learn/messaging/token-bridge/#token-bridge){target=\_blank}. + --- -=== "EVM" + `depositor` ++"address"++ + + Address where deposit is transferred from. - The `IWormhole.sol` interface provides the `publishMessage` function, which can be used to publish a message directly to the Core Contract: + --- - ```solidity - function publishMessage( - uint32 nonce, - bytes memory payload, - uint8 consistencyLevel -) external payable returns (uint64 sequence); - ``` + `mintRecipient` ++"bytes32"++ + + Address receiving minted tokens on destination domain. + + --- + + `destinationDomain` ++"uint32"++ - + + Destination domain. + + --- + + `destinationTokenMessenger` ++"bytes32"++ + + Address of `TokenMessenger` on destination domain. + + --- + + `destinationCaller` ++"bytes32"++ + + Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. + +- **`replaceDepositForBurn`** — replaces a previous `BurnMessage` to modify the mint recipient and/or the destination caller. The replacement message reuses the `_nonce` created by the original message, which allows the original message's sender to update the details without requiring a new deposit ??? interface "Parameters" - `nonce` ++"uint32"++ + `originalMessage` ++"bytes"++ - A free integer field that can be used however you like. Note that changing the `nonce` will result in a different digest. + The original burn message to be replaced. --- - `payload` ++"bytes memory"++ + `originalAttestation` ++"bytes"++ - The content of the emitted message. Due to the constraints of individual blockchains, it may be capped to a certain maximum length. + The attestation of the original message. --- - `consistencyLevel` ++"uint8"++ + `newDestinationCaller` ++"bytes32"++ - A value that defines the required level of finality that must be reached before the Guardians will observe and attest to emitted events. + The new caller on the destination domain, can be the same or updated. - ??? interface "Returns" + --- - `sequence` ++"uint64"++ + `newMintRecipient` ++"bytes32"++ - A unique number that increments for every message for a given emitter (and implicitly chain). This, combined with the emitter address and emitter chain ID, allows the VAA for this message to be queried from the [Wormholescan API](https://docs.wormholescan.io/){target=\_blank}. - - ??? interface "Example" + The new recipient for the minted tokens, can be the same or updated. - ```solidity - IWormhole wormhole = IWormhole(wormholeAddr); + ??? interface "Returns" -// Get the fee for publishing a message -uint256 wormholeFee = wormhole.messageFee(); + None. -// Check fee and send parameters + ??? interface "Emits" -// Create the HelloWorldMessage struct -HelloWorldMessage memory parsedMessage = HelloWorldMessage({ - payloadID: uint8(1), - message: helloWorldMessage -}); + `DepositForBurn` - event emitted when `replaceDepositForBurn` is called. Note that the `destinationCaller` will reflect the new destination caller, which may be the same as the original destination caller, a new destination caller, or an empty destination caller (`bytes32(0)`), indicating that any destination caller is valid -// Encode the HelloWorldMessage struct into bytes -bytes memory encodedMessage = encodeMessage(parsedMessage); + ??? child "Event Arguments" -// Send the HelloWorld message by calling publishMessage on the -// wormhole core contract and paying the Wormhole protocol fee. -messageSequence = wormhole.publishMessage{value: wormholeFee}( - 0, // batchID - encodedMessage, - wormholeFinality() -); - ``` + `nonce` ++"uint64"++ + + Unique nonce reserved by message (indexed). - View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/evm/src/01_hello_world){target=\_blank} repository on GitHub. + --- -=== "Solana" + `burnToken` ++"address"++ + + Address of token burnt on source domain. - The `wormhole_anchor_sdk::wormhole` module and the Wormhole program account can be used to pass a message directly to the Core Contract via the `wormhole::post_message` function: + --- - ```rs - pub fn post_message<'info>( - ctx: CpiContext<'_, '_, '_, 'info, PostMessage<'info>>, - batch_id: u32, - payload: Vec, - finality: Finality - ) -> Result<()> - ``` + `amount` ++"uint256"++ + + The deposit amount. - ??? interface "Parameters" + --- - `ctx` ++"CpiContext<'_, '_, '_, 'info, PostMessage<'info>>"++ - - Provides the necessary context for executing the function, including the accounts and program information required for the Cross-Program Invocation (CPI). + `depositor` ++"address"++ + + Address where deposit is transferred from. - ??? child "Type `pub struct CpiContext<'a, 'b, 'c, 'info, T>`" + --- - ```rs - pub struct CpiContext<'a, 'b, 'c, 'info, T> - where - T: ToAccountMetas + ToAccountInfos<'info>, - { - pub accounts: T, - pub remaining_accounts: Vec>, - pub program: AccountInfo<'info>, - pub signer_seeds: &'a [&'b [&'c [u8]]], - } - ``` + `mintRecipient` ++"bytes32"++ + + Address receiving minted tokens on destination domain. - For more information, please refer to the [`wormhole_anchor_sdk` Rust docs](https://docs.rs/anchor-lang/0.29.0/anchor_lang/context/struct.CpiContext.html){target=\_blank}. + --- - ??? child "Type `PostMessage<'info>`" + `destinationDomain` ++"uint32"++ - + + Destination domain. - ```rs - pub struct PostMessage<'info> { - pub config: AccountInfo<'info>, - pub message: AccountInfo<'info>, - pub emitter: AccountInfo<'info>, - pub sequence: AccountInfo<'info>, - pub payer: AccountInfo<'info>, - pub fee_collector: AccountInfo<'info>, - pub clock: AccountInfo<'info>, - pub rent: AccountInfo<'info>, - pub system_program: AccountInfo<'info>, - } - ``` + --- - For more information, please refer to the [`wormhole_anchor_sdk` Rust docs](https://docs.rs/wormhole-anchor-sdk/latest/wormhole_anchor_sdk/wormhole/instructions/struct.PostMessage.html){target=\_blank}. + `destinationTokenMessenger` ++"bytes32"++ + + Address of `TokenMessenger` on destination domain. + + --- - --- + `destinationCaller` ++"bytes32"++ + + Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. - `batch_id` ++"u32"++ +- **`handleReceiveMessage`** - handles an incoming message received by the local `MessageTransmitter` and takes the appropriate action. For a burn message, it mints the associated token to the requested recipient on the local domain. + + ???+ note + + Though this function can only be called by the local `MessageTransmitter`, it is included here as it emits the essential event for minting tokens and withdrawing to send to the recipient. + + ??? interface "Parameters" + + `remoteDomain` ++"uint32"++ - An identifier for the message batch. + The domain where the message originated. --- - `payload` ++"Vec"++ + `sender` ++"bytes32"++ - The data being sent in the message. This is a variable-length byte array that contains the actual content or information being transmitted. To learn about the different types of payloads, check out the [VAAs](/docs/learn/infrastructure/vaas#payload-types){target=\_blank} page. + The address of the sender of the message. --- - `finality` ++"Finality"++ - - Specifies the level of finality or confirmation required for the message. + `messageBody` ++"bytes"++ - ??? child "Type `Finality`" + The bytes making up the body of the message. - ```rs - pub enum Finality { - Confirmed, - Finalized, - } - ``` - ??? interface "Returns" - ++"Result<()>"++ + `success` ++"boolean"++ - The result of the function’s execution. If the function completes successfully, it returns `Ok(())`, otherwise it returns `Err(E)`, indicating that an error occurred along with the details about the error - - ??? interface "Example" + Returns `true` if successful, otherwise, it returns `false`. - ```rust - let fee = ctx.accounts.wormhole_bridge.fee(); -// ... Check fee and send parameters + ??? interface "Emits" -let config = &ctx.accounts.config; -let payload: Vec = HelloWorldMessage::Hello { message }.try_to_vec()?; + `MintAndWithdraw` - event emitted when tokens are minted -// Invoke `wormhole::post_message`. -wormhole::post_message( - CpiContext::new_with_signer( - ctx.accounts.wormhole_program.to_account_info(), - wormhole::PostMessage { - // ... Set fields - }, - &[ - // ... Set seeds - ], - ), - config.batch_id, - payload, - config.finality.into(), -)?; - ``` - - View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/solana/programs/01_hello_world){target=\_blank} repository on GitHub. - -Once the message is emitted from the Core Contract, the [Guardian Network](/docs/learn/infrastructure/guardians/){target=\_blank} will observe the message and sign the digest of an Attestation [VAA](/docs/learn/infrastructure/vaas/){target=\_blank}. On EVM chains, the body of the VAA is hashed twice with keccak256 to produce the signed digest message. On Solana, the [Solana secp256k1 program](https://docs.solana.com/developing/runtime-facilities/programs#secp256k1-program){target=\_blank} will hash the message passed. In this case, the argument for the message should be a single hash of the body, not the twice-hashed body. - -VAAs are [multicast](/docs/learn/infrastructure/core-contracts/#multicast){target=\_blank} by default. This means there is no default target chain for a given message. The application developer decides on the format of the message and its treatment upon receipt. - -### Receiving Messages + ??? child "Event arguments" -The way a message is received and handled depends on the environment. + `localMinter` ++"address"++ + + Minter responsible for minting and burning tokens on the local domain. -=== "EVM" + --- - On EVM chains, the message passed is the raw VAA encoded as binary. The `IWormhole.sol` interface provides the `parseAndVerifyVM` function, which can be used to parse and verify the received message. + `remoteDomain` ++"uint32"++ + + The domain where the message originated from. - ```solidity - function parseAndVerifyVM( - bytes calldata encodedVM -) external view returns (VM memory vm, bool valid, string memory reason); - ``` + --- - ??? interface "Parameters" + `burnToken` ++"address"++ + + Address of contract to burn deposited tokens, on local domain. - `encodedVM` ++"bytes calldata"++ - - The encoded message as a Verified Action Approval (VAA), which contains all necessary information for verification and processing. + --- - ??? interface "Returns" + `mintRecipient` ++"address"++ + + Recipient address of minted tokens (indexed). - `vm` ++"VM memory"++ - - The valid parsed VAA, which will include the original `emitterAddress`, `sequenceNumber`, and `consistencyLevel`, among other fields outlined on the [VAAs](/docs/learn/infrastructure/vaas/) page. + --- - ??? child "Struct `VM`" + `amount` ++"uint256"++ + + Amount of minted tokens. - ```solidity - struct VM { - uint8 version; - uint32 timestamp; - uint32 nonce; - uint16 emitterChainId; - bytes32 emitterAddress; - uint64 sequence; - uint8 consistencyLevel; - bytes payload; - uint32 guardianSetIndex; - Signature[] signatures; - bytes32 hash; - } - ``` +### Message Transmitter Contract - For more information, refer to the [`IWormhole.sol` interface](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/interfaces/IWormhole.sol){target=\_blank}. +The Message Transmitter contract ensures secure messaging across blockchain domains by managing message dispatch and tracking communication with events like `MessageSent` and `MessageReceived`. It uses a unique nonce for each message, which ensures proper validation, verifies attestation signatures, and prevents replay attacks. - --- - - `valid` ++"bool"++ - - A boolean indicating whether the VAA is valid or not. - - --- +The contract supports flexible delivery options, allowing messages to be sent to a specific `destinationCaller` or broadcast more generally. It also includes domain-specific configurations to manage communication between chains. - `reason` ++"string"++ - - If the VAA is not valid, a reason will be provided +Additional features include replacing previously sent messages, setting maximum message body sizes, and verifying that messages are received only once per nonce to maintain network integrity. - ??? interface "Example" +??? code "Message Transmitter contract" + ```solidity + /* + * Copyright (c) 2022, Circle Internet Financial Limited. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +pragma solidity 0.7.6; - ```solidity - function receiveMessage(bytes memory encodedMessage) public { - // Call the Wormhole core contract to parse and verify the encodedMessage - ( - IWormhole.VM memory wormholeMessage, - bool valid, - string memory reason - ) = wormhole().parseAndVerifyVM(encodedMessage); +import "@memview-sol/contracts/TypedMemView.sol"; +import "./interfaces/IMessageTransmitter.sol"; +import "./interfaces/IMessageHandler.sol"; +import "./messages/Message.sol"; +import "./roles/Pausable.sol"; +import "./roles/Rescuable.sol"; +import "./roles/Attestable.sol"; - // Perform safety checks here +/** + * @title MessageTransmitter + * @notice Contract responsible for sending and receiving messages across chains. + */ +contract MessageTransmitter is + IMessageTransmitter, + Pausable, + Rescuable, + Attestable +{ + // ============ Events ============ + /** + * @notice Emitted when a new message is dispatched + * @param message Raw bytes of message + */ + event MessageSent(bytes message); - // Decode the message payload into the HelloWorldMessage struct - HelloWorldMessage memory parsedMessage = decodeMessage( - wormholeMessage.payload + /** + * @notice Emitted when a new message is received + * @param caller Caller (msg.sender) on destination domain + * @param sourceDomain The source domain this message originated from + * @param nonce The nonce unique to this message + * @param sender The sender of this message + * @param messageBody message body bytes + */ + event MessageReceived( + address indexed caller, + uint32 sourceDomain, + uint64 indexed nonce, + bytes32 sender, + bytes messageBody ); - // Your custom application logic here -} - ``` - - View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/evm/src/01_hello_world){target=\_blank} repository on GitHub. + /** + * @notice Emitted when max message body size is updated + * @param newMaxMessageBodySize new maximum message body size, in bytes + */ + event MaxMessageBodySizeUpdated(uint256 newMaxMessageBodySize); -=== "Solana" + // ============ Libraries ============ + using TypedMemView for bytes; + using TypedMemView for bytes29; + using Message for bytes29; - On Solana, the VAA is first posted and verified by the Core Contract, after which it can be read by the receiving contract and action taken. + // ============ State Variables ============ + // Domain of chain on which the contract is deployed + uint32 public immutable localDomain; - Retrieve the raw message data: + // Message Format version + uint32 public immutable version; - ```rs - let posted_message = &ctx.accounts.posted; - posted_message.data() - ``` + // Maximum size of message body, in bytes. + // This value is set by owner. + uint256 public maxMessageBodySize; - ??? interface "Example" + // Next available nonce from this source domain + uint64 public nextAvailableNonce; - ```rust - pub fn receive_message(ctx: Context, vaa_hash: [u8; 32]) -> Result<()> { - let posted_message = &ctx.accounts.posted; + // Maps a bytes32 hash of (sourceDomain, nonce) -> uint256 (0 if unused, 1 if used) + mapping(bytes32 => uint256) public usedNonces; - if let HelloWorldMessage::Hello { message } = posted_message.data() { - // Check message - // Your custom application logic here - Ok(()) - } else { - Err(HelloWorldError::InvalidMessage.into()) + // ============ Constructor ============ + constructor( + uint32 _localDomain, + address _attester, + uint32 _maxMessageBodySize, + uint32 _version + ) Attestable(_attester) { + localDomain = _localDomain; + maxMessageBodySize = _maxMessageBodySize; + version = _version; } -} - ``` - View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/solana/programs/01_hello_world){target=\_blank} repository on GitHub. - -#### Validating the Emitter - -When processing cross-chain messages, it's critical to ensure that the message originates from a trusted sender (emitter). This can be done by verifying the emitter address and chain ID in the parsed VAA. - -Typically, contracts should provide a method to register trusted emitters and check incoming messages against this list before processing them. For example, the following check ensures that the emitter is registered and authorized: - -```solidity -require(isRegisteredSender(emitterChainId, emitterAddress), "Invalid emitter"); -``` - -This check can be applied after the VAA is parsed, ensuring only authorized senders can interact with the receiving contract. Trusted emitters can be registered using a method like `setRegisteredSender` during contract deployment or initialization. + // ============ External Functions ============ + /** + * @notice Send the message to the destination domain and recipient + * @dev Increment nonce, format the message, and emit `MessageSent` event with message information. + * @param destinationDomain Domain of destination chain + * @param recipient Address of message recipient on destination chain as bytes32 + * @param messageBody Raw bytes content of message + * @return nonce reserved by message + */ + function sendMessage( + uint32 destinationDomain, + bytes32 recipient, + bytes calldata messageBody + ) external override whenNotPaused returns (uint64) { + bytes32 _emptyDestinationCaller = bytes32(0); + uint64 _nonce = _reserveAndIncrementNonce(); + bytes32 _messageSender = Message.addressToBytes32(msg.sender); -```typescript -const tx = await receiverContract.setRegisteredSender( - sourceChain.chainId, - ethers.zeroPadValue(senderAddress as BytesLike, 32) -); + _sendMessage( + destinationDomain, + recipient, + _emptyDestinationCaller, + _messageSender, + _nonce, + messageBody + ); -await tx.wait(); -``` + return _nonce; + } -#### Additional Checks - -In addition to environment-specific checks that should be performed, a contract should take care to check other [fields in the body](/docs/learn/infrastructure/vaas/){target=\_blank}, including: + /** + * @notice Replace a message with a new message body and/or destination caller. + * @dev The `originalAttestation` must be a valid attestation of `originalMessage`. + * Reverts if msg.sender does not match sender of original message, or if the source domain of the original message + * does not match this MessageTransmitter's local domain. + * @param originalMessage original message to replace + * @param originalAttestation attestation of `originalMessage` + * @param newMessageBody new message body of replaced message + * @param newDestinationCaller the new destination caller, which may be the + * same as the original destination caller, a new destination caller, or an empty + * destination caller (bytes32(0), indicating that any destination caller is valid.) + */ + function replaceMessage( + bytes calldata originalMessage, + bytes calldata originalAttestation, + bytes calldata newMessageBody, + bytes32 newDestinationCaller + ) external override whenNotPaused { + // Validate each signature in the attestation + _verifyAttestationSignatures(originalMessage, originalAttestation); -- **Sequence** - is this the expected sequence number? How should out-of-order deliveries be handled? -- **Consistency level** - for the chain this message came from, is the [consistency level](/docs/build/reference/consistency-levels/){target=\_blank} enough to guarantee the transaction won't be reverted after taking some action? + bytes29 _originalMsg = originalMessage.ref(0); -The VAA digest is separate from the VAA body but is also relevant. It can be used for replay protection by checking if the digest has already been seen. Since the payload itself is application-specific, there may be other elements to check to ensure safety. + // Validate message format + _originalMsg._validateMessageFormat(); -## Source Code References + // Validate message sender + bytes32 _sender = _originalMsg._sender(); + require( + msg.sender == Message.bytes32ToAddress(_sender), + "Sender not permitted to use nonce" + ); -For a deeper understanding of the Core Contract implementation for a specific blockchain environment and to review the actual source code, please refer to the following links: + // Validate source domain + uint32 _sourceDomain = _originalMsg._sourceDomain(); + require( + _sourceDomain == localDomain, + "Message not originally sent from this domain" + ); -- [Algorand Core Contract source code](https://github.com/wormhole-foundation/wormhole/blob/main/algorand/wormhole_core.py){target=\_blank} -- [Aptos Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/aptos/wormhole){target=\_blank} -- [EVM Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/ethereum/contracts){target=\_blank} ([`IWormhole.sol` interface](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/interfaces/IWormhole.sol){target=\_blank}) -- [NEAR Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/near/contracts/wormhole){target=\_blank} -- [Solana Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/solana/bridge/program){target=\_blank} -- [Sui Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/sui/wormhole){target=\_blank} -- [Terra Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/terra/contracts/wormhole){target=\_blank} ---- END CONTENT --- + uint32 _destinationDomain = _originalMsg._destinationDomain(); + bytes32 _recipient = _originalMsg._recipient(); + uint64 _nonce = _originalMsg._nonce(); -Doc-Content: https://wormhole.com/docs/build/contract-integrations/dev-env ---- BEGIN CONTENT --- ---- -title: Local Dev Environment -description: Learn how to configure a development environment to build with Wormhole, including using the CLI, local validators, testing on public test networks, and more. ---- + _sendMessage( + _destinationDomain, + _recipient, + newDestinationCaller, + _sender, + _nonce, + newMessageBody + ); + } -# Development Environment + /** + * @notice Send the message to the destination domain and recipient, for a specified `destinationCaller` on the + * destination domain. + * @dev Increment nonce, format the message, and emit `MessageSent` event with message information. + * WARNING: if the `destinationCaller` does not represent a valid address, then it will not be possible + * to broadcast the message on the destination domain. This is an advanced feature, and the standard + * sendMessage() should be preferred for use cases where a specific destination caller is not required. + * @param destinationDomain Domain of destination chain + * @param recipient Address of message recipient on destination domain as bytes32 + * @param destinationCaller caller on the destination domain, as bytes32 + * @param messageBody Raw bytes content of message + * @return nonce reserved by message + */ + function sendMessageWithCaller( + uint32 destinationDomain, + bytes32 recipient, + bytes32 destinationCaller, + bytes calldata messageBody + ) external override whenNotPaused returns (uint64) { + require( + destinationCaller != bytes32(0), + "Destination caller must be nonzero" + ); -Developers building for smart contract integration will want to set up a development environment to allow testing the full integration, possibly including VAA generation and relaying. + uint64 _nonce = _reserveAndIncrementNonce(); + bytes32 _messageSender = Message.addressToBytes32(msg.sender); -## Tooling Installation + _sendMessage( + destinationDomain, + recipient, + destinationCaller, + _messageSender, + _nonce, + messageBody + ); -The [Wormhole CLI Tool](/docs/build/toolkit/cli/){target=\_blank} should be installed regardless of the environments chosen. Each environment has its own set of recommended tools. To begin working with a specific environment, see the recommended tools on the respective [environment page](/docs/build/start-building/supported-networks/){target=\_blank}. + return _nonce; + } -## Development Stages + /** + * @notice Receive a message. Messages with a given nonce + * can only be broadcast once for a (sourceDomain, destinationDomain) + * pair. The message body of a valid message is passed to the + * specified recipient for further processing. + * + * @dev Attestation format: + * A valid attestation is the concatenated 65-byte signature(s) of exactly + * `thresholdSignature` signatures, in increasing order of attester address. + * ***If the attester addresses recovered from signatures are not in + * increasing order, signature verification will fail.*** + * If incorrect number of signatures or duplicate signatures are supplied, + * signature verification will fail. + * + * Message format: + * Field Bytes Type Index + * version 4 uint32 0 + * sourceDomain 4 uint32 4 + * destinationDomain 4 uint32 8 + * nonce 8 uint64 12 + * sender 32 bytes32 20 + * recipient 32 bytes32 52 + * messageBody dynamic bytes 84 + * @param message Message bytes + * @param attestation Concatenated 65-byte signature(s) of `message`, in increasing order + * of the attester address recovered from signatures. + * @return success bool, true if successful + */ + function receiveMessage(bytes calldata message, bytes calldata attestation) + external + override + whenNotPaused + returns (bool success) + { + // Validate each signature in the attestation + _verifyAttestationSignatures(message, attestation); -Different approaches to development and testing are recommended at various stages of application development. + bytes29 _msg = message.ref(0); -### Initial Development + // Validate message format + _msg._validateMessageFormat(); -During the initial development of an on-chain application, the best option is to use the native tools available in the environment. You can visit the following resources for more information: + // Validate domain + require( + _msg._destinationDomain() == localDomain, + "Invalid destination domain" + ); -- **[Environment](https://github.com/wormhole-foundation/wormhole){target=\_blank}** - select the folder for the desired network to learn about the recommended native toolset -- **[Mock Guardian](https://github.com/wormhole-foundation/wormhole/blob/main/sdk/js/src/mock/wormhole.ts){target=\_blank}** - it's recommended to set up a mock Guardian or Emitter to provide signed VAAsFor any program methods that require some message be sent or received. -- **[Wormhole Scaffolding repository](https://github.com/wormhole-foundation/wormhole-scaffolding/blob/main/evm/ts-test/01_hello_world.ts){target=\_blank}** - example mock Guardian test + // Validate destination caller + if (_msg._destinationCaller() != bytes32(0)) { + require( + _msg._destinationCaller() == + Message.addressToBytes32(msg.sender), + "Invalid caller for message" + ); + } -Relying on native tools when possible allows for more rapid prototyping and iteration. + // Validate version + require(_msg._version() == version, "Invalid message version"); -### Integration + // Validate nonce is available + uint32 _sourceDomain = _msg._sourceDomain(); + uint64 _nonce = _msg._nonce(); + bytes32 _sourceAndNonce = _hashSourceAndNonce(_sourceDomain, _nonce); + require(usedNonces[_sourceAndNonce] == 0, "Nonce already used"); + // Mark nonce used + usedNonces[_sourceAndNonce] = 1; -For integration to Wormhole and with multiple chains, the simplest option is to use the chains' Testnets. In choosing which chains to use for integration testing, consider which chains in a given environment provide easy access to Testnet tokens and where block times are fast. Find links for Testnet faucets in the [blockchain details section](/docs/build/start-building/supported-networks/){target=\_blank}. A developer may prefer standing up a set of local validators instead of using the Testnet. For this option, [Tilt](/docs/build/toolkit/tilt/){target=\_blank} is available to run local instances of all the chains Wormhole supports. + // Handle receive message + bytes32 _sender = _msg._sender(); + bytes memory _messageBody = _msg._messageBody().clone(); + require( + IMessageHandler(Message.bytes32ToAddress(_msg._recipient())) + .handleReceiveMessage(_sourceDomain, _sender, _messageBody), + "handleReceiveMessage() failed" + ); -!!! note - Variation in host environments causes unique issues, and the computational intensity of multiple simultaneous local validators can make setting them up difficult or time-consuming. You may prefer Testnets for the simplest integration testing. + // Emit MessageReceived event + emit MessageReceived( + msg.sender, + _sourceDomain, + _nonce, + _sender, + _messageBody + ); + return true; + } -### Prepare for Deployment + /** + * @notice Sets the max message body size + * @dev This value should not be reduced without good reason, + * to avoid impacting users who rely on large messages. + * @param newMaxMessageBodySize new max message body size, in bytes + */ + function setMaxMessageBodySize(uint256 newMaxMessageBodySize) + external + onlyOwner + { + maxMessageBodySize = newMaxMessageBodySize; + emit MaxMessageBodySizeUpdated(maxMessageBodySize); + } -Once you've finished the application's initial development and performed integration testing, you should set up a CI test environment. The best option for that is likely to be [Tilt](/docs/build/toolkit/tilt/){target=\_blank} since it allows you to spin up any chains supported by Wormhole in a consistent environment. + // ============ Internal Utils ============ + /** + * @notice Send the message to the destination domain and recipient. If `_destinationCaller` is not equal to bytes32(0), + * the message can only be received on the destination chain when called by `_destinationCaller`. + * @dev Format the message and emit `MessageSent` event with message information. + * @param _destinationDomain Domain of destination chain + * @param _recipient Address of message recipient on destination domain as bytes32 + * @param _destinationCaller caller on the destination domain, as bytes32 + * @param _sender message sender, as bytes32 + * @param _nonce nonce reserved for message + * @param _messageBody Raw bytes content of message + */ + function _sendMessage( + uint32 _destinationDomain, + bytes32 _recipient, + bytes32 _destinationCaller, + bytes32 _sender, + uint64 _nonce, + bytes calldata _messageBody + ) internal { + // Validate message body length + require( + _messageBody.length <= maxMessageBodySize, + "Message body exceeds max size" + ); -## Validator Setup with Tilt + require(_recipient != bytes32(0), "Recipient must be nonzero"); -### Tilt -If you'd like to set up a local validator environment, follow the setup guide for Tilt. Tilt is a full-fledged Kubernetes deployment of every chain connected to Wormhole, along with a Guardian node. It usually takes 30 minutes to spin up fully, but it comes with all chains running out of the box. Refer to the [Tilt](/docs/build/toolkit/tilt/){target=\_blank} page for a complete guide to setting up and configuring Tilt. + // serialize message + bytes memory _message = Message._formatMessage( + version, + localDomain, + _destinationDomain, + _nonce, + _sender, + _recipient, + _destinationCaller, + _messageBody + ); -## Deploying to Public Networks + // Emit MessageSent event + emit MessageSent(_message); + } -### Testnet - -When doing integration testing on Testnets, remember that a single Guardian node is watching for transactions on various test networks. Because Testnets only have a single Guardian, there's a slight chance that your VAAs won't be processed. This rate doesn't indicate performance on Mainnet, where 19 Guardians are watching for transactions. The Testnet contract addresses are available on the page for each [environment](/docs/build/start-building/supported-networks/){target=\_blank}. The [Wormholescan API](https://docs.wormholescan.io){target=\_blank} offers the following Guardian equivalent Testnet endpoint: - -```text -https://api.testnet.wormholescan.io -``` + /** + * @notice hashes `_source` and `_nonce`. + * @param _source Domain of chain where the transfer originated + * @param _nonce The unique identifier for the message from source to + destination + * @return hash of source and nonce + */ + function _hashSourceAndNonce(uint32 _source, uint64 _nonce) + internal + pure + returns (bytes32) + { + return keccak256(abi.encodePacked(_source, _nonce)); + } -### Mainnet + /** + * Reserve and increment next available nonce + * @return nonce reserved + */ + function _reserveAndIncrementNonce() internal returns (uint64) { + uint64 _nonceReserved = nextAvailableNonce; + nextAvailableNonce = nextAvailableNonce + 1; + return _nonceReserved; + } +} + ``` -The Mainnet contract addresses are available on the page for each [environment](/docs/build/start-building/supported-networks/){target=\_blank}. The [Wormholescan API](https://docs.wormholescan.io){target=\_blank} offers the following Guardian equivalent Mainnet endpoint: + This contract and the interfaces, contracts, and libraries it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/MessageTransmitter.sol){target=\_blank} on GitHub. -```text -https://api.wormholescan.io -``` ---- END CONTENT --- +The functions provided by the Message Transmitter contract are as follows: -Doc-Content: https://wormhole.com/docs/build/contract-integrations/faqs ---- BEGIN CONTENT --- ---- -title: Contract Integrations FAQs -description: Frequently asked questions about integrating contracts with Wormhole, including ownership of wrapped tokens and developing custom relayers. ---- +- **`receiveMessage`** — processes and validates an incoming message and its attestation. If valid, it triggers further action based on the message body -# Contract Integrations FAQs + ??? interface "Parameters" -## Can ownership of wrapped tokens be transferred from the Token Bridge? + `message` ++"bytes"++ + + The message to be processed, including details such as sender, recipient, and message body. -No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/messaging/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. + --- - - **On EVM chains** - when you attest a token, the Token Bridge deploys a new ERC-20 contract as a beacon proxy. The upgrade authority for these contracts is the Token Bridge contract itself - - **On Solana** - the Token Bridge deploys a new SPL token, where the upgrade authority is a Program Derived Address (PDA) controlled by the Token Bridge + `attestation` ++"bytes"++ + + Concatenated 65-byte signature(s) that attest to the validity of the `message`. -The logic behind deploying these token contracts involves submitting an attestation VAA, which allows the Token Bridge to verify and deploy the wrapped token contract on the destination chain. + ??? interface "Returns" -Relevant contracts: + `success` ++"boolean"++ + + Returns `true` if successful, otherwise, returns `false`. - - [Ethereum ERC-20](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/token/Token.sol){target=\_blank} - - [Solana SPL](https://github.com/wormhole-foundation/wormhole/blob/main/solana/modules/token_bridge/program/src/api/create_wrapped.rs#L128-L145){target=\_blank} - - [Attestation VAA and Token Contract Deployment Logic](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol#L385-L431){target=\_blank} + ??? interface "Emits" -## How do I start developing a custom relayer? + `MessageReceived` - event emitted when a new message is received -Previously referred to as specialized relayers, custom relayers allow you to build and tailor relayers to fit your specific use case. To get started, refer to the following resources: + ??? child "Event arguments" - - [Custom Relayers documentation](/docs/learn/infrastructure/relayer/#custom-relayers){target=\_blank} - - [Relayer Engine](/docs/infrastructure/relayers/run-relayer/#get-started-with-the-relayer-engine){target=\_blank} - - [Run a Custom Relayer](/docs/infrastructure/relayers/run-relayer/){target=\_blank} + `caller` ++"address"++ + + Caller on destination domain. -These resources will guide you through building and deploying custom relayers tailored to your use case. + --- -## Is there a way to use NTT tokens with chains that don't currently support NTT? + `sourceDomain` ++"uint32"++ + + The source domain this message originated from. -Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/messaging/token-bridge/){target=\_blank}. For example: + --- -- **Wrapped token scenario** - a token, such as the W token, can be bridged to non-NTT networks using the Token Bridge. When the token is bridged to a chain like Sui, a wrapped version of the token is created (e.g., Wrapped W token) -- **Unwrapping requirement** - tokens bridged using the Token Bridge cannot be directly transferred to NTT-supported chains. To transfer them, they must first be unwrapped on the non-NTT chain and then transferred via the appropriate mechanism -- **Messaging consistency** - the Token Bridge exclusively uses Wormhole messaging, ensuring consistent communication across all chains, whether or not they support NTT + `nonce` ++"uint64"++ + + Nonce unique to this message (indexed). -This approach ensures interoperability while maintaining the integrity of the token's cross-chain movement. + --- -## How do I update the metadata of a wrapped token? + `sender` ++"bytes32"++ + + Sender of this message. -Because wrapped tokens are deployed and controlled by the Token Bridge program, which is under the authority of the Wormhole Guardians, there is no direct way for you to update their metadata. Instead, you must coordinate with the respective block explorer teams to request and apply metadata changes. + --- -## How do I calculate the current gas costs for Ethereum Mainnet VAA verification? + `messageBody` ++"bytes"++ + + The body of the message. -You can refer to the [core-bridge repository](https://github.com/nonergodic/core-bridge){target=\_blank} for guidance on how to calculate the current gas costs associated with verifying VAAs on Ethereum Mainnet. This repository provides up-to-date references and examples to help you gauge costs accurately. +- **`sendMessage`** — sends a message to the destination domain and recipient. It increments the `nonce`, assigns a unique `nonce` to the message, and emits a `MessageSent` event -## How can I update my wrapped token image on Solscan? + ??? interface "Parameters" -Updating the metadata (such as the token image, name, or symbol) of a wrapped token on Solscan requires contacting the Solscan team directly. Wormhole cannot make these updates for you because the wrapped token contracts are owned and controlled by the Token Bridge, not individual developers or projects. + `destinationDomain` ++"uint32"++ + + The target blockchain network where the message is to be sent. -To request an update, contact Solscan via [support@solscan.io](mailto:support@solscan.io) or their [contact form](https://solscan.io/contactus){target=\_blank}. ---- END CONTENT --- + --- -Doc-Content: https://wormhole.com/docs/build/contract-integrations/index ---- BEGIN CONTENT --- ---- -title: Smart Contract Integrations -description: This section takes you from setting up your developer environment and configuring token transfers to deploying your custom multichain protocol. ---- + `recipient` ++"bytes32"++ + + The recipient's address on the destination domain. -# Build Contract Integrations + --- -## Get Started + `messageBody` ++"bytes"++ + + The raw bytes content of the message. -The content in this section will teach you how to create smart contracts that integrate with Wormhole's messaging protocols, enabling your applications to send and receive messages across multiple blockchains. Discover the tools and techniques to build seamless cross-chain functionality into your decentralized applications. + ??? interface "Returns" -
+ `nonce` ++"uint64"++ + + Nonce unique to this message. -- :octicons-arrow-switch-16:{ .lg .middle } **Wormhole Relayer** + ??? interface "Emits" - --- + `MessageSent` - event emitted when a new message is dispatched - Get familiar with the Wormhole relayer interfaces and learn the essential requirements for interacting with the relayer to send and receive cross-chain messages. +??? child "Event arguments" - [:custom-arrow: Get started with the Wormhole relayer](/docs/build/contract-integrations/wormhole-relayers/) + `message` ++"bytes"++ + + The raw bytes of the message. -- :octicons-file-code-16:{ .lg .middle } **Core Contracts** +- **`sendMessageWithCaller`** — sends a message to the destination domain and recipient, requiring a specific caller to trigger the message on the target chain. It increments the `nonce`, assigns a unique `nonce` to the message, and emits a `MessageSent` event - --- + ??? interface "Parameters" - Discover how to develop or adapt your contracts to interact directly with Wormhole's Core Contracts for sending and receiving cross-chain messages. + `destinationDomain` ++"uint32"++ + + The target blockchain network where the message is to be sent. - [:custom-arrow: Get started with Core Contracts](/docs/build/contract-integrations/core-contracts/) + --- -- :octicons-code-square-16:{ .lg .middle } **CCTP** + `recipient` ++"bytes32"++ + + The recipient's address on the destination domain. - --- + --- - Learn how to interact directly with Circle's CCTP Bridge contracts, including Token Messenger, Token Minter, and Message Transmitter. + `destinationCaller` ++"bytes32"++ + + The caller on the destination domain. - [:custom-arrow: Get started with CCTP](/docs/build/contract-integrations/cctp/) + --- -- :octicons-sync-16:{ .lg .middle } **Native Token Transfers** + `messageBody` ++"bytes"++ + + The raw bytes content of the message. - --- + ??? interface "Returns" - Find guidance on how to get started with the Native Token Transfers (NTT) framework, including deploying and configuring NTT contracts. + `nonce` ++"uint64"++ + + Nonce unique to this message. - [:custom-arrow: Get started with NTT](/docs/build/contract-integrations/native-token-transfers/) + ??? interface "Emits" -- :octicons-people-16:{ .lg .middle } **MultiGov** + `MessageSent` - event emitted when a new message is dispatched - --- +??? child "Event arguments" - Discover how to start your MultiGov integration, from deploying and configuring essential contracts to managing your setup, including contract upgrades. + `message` ++"bytes"++ + + The raw bytes of the message. - [:custom-arrow: Get started with MultiGov](/docs/build/contract-integrations/multigov/) +- **`replaceMessage`** — replaces an original message with a new message body and/or updates the destination caller. The replacement message reuses the `_nonce` created by the original message -- :octicons-terminal-16:{ .lg .middle } **Development Environment** + ??? interface "Parameters" - --- + `originalMessage` ++"bytes"++ + + The original message to be replaced. - Learn how to set up a development environment for comprehensive testing, including VAA generation and relaying, to ensure full integration functionality. + --- - [:custom-arrow: Set up a dev environment](/docs/build/contract-integrations/dev-env/) + `originalAttestation` ++"bytes"++ + + Attestation verifying the original message. -- :octicons-question-16:{ .lg .middle } **Contract Integrations FAQs** + --- - --- + `newMessageBody` ++"bytes"++ + + The new content for the replaced message. - Frequently asked questions about integrating contracts with Wormhole, including ownership of wrapped tokens and developing custom relayers. + --- - [:custom-arrow: Check out the FAQs](/docs/build/contract-integrations/faqs/) + `newDestinationCaller` ++"bytes32"++ + + The new destination caller, which may be the same as the original destination caller, a new destination caller, or an empty destination caller (`bytes32(0)`), indicating that any destination caller is valid. -
---- END CONTENT --- + ??? interface "Returns" -Doc-Content: https://wormhole.com/docs/build/contract-integrations/multigov/deployment ---- BEGIN CONTENT --- ---- -title: MultiGov Deployment -description: Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. ---- + None. -# Deployment + ??? interface "Emits" -This guide provodes instructions to set up and deploy the MultiGov governance system locally. Before diving into the technical deployment, ensure that MultiGov is the right fit for your project’s governance needs by following the steps for the [integration process](/docs/build/contract-integrations/multigov/){target=\_blank}. + `MessageSent` - event emitted when a new message is dispatched -Once your project is approved through the intake process and you’ve collaborated with the Tally team to tailor MultiGov to your requirements, use this guide to configure, compile, and deploy the necessary smart contracts across your desired blockchain networks. This deployment will enable decentralized governance across your hub and spoke chains. +??? child "Event arguments" -## Prerequisites + `message` ++"bytes"++ + + The raw bytes of the message. -To interact with MultiGov, you'll need the following: +### Token Minter Contract -- Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} -- Install [Git](https://git-scm.com/downloads){target=\_blank} -- Clone the repository: - ```bash - git clone [MultiGov Repository URL] - cd evm # for evm testing/deploying - ``` +The Token Minter contract manages the minting and burning of tokens across different blockchain domains. It maintains a registry that links local tokens to their corresponding remote tokens, ensuring that tokens maintain a 1:1 exchange rate across domains. -## Development Setup +The contract restricts minting and burning functions to a designated Token Messenger, which ensures secure and reliable cross-chain operations. When tokens are burned on a remote domain, an equivalent amount is minted on the local domain for a specified recipient, and vice versa. -For developers looking to set up a local MultiGov environment: +To enhance control and flexibility, the contract includes mechanisms to pause operations, set burn limits, and update the Token Controller, which governs token minting permissions. Additionally, it provides functionality to add or remove the local Token Messenger and retrieve the local token address associated with a remote token. -1. Install dependencies: - ```bash - forge install - ``` +??? code "Token Minter contract" + ```solidity + /* + * Copyright (c) 2022, Circle Internet Financial Limited. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +pragma solidity 0.7.6; -2. Set up environment variables: - ```bash - cp .env.example .env - ``` - Edit `.env` with your specific [configuration](/docs/build/contract-integrations/multigov/deployment/#configuration){target=\_blank} +import "./interfaces/ITokenMinter.sol"; +import "./interfaces/IMintBurnToken.sol"; +import "./roles/Pausable.sol"; +import "./roles/Rescuable.sol"; +import "./roles/TokenController.sol"; +import "./TokenMessenger.sol"; -3. Compile contracts: - ```bash - forge build - ``` - -4. Deploy contracts (example for Sepolia testnet): +/** + * @title TokenMinter + * @notice Token Minter and Burner + * @dev Maintains registry of local mintable tokens and corresponding tokens on remote domains. + * This registry can be used by caller to determine which token on local domain to mint for a + * burned token on a remote domain, and vice versa. + * It is assumed that local and remote tokens are fungible at a constant 1:1 exchange rate. + */ +contract TokenMinter is ITokenMinter, TokenController, Pausable, Rescuable { + // ============ Events ============ + /** + * @notice Emitted when a local TokenMessenger is added + * @param localTokenMessenger address of local TokenMessenger + * @notice Emitted when a local TokenMessenger is added + */ + event LocalTokenMessengerAdded(address localTokenMessenger); - For hub chains: - ```bash - forge script script/DeployHubContractsSepolia.s.sol --rpc-url $SEPOLIA_RPC_URL --broadcast - ``` + /** + * @notice Emitted when a local TokenMessenger is removed + * @param localTokenMessenger address of local TokenMessenger + * @notice Emitted when a local TokenMessenger is removed + */ + event LocalTokenMessengerRemoved(address localTokenMessenger); - For spoke chains (e.g., Optimism Sepolia): - ```bash - forge script script/DeploySpokeContractsOptimismSepolia.s.sol --rpc-url $OPTIMISM_SEPOLIA_RPC_URL --broadcast - ``` + // ============ State Variables ============ + // Local TokenMessenger with permission to call mint and burn on this TokenMinter + address public localTokenMessenger; -## Configuration + // ============ Modifiers ============ + /** + * @notice Only accept messages from the registered message transmitter on local domain + */ + modifier onlyLocalTokenMessenger() { + require(_isLocalTokenMessenger(), "Caller not local TokenMessenger"); + _; + } -When deploying MultiGov, several key parameters need to be set. Here are the most important configuration points: + // ============ Constructor ============ + /** + * @param _tokenController Token controller address + */ + constructor(address _tokenController) { + _setTokenController(_tokenController); + } -### Hub Governor Key Parameters + // ============ External Functions ============ + /** + * @notice Mints `amount` of local tokens corresponding to the + * given (`sourceDomain`, `burnToken`) pair, to `to` address. + * @dev reverts if the (`sourceDomain`, `burnToken`) pair does not + * map to a nonzero local token address. This mapping can be queried using + * getLocalToken(). + * @param sourceDomain Source domain where `burnToken` was burned. + * @param burnToken Burned token address as bytes32. + * @param to Address to receive minted tokens, corresponding to `burnToken`, + * on this domain. + * @param amount Amount of tokens to mint. Must be less than or equal + * to the minterAllowance of this TokenMinter for given `_mintToken`. + * @return mintToken token minted. + */ + function mint( + uint32 sourceDomain, + bytes32 burnToken, + address to, + uint256 amount + ) + external + override + whenNotPaused + onlyLocalTokenMessenger + returns (address mintToken) + { + address _mintToken = _getLocalToken(sourceDomain, burnToken); + require(_mintToken != address(0), "Mint token not supported"); + IMintBurnToken _token = IMintBurnToken(_mintToken); -- `initialVotingDelay` ++"uint256"++ - the delay measured in seconds before voting on a proposal begins. For example, `86400` is one day -- `initialProposalThreshold` ++"uint256"++ - the number of tokens needed to create a proposal -- `initialQuorum` ++"uint256"++ - the minimum number of votes needed for a proposal to be successful -- `initialVoteWeightWindow` ++"uint256"++ - a window where the minimum checkpointed voting weight is taken for a given address. The window ends at the vote start for a proposal and begins at the vote start minus the vote weight window. The voting window is measured in seconds, e.g., `86400` is one day + require(_token.mint(to, amount), "Mint operation failed"); + return _mintToken; + } - !!! note - This helps mitigate cross-chain double voting. + /** + * @notice Burn tokens owned by this TokenMinter. + * @param burnToken burnable token address. + * @param burnAmount amount of tokens to burn. Must be + * > 0, and <= maximum burn amount per message. + */ + function burn(address burnToken, uint256 burnAmount) + external + override + whenNotPaused + onlyLocalTokenMessenger + onlyWithinBurnLimit(burnToken, burnAmount) + { + IMintBurnToken _token = IMintBurnToken(burnToken); + _token.burn(burnAmount); + } -### Hub Proposal Extender Key Parameters + /** + * @notice Add TokenMessenger for the local domain. Only this TokenMessenger + * has permission to call mint() and burn() on this TokenMinter. + * @dev Reverts if a TokenMessenger is already set for the local domain. + * @param newLocalTokenMessenger The address of the new TokenMessenger on the local domain. + */ + function addLocalTokenMessenger(address newLocalTokenMessenger) + external + onlyOwner + { + require( + newLocalTokenMessenger != address(0), + "Invalid TokenMessenger address" + ); -- `extensionDuration` ++"uint256"++ - the amount of time, in seconds, for which target proposals will be extended. For example, `10800` is three hours -- `minimumExtensionDuration` ++"uint256"++ - lower time limit, in seconds, for extension duration. For example, `3600` is one hour + require( + localTokenMessenger == address(0), + "Local TokenMessenger already set" + ); -### Spoke Vote Aggregator Key Parameters + localTokenMessenger = newLocalTokenMessenger; -- `initialVoteWindow` ++"uint256"++ - the moving window in seconds for vote weight checkpoints. These checkpoints are taken whenever an address that is delegating sends or receives tokens. For example, `86400` is one day + emit LocalTokenMessengerAdded(localTokenMessenger); + } - !!! note - This is crucial for mitigating cross-chain double voting + /** + * @notice Remove the TokenMessenger for the local domain. + * @dev Reverts if the TokenMessenger of the local domain is not set. + */ + function removeLocalTokenMessenger() external onlyOwner { + address _localTokenMessengerBeforeRemoval = localTokenMessenger; + require( + _localTokenMessengerBeforeRemoval != address(0), + "No local TokenMessenger is set" + ); -### Hub Evm Spoke Vote Aggregator Key Parameters + delete localTokenMessenger; + emit LocalTokenMessengerRemoved(_localTokenMessengerBeforeRemoval); + } -- `maxQueryTimestampOffset` ++"uint256"++ - the max timestamp difference, in seconds, between the requested target time in the query and the current block time on the hub. For example, `1800` is 30 minutes + /** + * @notice Set tokenController to `newTokenController`, and + * emit `SetTokenController` event. + * @dev newTokenController must be nonzero. + * @param newTokenController address of new token controller + */ + function setTokenController(address newTokenController) + external + override + onlyOwner + { + _setTokenController(newTokenController); + } -### Updateable Governance Parameters + /** + * @notice Get the local token address associated with the given + * remote domain and token. + * @param remoteDomain Remote domain + * @param remoteToken Remote token + * @return local token address + */ + function getLocalToken(uint32 remoteDomain, bytes32 remoteToken) + external + view + override + returns (address) + { + return _getLocalToken(remoteDomain, remoteToken); + } -The following key parameters can be updated through governance proposals: + // ============ Internal Utils ============ + /** + * @notice Returns true if the message sender is the registered local TokenMessenger + * @return True if the message sender is the registered local TokenMessenger + */ + function _isLocalTokenMessenger() internal view returns (bool) { + return + address(localTokenMessenger) != address(0) && + msg.sender == address(localTokenMessenger); + } +} + ``` -- `votingDelay` - delay before voting starts (in seconds) -- `votingPeriod` - duration of the voting period (in seconds) -- `proposalThreshold` - threshold for creating proposals (in tokens) -- `quorum` - number of votes required for quorum -- `extensionDuration` - the amount of time for which target proposals will be extended (in seconds) -- `voteWeightWindow` - window for vote weight checkpoints (in seconds) -- `maxQueryTimestampOffset` - max timestamp difference allowed between a query's target time and the hub's block time + This contract and the interfaces and contracts it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/TokenMinter.sol){target=\_blank} on GitHub. -These parameters can be queried using their respective getter functions on the applicable contract. +Most of the methods of the Token Minter contract can be called only by the registered Token Messenger. However, there is one publicly accessible method, a public view function that allows anyone to query the local token associated with a remote domain and token. -To update these parameters, a governance proposal must be created, voted on, and executed through the standard MultiGov process. ---- END CONTENT --- +- **`getLocalToken`** — a read-only function that returns the local token address associated with a given remote domain and token -Doc-Content: https://wormhole.com/docs/build/contract-integrations/multigov/faq ---- BEGIN CONTENT --- ---- -title: MultiGov Technical FAQs -description: Find answers to common questions about MultiGov, covering cross-chain governance, technical setup, security, proposal creation, and more. ---- + ??? interface "Parameters" -# FAQs + `remoteDomain` ++"uint32"++ + + The remote blockchain domain where the token resides. -## Technical Questions + --- -### How does MultiGov ensure security in cross-chain communication? + `remoteToken` ++"bytes32"++ + + The address of the token on the remote domain. -MultiGov leverages Wormhole's robust cross-chain communication protocol. It implements several security measures: + ??? interface "Returns" -- Message origin verification to prevent unauthorized governance actions -- Timely and consistent data checks to ensure vote aggregation is based on recent and synchronized chain states -- Authorized participant validation to maintain the integrity of the governance process -- Replay attack prevention by tracking executed messages + ++"address"++ + + The local token address. -### Can MultiGov integrate with any blockchain? +## How to Interact with CCTP Contracts -MultiGov can potentially integrate with any blockchain supported by Wormhole. However, specific implementations may vary depending on the chain's compatibility with the Ethereum Virtual Machine (EVM) and its smart contract capabilities. [See the full list of supported networks](/docs/build/start-building/supported-networks/). The current implementation of MultiGov supports an EVM hub and both the EVM and SVM for spokes. +Before writing your own contracts, it's essential to understand the key functions and events of the Wormhole CCTP contracts. The primary functionality revolves around the following: -### How are votes aggregated across different chains? +- **Sending tokens with a message payload** - initiating a cross-chain transfer of Circle-supported assets along with a message payload to a specific target address on the target chain +- **Receiving tokens with a message payload** - validating messages received from other chains via Wormhole and then minting the tokens for the recipient -Votes are collected on each spoke chain using each chain's `SpokeVoteAggregator`. These votes are then transmitted to the HubVotePool on the hub chain for aggregation and tabulation. The `HubEvmSpokeVoteDecoder` standardizes votes from different EVM chains to ensure consistent processing. +### Sending Tokens and Messages -### Can governance upgrade from a single chain to MultiGov? +To initiate a cross-chain transfer, you must call the `transferTokensWithPayload` method of Wormhole's Circle Integration (CCTP) contract. Once you have initiated a transfer, you must fetch the attested Wormhole message and parse the transaction logs to locate a transfer message emitted by the Circle Bridge contract. Then, a request must be sent to Circle's off-chain process with the transfer message to grab the attestation from the process's response, which validates the token mint on the target chain. -Yes! MultiGov can support progressively upgrading from a single-chain governance to MultiGov. Moving to MultiGov requires upgrading the token to NTT and adding Flexible Voting to the original Governor. +To streamline this process, you can use the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk/tree/main){target=\_blank}, which exposes the [`WormholeRelayerSDK.sol` contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank}, including the [`CCTPSender` abstract contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/CCTPBase.sol){target=\_blank}. By inheriting this contract, you can transfer USDC while automatically relaying the message payload to the destination chain via a Wormhole-deployed relayer. -## Usage Questions +??? code "CCTP Sender contract" -### How can I create a proposal in MultiGov? + ```solidity + abstract contract CCTPSender is CCTPBase { + uint8 internal constant CONSISTENCY_LEVEL_FINALIZED = 15; -Proposals are created on the hub chain using the `HubEvmSpokeAggregateProposer` contract or by calling `propose` on the `HubGovernor`. You need to prepare the proposal details, including targets, values, and calldatas. The proposer's voting weight is aggregated across chains using Wormhole queries to determine eligibility. + using CCTPMessageLib for *; -### How do I vote on a proposal if I hold tokens on a spoke chain? + mapping(uint16 => uint32) public chainIdToCCTPDomain; -You can vote on proposals via the `SpokeVoteAggregator` contract on the respective spoke chain where you hold your tokens. The votes are then automatically forwarded to the hub chain for aggregation. - -### How are approved proposals executed across multiple chains? - -When a proposal is approved and the timelock period elapses, it's first executed on the hub chain. A proposal can include a cross-chain message by including a call to `dispatch` on the `HubMessageDispatcher`, which sends a message to the relevant spoke chains. On each spoke chain, the `SpokeMessageExecutor` receives, verifies, and automatically executes the instructions using the `SpokeAirlock` as the `msg.sender`. - -## Implementation Questions - -### What are the requirements for using MultiGov? - -To use MultiGov, your DAO must meet the following requirements: - -- **ERC20Votes token** - your DAO's token must implement the `ERC20Votes` standard and support `CLOCK_MODE` timestamps for compatibility with cross-chain governance -- **Flexible voting support** - your DAO's Governor must support Flexible Voting to function as the Hub Governor. If your existing Governor does not support Flexible Voting, you can upgrade it to enable this feature - -### What do I need to set up MultiGov for my project? - -Get started by filling out the form below: - -https://www.tally.xyz/get-started - -Tally will reach out to help get your DAO set up with MultiGov. + /** + * Sets the CCTP Domain corresponding to chain 'chain' to be 'cctpDomain' + * So that transfers of USDC to chain 'chain' use the target CCTP domain 'cctpDomain' + * + * This action can only be performed by 'cctpConfigurationOwner', who is set to be the deployer + * + * Currently, cctp domains are: + * Ethereum: Wormhole chain id 2, cctp domain 0 + * Avalanche: Wormhole chain id 6, cctp domain 1 + * Optimism: Wormhole chain id 24, cctp domain 2 + * Arbitrum: Wormhole chain id 23, cctp domain 3 + * Base: Wormhole chain id 30, cctp domain 6 + * + * These can be set via: + * setCCTPDomain(2, 0); + * setCCTPDomain(6, 1); + * setCCTPDomain(24, 2); + * setCCTPDomain(23, 3); + * setCCTPDomain(30, 6); + */ + function setCCTPDomain(uint16 chain, uint32 cctpDomain) public { + require( + msg.sender == cctpConfigurationOwner, + "Not allowed to set CCTP Domain" + ); + chainIdToCCTPDomain[chain] = cctpDomain; + } -To set up testing MultiGov for your DAO, you'll need: + function getCCTPDomain(uint16 chain) internal view returns (uint32) { + return chainIdToCCTPDomain[chain]; + } -- [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} and [Git](https://git-scm.com/downloads){target=\_blank} installed -- Test ETH on the testnets you plan to use (e.g., Sepolia for hub, Optimism Sepolia for spoke) -- Modify and deploy the hub and spoke contracts using the provided scripts -- Set up the necessary environment variables and configurations + /** + * transferUSDC wraps common boilerplate for sending tokens to another chain using IWormholeRelayer + * - approves the Circle TokenMessenger contract to spend 'amount' of USDC + * - calls Circle's 'depositForBurnWithCaller' + * - returns key for inclusion in WormholeRelayer `additionalVaas` argument + * + * Note: this requires that only the targetAddress can redeem transfers. + * + */ -### Can MultiGov be used with non-EVM chains? + function transferUSDC( + uint256 amount, + uint16 targetChain, + address targetAddress + ) internal returns (MessageKey memory) { + IERC20(USDC).approve(address(circleTokenMessenger), amount); + bytes32 targetAddressBytes32 = addressToBytes32CCTP(targetAddress); + uint64 nonce = circleTokenMessenger.depositForBurnWithCaller( + amount, + getCCTPDomain(targetChain), + targetAddressBytes32, + USDC, + targetAddressBytes32 + ); + return + MessageKey( + CCTPMessageLib.CCTP_KEY_TYPE, + abi.encodePacked(getCCTPDomain(wormhole.chainId()), nonce) + ); + } -The current implementation is designed for EVM-compatible chains. However, Solana (non-EVM) voting is currently in development and expected to go live after the EVM contracts. + // Publishes a CCTP transfer of 'amount' of USDC + // and requests a delivery of the transfer along with 'payload' to 'targetAddress' on 'targetChain' + // + // The second step is done by publishing a wormhole message representing a request + // to call 'receiveWormholeMessages' on the address 'targetAddress' on chain 'targetChain' + // with the payload 'abi.encode(amount, payload)' + // (and we encode the amount so it can be checked on the target chain) + function sendUSDCWithPayloadToEvm( + uint16 targetChain, + address targetAddress, + bytes memory payload, + uint256 receiverValue, + uint256 gasLimit, + uint256 amount + ) internal returns (uint64 sequence) { + MessageKey[] memory messageKeys = new MessageKey[](1); + messageKeys[0] = transferUSDC(amount, targetChain, targetAddress); -### How can I customize voting parameters in MultiGov? + bytes memory userPayload = abi.encode(amount, payload); + address defaultDeliveryProvider = wormholeRelayer + .getDefaultDeliveryProvider(); -Voting parameters such as voting delay, voting period, proposal threshold, and quorum (and others) can be customized in the deployment scripts (`DeployHubContractsSepolia.s.sol` and `DeploySpokeContractsOptimismSepolia.s.sol` as examples for their respective chains). Make sure to adjust these parameters according to your DAO's specific needs before deployment. + (uint256 cost, ) = wormholeRelayer.quoteEVMDeliveryPrice( + targetChain, + receiverValue, + gasLimit + ); -Remember to thoroughly test your MultiGov implementation on testnets before deploying to Mainnet, and have your contracts audited for additional security. + sequence = wormholeRelayer.sendToEvm{value: cost}( + targetChain, + targetAddress, + userPayload, + receiverValue, + 0, + gasLimit, + targetChain, + address(0x0), + defaultDeliveryProvider, + messageKeys, + CONSISTENCY_LEVEL_FINALIZED + ); + } -### How does MultiGov handle potential network issues or temporary chain unavailability? + function addressToBytes32CCTP(address addr) private pure returns (bytes32) { + return bytes32(uint256(uint160(addr))); + } +} + ``` -MultiGov includes several mechanisms to handle network issues or temporary chain unavailability: +The `CCTPSender` abstract contract exposes the `sendUSDCWithPayloadToEvm` function. This function publishes a CCTP transfer of the provided `amount` of USDC and requests that the transfer be delivered along with a `payload` to the specified `targetAddress` on the `targetChain`. -1. **Asynchronous vote aggregation** - votes are aggregated periodically, allowing the system to continue functioning even if one chain is temporarily unavailable -2. **Proposal extension** - the `HubGovernorProposalExtender` allows trusted actors to extend voting periods if needed, which can help mitigate issues caused by temporary network problems -3. **Wormhole retry mechanism** - Wormhole's infrastructure includes retry mechanisms for failed message deliveries, helping ensure cross-chain messages eventually get through -4. **Decentralized relayer network** - Wormhole's decentralized network of relayers helps maintain system availability even if some relayers are offline +```solidity +function sendUSDCWithPayloadToEvm( + uint16 targetChain, + address targetAddress, + bytes memory payload, + uint256 receiverValue, + uint256 gasLimit, + uint256 amount +) internal returns (uint64 sequence) +``` -However, prolonged outages on the hub chain or critical spoke chains could potentially disrupt governance activities. Projects should have contingency plans for such scenarios. ---- END CONTENT --- +??? interface "Parameters" -Doc-Content: https://wormhole.com/docs/build/contract-integrations/multigov/index ---- BEGIN CONTENT --- ---- -title: Getting Started with MultiGov -description: Learn how to get started with MultiGov, from evaluating cross-chain governance needs to deploying with help from the Tally team. ---- + `targetChain` ++"uint16"++ -# MultiGov + The target chain for the transfer. -## Begin the MultiGov Integration Process + --- -Take the following steps to get started with a MultiGov integration: + `targetAddress` ++"address"++ -1. Evaluate if [MultiGov](/docs/learn/governance/) meets your cross-chain governance needs -2. Fill out the intake form on the [Tally website](https://www.tally.xyz/get-started){target=\_blank} -3. The Tally team will review your application and contact you to discuss implementation details -4. Work with the Tally team to customize and deploy MultiGov for your specific use case + The target address for the transfer. -## Start Building + --- -
+ `payload` ++"bytes"++ -- :octicons-rocket-16:{ .lg .middle } **Deployment** + Arbitrary payload to be delivered to the target chain via Wormhole. --- - Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. - - [:custom-arrow: Discover how to deploy MultiGov](/docs/build/contract-integrations/multigov/deployment/) + `gasLimit` ++"uint256"++ -- :octicons-file-code-16:{ .lg .middle } **Upgrade Contracts** + The gas limit with which to call `targetAddress`. --- - Learn the process and key considerations for upgrading MultiGov contracts, ensuring system integrity and careful planning across cross-chain components. - - [:custom-arrow: Discover how to upgrade MultiGov](/docs/build/contract-integrations/multigov/upgrade/) + `amount` ++"uint256"++ -- :octicons-question-16:{ .lg .middle } **Technical FAQs** + The amount of USDC to transfer. --- - Find answers to common technical questions about MultiGov, covering technical setup, security, proposal creation, and more. +??? interface "Returns" - [:custom-arrow: Find the answer to your technical questions](/docs/build/contract-integrations/multigov/faq/) + `sequence` ++"uint64"++ -
+ Sequence number of the published VAA containing the delivery instructions. -## Additional Resources +When the `sendUSDCWithPayloadToEvm` function is called, the following series of actions are executed: -
+1. **USDC transfer initiation**: -- :octicons-book-16:{ .lg .middle } **What is MultiGov?** + - The Circle Token Messenger contract is approved to spend the specified amount of USDC. + - The `depositForBurnWithCaller` function of the Token Messenger contract is invoked + - A key is returned, which is to be provided to the Wormhole relayer for message delivery - --- +2. **Message encoding** - the message `payload` is encoded for transmission via the Wormhole relayer. The encoded value also includes the `amount` so that it can be checked on the target chain +3. **Retrieving delivery provider** - the current default delivery provider's address is retrieved +4. **Cost calculation** - the transfer cost is calculated using the Wormhole relayer's `quoteEVMDeliveryPrice` function +5. **Message dispatch**: - Need to familiarize yourself with MultiGov? Discover everything you need to know about MultiGov, Wormhole's cross-chain governance solution. + - The `sendToEvm` function of the Wormhole relayer is called with the encoded payload, the delivery provider's address, and the arguments passed to `sendUSDCWithPayloadToEvm` + - The function must be called with `msg.value` set to the previously calculated cost (from step 4) + - This function publishes an instruction for the delivery provider to relay the payload and VAAs specified by the key (from step 1) to the target address on the target chain - [:custom-arrow: Learn the basics](/docs/learn/governance/) +A simple example implementation is as follows: -- :octicons-checklist-16:{ .lg .middle } **Tutorials** +```solidity +function sendCrossChainDeposit( + uint16 targetChain, + address targetAddress, + address recipient, + uint256 amount, + uint256, + gasLimit +) public payable { + uint256 cost = quoteCrossChainDeposit(targetChain); + require( + msg.value == cost, + "msg.value must be quoteCrossChainDeposit(targetChain)" + ); - --- + IERC20(USDC).transferFrom(msg.sender, address(this), amount); - Access step-by-step tutorials for executing cross-chain governance actions, including treasury management proposals with MultiGov. + bytes memory payload = abi.encode(recipient); + sendUSDCWithPayloadToEvm( + targetChain, + targetAddress, // address (on targetChain) to send token and payload to + payload, + 0, // receiver value + gasLimit, + amount + ); +} +``` - [:custom-arrow: Learn by building](/docs/tutorials/multigov/) +The above example sends a specified amount of USDC and the recipient's address as a payload to a target contract on another chain, ensuring that the correct cost is provided for the cross-chain transfer. -
---- END CONTENT --- +### Receiving Tokens and Messages -Doc-Content: https://wormhole.com/docs/build/contract-integrations/multigov/upgrade ---- BEGIN CONTENT --- ---- -title: Upgrading MultiGov -description: Learn the process and key considerations for upgrading MultiGov, ensuring system integrity and careful planning across cross-chain components. ---- +To complete the cross-chain transfer, you must invoke the `redeemTokensWithPayload` function on the target Wormhole Circle Integration contract. This function verifies the message's authenticity, decodes the payload, confirms the recipient and sender, checks message delivery, and then calls the `receiveMessage` function of the [Message Transmitter](#message-transmitter-contract) contract. -# Upgrade MultiGov Contracts +Using the Wormhole-deployed relayer automatically triggers the `receiveWormholeMessages` function. This function is defined in the [`WormholeRelayerSDK.sol` contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank} from the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk/tree/main){target=\_blank} and is implemented within the [`CCTPReceiver` abstract contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/CCTPBase.sol){target=\_blank}. -MultiGov is designed to be flexible but stable. Upgrades should be rare and carefully considered due to the system's complexity and cross-chain nature. When upgrades are necessary, they must be meticulously planned and executed to ensure system integrity and continuity. +??? code "CCTP Receiver contract" -## Key Considerations for Upgrades - -- **`HubGovernor`**: - - Not upgradeable. A new deployment requires redeploying several components of the MultiGov system. Refer to the [Process for Major System Upgrade](/docs/build/contract-integrations/multigov/upgrade/#process-for-major-system-upgrade) section for more details - -- **`HubVotePool`**: - - Can be replaced by setting a new `HubVotePool` on the `HubGovernor` - - Requires re-registering all spokes on the new `HubVotePool` - - Must register the query type and implementation for vote decoding by calling `registerQueryType` on the new `HubVotePool` - - A new proposal would have to authorize the governor to use the newly created hub vote pool and will also handle registering the appropriate query decoders and registering the appropriate spoke `SpokeVoteAggregators` - -- **`SpokeMessageExecutor`**: - - Upgradeable via [UUPS](https://www.rareskills.io/post/uups-proxy){target=\_blank} proxy pattern - - Stores critical parameters in `SpokeMessageExecutorStorage` - -- **`HubEvmSpokeAggregateProposer`**: - - Needs redeployment if `HubGovernor` changes - - Requires re-registering all spokes after redeployment - -- **`HubProposalMetadata`**: - - Needs redeployment if `HubGovernor` changes, as it references `HubGovernor` as a parameter - -- **`SpokeMetadataCollector`**: - - Requires redeployment if the hub chain ID changes or if `HubProposalMetadata` changes - -## Process for Major System Upgrade - -1. **New `HubGovernor` deployment**: - - Deploy the new `HubGovernor` contract -1. **Component redeployment**: - - Redeploy `HubEvmSpokeAggregateProposer` with the new `HubGovernor` address - - Redeploy `HubProposalMetadata` referencing the new `HubGovernor` - - If hub chain ID changes, redeploy `SpokeMetadataCollector` on all spoke chains -1. **`HubVotePool` update**: - - Set the new `HubVotePool` on the new `HubGovernor` - - Register all spokes on the new `HubVotePool` - - Register the query type and implementation for vote decoding (`HubEvmSpokeVoteDecoder`) -1. **Spoke re-registration**: - - Re-register all spokes on the new `HubEvmSpokeAggregateProposer` -1. **Verification and testing**: - - Conduct thorough testing of the new system setup - - Verify all cross-chain interactions are functioning correctly -1. **System transition and deprecation**: - - Create a proposal to switch the timelock to the new governor - - Communicate clearly to the community what changes were made -1. **Monitoring**: - - Implement a transition period where the new system is closely monitored - - Address any issues that arise promptly - -## Important Considerations - -- Always prioritize system stability, upgrades should only be performed when absolutely necessary -- Thoroughly audit all new contract implementations before proposing an upgrade -- Account for all affected components across all chains in the upgrade plan -- Provide comprehensive documentation for the community about the upgrade process and any changes in functionality -- Always test upgrades extensively on testnets before implementing in production ---- END CONTENT --- + ```solidity + abstract contract CCTPReceiver is CCTPBase { + function redeemUSDC( + bytes memory cctpMessage + ) internal returns (uint256 amount) { + (bytes memory message, bytes memory signature) = abi.decode( + cctpMessage, + (bytes, bytes) + ); + uint256 beforeBalance = IERC20(USDC).balanceOf(address(this)); + circleMessageTransmitter.receiveMessage(message, signature); + return IERC20(USDC).balanceOf(address(this)) - beforeBalance; + } -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/cli-commands ---- BEGIN CONTENT --- ---- -title: NTT CLI Commands -description: A comprehensive guide to the Native Token Transfers (NTT) CLI, detailing commands for managing token transfers across chains within the Wormhole ecosystem. ---- + function receiveWormholeMessages( + bytes memory payload, + bytes[] memory additionalMessages, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 deliveryHash + ) external payable { + // Currently, 'sendUSDCWithPayloadToEVM' only sends one CCTP transfer + // That can be modified if the integrator desires to send multiple CCTP transfers + // in which case the following code would have to be modified to support + // redeeming these multiple transfers and checking that their 'amount's are accurate + require( + additionalMessages.length <= 1, + "CCTP: At most one Message is supported" + ); -# NTT CLI Commands + uint256 amountUSDCReceived; + if (additionalMessages.length == 1) + amountUSDCReceived = redeemUSDC(additionalMessages[0]); -## Introduction + (uint256 amount, bytes memory userPayload) = abi.decode( + payload, + (uint256, bytes) + ); -The NTT Command-Line Interface (CLI) is a powerful tool for managing native token transfers across multiple blockchain networks within the Wormhole ecosystem. This page provides a comprehensive list of available commands, their descriptions, and examples to help you interact with and configure the NTT system effectively. Whether initializing deployments, updating configurations, or working with specific chains, the NTT CLI simplifies these operations through its intuitive commands. + // Check that the correct amount was received + // It is important to verify that the 'USDC' sent in by the relayer is the same amount + // that the sender sent in on the source chain + require(amount == amountUSDCReceived, "Wrong amount received"); -## Table of Commands + receivePayloadAndUSDC( + userPayload, + amountUSDCReceived, + sourceAddress, + sourceChain, + deliveryHash + ); + } -The following table lists the available NTT CLI commands, descriptions, and examples. + // Implement this function to handle in-bound deliveries that include a CCTP transfer + function receivePayloadAndUSDC( + bytes memory payload, + uint256 amountUSDCReceived, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 deliveryHash + ) internal virtual {} +} + ``` -!!! note - To explore detailed information about any NTT CLI command, including its options and examples, you can append `--help` to the command. This will display a comprehensive guide for the specific command. +Although you do not need to interact with the `receiveWormholeMessages` function directly, it's important to understand what it does. This function processes cross-chain messages and USDC transfers via Wormhole's Circle (CCTP) Bridge. Here's a summary of what it does: -### General Commands +1. **Validate additional messages** - the function checks that there is at most one CCTP transfer message in the `additionalMessages` array, as it currently only supports processing a single CCTP transfer +2. **Redeem USDC**: + - If there is a CCTP message, it calls the `redeemUSDC` function of the `CCTPReceiver` contract to decode and redeem the USDC + - This results in the call of the `receiveMessage` function of Circle's Message Transmitter contract to redeem the USDC based on the provided message and signature + - The amount of USDC received is calculated by subtracting the contract's previous balance from the current balance after redeeming the USDC +3. **Decode payload** - the incoming payload is decoded, extracting both the expected amount of USDC and a `userPayload` (which could be any additional data) +4. **Verify the amount** - it ensures that the amount of USDC received matches the amount encoded in the payload. If the amounts don't match, the transaction is reverted +5. **Handle the payload and USDC** - after verifying the amounts, `receivePayloadAndUSDC` is called, which is meant to handle the actual logic for processing the received payload and USDC transfer -| Command | Description | Examples | -|-----------------------------------------|-------------------------------------------------------|--------------------------| -| `ntt update` | update the NTT CLI | `ntt update` | -| `ntt new ` | create a new NTT project | `ntt new my-ntt-project` | -| `ntt add-chain ` | add a chain to the deployment file | `ntt add-chain Ethereum --token 0x1234... --mode burning --latest`| -| `ntt upgrade ` | upgrade the contract on a specific chain | `ntt upgrade Solana --ver 1.1.0`| -| `ntt clone
` | initialize a deployment file from an existing contract| `ntt clone Mainnet Solana Sol5678...`| -| `ntt init ` | initialize a deployment file | `ntt init devnet` | -| `ntt pull` | pull the remote configuration | `ntt pull` | -| `ntt push` | push the local configuration | `ntt push` | -| `ntt status` | check the status of the deployment | `ntt status` | +You'll need to implement the `receivePayloadAndUSDC` function to transfer the USDC and handle the payload as your application needs. A simple example implementation is as follows: -### Configuration Commands +```solidity +function receivePayloadAndUSDC( + bytes memory payload, + uint256 amountUSDCReceived, + bytes32, // sourceAddress + uint16, // sourceChain + bytes32 // deliveryHash +) internal override onlyWormholeRelayer { + address recipient = abi.decode(payload, (address)); -| Command | Description | Examples | -|---------------------------------------------|----------------------------------------|-------------------------------------| -| `ntt config set-chain `| set a configuration value for a chain | `ntt config set-chain Ethereum scan_api_key`| -| `ntt config unset-chain ` | unset a configuration value for a chain| `ntt config unset-chain Ethereum scan_api_key`| -| `ntt config get-chain ` | get a configuration value for a chain | `ntt config get-chain Ethereum scan_api_key`| + IERC20(USDC).transfer(recipient, amountUSDCReceived); +} +``` -### Solana Commands +## Complete Example -| Command | Description | Examples | -|-----------------------------------------------|---------------------------------------------------------|------------------| -| `ntt solana key-base58 ` | print private key in base58 | `ntt solana key-base58 /path/to/keypair.json`| -| `ntt solana token-authority ` | print the token authority address for a given program ID| `ntt solana token-authority Sol1234...`| -| `ntt solana ata `| print the token authority address for a given program ID| `ntt solana ata Mint123... Owner123... token22`| +To view a complete example of creating a contract that integrates with Wormhole's CCTP contracts to send and receive USDC cross-chain, check out the [Hello USDC](https://github.com/wormhole-foundation/hello-usdc){target=\_blank} repository on GitHub. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/configuration/access-control +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration-v0 --- BEGIN CONTENT --- --- -title: Native Token Transfers Access Control -description: Learn about the owner and pauser access roles for the NTT manager contract, which can be used to pause and un-pause token transfers. +title: Configure Your Connect Widget: v0 +description: Configure Wormhole Connect v0 for React or HTML, set themes, define tokens, networks, and customize RPC endpoints for optimized blockchain interactions. --- -## Owner and Pauser Roles - -Pausing the Native Toke Transfer (NTT) Manager Contract will disallow initiating new token transfers. While the contract is paused, in-flight transfers can still be redeemed (subject to rate limits if configured). - -NTT can be paused on a particular chain by updating the `paused` parameter on the deployment to `true` via the NTT CLI, then performing `ntt push` to sync the local configuration with the on-chain deployment. +# Configure Your Connect Widget -- **Owner** - full control over NTT contracts, can perform administrative functions. Has the ability to un-pause contracts if they have been paused -- **Pauser** - can pause NTT contracts to halt token transfers temporarily. This role is crucial for responding quickly to adverse events without a prolonged governance process. Cannot un-pause contracts +## Introduction {: #introduction } -You may verify the current owner, pauser, and paused status of the NTT Manager contract on the `deployment.json` file in your NTT project directory. +Wormhole Connect is a flexible React widget that streamlines cross-chain asset transfers and enables seamless interoperability by leveraging Wormhole's powerful infrastructure. Designed for easy integration into decentralized applications (dApps), Wormhole Connect abstracts the complexities of cross-chain communication, providing a user-friendly experience for both developers and end users. -```json -{ - "network": "Testnet", - "chains": { - "Sepolia": { - "version": "1.1.0", - "mode": "burning", - "paused": true, // set to true to pause the contract - "owner": "0x0088DFAC40029f266e0FF62B82E47A07467A0345", - "manager": "0x5592809cf5352a882Ad5E9d435C6B7355B716357", - //... - "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" - } - } -} -``` +This guide provides detailed instructions on configuring Wormhole Connect and highlights the many ways it can be customized to fit your specific needs, from integrating supported blockchains and tokens to tailoring the user interface. !!! note - While the `Pauser` can pause contracts, the ability to un-pause contracts is callable only by the `Owner`. - -The `Owner` and the `Pauser` addresses can each pause the contract. Since the contract `Owner` address is typically a multisig or a more complex DAO governance contract, and pausing the contract only affects the availability of token transfers, protocols can choose to set the `Pauser` address to be a different address. Creating a separate `Pauser` helps protocols respond quickly to potential risks without going through a drawn-out process. - -Consider separating `Owner` and `Pauser` roles for your multichain deployment. `Owner` and `Pauser` roles are defined directly on the `NttManager` contract. ---- END CONTENT --- - -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/configuration/index ---- BEGIN CONTENT --- ---- -title: Native Token Transfers (NTT) - Configuration -description: This section contains information on configuring Native Token Transfers (NTT), including guidance on setting Owner and Pauser access control roles and management of rate-limiting. ---- - -# Configure Native Token Transfers (NTT) + For documentation on the latest version of Connect, please refer to the current [configuration documentation](/docs/build/transfers/connect/configuration/){target=\_blank}. If you are looking to upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/transfers/connect/upgrade/){target=\_blank} for detailed instructions. ## Get Started -This section contains information on configuring Native Token Transfers (NTT), including guidance on setting Owner and Pauser access control roles and management of rate-limiting. - -
- -- :octicons-clock-16:{ .lg .middle } **Rate Limiting** +Configure the Wormhole Connect React component by passing a `WormholeConnectConfig` object as the `config` attribute. If using the hosted version, provide `config` and `theme` as JSON-serialized strings on the mount point. - --- +=== "React" - Discover options for configuring rate limits and how queueing effects transaction flow. + ```ts + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + networks: ['ethereum', 'polygon', 'solana'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], + rpcs: { + ethereum: 'https://rpc.ankr.com/eth', + solana: 'https://rpc.ankr.com/solana', + } +} + + + ``` - [:custom-arrow: Explore rate limit options](/docs/build/contract-integrations/native-token-transfers/configuration/rate-limiting/) +=== "HTML Tags" -- :octicons-unlock-16:{ .lg .middle } **Access Control** + ```html +
+ ``` - --- +## Examples {: #examples } - Learn more about access control, including why you should consider setting a separate Pauser address as part of your development security plan. +Below are some examples of different ways you can configure Connect. See `WormholeConnectConfig` in the below file for a full view of the supported configuration parameters. - [:custom-arrow: Explore access control roles](/docs/build/contract-integrations/native-token-transfers/configuration/access-control/) +??? code "View `WormholeConnectConfig`" + ```ts + import { + ChainName, + WormholeContext, + WormholeConfig, + ChainResourceMap, +} from 'sdklegacy'; +import MAINNET from './mainnet'; +import TESTNET from './testnet'; +import DEVNET from './devnet'; +import type { WormholeConnectConfig } from './types'; +import { + Network, + InternalConfig, + Route, + WrappedTokenAddressCache, +} from './types'; +import { + mergeCustomTokensConfig, + mergeNttGroups, + validateDefaults, +} from './utils'; +import { wrapEventHandler } from './events'; -
---- END CONTENT --- +import { SDKConverter } from './converter'; -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/configuration/rate-limiting ---- BEGIN CONTENT --- ---- -title: Native Token Transfers Rate Limiting -description: Learn about rate limits in Wormhole NTT by configuring send/receive limits, queuing, and canceling flows to manage multichain token transfers efficiently. ---- +import { + wormhole as getWormholeV2, + Wormhole as WormholeV2, + Network as NetworkV2, + Token as TokenV2, + Chain as ChainV2, + ChainTokens as ChainTokensV2, + WormholeConfigOverrides as WormholeConfigOverridesV2, +} from '@wormhole-foundation/sdk'; -## Introduction +import '@wormhole-foundation/sdk/addresses'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import aptos from '@wormhole-foundation/sdk/aptos'; +import sui from '@wormhole-foundation/sdk/sui'; +import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; +import algorand from '@wormhole-foundation/sdk/algorand'; -The Native Token Transfer (NTT) framework provides configurable per-chain rate limits for sending and receiving token transfers. Integrators can manage these limits via their own governance processes to quickly adapt to on-chain activity. +export function buildConfig( + customConfig?: WormholeConnectConfig +): InternalConfig { + const network = ( + customConfig?.network || + customConfig?.env || // TODO remove; deprecated + import.meta.env.REACT_APP_CONNECT_ENV?.toLowerCase() || + 'mainnet' + ).toLowerCase() as Network; -If a transfer is rate-limited on the source chain and queueing is enabled via `shouldQueue = true`, the transfer is placed into an outbound queue and can be released after the rate limit expires. + if (!['mainnet', 'testnet', 'devnet'].includes(network)) + throw new Error(`Invalid env "${network}"`); -You can configure the following limits on every chain where NTT is deployed directly using the manager: + const networkData = { MAINNET, DEVNET, TESTNET }[network.toUpperCase()]!; -- **Sending limit** - a single outbound limit for sending tokens from the chain -- **Per-chain receiving limits** - the maximum receiving limit, which can be configured on a per-chain basis. For example, allowing 100 tokens to be received from Ethereum but only 50 tokens to be received from Arbitrum + const tokens = mergeCustomTokensConfig( + networkData.tokens, + customConfig?.tokensConfig + ); -Rate limits are replenished every second over a fixed duration. While the default duration is 24 hours, the value is configurable at contract creation. Rate-limited transfers on the destination chain are added to an inbound queue with a similar release delay. + const sdkConfig = WormholeContext.getConfig(network); -## Update Rate Limits + const rpcs = Object.assign( + {}, + sdkConfig.rpcs, + networkData.rpcs, + customConfig?.rpcs + ); -To configure or update the sending and receiving rate limits, follow these steps: + const wh = getWormholeContext(network, sdkConfig, rpcs); -1. **Locate the deployment file** - open the `deployment.json` file in your NTT project directory. This file contains the configuration for your deployed contracts + if (customConfig?.bridgeDefaults) { + validateDefaults(customConfig.bridgeDefaults, networkData.chains, tokens); + } -2. **Modify the limits section** - for each chain, locate the limits field and update the outbound and inbound values as needed + const sdkConverter = new SDKConverter(wh); - ```json - "limits": { - "outbound": "1000.000000000000000000", - "inbound": { - "Ethereum": "100.000000000000000000", - "Arbitrum": "50.000000000000000000" - } - } - ``` + return { + wh, + sdkConfig, + sdkConverter, - - **`outbound`** - sets the maximum tokens allowed to leave the chain - - **`inbound`** - configures per-chain receiving limits for tokens arriving from specific chains + v2Network: sdkConverter.toNetworkV2(network), -3. **Push the configuration** - use the NTT CLI to synchronize the updated configuration with the blockchain + network, + isMainnet: network === 'mainnet', + // External resources + rpcs, + rest: Object.assign( + {}, + sdkConfig.rest, + networkData.rest, + customConfig?.rest + ), + graphql: Object.assign({}, networkData.graphql, customConfig?.graphql), + wormholeApi: { + mainnet: 'https://api.wormholescan.io/', + testnet: 'https://api.testnet.wormholescan.io/', + devnet: '', + }[network], + wormholeRpcHosts: { + mainnet: [ + 'https://wormhole-v2-mainnet-api.mcf.rocks', + 'https://wormhole-v2-mainnet-api.chainlayer.network', + 'https://wormhole-v2-mainnet-api.staking.fund', + ], + testnet: [ + 'https://guardian.testnet.xlabs.xyz', + 'https://guardian-01.testnet.xlabs.xyz', + 'https://guardian-02.testnet.xlabs.xyz', + ], + devnet: ['http://localhost:7071'], + }[network], + coinGeckoApiKey: customConfig?.coinGeckoApiKey, - ```bash - ntt push - ``` + // Callbacks + triggerEvent: wrapEventHandler(customConfig?.eventHandler), + validateTransfer: customConfig?.validateTransferHandler, -4. **Verify the changes** - after pushing, confirm the new rate limits by checking the deployment status + // White lists + chains: networkData.chains, + chainsArr: Object.values(networkData.chains).filter((chain) => { + return customConfig?.networks + ? customConfig.networks!.includes(chain.key) + : true; + }), + tokens, + tokensArr: Object.values(tokens).filter((token) => { + return customConfig?.tokens + ? customConfig.tokens!.includes(token.key) + : true; + }), - ```bash - ntt status - ``` + // For token bridge ^_^ + wrappedTokenAddressCache: new WrappedTokenAddressCache( + tokens, + sdkConverter + ), -???- note "`deployment.json` example" - ```json - { - "network": "Testnet", - "chains": { - "Sepolia": { - "version": "1.1.0", - "mode": "burning", - "paused": false, - "owner": "0x0088DFAC40029f266e0FF62B82E47A07467A0345", - "manager": "0x5592809cf5352a882Ad5E9d435C6B7355B716357", - "token": "0x5CF5D6f366eEa7123BeECec1B7c44B2493569995", - "transceivers": { - "threshold": 1, - "wormhole": { - "address": "0x91D4E9629545129D427Fd416860696a9659AD6a1", - "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" - } - }, - "limits": { - "outbound": "184467440737.095516150000000000", - "inbound": { - "ArbitrumSepolia": "500.000000000000000000" - } - }, - "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" - } - } - } - ``` + gasEstimates: networkData.gasEstimates, + // TODO: routes that aren't supported yet are disabled + routes: (customConfig?.routes ?? Object.values(Route)).filter((r) => + [ + Route.Bridge, + Route.Relay, + Route.NttManual, + Route.NttRelay, + Route.CCTPManual, + Route.CCTPRelay, + ].includes(r as Route) + ), -## Queuing Mechanism + // UI details + cta: customConfig?.cta, + explorer: customConfig?.explorer, + attestUrl: { + mainnet: 'https://portalbridge.com/advanced-tools/#/register', + devnet: '', + testnet: + 'https://wormhole-foundation.github.io/example-token-bridge-ui/#/register', + }[network], + bridgeDefaults: customConfig?.bridgeDefaults, + cctpWarning: customConfig?.cctpWarning?.href || '', + pageHeader: customConfig?.pageHeader, + pageSubHeader: customConfig?.pageSubHeader, + menu: customConfig?.menu ?? [], + searchTx: customConfig?.searchTx, + moreTokens: customConfig?.moreTokens, + moreNetworks: customConfig?.moreNetworks, + partnerLogo: customConfig?.partnerLogo, + walletConnectProjectId: + customConfig?.walletConnectProjectId ?? + import.meta.env.REACT_APP_WALLET_CONNECT_PROJECT_ID, + showHamburgerMenu: customConfig?.showHamburgerMenu ?? false, + previewMode: !!customConfig?.previewMode, -When a transfer exceeds the rate limit, it is held in a queue and can be released after the set rate limit duration has expired. The sending and receiving queuing behavior is as follows: + // Route options + ethBridgeMaxAmount: customConfig?.ethBridgeMaxAmount ?? 5, + wstETHBridgeMaxAmount: customConfig?.wstETHBridgeMaxAmount ?? 5, -- **Sending** - if an outbound transfer violates rate limits, users can either revert and try again later or queue their transfer. Users must return after the queue duration has expired to complete sending their transfer -- **Receiving** - if an inbound transfer violates rate limits, it is in a queue. Users or relayers must return after the queue duration has expired to complete receiving their transfer on the destination chain + // NTT config + nttGroups: mergeNttGroups( + tokens, + networkData.nttGroups, + customConfig?.nttGroups + ), -Queuing is configured dynamically during each transfer by passing the `shouldQueue` parameter to the [`transfer` function](https://github.com/wormhole-foundation/native-token-transfers/blob/5e7ceaef9a5e7eaa13e823a67c611dc684cc0c1d/evm/src/NttManager/NttManager.sol#L171-L182){target=\_blank} in the `NttManager` contract. + // Guardian set + guardianSet: networkData.guardianSet, -## Cancel Flows + // Render redesign views + useRedesign: customConfig?.useRedesign, + }; +} -If users bridge frequently between a given source chain and destination chain, the capacity could be exhausted quickly. Loss of capacity can leave other users rate-limited, potentially delaying their transfers. The outbound transfer cancels the inbound rate limit on the source chain to avoid unintentional delays. This allows for refilling the inbound rate limit by an amount equal to the outbound transfer amount and vice-versa, with the inbound transfer canceling the outbound rate limit on the destination chain and refilling the outbound rate limit with an amount. ---- END CONTENT --- +// Running buildConfig with no argument generates the default configuration +const config = buildConfig(); +export default config; -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm ---- BEGIN CONTENT --- ---- -title: Native Token Transfers EVM Deployment -description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. ---- - -# Native Token Transfers (NTT) EVM Development - -## Deploy Your Token and Ensure Compatibility - -If you still need to do so, deploy the token contract to the destination or spoke chains. - -### Requirements for Token Deployment - -Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports two deployment modes: burn-and-mint and hub-and-spoke. These modes differ in how tokens are managed across chains. - -#### Burn-and-Mint Mode - -Tokens integrated with `NttManager` in `burning` mode require the following two functions to be present: - -- `burn(uint256 amount)` -- `mint(address account, uint256 amount)` - -These functions aren't part of the standard ERC-20 interface. The [`INttToken` interface](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} documents the required functions and convenience methods, errors, and events. - -??? code "View the complete `INttToken` Interface`" - ```solidity - // SPDX-License-Identifier: Apache 2 -pragma solidity >=0.8.8 <0.9.0; - -interface INttToken { - /// @notice Error when the caller is not the minter. - /// @dev Selector 0x5fb5729e. - /// @param caller The caller of the function. - error CallerNotMinter(address caller); - - /// @notice Error when the minter is the zero address. - /// @dev Selector 0x04a208c7. - error InvalidMinterZeroAddress(); - - /// @notice Error when insufficient balance to burn the amount. - /// @dev Selector 0xcf479181. - /// @param balance The balance of the account. - /// @param amount The amount to burn. - error InsufficientBalance(uint256 balance, uint256 amount); +// TODO SDKV2: REMOVE +export function getWormholeContext( + network: Network, + sdkConfig: WormholeConfig, + rpcs: ChainResourceMap +): WormholeContext { + const wh: WormholeContext = new WormholeContext(network, { + ...sdkConfig, + ...{ rpcs }, + }); - /// @notice The minter has been changed. - /// @dev Topic0 - /// 0x0b5e7be615a67a819aff3f47c967d1535cead1b98db60fafdcbf22dcaa8fa5a9. - /// @param newMinter The new minter. - event NewMinter(address previousMinter, address newMinter); + return wh; +} - // NOTE: the `mint` method is not present in the standard ERC20 interface. - function mint(address account, uint256 amount) external; +export function getDefaultWormholeContext(network: Network): WormholeContext { + const sdkConfig = WormholeContext.getConfig(network); + const networkData = { mainnet: MAINNET, devnet: DEVNET, testnet: TESTNET }[ + network + ]!; - // NOTE: the `setMinter` method is not present in the standard ERC20 interface. - function setMinter(address newMinter) external; + const rpcs = Object.assign({}, sdkConfig.rpcs, networkData.rpcs); - // NOTE: NttTokens in `burn` mode require the `burn` method to be present. - // This method is not present in the standard ERC20 interface, but is - // found in the `ERC20Burnable` interface. - function burn(uint256 amount) external; + return getWormholeContext(network, sdkConfig, rpcs); } - ``` -Later, you set mint authority to the corresponding `NttManager` contract. You can also follow the scripts in the [example NTT token](https://github.com/wormhole-foundation/example-ntt-token){target=\_blank} repository to deploy a token contract. +export async function getWormholeContextV2(): Promise> { + if (config.v2Wormhole) return config.v2Wormhole; + config.v2Wormhole = await newWormholeContextV2(); + return config.v2Wormhole; +} -#### Hub-and-Spoke Mode +export async function newWormholeContextV2(): Promise> { + const v2Config: WormholeConfigOverridesV2 = { chains: {} }; -A central hub chain (e.g., Ethereum) manages the total token supply in hub-and-spoke mode. Other chains (spokes) mint or burn tokens during cross-chain transfers, ensuring consistency with the locked tokens on the hub chain. + for (const key in config.chains) { + const chainV1 = key as ChainName; + const chainConfigV1 = config.chains[chainV1]!; - - **Hub chain** - tokens are locked on the hub chain when transferring to spoke chains - - **Spoke chains** - tokens are native to the spoke chains and are either minted or burned during cross-chain transfers + const chainContextV1 = chainConfigV1.context; -!!! note - The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. + const chainV2 = config.sdkConverter.toChainV2( + chainV1 as ChainName + ) as ChainV2; -For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager locks tokens on Ethereum, and the corresponding amount is minted on Polygon. Similarly, transferring tokens back from Polygon to Ethereum burns the tokens on Polygon and unlocks the equivalent tokens on Ethereum. + const rpc = config.rpcs[chainV1]; + const tokenMap: ChainTokensV2 = {}; -This process ensures that the total token supply remains consistent across all chains, with the hub chain acting as the source of truth. + for (const token of config.tokensArr) { + const nativeChainV2 = config.sdkConverter.toChainV2(token.nativeChain); -For more detailed information, see the [Deployment Models](/docs/learn/messaging/native-token-transfers/deployment/){target=\_blank} page. + const tokenV2: Partial = { + key: token.key, + chain: chainV2, + symbol: token.symbol, + }; -### Key Differences Between Modes + if (nativeChainV2 == chainV2) { + const decimals = + token.decimals[chainContextV1] ?? token.decimals.default; + if (!decimals) { + continue; + } else { + tokenV2.decimals = decimals; + } + const address = config.sdkConverter.getNativeTokenAddressV2(token); + if (!address) throw new Error('Token must have address'); + tokenV2.address = address; + } else { + tokenV2.original = nativeChainV2; + if (token.foreignAssets) { + const fa = token.foreignAssets[chainV1]!; - - **Burn-and-mint** - tokens must implement custom `mint` and `burn` functions, allowing each chain to manage token issuance independently - - **Hub-and-spoke** - tokens only need to be ERC20 compliant, with the hub chain acting as the source of truth for supply consistency + if (!fa) { + continue; + } else { + tokenV2.address = fa.address; + tokenV2.decimals = fa.decimals; + } + } else { + continue; + } + } -## Deploy NTT + tokenMap[token.key] = tokenV2 as TokenV2; + } -Create a new NTT project: + v2Config.chains![chainV2] = { rpc, tokenMap }; + } -```bash -ntt new my-ntt-deployment -cd my-ntt-deployment -``` + return await getWormholeV2( + config.v2Network, + [evm, solana, aptos, cosmwasm, sui, algorand], + v2Config + ); +} -Initialize a new `deployment.json` file specifying the network: +// setConfig can be called afterwards to override the default config with integrator-provided config +export function setConfig(customConfig?: WormholeConnectConfig) { + const newConfig: InternalConfig = buildConfig(customConfig); -=== "Testnet" + // We overwrite keys in the existing object so the references to the config + // imported elsewhere point to the new values + for (const key in newConfig) { + /* @ts-ignore */ + config[key] = newConfig[key]; + } +} - ```bash - ntt init Testnet +// TODO: add config validation step to buildConfig +//validateConfigs(); ``` -=== "Mainnet" +### Custom Networks and RPC Endpoints {: #custom-networks-and-rpc-endpoints } - ```bash - ntt init Mainnet - ``` +Specify supported networks, tokens, and custom RPC endpoints. Your users may encounter rate limits using public RPC endpoints if you don't provide your own. -Ensure you have set up your environment correctly: +=== "Mainnet" -```bash -export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY -``` + ```js + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: +const config: WormholeConnectConfig = { + env: 'mainnet', + networks: ['ethereum', 'polygon', 'solana'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], + rpcs: { + ethereum: 'https://rpc.ankr.com/eth', + solana: 'https://rpc.ankr.com/solana', + }, +}; -```bash -# Set scanner API Keys as environment variables -export SEPOLIA_SCAN_API_KEY=INSERT_ETHERSCAN_SEPOLIA_API_KEY -export ARBITRUMSEPOLIA_SCAN_API_KEY=INSERT_ARBISCAN_SEPOLIA_API_KEY +function App() { + return ; +} + ``` -# Add each chain -# The contracts will be automatically verified using the scanner API keys above -ntt add-chain Sepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS -ntt add-chain ArbitrumSepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS -``` +=== "Testnet" -While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. + ```js + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -The `ntt add-chain` command takes the following parameters: +const config: WormholeConnectConfig = { + env: 'testnet', + networks: ['sepolia', 'arbitrum_sepolia', 'base_sepolia', 'fuji'], -- Name of each chain -- Version of NTT to deploy (use `--latest` for the latest contract versions) -- Mode (either `burning` or `locking`) -- Your token contract address + rpcs: { + fuji: 'https://rpc.ankr.com/avalanche_fuji', + base_sepolia: 'https://base-sepolia-rpc.publicnode.com', + }, +}; -The NTT CLI prints detailed logs and transaction hashes, so you can see exactly what's happening under the hood. +function App() { + return ; +} + ``` -## Configure NTT +!!! note + For a complete list of testnet chain names that can be manually added, see the [Testnet Chains List](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/fa4ba4bc349a7caada809f209090d79a3c5962fe/tokenRegistry/src/scripts/importConnect.ts#L44-L55){target=\_blank}. -The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. You can run: +### Fully Customized Theme {: #fully-customized-theme } -- `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain -- `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and set up rate limits with the appropriate number of decimals, depending on the specific chain. For example: +Wormhole Connect offers a high level of customizability that suits and integrates with your application's design, including various options for buttons, backgrounds, popovers, fonts, and more. The following example demonstrates a variety of appearance customizations. Remember, if you prefer a visual to aid in designing your widget, you can use the [no code style interface](https://connect-in-style.wormhole.com/){target=\_blank}. - For Solana, the limits are set with 9 decimal places: - ```json - "inbound": { - "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana - } - ``` +```jsx +import WormholeConnect, { + WormholeConnectTheme, +} from '@wormhole-foundation/wormhole-connect'; +import red from '@mui/material/colors/red'; +import lightblue from '@mui/material/colors/lightBlue'; +import grey from '@mui/material/colors/grey'; +import green from '@mui/material/colors/green'; +import orange from '@mui/material/colors/orange'; - For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: - ```json - "inbound": { - "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia - } - ``` - - This initial configuration ensures that the rate limits are correctly represented for each chain's token precision - -- `ntt push` - syncs the on-chain configuration with local changes made to your `deployment.json` file +const customTheme: WormholeConnectTheme = { + mode: 'dark', + primary: grey, + secondary: grey, + divider: 'rgba(255, 255, 255, 0.2)', + background: { + default: '#232323', + }, + text: { + primary: '#ffffff', + secondary: grey[500], + }, + error: red, + info: lightblue, + success: green, + warning: orange, + button: { + primary: 'rgba(255, 255, 255, 0.2)', + primaryText: '#ffffff', + disabled: 'rgba(255, 255, 255, 0.1)', + disabledText: 'rgba(255, 255, 255, 0.4)', + action: orange[300], + actionText: '#000000', + hover: 'rgba(255, 255, 255, 0.7)', + }, + options: { + hover: '#474747', + select: '#5b5b5b', + }, + card: { + background: '#333333', + secondary: '#474747', + elevation: 'none', + }, + popover: { + background: '#1b2033', + secondary: 'rgba(255, 255, 255, 0.5)', + elevation: 'none', + }, + modal: { + background: '#474747', + }, + font: { + primary: 'Impact', + header: 'Impact', + }, +}; -After you deploy the NTT contracts, ensure that the deployment is properly configured and your local representation is consistent with the actual on-chain state by running `ntt status` and following the instructions shown on the screen. +export default function App() { + return ; +} +``` -## Set Token Minter to NTT Manager +### Environment {: #environment } -The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. +You can configure Connect to be used in Testnet environments, too. You can toggle between Mainnet and Testnet environments by defining the `WormholeConnectConfig` as follows: -!!! note - The required NTT Manager address can be found in the `deployment.json` file. +=== "Mainnet" -- If you followed the [`INttToken`](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} interface, you can execute the `setMinter(address newMinter)` function - ```json - cast send $TOKEN_ADDRESS "setMinter(address)" $NTT_MANAGER_ADDRESS --private-key $ETH_PRIVATE_KEY --rpc-url $YOUR_RPC_URL + ```ts + const config: WormholeConnectConfig = { + env: 'mainnet', + }; ``` -- If you have a custom process to manage token minters, you should now follow that process to add the corresponding NTT Manager as a minter +=== "Testnet" -By default, NTT transfers to EVM blockchains support automatic relaying via the Wormhole relayer, which doesn't require the user to perform a transaction on the destination chain to complete the transfer. + ```ts + const config: WormholeConnectConfig = { + env: 'testnet', + }; + ``` +### Custom RPC Endpoint {: #custom-rpc-endpoint } -!!!important - To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. ---- END CONTENT --- +You can define a custom RPC provider for your Connect widget to use. This can be especially helpful if you'd like to replace public endpoints with dedicated or private endpoints. -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana ---- BEGIN CONTENT --- ---- -title: Native Token Transfers Solana Deployment -description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. ---- +```ts +const config: WormholeConnectConfig = { + rpcs: { + solana: 'https://rpc.ankr.com/solana/ee827255553bb0fa9e0aaeab27e988707e60ea06ae36be0658b778072e94979e', + }, +}; +``` -# Native Token Transfers (NTT) Solana Deployment +### Arbitrary Token {: #arbitrary-token } -## Install Dependencies +The following section shows how to add an arbitrary token to your deployment of Connect. -Ensure you have the following dependencies installed: +!!! note + You will need to [register](https://portalbridge.com/advanced-tools/#/register){target=\_blank} your token with the Token Bridge to get the contract addresses necessary for it to work with Connect. -- [Rust](https://www.rust-lang.org/tools/install){target=\_blank} -- [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** -- [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** +This example configuration limits Connect to the Solana and Ethereum networks and a handful of tokens, including `BSKT`, which isn't built in by default and provided under the `tokensConfig` key. -!!!Warning - Ensure you are using the above versions of Solana and Anchor. Running the deployment with a different version may cause issues. +See [`src/config/types.ts`](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank} for the type definition of `TokensConfig`. -## Deploy NTT +```json +const config: WormholeConnectConfig = { + networks: ['solana', 'ethereum'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC', 'BSKT'], + tokensConfig: { + BSKT: { + key: 'BSKT', + symbol: 'BSKT', + nativeChain: 'solana', + tokenId: { + chain: 'solana', + address: '6gnCPhXtLnUD76HjQuSYPENLSZdG8RvDB1pTLM5aLSJA', + }, + coinGeckoId: 'basket', + icon: 'https://assets.coingecko.com/coins/images/34661/standard/BSKT_Logo.png?1705636891', + color: '#2894EE', + decimals: { + default: 5, + }, + }, + }, +}; +``` -Create a new NTT project (or use an existing NTT project): +## More Configuration Options {: #more-configuration-options } -```bash -ntt new my-ntt-deployment -cd my-ntt-deployment -``` +### Whitelisting Tokens {: #whitelisting-tokens } -Initialize a new `deployment.json` file specifying the network: +By default, Connect will offer its complete built-in list of assets, but you can restrict the displayed assets by defining a subset of tokens under `tokens`. The default full list is as follows: -=== "Testnet" +| Mainnet | Testnet | +|:--------------:|:----------------------------------:| +| ETH | ETH, ETHsepolia | +| WETH | WETH, WETHsepolia | +| USDCeth | USDCeth | +| WBTC | - | +| USDT | - | +| DAI | - | +| BUSD | - | +| MATIC | MATIC | +| WMATIC | WMATIC | +| USDCpolygon | - | +| BNB | BNB | +| WBNB | WBNB | +| USDCbnb | - | +| AVAX | AVAX | +| WAVAX | WAVAX | +| USDCavax | USDCavax | +| FTM | FTM | +| WFTM | WFTM | +| CELO | CELO | +| GLMR | GLMR | +| WGLMR | WGLMR | +| SOL | WSOL | +| PYTH | - | +| SUI | SUI | +| USDCsol | - | +| APT | APT | +| ETHarbitrum | ETHarbitrum, ETHarbitrum_sepolia | +| WETHarbitrum | WETHarbitrum, WETHarbitrum_sepolia | +| USDCarbitrum | USDCarbitrum | +| ETHoptimism | ETHoptimism, ETHoptimism_sepolia | +| WETHoptimism | WETHoptimism, WETHoptimism_sepolia | +| USDCoptimism | USDCoptimism | +| ETHbase | ETHbase, ETHbase_sepolia | +| WETHbase | WETHbase, WETHbase_sepolia | +| tBTC | tBTC | +| tBTCpolygon | tBTCpolygon | +| tBTCoptimism | tBTCoptimism | +| tBTCarbitrum | tBTCarbitrum | +| tBTCbase | tBTCbase | +| tBTCsol | tBTCsol | +| WETHpolygon | - | +| WETHbsc | - | +| wstETH | wstETH | +| wstETHarbitrum | - | +| wstETHoptimism | - | +| wstETHpolygon | - | +| wstETHbase | - | - ```bash - ntt init Testnet - ``` +### Routes {: #routes } -=== "Mainnet" +By default, Connect will offer its complete built-in list of routes, but you can restrict the possible route assets by defining a subset under `routes.` By default, Connect will offer its complete built-in list: - ```bash - ntt init Mainnet - ``` +| Mainnet | Testnet | +|:------------:|:----------:| +| bridge | bridge | +| relay | relay | +| cctpManual | cctpManual | +| cctpRelay | cctpRelay | +| nttManual | nttManual | +| nttRelay | nttRelay | +| ethBridge | - | +| wstETHBridge | - | +| usdtBridge | - | +| tBTC | tBTC | -## Deploy Your Solana Token +### Wallet Set Up {: #wallet-connect-project-id } -???- interface "Deploy an SPL Token" +When using Wormhole Connect, your selected blockchain network determines the available wallet options. - 1. Generate a new Solana key pair to create a wallet: - ```bash - solana-keygen grind --starts-with w:1 --ignore-case - ``` + - For EVM chains, wallets like MetaMask and WalletConnect are supported + - For Solana, you'll see options such as Phantom, Torus, and Coin98 - 2. Set Solana configuration to use the new key pair created in step 1: - ```bash - solana config set --keypair INSERT_PATH_TO_KEYPAIR_JSON - ``` +The wallet options automatically adjust based on the selected chain, providing a seamless user experience without additional configuration. - 3. Set the Solana configuration to use the default RPC URL for Devnet: - ```bash - solana config set -ud - ``` +If you would like to offer WalletConnect as a supported wallet option, you'll need to obtain a project ID on the [WalletConnect cloud dashboard](https://cloud.walletconnect.com/){target=\_blank}. - 4. Request an airdrop of two SOL and check the balance: - ```bash - solana airdrop 2 & solana balance - ``` +### Toggle Hamburger Menu {: #toggle-hamburger-menu } - 5. Install or update the SPL Token CLI: - ```bash - cargo install spl-token-cli - ``` +By setting the `showHamburgerMenu` option to **false**, you can deactivate the hamburger menu, causing the links to be positioned at the bottom. - 6. Create a new token with the SPL Token CLI (make sure you have enough balance to pay for the transaction): - ```bash - spl-token create-token - ``` +#### Add Extra Menu Entry {: #add-extra-menu-entry } - 7. Create a new account for the token created in step 6: - ```bash - spl-token create-account INSERT_TOKEN_ADDRESS - ``` +By setting the `showHamburgerMenu` option to `false,` you can add extra links. The following properties are accessed through the `menu[]` property (e.g., `menu[].label`): - 8. Mint `1000` tokens to the created account: - ```bash - spl-token mint INSERT_TOKEN_ADDRESS 1000 - ``` +| Property | Description | +|:--------:|:-------------------------------------------:| +| `label` | Link name to show up | +| `href` | Target URL or URN | +| `target` | Anchor standard target, by default `_blank` | +| `order` | Order where the new item should be injected | -!!! note - NTT versions `>=v2.0.0+solana` support SPL tokens with transfer hooks. +#### Sample Configuration {: #sample-configuration } -### Deployment Mode Requirements +```json +{ + "showHamburgerMenu": false, + "menu": [ + { + "label": "Advance Tools", + "href": "https://portalbridge.com", + "target": "_self", + "order": 1 + } + ] +} +``` -The NTT CLI supports two deployment models: **Hub-and-Spoke** and **Burn-and-Mint**. -For a detailed explanation of these models, see the [Deployment Models](/docs/learn/messaging/native-token-transfers/deployment/){target=\_blank} page. +### CoinGecko API Key {: #coingecko-api-key } -#### Hub-and-Spoke +The CoinGecko API can be used to fetch token price data. If you have a [CoinGecko API Plan](https://apiguide.coingecko.com/getting-started/getting-started){target=\_blank}, you can include the API key in the configuration. Remember to always take steps to protect your sensitive API keys, such as defining them in `.env` files and including such files in your `.gitignore`. -No additional configuration is required for hub-and-spoke deployments. Tokens retain their original mint authority, so the steps below are not necessary. You can [generate a new NTT program key pair](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#generate-ntt-program-key-pair) and [deploy the NTT program](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#__tabbed_2_2) directly. +### More Networks {: #more-networks } -#### Burn-and-Mint +Specify a set of extra networks to be displayed on the network selection modal, each linking to a different page, dApp, or mobile app the user will be redirected to. The following properties are accessed through the `moreNetworks` property (e.g., `moreNetworks.href`): -For burn-and-mint deployments, you must configure the token's mint authority to enable cross-chain transfers. To complete the required setup, follow the steps in the following sections. +|
Property
| Description | +|:--------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------:| +| `href` | **Required**. Default value for missing network hrefs | +| `target` | Default value for missing network link targets. Defaults to `_self` | +| `description` | Brief description that should be displayed as a tooltip when the user hovers over a more network icon. Used as default for missing network descriptions | +| `networks[].icon` | **Required**. URL data encoded icon to display | +| `networks[].href` | Network href to redirect to. If present, the values `sourceChain` and `targetChain` are replaced with the currently selected chains before redirecting | +| `networks[].label` | **Required**. Display text | +| `networks[].name` | Unique network key. Defaults to a snake_case version of the label | +| `networks[].description` | Description value. Defaults to `moreNetworks.description` | +| `networks[].target` | href target value. Defaults to `moreNetworks.target` | +| `networks[].showOpenInNewIcon` | Disable top right open in new icon. Defaults to **true** if target is `_blank` or **false** if target is `_self` | -## Configuration and Deployment +??? code "View full configuration" + ```json + { + ... + "moreNetworks": { + "href": "https://example.com", + "target": "_blank", + "description": "brief description that should be displayed as tooltip when the user hovers over a more network icon", + "networks": [ + { + "icon": "https://assets.coingecko.com/coins/images/34661/standard/BSKT_Logo.png?1705636891", + "name": "more", + "label": "More networks", + "href": "https://portalbridge.com/#/transfer", + "showOpenInNewIcon": false + } + ] + } + ... +} + ``` -### Generate NTT Program Key Pair +### More Tokens {: #more-tokens } -When you deploy a Solana program, you need to hardcode the program ID (a Pubkey) into the program code. The NTT CLI allows you to do this seamlessly. +Show a particular entry on the select tokens modal, redirecting the user to a different page, dApp, or mobile app. The following properties are accessed through the `moreTokens` property (e.g., `moreTokens.label`): -Generate a new NTT program key pair using: +| Property | Description | +|:--------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------:| +| `label` | **Required**. Display text | +| `href` | **Required**. URL to redirect to. If present, the values `sourceChain` and `targetChain` are replaced with the currently selected chains before redirecting | +| `target` | href target. Defaults to `_self` | -```bash -solana-keygen grind --starts-with ntt:1 --ignore-case -``` +### Explorer {: #explorer } -### Derive Token Authority +Enable the explorer button to allow users to search for their transactions on a given explorer, filtering by their wallet address. The following properties are accessed through the `explorer` property (e.g., `explorer.label`): -In this step, you'll derive the token authority Program Derived Address (PDA) of the newly generated NTT program ID: +| Property | Description | +|:--------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| `label` | Display text. Defaults to `Transactions` | +| `href` | **Required**. URL of the explorer, for instance [https://wormholescan.io/](https://wormholescan.io/){target=\_blank}. If present, the value `address` is replaced with the connected wallet address | +| `target` | `href` target. Defaults to `_blank` | +--- END CONTENT --- -```bash -ntt solana token-authority INSERT_YOUR_NTT_PROGRAM_KEY_PAIR -``` +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/configure-data +--- BEGIN CONTENT --- +--- +title: Connect Data Configuration +description: Configure Wormhole Connect v1 (latest) with custom chains, tokens, routes, and more for enhanced blockchain interoperability. +--- -This script will output the derived PDA, which you will use in the next step. +## Data Configuration -### Set SPL Token Mint Authority +This page explains how to configure Wormhole Connect's core functionality, from choosing supported chains and tokens to bridging routes to setting up wallets and enabling price lookups. By the end, you'll know how to specify custom networks and RPC endpoints, integrate different bridging protocols, add new tokens, and more. -!!!Warning - You must create your token's metadata before delegating mint authority. [See an example on how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata){target=\_blank}. +## Get Started -If deploying in `burning` mode, you'll set the SPL token mint authority to the newly generated token authority PDA: +Configure Wormhole Connect by passing a `WormholeConnectConfig` object as the `config` prop. -```bash -spl-token authorize INSERT_TOKEN_ADDRESS mint INSERT_DERIVED_PDA -``` +=== "React integration" -!!! note - Please ensure that you are using Anchor CLI version `0.29.0`. Running the deployment with a different version may cause compatibility issues. + ```ts + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Polygon', 'Solana'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], + rpcs: { + Ethereum: 'https://rpc.ankr.com/eth', + Solana: 'https://rpc.ankr.com/solana', + } +} -### Deploy NTT + + ``` -Generate or export your payer key pair, then run: +=== "Hosted integration" -=== "Burn-and-Mint" + ```ts + import WormholeConnect, { + wormholeConnectHosted, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; - ```bash - ntt add-chain Solana --latest --mode burning --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON - ``` +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Polygon', 'Solana'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], + rpcs: { + Ethereum: 'https://rpc.ankr.com/eth', + Solana: 'https://rpc.ankr.com/solana', + }, +}; -=== "Hub-and-Spoke" +const container = document.getElementById('bridge-container'); - ```bash - ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON +wormholeConnectHosted(container, { + config, +}); ``` !!! note - The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. - -The NTT Solana program will then compile and deploy, returning the program ID. + The complete type definition of `WormholeConnectConfig` is available in the [Wormhole Connect repository](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank}. -!!! note - Refer to the [Solana docs](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for failed deployments, which provide instructions on finding buffer accounts and closing them to reclaim allocated SOL. +## Examples {: #examples } -### Configure NTT +### Configuring Chains and RPC Endpoints {: #chains-and-rpc-endpoints } -The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. You can run: +Connect lets you customize the available chains to match your project's needs. You should provide your own RPC endpoints, as the default public ones may not support essential functions like balance fetching. -- `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain -- `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and sets up rate limits with the appropriate number of decimals, depending on the specific chain. For example: +=== "Mainnet" - For Solana, the limits are set with 9 decimal places: - ```json - "inbound": { - "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana - } - ``` + ```js + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; - For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: - ```json - "inbound": { - "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia - } - ``` +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Polygon', 'Solana'], + rpcs: { + Ethereum: 'https://rpc.ankr.com/eth', + Solana: 'https://rpc.ankr.com/solana', + }, +}; - This initial configuration ensures that the rate limits are correctly represented for each chain's token precision. +function App() { + return ; +} + ``` -### Deploy NTT to Solana +=== "Testnet" -You can now push the deployment to the Solana network, specifying the key pair that will cover the gas fees: + ```js + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -```bash -ntt push --payer INSERT_YOUR_KEYPAIR_JSON -``` +const config: WormholeConnectConfig = { + // You can use Connect with testnet chains by specifying "network": + network: 'Testnet', + chains: ['Sepolia', 'ArbitrumSepolia', 'BaseSepolia', 'Avalanche'], + rpcs: { + Avalanche: 'https://rpc.ankr.com/avalanche_fuji', + BaseSepolia: 'https://base-sepolia-rpc.publicnode.com', + }, +}; -By default, NTT transfers to Solana support manual relaying, which requires the user to perform a transaction on Solana to complete the transfer. UI components such as Wormhole Connect support this out of the box. For automatic Wormhole relaying support on Solana, [contact](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} Wormhole contributors. +function App() { + return ; +} + ``` -!!!important - To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. ---- END CONTENT --- +!!! note + For a complete list of available chain names, see the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/base/src/constants/chains.ts){target=\_blank}. -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/index ---- BEGIN CONTENT --- ---- -title: Native Token Transfers (NTT) - Deployment -description: This section provides information on installing Wormhole's Native Token Transfer framework, deployment to EVM and Solana, and post deployment NTT maintenance. ---- +### Configuring Routes -# Deploy Native Token Transfers (NTT) +By default, Connect offers two bridging protocols: Token Bridge (for Wormhole-wrapped tokens) and Circle's CCTP (for native USDC). For most use cases, integrators require more than these default routes. The `routes` property allows you to specify which protocols to include and exclude any routes unnecessary for your application, including default and third-party routes. -## Get Started +#### Available Route Plugins -This section provides information on installing Wormhole's Native Token Transfer framework, deployment to EVM and Solana, and post deployment NTT maintenance. +The `@wormhole-foundation/wormhole-connect` package offers a variety of `route` plugins to give you flexibility in handling different protocols. You can choose from the following `route` exports for your integration: -
+- [**`TokenBridgeRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/tokenBridge/manual.ts){target=\_blank} - manually redeemed Wormhole Token Bridge route +- [**`AutomaticTokenBridgeRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/tokenBridge/automatic.ts){target=\_blank} - automatically redeemed (relayed) Token Bridge route +- [**`CCTPRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/cctp/manual.ts){target=\_blank} - manually redeemed CCTP route +- [**`AutomaticCCTPRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/cctp/automatic.ts){target=\_blank} - automatically redeemed (relayed) CCTP route +- **`DEFAULT_ROUTES`** - array containing the four preceding routes (`TokenBridgeRoute`, `AutomaticTokenBridgeRoute`, `CCTPRoute`, `AutomaticCCTPRoute`) +- [**`nttAutomaticRoute(nttConfig)`**](https://github.com/wormhole-foundation/native-token-transfers/blob/main/sdk/route/src/automatic.ts){target=\_blank} - function that returns the automatically-redeemed (relayed) Native Token Transfer (NTT) route +- [**`nttManualRoute(nttConfig)`**](https://github.com/wormhole-foundation/native-token-transfers/blob/main/sdk/route/src/manual.ts){target=\_blank}- function that returns the manually-redeemed NTT route +- **`nttRoutes(nttConfig)`** - function that returns both NTT routes as an array +- [**`MayanRoute`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L57){target=\_blank} - route that offers multiple Mayan protocols +- [**`MayanRouteSWIFT`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L528){target=\_blank} - route for Mayan's Swift protocol only +- [**`MayanRouteMCTP`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L539){target=\_blank} - route for Mayan's MCTP protocol only +- [**`MayanRouteWH`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L550){target=\_blank} - route for Mayan's original Wormhole transfer protocol -- :octicons-download-16:{ .lg .middle } **Installation** +In addition to these routes, developers can create custom routes for their Wormhole-based protocols. For examples, refer to the [NTT](https://github.com/wormhole-foundation/native-token-transfers/tree/main/sdk/route){target=\_blank} and the [Mayan](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} example GitHub repositories. - --- +For further details on the `route` plugin interface, refer to the [Wormhole TypeScript SDK route code](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/route.ts){target=\_blank}. - Prerequisites and commands for installing the NTT CLI and working with the NTT framework. +#### Example: Offer Only CCTP Transfers - [:custom-arrow: Install the NTT CLI](/docs/build/contract-integrations/native-token-transfers/deployment-process/installation/) +To configure Wormhole Connect to offer only USDC transfers via the CCTP route, use the following configuration: -- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM** +```typescript +import WormholeConnect, { + AutomaticCCTPRoute, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; - --- +const config: WormholeConnectConfig = { + routes: [AutomaticCCTPRoute], +}; - Find information on preparing for NTT deployment to EVM, including an example NTT token repository. +; +``` - [:custom-arrow: Deploy token and NTT contracts](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm/) +#### Example: Offer All Default Routes and Third-Party Plugins -- :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** +In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge and CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/transfers/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. - --- +```typescript +import WormholeConnect, { + DEFAULT_ROUTES, + nttRoutes, + MayanRouteSWIFT, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; - Your guide to NTT deployment to Solana, including setup, token compatibility, mint/burn modes, and CLI usage. +import { myNttConfig } from './consts'; // Custom NTT configuration - [:custom-arrow: Deploy token and NTT contracts](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/) +const config: WormholeConnectConfig = { + routes: [...DEFAULT_ROUTES, ...nttRoutes(myNttConfig), MayanRouteSWIFT], +}; -- :octicons-search-16:{ .lg .middle } **Post Deployment** +; +``` - --- +This flexible plugin allows you to combine default routes (such as Token Bridge and CCTP) with third-party protocols, offering complete control over which routes are available in your application. - Learn how to best monitor and maintain your NTT deployment to get the most out of your Wormhole integration while providing security for users. +### Adding Custom Tokens {: #custom-tokens } - [:custom-arrow: Explore next steps](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/) +The following section shows how to add an arbitrary token to your deployment of Connect. -- :octicons-alert-16:{ .lg .middle } **Troubleshooting** +!!! note + You will need to [register](https://portalbridge.com/advanced-tools/#/register){target=\_blank} your token with the Token Bridge to get the contract addresses necessary for it to work with that protocol. - --- +This example configuration adds the BONK token to Connect. Note the `wrappedTokens` property, which is required for use with the Token Bridge. - Explore solutions and detailed guidance in our troubleshooting guide to resolve issues with NTT deployment. +See the [Connect source code](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank} for the type definition of `TokensConfig`. - [:custom-arrow: Get help](/docs/build/contract-integrations/native-token-transfers/deployment-process/troubleshooting/) +```typescript +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -
---- END CONTENT --- +const config: WormholeConnectConfig = { + tokensConfig: { + BONK: { + key: 'BONK', + symbol: 'BONK', + nativeChain: 'Ethereum', + icon: Icon.ETH, + tokenId: { + chain: 'Ethereum', + address: '0x1151CB3d861920e07a38e03eEAd12C32178567F6', + }, + coinGeckoId: 'bonk', + decimals: 18, + }, + }, + wrappedTokens: { + BONK: { + Solana: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', + }, + }, +}; +``` -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/installation ---- BEGIN CONTENT --- ---- -title: Native Token Transfers Installation -description: Learn how to Install Wormhole’s Native Token Transfers (NTT) framework, a flexible and composable framework for transferring tokens across blockchains. ---- +### Whitelisting Tokens {: #whitelisting-tokens } -# Install the Native Token Transfers CLI +Connect offers a list of built-in tokens by default. You can see it below: -## Installation +- [Mainnet tokens](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/mainnet/tokens.ts){target=\_blank} +- [Testnet tokens](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/testnet/tokens.ts){target=\_blank} -In this video, the Wormhole team walks you through installing the Native Token Transfers (NTT) CLI. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide. +You can customize the tokens shown in the UI using the `tokens` property. The following example adds a custom token and limits Connect to showing only that token, along with the native gas tokens ETH and SOL. -
+```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -The fastest way to deploy Native Token Transfers (NTT) is using the NTT CLI. As prerequisites, ensure you have the following installed: +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Solana'], + tokens: ['ETH', 'SOL', 'BONK'], + rpcs: { + Ethereum: 'https://rpc.ankr.com/eth', + Solana: 'https://rpc.ankr.com/solana', + }, + tokensConfig: { + BONK: { + key: 'BONK', + symbol: 'BONK', + icon: 'https://assets.coingecko.com/coins/images/28600/large/bonk.jpg?1696527587', + tokenId: { + chain: 'Ethereum', + address: '0x1151CB3d861920e07a38e03eEAd12C32178567F6', + }, + decimals: 18, + }, + }, + wrappedTokens: { + BONK: { + Solana: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', + }, + }, +}; -- Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} -- Install [Bun](https://bun.sh/){target=\_blank} +function App() { + return ; +} +``` -Install the NTT CLI: +You can whitelist tokens by symbol or by specifying tuples of [chain, address]. For example, this would show only BONK token (on all chains you've whitelisted) as well as [`EPjFW...TDt1v`](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v){target=\_blank} on Solana, which is USDC. -```bash -curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash -``` +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -Verify the NTT CLI is installed: +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Solana'], + tokens: [ + // Whitelist BONK on every whitelisted chain + 'BONK', + // Also whitelist USDC, specifically on Solana + ['Solana', 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'] + ], + ... +}; -```bash -ntt --version +function App() { + return ; +} ``` -### Updating - -To update an existing NTT CLI installation, run: +### User-Inputted Tokens {: #user-inputted-tokens } -```bash -ntt update -``` +As of version 2.0, Connect allows users to paste token addresses to bridge any token they want. As an integrator, you may want to disable this feature if you are deploying Connect for use only with a specific token(s). -!!! note - NTT CLI installations and updates will always pick up the latest tag with name vX.Y.Z+cli and verify that the underlying commit is included in main. +If you provide a token whitelist (see above), this is turned off automatically. However, you can also disable it explicitly like this: -For local development, you can update your CLI version from a specific branch or install from a local path. +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -To install from a specific branch, run: +const config: WormholeConnectConfig = { + ui: { + disableUserInputtedTokens: true + } +}; -```bash -ntt update --branch foo +function App() { + return ; +} ``` -To install locally, run: -```bash -ntt update --path path/to/ntt/repo -``` +Setting `ui.disableUserInputtedTokens` to `true` will disable the ability to paste in token addresses. -Git branch and local installations enable a fast iteration loop as changes to the CLI code will immediately be reflected in the running binary without having to run any build steps. ---- END CONTENT --- +### Transaction Settings {: #transaction-settings } -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment ---- BEGIN CONTENT --- ---- -title: Native Token Transfers Post Deployment -description: Learn post-deployment guidelines for optimizing Wormhole NTT, which include testing, security, frontend integration, ecosystem coordination, and monitoring. ---- +Landing transactions on Solana can require finely tuned priority fees when there is congestion. You can tweak how Connect determines these with `transactionSettings`. All of the parameters in this configuration are optional; you can provide any combination of them. -# Native Token Transfers (NTT) Post Deployment +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -## Post Deployment Recommendations +const config: WormholeConnectConfig = { + transactionSettings: { + Solana: { + priorityFee: { + // Number between 0-1, defaults to 0.9. Higher percentile yields higher fees. + // For example, you can set percentile to 0.95 to make Connect compute the + // 95th percentile priority fee amount based on recent transactions + percentile: 0.95, -To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed NTT: + // Any number, defaults to 1.0. The fee amount is multiplied by this number. + // This can be used to further raise or lower the fees Connect is using. + // For example, percentile=0.95 and percentileMultiple=1.1 would use + // the 95th percentile fee, with a 10% increase + percentileMultiple: 1.1, -- Implement a robust testing plan for your multichain token before launching -- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/contract-integrations/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits -- Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience -- Alternatively the [Wormhole SDK](/docs/build/applications/wormhole-sdk/){target=\_blank} allows for a direct integration into your infrastructure -- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately -- Monitor and maintain your multichain deployment + // Minimum fee you want to use in microlamports, regardless of recent transactions + // Defaults to 1 + min: 200_000, -## Post Deployment Integration Demos + // Maximum fee you want to use in microlamports, regardless of recent transactions + // Defaults to 100,000,000 + max: 5_000_000, + } + } + } +}; -
+function App() { + return ; +} +``` -- :octicons-code-16:{ .lg .middle } **Wormhole NTT Connect Demo** +!!! note + Connect can calculate fees more accurately if you are using a [Triton](https://triton.one){target=\_blank} RPC endpoint. - --- +### Wallet Set Up {: #reown-cloud-project-id } - Check out an example project that uses a Vite-React TypeScript application and integrates it with Wormhole Connect, a customizable widget for cross-chain asset transfers. +Your selected blockchain network determines the available wallet options when using Wormhole Connect. - [:custom-arrow: Explore the NTT Connect demo](https://github.com/wormhole-foundation/demo-ntt-connect) + - For EVM chains, wallets like MetaMask and Reown Cloud (formerly WalletConnect) are supported + - For Solana, you'll see options such as Phantom, Torus, and Coin98 -- :octicons-code-16:{ .lg .middle } **Wormhole NTT TypeScript SDK Demo** +The wallet options automatically adjust based on the selected chain, providing a seamless user experience without additional configuration. - --- +If you would like to offer Reown Cloud (formerly WalletConnect) as a supported wallet option, you'll need to obtain a project ID on the [Reown Cloud dashboard](https://cloud.reown.com/){target=\_blank}. - Reference an example project that uses the Wormhole TypeScript SDK to facilitate token transfers between different blockchain networks after deploying the NTT framework. +### CoinGecko API Key {: #coingecko-api-key } - [:custom-arrow: Explore the NTT TypeScript SDK demo](https://github.com/wormhole-foundation/demo-ntt-ts-sdk) +The CoinGecko API can be used to fetch token price data. If you have a [CoinGecko API Plan](https://apiguide.coingecko.com/getting-started/getting-started){target=\_blank}, you can include the API key in the configuration. -
---- END CONTENT --- +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/deployment-process/troubleshooting ---- BEGIN CONTENT --- ---- -title: Troubleshooting NTT Deployment -description: Resolve common issues in NTT deployment with this troubleshooting guide covering Solana, EVM, mint authority, decimals, and rate limits. ---- +const config: WormholeConnectConfig = { + coinGeckoApiKey: 'INSERT_API_KEY', +}; -# Troubleshooting NTT Deployment +function App() { + return ; +} +``` +--- END CONTENT --- -If you encounter issues during the NTT deployment process, check the following common points: +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/configure-theme +--- BEGIN CONTENT --- +--- +title: Connect Theme & UI Customization +description: Learn how to style Wormhole Connect with custom color schemes, fonts, layouts, and menus for a streamlined user experience. +--- -- **Solana and Anchor versions** - ensure you are using the expected versions of Solana and Anchor as outlined in the [deployment page](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#install-dependencies){target=\_blank} - - [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** - - [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** -- **Token compliance on EVM** - verify that your token is an ERC20 token on the EVM chain -- **Mint authority transfer** - - **For burn or spoke tokens on Solana** - ensure the token mint authority was transferred as described in the [set SPL Token Mint Authority](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#set-spl-token-mint-authority){target=\_blank} section - - **For EVM tokens** - confirm the token minter was set to the NTT Manager. Refer to the [set Token Minter to NTT Manager](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm/#set-token-minter-to-ntt-manager){target=\_blank} section for details -- **Decimal configuration** - run `ntt pull` to correctly configure the decimals in your `deployment.json` file. More details in the [configure NTT](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-solana/#configure-ntt){target=\_blank} section -- **Rate limit configuration** - increase your rate limits to a value greater than zero. A rate limit of zero can cause transactions to get stuck. Learn more on how to [configure rate limits](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm/#configure-ntt){target=\_blank} -- **Docker environment based on Ubuntu 20.04 with all dependencies required for Wormhole NTT CLI development** - run `docker compose up -d` to start the container in your terminal from the directory containing the `docker-compose.yml` file +## Theme & UI Customization - ???- interface "Dockerfile" +This page focuses on how to style the Wormhole Connect widget, covering color schemes, fonts, layout changes (like toggling the hamburger menu), and adding extra menu entries. You'll learn how to customize Connect's look and feel to match your application's branding. - ```Dockerfile - FROM ubuntu:20.04 - # Set environment variables to prevent interactive prompts during installation - ENV DEBIAN_FRONTEND=noninteractive +### Changing the Color Scheme - # Update and install necessary dependencies - RUN apt-get update && apt-get install -y \ - curl \ - wget \ - git \ - build-essential \ - libssl-dev \ - libudev-dev \ - pkg-config \ - python3 \ - python3-pip \ - software-properties-common \ - ca-certificates \ - unzip \ - clang \ - cmake \ - protobuf-compiler \ - && apt-get clean && rm -rf /var/lib/apt/lists/* +You can customize Connect's color scheme by providing a `theme` prop. - # Install Rust - RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - ENV PATH="/root/.cargo/bin:$PATH" +=== "React integration" - # Install Solana CLI ({{ntt.solana_cli_version}}) - RUN sh -c "$(curl -sSfL https://release.solana.com/{{ntt.solana_cli_version}}/install)" - ENV PATH="/root/.local/share/solana/install/active_release/bin:$PATH" + ```ts + import WormholeConnect, { + WormholeConnectConfig, + WormholeConnectTheme, +} from '@wormhole-foundation/wormhole-connect'; - # Install Anchor using avm - RUN cargo install --git https://github.com/coral-xyz/anchor avm --locked --force \ - && avm install 0.29.0 \ - && avm use 0.29.0 - ENV PATH="/root/.avm/bin:$PATH" +const config: WormholeConnectConfig = { + /* Your config... */ +}; +const theme: WormholeConnectTheme = { + mode: 'dark', + primary: '#78c4b6', + font: 'Comic Sans; sans-serif', +}; - ENV NVM_DIR=/root/.nvm - RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash \ - && . "$NVM_DIR/nvm.sh" \ - && nvm install 22 \ - && nvm use 22 \ - && nvm alias default 22 - ENV PATH="$NVM_DIR/versions/node/v22.12.0/bin:$PATH" +function App() { + return ; +} + ``` - # Install Bun - RUN curl -fsSL https://bun.sh/install | bash - ENV PATH="/root/.bun/bin:$PATH" +=== "Hosted integration" - # Install Foundry - RUN curl -L https://foundry.paradigm.xyz | bash - ENV PATH="/root/.foundry/bin:${PATH}" - RUN /bin/bash -c "source /root/.bashrc && foundryup" + ```ts + import WormholeConnect, { + WormholeConnectConfig, + WormholeConnectTheme, + wormholeConnectHosted, +} from '@wormhole-foundation/wormhole-connect'; - # Install Wormhole NTT CLI - RUN curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash +const config: WormholeConnectConfig = { + /* Your config... */ +}; - # Add a default working directory - WORKDIR /app +const theme: WormholeConnectTheme = { + mode: 'dark', + primary: '#78c4b6', + font: 'Comic Sans; sans-serif', +}; - # Expose port for development if needed - EXPOSE 8899 +const container = document.getElementById('bridge-container'); - # Entry point for the container - CMD ["bash"] - ``` +wormholeConnectHosted(container, { + config, + theme, +}); + ``` - ???- interface "docker-compose.yml" - ```yml - services: - portal-ntt: - build: - context: . - dockerfile: Dockerfile - platform: linux/amd64 - volumes: - - ./src:/app - working_dir: /app - tty: true - ``` ---- END CONTENT --- +The `WormholeConnectTheme` type supports the following properties: -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/faqs ---- BEGIN CONTENT --- ---- -title: Native Token Transfers FAQs -description: Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. ---- +|
Property
| Description | Example | +|:--------------------------------------:|:---------------------------------------------------------------------:|:---------------------:| +| `mode` | Dark mode or light mode. **Required** | `"dark"` or `"light"` | +| `input` | Color used for input fields, dropdowns | `"#AABBCC"` | +| `primary` | Primary color used for buttons | `"#AABBCC"` | +| `secondary` | Secondary color used for some UI elements | `"#AABBCC"` | +| `text` | Primary color used for text | `"#AABBCC"` | +| `textSecondary` | Secondary color used for dimmer text | `"#AABBCC"` | +| `error` | Color to display errors in, usually some shade of red | `"#AABBCC"` | +| `success` | Color to display success messages in | `"#AABBCC"` | +| `font` | Font used in the UI, can be custom font available in your application | `"Arial; sans-serif"` | -# Wormhole NTT FAQs +### Toggle Hamburger Menu {: #toggle-hamburger-menu } -## Do you have an example of how cross-chain lending can be implemented using Wormhole? +By setting the `showHamburgerMenu` option to **false**, you can deactivate the hamburger menu, which will position the links at the bottom. -Yes, we have an example of cross-chain lending that leverages [Wormhole’s Token Bridge](/learn/messaging/token-nft-bridge/){target=\_blank}. In this example, collateral deposits (such as ETH on Ethereum) are bridged to a hub chain. Once the collateral is deposited, the borrowed assets, like wrapped BNB, are bridged to Binance Smart Chain. You can explore the full implementation in this [cross-chain lending example repository](https://github.com/wormhole-foundation/example-wormhole-lending){target=_blank}. +#### Add Extra Menu Entry {: #add-extra-menu-entry } -Alternatively, you can also implement cross-chain lending using [Wormhole’s core messaging](/learn/messaging/native-token-transfers/){target=\_blank} instead of the Token Bridge, which avoids the limitations imposed by governor limits. ETH would be custodied on Ethereum, and BNB on the Binance spoke during this setup. When a user deposits ETH on Ethereum, a core bridge message is sent to the hub for accounting purposes. The hub then emits a message that can be redeemed on Binance to release the BNB. This approach allows for more direct asset control across chains while reducing reliance on Token Bridge limits. +By setting the `showHamburgerMenu` option to `false,` you can add extra links. The following properties are accessed through the `menu[]` property (e.g., `menu[].label`): -## What causes the "No protocols registered for Evm" error in Wormhole SDK? +| Property | Description | +|:--------:|:-------------------------------------------:| +| `label` | Link name to show up | +| `href` | Target URL or URN | +| `target` | Anchor standard target, by default `_blank` | +| `order` | Order where the new item should be injected | -This error typically occurs when the [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} cannot recognize or register the necessary EVM protocols, which are required for interacting with Ethereum-based networks. The most common reason for this error is that the relevant EVM package for Wormhole's NTT has not been imported correctly. +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -To resolve this issue, ensure you have imported the appropriate Wormhole SDK package for EVM environments. The necessary package for handling NTT on EVM chains is `@wormhole-foundation/sdk-evm-ntt`. Here's the correct import statement: +const config: WormholeConnectConfig = { + ui: { + showHamburgerMenu: false, + menu: [ + { + label: 'Advance Tools', + href: 'https://portalbridge.com', + target: '_self', + order: 1, + }, + ], + }, +}; -```rust -import '@wormhole-foundation/sdk-evm-ntt'; +function App() { + return ; +} ``` +--- END CONTENT --- -By importing this package, the Wormhole SDK can register and utilize the required protocols for EVM chains, enabling cross-chain token transfers using the NTT framework. Ensure to include this import at the start of your code, especially before attempting any interactions with EVM chains in your project. +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/index +--- BEGIN CONTENT --- +--- +title: Wormhole Connect +description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. +--- -## How can I transfer ownership of NTT to a multisig? +# Wormhole Connect -Transferring ownership of Wormhole's NTT to a multisig is a two-step process for safety. This ensures that ownership is not transferred to an address that cannot claim it. Refer to the `transfer_ownership` method in the [NTT Manager Contract](https://github.com/wormhole-foundation/native-token-transfers/blob/main/solana/programs/example-native-token-transfers/src/instructions/admin.rs#L16-L60){target=\_blank} to initiate the transfer. +## Configure Connect -1. **Initiate transfer** - use the `transfer_ownership` method on the NTT Manager contract to set the new owner (the multisig) -2. **Claim ownership** - the multisig must then claim ownership via the `claim_ownership` instruction. If not claimed, the current owner can cancel the transfer -3. **Single-step transfer (Riskier)** - you can also use the `transfer_ownership_one_step_unchecked` method to transfer ownership in a single step, but if the new owner cannot sign, the contract may become locked. Be cautious and ensure the new owner is a Program Derived Address (PDA) +Wormhole Connect is a flexible React widget that streamlines cross-chain asset transfers and enables seamless interoperability by leveraging Wormhole's powerful infrastructure. Designed for easy integration into decentralized applications (dApps), Wormhole Connect abstracts the complexities of cross-chain communication, providing a user-friendly experience for both developers and end users. -For a practical demonstration of transferring ownership of Wormhole's NTT to a multisig on Solana, visit the [GitHub demo](https://github.com/wormhole-foundation/demo-ntt-solana-multisig-tools){target=\_blank} providing scripts and guidance for managing an NTT program using Squads multisig functionality, including ownership transfer procedures. +This guide provides detailed instructions on configuring Wormhole Connect and highlights the many ways it can be customized to fit your specific needs, from integrating supported blockchains and tokens to tailoring the user interface. -## How can I specify a custom RPC for NTT? +!!! note + To upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/transfers/connect/upgrade/){target=\_blank} for instructions. -To specify a custom RPC for Wormhole's NTT, create an `overrides.json` file in the root of your deployment directory. This file allows you to define custom RPC endpoints, which can be helpful when you need to connect to specific nodes or networks for better performance, security, or control over the RPC connection. + If you're using an older version of Wormhole Connect (v0.x), please refer to the [v0.x configuration documentation](/docs/build/transfers/connect/configuration-v0/){target=\_blank}. -Below’s an example of how the `overrides.json` file should be structured: +
-???- code "`overrides.json`" - ```json - { - "chains": { - "Bsc": { - "rpc": "http://127.0.0.1:8545" - }, - "Sepolia": { - "rpc": "http://127.0.0.1:8546" - }, - "Solana": { - "rpc": "http://127.0.0.1:8899" - } - } - } - ``` +- :octicons-database-16:{ .lg .middle } **Data** -## How can I redeem tokens if NTT rate limits block them on the target chain? + --- -If the rate limits on Wormhole's NTT block tokens from being received on the target chain, the transaction will typically be paused until the rate limits are adjusted. Rate limits are implemented to manage congestion and prevent chain abuse, but they can occasionally delay token redemptions. + Learn how to configure the networks, tokens, and routes supported by Wormhole Connect. Set up RPC endpoints, whitelist tokens, and leverage multiple bridging protocols to meet your dApp's needs. -To resolve this: -1. **Adjust rate limits** - the rate limits must be modified by an administrator or through the appropriate configuration tools to allow the blocked transaction to proceed -2. **Resume transaction flow** - once the rate limits are adjusted, you can resume the flow, which should be visible in the UI. The tokens will then be redeemable on the target chain + [:custom-arrow: Get started](/docs/build/transfers/connect/configuration/configure-data/) -In most cases, the transaction will resume automatically once the rate limits are adjusted, and the UI will guide you through the redemption process. +- :octicons-apps-16:{ .lg .middle } **Theme** -## What are the challenges of deploying NTT to non-EVM chains? + --- -NTT requires the same transceiver for all routes, limiting flexibility when deploying across EVM and non-EVM chains. For example, if you're deploying to Ethereum, Arbitrum, and Solana, you can't use Wormhole and Axelar as transceivers because Axelar doesn't support Solana. This constraint forces integrators to use a single transceiver (e.g., Wormhole) for all chains, reducing flexibility in optimizing cross-chain transfers. + Discover how to style the Wormhole Connect widget to align with your brand. Customize colors, fonts, and UI elements to deliver a seamless user experience. -## Does the NTT manager function as an escrow account for a hub chain? + [:custom-arrow: Explore routes](/docs/build/transfers/connect/configuration/configure-theme/) -Yes, the NTT manager acts like an escrow account for non-transferable tokens on a hub chain. To manage non-transferable tokens, you would add the NTT manager to the allowlist, ensuring that only the NTT manager can hold and control the tokens as they are transferred across chains. +
+--- END CONTENT --- -## Which functions or events does Connect rely on for NTT integration? +Doc-Content: https://wormhole.com/docs/build/transfers/connect/faqs +--- BEGIN CONTENT --- +--- +title: Connect FAQs +description: Common questions and detailed answers about using Wormhole Connect, including supported assets, chains, customization, and integration options. +--- -Connect relies on the NTT SDK for integration, with platform-specific implementations for both [Solana](https://github.com/wormhole-foundation/native-token-transfers/blob/main/solana/ts/sdk/ntt.ts){target=\_blank} and [EVM](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/ts/src/ntt.ts){target=\_blank}. The key methods involved include: +# Wormhole Connect FAQs -- **Initiate and redeem functions** - these functions are essential for initiating token transfers and redeeming them on the destination chain -- **Rate capacity methods** - methods for fetching inbound and outbound rate limits are also critical for controlling the flow of tokens and preventing congestion +## What types of assets does Connect support? -These functions ensure Connect can handle token transfers and manage chain-rate limits. +Wormhole Connect supports both native and wrapped assets across all Wormhole-supported blockchains. This includes: -## How does the relayer contract determine which transceiver to call? + - Major stablecoins like USDT and USDC (via CCTP) + - Native gas tokens such as ETH, SOL, etc. + - Cross-chain asset swaps through integrators like Mayan -The source chain's transceiver includes the destination chain's transceiver in the message via the relayer contract. The admin configures each transceiver's mapping of its peers on other chains. This mapping allows the destination transceiver to verify that the message came from a trusted source. +When bridging assets through the Wormhole Token Bridge, depending on the chain and token, assets may arrive as Wormhole-wrapped tokens on the destination chain. -## How do I create a verifier or transceiver? +## What chains does Connect support? -To run your verifier, you need to implement a transceiver. This involves approximately 200 lines of code, leveraging the base functionality provided by the [abstract transceiver contract](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/Transceiver/Transceiver.sol){target=\_blank}. +Connect supports around 30 chains, spanning various blockchain runtimes: -For reference, you can review the [Axelar transceiver implementation](https://github.com/wormhole-foundation/example-wormhole-axelar-wsteth/blob/main/src/axelar/AxelarTransceiver.sol){target=\_blank}. + - EVM-based chains (Ethereum, Base, Arbitrum, BSC, etc.) + - Solana + - Move-based chains (Sui, Aptos) -## Can I use Hetzner for the NTT deployment? +For a complete list of supported chains, see the [Connect-supported chains list](/docs/build/transfers/connect/features/){target=\_blank}. -No, using Hetzner servers for Solana deployments is not recommended. Hetzner has blocked Solana network activity on its servers, leading to connection issues. Hetzner nodes will return a `ConnectionRefused: Unable to connect` error for Solana deployments. Therefore, choosing alternative hosting providers that support Solana deployments is advisable to ensure seamless operation. +## What is gas dropoff? -## How can I transfer tokens with NTT with an additional payload? +Gas dropoff allows users to receive gas for transaction fees on the destination chain, eliminating the need to acquire the native gas token from a centralized exchange. The relayer automatically swaps part of the transferred assets into the native gas token, enabling seamless entry into new ecosystems. -You can include an extra payload in NTT messages by overriding specific methods in the [NttManager contract](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol){target=\_blank}. +## Can I customize Connect inside my application? -- On the source chain, override the [`_handleMsg` function](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol#L216-L226){target=\_blank} to query any additional data you need for the transfer. The extra payload can then be added to the message -- On the destination chain override the [`_handleAdditionalPayload` function](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol#L262-L275){target=\_blank} to process and utilize the extra payload sent in the message +Connect can be [fully customized](https://connect-in-style.wormhole.com/){target=\_blank} to choose the chains and assets you wish to support. You may also select different themes and colors to tailor Connect for your decentralized application. For details, see the [GitHub readme](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}. -!!!Important - You cannot pass the additional data as part of the entry point directly. Instead, the data must be queried on-chain via the `_handleMsg` method, ensuring the payload is properly included and processed. +## Which functions or events does Connect rely on for NTT integration? -## Why use NTT over xERC20? +Connect relies on the NTT SDK for integration, with platform-specific implementations for Solana and EVM. The critical methods involved include initiate and redeem functions and rate capacity methods. These functions ensure Connect can handle token transfers and manage chain-rate limits. -Shortcomings of xERC20: +## Do integrators need to enable wallets like Phantom or Backpack in Wormhole Connect? -- **Single point of failure** - xERC20 relies on multiple bridges, but a compromise in any single bridge can jeopardize the token. It enforces a 1-of-n design rather than a more robust m-of-n approach -- **No pausing** - xERC20 lacks mechanisms to pause operations during emergencies -- **No access control** - there are no built-in access controls for managing token transfers securely -- **Limited rate limiting** - rate limits are bridge-specific and cannot be set per chain, reducing flexibility and security -- **No integration with relaying systems** - xERC20 does not natively support relayer systems, limiting its usability in automated or dynamic setups +Integrators don’t need to explicitly enable wallets like Phantom or Backpack in Wormhole Connect. However, the wallet must be installed and enabled in the user's browser to appear as an option in the interface. -While xERC20 is an extension of the ERC20 standard, NTT is designed as a framework rather than a rigid standard. It is compatible with any token that supports `burn` and `mint` functions and allows the NTT manager to act as a minter. +## Which function should be modified to set priority fees for Solana transactions? -## How can I start transferring tokens to a chain that is in burning mode, if no tokens are locked yet? +In [Wormhole Connect](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}, you can modify the priority fees for Solana transactions by updating the `computeBudget/index.ts` file. This file contains the logic for adjusting the compute unit limit and priority fees associated with Solana transactions. -To begin transferring tokens to a chain in burning mode when no tokens are locked, you must first send tokens to the NTT manager to back the supply. The address of the NTT manager can be found in the `deployment.json` file. +To control the priority fee applied to your transactions, you can modify the `feePercentile` and `minPriorityFee` parameters in the `addComputeBudget` and `determineComputeBudget` functions. + +The relevant file can be found in the Connect codebase: [`computeBudget/index.ts`](https://github.com/wormhole-foundation/wormhole-connect/blob/62f1ba8ee5502ac6fd405680e6b3816c9aa54325/sdk/src/contexts/solana/utils/computeBudget/index.ts){target=\_blank}. + +## Is there a minimum amount for bridging with CCTP or the Connect SDK? + +There is no minimum amount for bridging via CCTP if the user covers the gas fees on both the source and destination chains. However, if the transfer is automatically relayed, a minimum amount is required to cover relay fees on the destination chain. The relay provider charges these fees at cost. + +Current relay fees: + +- Ethereum L1: ~4.2 USDC +- Base, Optimism, Arbitrum, Avalanche: 0.3 USDC + +Additional notes: + +- **USDC to Solana** - Wormhole's native CCTP route does not currently support automatic relaying of USDC to Solana. However, you can transfer USDC to Solana using the [Mayan plugin](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} for the SDK. Mayan is a protocol that integrates Wormhole and CCTP to enable this functionality +- **Frontend integrations** + - **Connect** - A pre-built UI available via [@wormhole-foundation/wormhole-connect](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect){target=\_blank} + - **TypeScript SDK** - A lower-level integration option, available via [@wormhole-foundation/sdk](https://www.npmjs.com/package/@wormhole-foundation/sdk){target=\_blank}, allowing developers to build custom UIs + + !!!note + The TypeScript SDK was previously referred to as the "Connect SDK," but this naming has since been discontinued. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/index +Doc-Content: https://wormhole.com/docs/build/transfers/connect/features --- BEGIN CONTENT --- --- -title: Native Token Transfers (NTT) -description: This section provides comprehensive guidance on configuring, deploying, and managing your Native Token Transfers (NTT) integration. +title: Features +description: Explore a comprehensive Feature Support matrix and explain Wormhole's capabilities across networks for Token Bridge, CCTP, ETH Bridge, and more. --- -# Native Token Transfers +## Feature Support Matrix {: #feature-support-matrix} -## Get Started +*Scroll down for details about each column.* -This section provides comprehensive guidance on configuring, deploying, and managing your Native Token Transfers (NTT) integration. It includes information relevant to both new token deployments and existing token management. +| **Network** | **Token Bridge** | **Token Bridge Relayer** | **Circle CCTP** | **ETH Bridge** | **Gas Drop Off** | +|:-----------:|:----------------:|:------------------------:|:---------------:|:--------------:|:----------------:| +| Solana | ✅ | ✅ | ✅ | ❌ | ✅ | +| Ethereum | ✅ | ✅ | ✅ | ✅ | ✅ | +| BSC | ✅ | ✅ | ❌ | ✅ | ✅ | +| Polygon | ✅ | ✅ | ✅ | ✅ | ✅ | +| Avalanche | ✅ | ✅ | ✅ | ✅ | ✅ | +| Fantom | ✅ | ✅ | ❌ | ❌ | ✅ | +| Kaia | ✅ | ❌ | ❌ | ❌ | ❌ | +| Celo | ✅ | ✅ | ❌ | ❌ | ✅ | +| Moonbeam | ✅ | ✅ | ❌ | ❌ | ✅ | +| Injective | ✅ | ❌ | ❌ | ❌ | ❌ | +| Sui | ✅ | ✅ | ❌ | ❌ | ✅ | +| Aptos | ✅ | ❌ | ❌ | ❌ | ❌ | +| Arbitrum | ✅ | ✅ | ✅ | ✅ | ✅ | +| Optimism | ✅ | ✅ | ✅ | ✅ | ✅ | +| Base | ✅ | ✅ | ✅ | ✅ | ✅ | +| Sei | ✅ | ❌ | ❌ | ❌ | ❌ | +| Scroll | ✅ | ❌ | ❌ | ❌ | ❌ | +| Blast | ✅ | ❌ | ❌ | ❌ | ❌ | +| X Layer | ✅ | ❌ | ❌ | ❌ | ❌ | -
+## Feature Explanation {: #feature-explanation} -- :octicons-rocket-16:{ .lg .middle } **Deployment Process** +### Token Bridge {: #token-bridge} - --- +Wormhole is best known for its Token Bridge transfer method. It locks assets on the source chain and mints Wormhole-wrapped "IOU" tokens on the destination chain. To transfer the assets back, the Wormhole-wrapped tokens are burned, unlocking the tokens on their original chain. - Guidance on installation, deployment to EVM and Solana, and maintaining your NTT after deployment. +This route appears if both of the following conditions are satisfied: - [:custom-arrow: Start the deployment process](/docs/build/contract-integrations/native-token-transfers/deployment-process/) + - Both the origin and destination chains support Token Bridge + - No non-Token Bridge routes are available for the selected token -- :octicons-gear-16:{ .lg .middle } **Configure NTT** +### Token Bridge Relayer {: #token-bridge-relayer} - --- +On the [routes](/docs/build/transfers/connect/routes/){target=\_blank} page, this is referred to as the automatic route in the Token Bridge section. - Find information on configuring NTT, including guidance on setting Owner and Pauser access control roles and management of rate-limiting. +Trustless relayers can execute the second transaction on behalf of the user, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. - [:custom-arrow: Configure your NTT deployment](/docs/build/contract-integrations/native-token-transfers/configuration/) +This route appears if all of the following conditions are satisfied: -- :octicons-question-16:{ .lg .middle } **NTT FAQs** +- Both the origin and destination chains support Token Bridge +- Both the origin and destination chains support Token Bridge relayer +- No non-Token Bridge routes are available for the selected token +- The relayer supports the selected token on the origin chain - --- +### Circle CCTP {: #circle-cctp} - Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. +[Circle](https://www.circle.com/en/){target=\_blank}, the issuer of USDC, provides a native way for native USDC to be transferred between [CCTP-enabled](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank} chains. - [:custom-arrow: Check out the FAQs](/docs/build/contract-integrations/native-token-transfers/faqs/) +This route appears if all of the following conditions are satisfied: -
+- Both the origin and destination chains support Circle CCTP +- The selected token is native Circle-issued USDC + +### ETH Bridge {: #eth-bridge} + +[Powered by Uniswap liquidity pools](https://github.com/wormhole-foundation/example-uniswap-liquidity-layer){target=\_blank}, this route can transfer native ETH or wstETH between certain EVMs without going through the native bridges. + +This route appears if all of the following conditions are satisfied: + +- Both the origin and destination chains support the ETH Bridge +- The selected token is native ETH, wstETH, or canonical wETH + +### Gas Drop Off {: #gas-drop-off} + +A relayer can drop off some gas tokens on the destination chain by swapping some of the assets transferred to the native gas token. This is useful if the user wishes to transfer assets to a chain where they don't already have gas. This way, they don't need to onboard into the ecosystem from a centralized exchange. + +This route appears if all of the following conditions are satisfied: + +- Both the origin and destination chains support gas drop off +- An automatic route is selected +- The relayer accepts the selected token to swap into the gas token --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/contract-integrations/native-token-transfers/managers-transceivers +Doc-Content: https://wormhole.com/docs/build/transfers/connect/index --- BEGIN CONTENT --- --- -title: Managers and Transceivers -description: Explore the roles of Managers and Transceivers in NTT cross-chain token transfers, including key functions, lifecycle events, and rate-limiting mechanisms. +title: Wormhole Connect +description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. --- -# Managers and Transceivers +# Wormhole Connect -## Managers +## Get Started -_Managers_ oversee the token transfer process and handle rate-limiting and message attestation. They manage interactions with multiple transceivers and ensure that tokens are locked or burned on the source chain before being minted or unlocked on the destination chain. Each NTT manager corresponds to a single token but can control multiple transceivers. Key functions include: +Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. -- **`transfer`** - initiate the transfer process where tokens on the source chain are locked or burned. This process ensures that an equivalent amount of tokens can be minted or unlocked on the destination chain +
- ```solidity - function transfer( - uint256 amount, // amount (in atomic units) - uint16 recipientChain, // chain ID (Wormhole formatted) - bytes32 recipient // recipient address (Wormhole formatted) - ) external payable nonReentrant whenNotPaused returns (uint64) - ``` +- :octicons-code-square-16:{ .lg .middle } **Overview** -- **`quoteDeliveryPrice`** - calculate the cost of sending messages across chains by querying the transceivers for estimates on message delivery fees, allowing users to know the price before initiating a transfer + --- - ```solidity - function quoteDeliveryPrice( - uint16 recipientChain, // chain ID (Wormhole formatted) - bytes memory transceiverInstructions // extra instructions for transceivers (Transceiver-dependent on whether extra instructions are used/accepted) - ) public view returns (uint256[] memory, uint256) - ``` + Explore Wormhole Connect, the React widget that allows you to offer an easy-to-use UI for cross-chain asset transfers via Wormhole in a web application. -- **`setPeer`** - to maintain secure cross-chain communication, managers establish trust relationships between different instances of NTT manager contracts across chains. By recognizing each other as peers, they ensure that the token transfers happen securely and that rate limits on inbound transactions are respected + [:custom-arrow: Get started](/docs/build/transfers/connect/overview/) - ```solidity - function setPeer( - uint16 peerChainId, // chain ID (Wormhole formatted) - bytes32 peerContract, // peer NTT Manager address (Wormhole formatted) - uint8 decimals, // token decimals on the peer chain - uint256 inboundLimit // inbound rate limit (in atomic units) - ) public onlyOwner - ``` +- :octicons-code-16:{ .lg .middle } **Routes** -## Transceivers + --- -_Transceivers_ are responsible for routing NTT transfers through the manager on the source chain and ensuring they are delivered to the corresponding manager on the recipient chain. They work with managers to ensure that messages are accurately processed and tokens are correctly transferred, providing a reliable system for cross-chain token transfers. Transceivers can be defined independently of the Wormhole core and modified to support any verification backend. Key functions: + Explore Wormhole Connect's routing capabilities for asset transfers, featuring Token Bridge, CCTP, NTT, and various blockchain-specific routes for optimal UX. -- **`sendMessage`** - this external function sends token transfer messages to a specified recipient chain. It encodes the token transfer details into a message format recognized by the system + [:custom-arrow: Explore routes](/docs/build/transfers/connect/routes/) - ```solidity - function sendMessage( - uint16 recipientChain, // chain ID (Wormhole formatted) - TransceiverStructs.TransceiverInstruction memory instruction, // extra instruction for the Transceiver (optional, dependent on whether extra instructions are used/accepted for this Transceiver) - bytes memory nttManagerMessage, // serialized NTT Manager message, provided by the NTT Manager - bytes32 recipientNttManagerAddress, // NTT Manager address on the recipient chain (Wormhole formatted) - bytes32 refundAddress // address to receive refunds on the destination chain in case of excess quotes (Wormhole formatted) - ) external payable nonReentrant onlyNttManager - ``` +- :octicons-globe-16:{ .lg .middle } **Features** -- **`quoteDeliveryPrice`** - provides an estimation of the cost associated with delivering a message to a target chain and gauges transaction fees + --- + Learn which features of Connect are available for your network of choice. - ```solidity - function quoteDeliveryPrice( - uint16 targetChain, // chain ID (Wormhole formatted) - TransceiverStructs.TransceiverInstruction memory instruction // extra instruction for the Transceiver (optional, dependent on whether extra instructions are used/accepted for this Transceiver) - ) external view returns (uint256) - ``` + [:custom-arrow: Discover supported features](/docs/build/transfers/connect/features/) -## Lifecycle of a Message +- :octicons-pencil-16:{ .lg .middle } **Configuration** -### EVM + --- -#### Transfer + Configure Wormhole Connect for React or HTML, set themes, define tokens, networks, and customize RPC endpoints for enhanced blockchain interactions. -A client calls on `transfer` to initiate an NTT transfer. The client must specify, at minimum, the transfer amount, the recipient chain, and the recipient address on the recipient chain. `transfer` also supports a flag to specify whether the `NttManager` should queue rate-limited transfers or revert. Clients can also include additional instructions to forward along to the transceiver on the source chain. Depending on the mode set in the initial configuration of the `NttManager` contract, transfers are either "locked" or "burned." Once the transfer has been forwarded to the transceiver, the `NttManager` emits the `TransferSent` event. + [:custom-arrow: Configure for customization](/docs/build/transfers/connect/configuration/) -**Events** +- :octicons-question-16:{ .lg .middle } **Connect FAQs** -```ts -/// @notice Emitted when a message is sent from the nttManager. -/// @dev Topic0 -/// 0x9716fe52fe4e02cf924ae28f19f5748ef59877c6496041b986fbad3dae6a8ecf -/// @param recipient The recipient of the message. -/// @param amount The amount transferred. -/// @param fee The amount of ether sent along with the tx to cover the delivery fee. -/// @param recipientChain The chain ID of the recipient. -/// @param msgSequence The unique sequence ID of the message. -event TransferSent( - bytes32 recipient, uint256 amount, uint256 fee, uint16 recipientChain, uint64 msgSequence -); -``` + --- -#### Rate Limit + Find answers to common questions about Wormhole Connect, including supported assets, chains, and integration options. -A transfer can be rate-limited on both the source and destination chains. If a transfer is rate-limited on the source chain and the `shouldQueue` flag is enabled, it is added to an outbound queue. The transfer can be released after the configured `_rateLimitDuration` has expired via the `completeOutboundQueuedTransfer` method. The `OutboundTransferQueued` and `OutboundTransferRateLimited` events are emitted. + [:custom-arrow: Read Connect FAQs](/docs/build/transfers/connect/faqs/) -If the client attempts to release the transfer from the queue before the expiry of the `rateLimitDuration`, the contract reverts with an `OutboundQueuedTransferStillQueued` error. +
-Similarly, rate-limited transfers on the destination chain are added to an inbound queue. These transfers can be released from the queue via the `completeInboundQueuedTransfer` method, and the `InboundTransferQueued` event is emitted. +## Additional Resources -If the client attempts to release the transfer from the queue before the `rateLimitDuration` expires, the contract reverts with an `InboundQueuedTransferStillQueued` error. +
-To deactivate the rate limiter, set `_rateLimitDuration` to 0 and enable the `_skipRateLimiting` field in the `NttManager` constructor. Configuring this incorrectly will throw an error. If the rate limiter is deactivated, the inbound and outbound rate limits can be set to 0. +- :octicons-browser-16:{ .lg .middle } **Codeless Interface** -**Events** + --- -```ts -/// @notice Emitted whenn an outbound transfer is queued. -/// @dev Topic0 -/// 0x69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f. -/// @param queueSequence The location of the transfer in the queue. -event OutboundTransferQueued(uint64 queueSequence); -``` + Check out the codeless interface for an easy approach to styling and customizing a Connect widget for your multichain application. -```ts -/// @notice Emitted when an outbound transfer is rate limited. -/// @dev Topic0 -/// 0x754d657d1363ee47d967b415652b739bfe96d5729ccf2f26625dcdbc147db68b. -/// @param sender The initial sender of the transfer. -/// @param amount The amount to be transferred. -/// @param currentCapacity The capacity left for transfers within the 24-hour window. -event OutboundTransferRateLimited( - address indexed sender, uint64 sequence, uint256 amount, uint256 currentCapacity -); -``` + [:custom-arrow: Quickly get started](https://connect-in-style.wormhole.com/){target=\_blank} -```ts -/// @notice Emitted when an inbound transfer is queued -/// @dev Topic0 -/// 0x7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f3162. -/// @param digest The digest of the message. -event InboundTransferQueued(bytes32 digest); -``` +- :octicons-browser-16:{ .lg .middle } **A Live Example** -#### Send + --- -Once the `NttManager` forwards the message to the transceiver, the message is transmitted via the `sendMessage method`. The method signature is enforced by the transceiver but transceivers are free to determine their own implementation for transmitting messages. (e.g. a message routed through the Wormhole transceiver can be sent via Wormhole relaying, a custom relayer, or manually published via the core bridge). + View an example of the Wormhole Connect widget live in a production application. -Once the message has been transmitted, the contract emits the `SendTransceiverMessage` event. + [:custom-arrow: See Connect in action](https://portalbridge.com/){target=\_blank} -**Events** +
+--- END CONTENT --- -```ts -/// @notice Emitted when a message is sent from the transceiver. -/// @dev Topic0 -/// 0x53b3e029c5ead7bffc739118953883859d30b1aaa086e0dca4d0a1c99cd9c3f5. -/// @param recipientChain The chain ID of the recipient. -/// @param message The message. -event SendTransceiverMessage( - uint16 recipientChain, TransceiverStructs.TransceiverMessage message -); -``` +Doc-Content: https://wormhole.com/docs/build/transfers/connect/overview +--- BEGIN CONTENT --- +--- +title: Overview +description: Explore Wormhole Connect, the React widget that allows you to offer an easy-to-use UI for cross-chain asset transfers via Wormhole in a web application. +--- -#### Receive +# Wormhole Connect -Once a message has been emitted by a transceiver on the source chain, an off-chain process (for example, a relayer) will forward the message to the corresponding transceiver on the recipient chain. The relayer interacts with the transceiver via an entry point to receive messages. For example, the relayer will call the `receiveWormholeMessage` method on the `WormholeTransceiver` contract to execute the message. The `ReceiveRelayedMessage` event is emitted during this process. +## Introduction {: #introduction } -This method should also forward the message to the `NttManager` on the destination chain. Note that the transceiver interface doesn't declare a signature for this method because receiving messages is specific to each transceiver, and a one-size-fits-all solution would be overly restrictive. +Wormhole Connect is a React widget that lets developers offer an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. Check out the [Wormhole Connect GitHub repository](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}. -The `NttManager` contract allows an M of N threshold for transceiver attestations to determine whether a message can be safely executed. For example, if the threshold requirement is 1, the message will be executed after a single transceiver delivers a valid attestation. If the threshold requirement is 2, the message will only be executed after two transceivers deliver valid attestations. When a transceiver attests to a message, the contract emits the `MessageAttestedTo` event. +The [Wormhole TypeScript SDK](https://docs.wormhole.com/wormhole/reference/sdk-docs){target=\_blank} allows you to implement the same functionality as the Connect widget but in your own UI. Check out the docs for more information on using the SDK instead of Connect. -NTT implements replay protection, so if a given transceiver attempts to deliver a message attestation twice, the contract reverts with `TransceiverAlreadyAttestedToMessage` error. NTT also implements replay protection against re-executing messages. This check also acts as reentrancy protection as well. +## Features {: #features } -If a message has already been executed, the contract ends execution early and emits the `MessageAlreadyExecuted` event instead of reverting via an error. This mitigates the possibility of race conditions from transceivers attempting to deliver the same message when the threshold is less than the total number of available of transceivers (i.e. threshold < totalTransceivers) and notifies the client (off-chain process) so they don't attempt redundant message delivery. +Wormhole Connect is easy to customize to suit your application's needs. You can specify technical details like supported assets and custom RPCs or forgo customization and have a full-featured widget. The widget UI is highly customizable, with extensive styling options available, including a user-friendly no code styling interface for those who prefer a more visual approach to design. The features of Wormhole Connect include: -**Events** +- Multiple ways to bridge assets ([routes](/docs/build/transfers/connect/routes/){target=\_blank}) +- Extensive ways to style the UI (including the [no code styling interface](https://connect-in-style.wormhole.com/){target=\_blank}) +- Ways to [configure](/docs/build/transfers/connect/configuration/){target=\_blank} what feature set to offer +- Ability to configure any token to bridge via Wormhole +- [Ability to drop off some gas](/docs/build/transfers/connect/features/){target=\_blank} at the destination -```ts -/// @notice Emitted when a relayed message is received. -/// @dev Topic0 -/// 0xf557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475 -/// @param digest The digest of the message. -/// @param emitterChainId The chain ID of the emitter. -/// @param emitterAddress The address of the emitter. -event ReceivedRelayedMessage(bytes32 digest, uint16 emitterChainId, bytes32 emitterAddress); -``` +For more details about the features of Wormhole Connect and a breakdown of supported features by chain, be sure to check [the features page](/docs/build/transfers/connect/features/){target=\_blank}. -```ts -/// @notice Emitted when a message is received. -/// @dev Topic0 -/// 0xf6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0. -/// @param digest The digest of the message. -/// @param emitterChainId The chain ID of the emitter. -/// @param emitterAddress The address of the emitter. -/// @param sequence The sequence of the message. -event ReceivedMessage( - bytes32 digest, uint16 emitterChainId, bytes32 emitterAddress, uint64 sequence -); -``` +## Production DApp Examples {: #production-dapp-examples } -```ts -/// @notice Emitted when a message has already been executed to notify client of against retries. -/// @dev Topic0 -/// 0x4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2. -/// @param sourceNttManager The address of the source nttManager. -/// @param msgHash The keccak-256 hash of the message. -event MessageAlreadyExecuted(bytes32 indexed sourceNttManager, bytes32 indexed msgHash); -``` +Wormhole Connect is deployed live in several production apps. Here are a few: -#### Mint or Unlock +- [Portal Bridge](https://portalbridge.com/){target=\_blank} +- [Jupiter](https://jup.ag/onboard/cctp){target=\_blank} +- [Pancake Swap](https://bridge.pancakeswap.finance/wormhole){target=\_blank} -Once a transfer has been successfully verified, the tokens can be minted (if the mode is "burning") or unlocked (if the mode is "locking") to the recipient on the destination chain. Note that the source token decimals are bounded between `0` and `TRIMMED_DECIMALS` as enforced in the wire format. The transfer amount is untrimmed (scaled-up) if the destination chain token decimals exceed `TRIMMED_DECIMALS`. Once the appropriate number of tokens have been minted or unlocked to the recipient, the `TransferRedeemed` event is emitted. +## Integrate Connect {: #integrate-connect } -**Events** +### Import Directly into a React App {: #import-directly-into-a-react-app} -```ts -/// @notice Emitted when a transfer has been redeemed -/// (either minted or unlocked on the recipient chain). -/// @dev Topic0 -/// 0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91. -/// @param digest The digest of the message. -event TransferRedeemed(bytes32 indexed digest); +First, install the Wormhole Connect npm package. You can read more about the package by clicking on the following button: [![npm version](https://img.shields.io/npm/v/@wormhole-foundation/wormhole-connect.svg)](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect){target=\_blank} + +```bash +npm i @wormhole-foundation/wormhole-connect ``` -### Solana +Now you can import the React component: -#### Transfer +```ts +import WormholeConnect from '@wormhole-foundation/wormhole-connect'; -A client calls the `transfer_lock` or `transfer_burn` instruction based on whether the program is in `LOCKING` or `BURNING` mode. The program mode is set during initialization. When transferring, the client must specify the amount of the transfer, the recipient chain, the recipient address on the recipient chain, and the boolean flag `should_queue` to specify whether the transfer should be queued if it hits the outbound rate limit. If `should_queue` is set to false, the transfer reverts instead of queuing if the rate limit were to be hit. +function App() { + return ; +} +``` -!!! note - Using the wrong transfer instruction, i.e. `transfer_lock` for a program that is in `BURNING` mode, will result in an `InvalidMode` error. +### Use Hosted Version via CDN {: #use-hosted-version-via-cdn} -Depending on the mode and instruction, the following will be produced in the program logs: +If you're not using React, you can still embed Connect on your website by using the hosted version. This uses pre-built packages (which include React) served from NPM by jsdelivr.net. -```ts -Program log: Instruction: TransferLock -Program log: Instruction: TransferBurn -``` +???+ code "v1.x" + ```ts + import { wormholeConnectHosted } from '@wormhole-foundation/wormhole-connect'; -Outbound transfers are always added to an Outbox via the `insert_into_outbox` method. This method checks the transfer against the configured outbound rate limit amount to determine whether the transfer should be rate-limited. An `OutboxItem` is a Solana Account that holds details of the outbound transfer. The transfer can be released from the Outbox immediately if no rate limit is hit. The transfer can be released from the Outbox immediately unless a rate limit is hit, in which case it will only be released after the delay duration associated with the rate limit has expired. +// Existing DOM element where you want to mount Connect +const container = document.getElementById('bridge-container'); -#### Rate Limit +wormholeConnectHosted(container); + ``` -During the transfer process, the program checks rate limits via the `consume_or_delay` function. The Solana rate-limiting logic is equivalent to the EVM rate-limiting logic. +???- code "v0.x" + Simply copy and paste the following into your HTML body, and replace the ```INSERT_WORMHOLE_CONNECT_VERSION``` in the links with the most recent production version of Wormhole Connect. You can check what the most recent version is on [NPM](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/latest){target=\_blank}. -If the transfer amount fits within the current capacity: + ```html + +
-- Reduce the current capacity -- Refill the inbound capacity for the destination chain -- Add the transfer to the Outbox with `release_timestamp` set to the current timestamp, so it can be released immediately. + + + + ``` -If the transfer amount doesn't fit within the current capacity: + For example, for [0.3.13](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/0.3.13){target=\_blank}: -- If `shouldQueue = true`, add the transfer to the Outbox with `release_timestamp` set to the current timestamp plus the configured `RATE_LIMIT_DURATION`. -- If `shouldQueue = false`, revert with a `TransferExceedsRateLimit` error + ```html + +
-#### Send + + + + ``` -The caller then needs to request each transceiver to send messages via the `release_outbound` instruction. To execute this instruction, the caller needs to pass the account of the Outbox item to be released. The instruction will then verify that the transceiver is one of the specified senders for the message. Transceivers then send the messages based on the verification backend they are using. +!!! note + It is important to periodically update your Wormhole Connect instance to the latest version, as there are frequent functionality and security releases. -For example, the Wormhole transceiver will send by calling `post_message` on the Wormhole program, so that the Wormhole Guardians can observe and verify the message. +## Configuration {: #configuration} -!!! note - When `revert_on_delay` is true, the transaction will revert if the release timestamp hasn't been reached. When `revert_on_delay` is false, the transaction succeeds, but the outbound release isn't performed. +This is just an overview of what's possible. Check the [Configuration docs](/docs/build/transfers/connect/configuration/){target=\_blank} for details about all the configuration options. -The following will be produced in the program logs: +The default configuration of Wormhole Connect may not be exactly what you're looking for. You may want to: -```ts -Program log: Instruction: ReleaseOutbound -``` + - Use custom styles + - Restrict the chains that you allow in your app + - Add support for your project's token, and eliminate tokens you don't want to reduce noise + - Configuring custom RPC URLs (This is highly recommended as default public RPCs are heavily throttled) + - Restrict the [routes](/docs/build/transfers/connect/routes/){target=\_blank} that are available -#### Receive +For additional information on the preceding options, check the [configuration options](/docs/build/transfers/connect/configuration/){target=\_blank} and customize your widget however you like. +--- END CONTENT --- -Similar to EVM, transceivers vary in how they receive messages since message relaying and verification methods may differ between implementations. +Doc-Content: https://wormhole.com/docs/build/transfers/connect/routes +--- BEGIN CONTENT --- +--- +title: Routes +description: Explore Wormhole Connect's routing capabilities for asset transfers, featuring Token Bridge, CCTP, NTT, and various blockchain-specific routes for optimal UX. +--- -The Wormhole transceiver receives a verified Wormhole message on Solana via the `receive_message` entrypoint instruction. Callers can use the `receive_wormhole_message` Anchor library function to execute this instruction. The instruction verifies the Wormhole Verified Action Approvals (VAAs) and stores it in a `VerifiedTransceiverMessage` account. +## Routes Overview {: #routes-overview} -The following will be produced in the program logs: +This page explains the concept of routes in Wormhole Connect. To configure routes for your widget, check the [Wormhole Connect Configuration](/docs/build/transfers/connect/configuration/){target=\_blank}. -```ts -Program log: Instruction: ReceiveMessage -``` +Routes are methods by which the widget will transfer the assets. Wormhole Connect supports Token Bridge transfers for any arbitrary token, and for specific tokens, it also supports more advanced transfer methods that provide superior UX. -`redeem` checks the inbound rate limit and places the message in an Inbox. Logic works the same as the outbound rate limit mentioned previously. +When you select the source chain, source token, and destination chain, Wormhole Connect will display the best routes available for that particular combination. In practice, if routes other than the Token Bridge are available, only those will be displayed. Check the [feature matrix](/docs/build/transfers/connect/features/){target=\_blank} to see under which exact conditions the routes appear. -The following will be produced in the program logs: +## Token Bridge Routes {: #token-bridge-routes} -```ts -Program log: Instruction: Redeem -``` +The Token Bridge is Wormhole's best-known transfer method. It locks assets on the source chain and mints Wormhole-wrapped "IOU" tokens on the destination chain. To transfer the assets back, the Wormhole-wrapped tokens are burned, unlocking the tokens on their original chain. -#### Mint or Unlock +#### Manual Route {: #manual-route} -The inbound transfer is released and the tokens are unlocked or minted to the recipient through either `release_inbound_mint` if the mode is `BURNING`, or `release_inbound_unlock` if the mode is `LOCKING`. Similar to transfer, using the wrong transfer instruction (such as `release_inbound_mint` for a program that is in locking mode) will result in `InvalidMode` error. +The manual route transfer method requires two transactions: one on the origin chain to lock the tokens (or burn the Wormhole-wrapped tokens) and one on the destination chain to mint the Wormhole-wrapped tokens (or unlock the original tokens). To offer this option, enable the `bridge` route in the configuration. -!!! note - When `revert_on_delay` is true, the transaction will revert if the release timestamp hasn't been reached. When `revert_on_delay` is false, the transaction succeeds, but the minting/unlocking isn't performed. +#### Automatic Route {: #automatic-route} -Depending on the mode and instruction, the following will be produced in the program logs: +Trustless relayers can execute the second transaction on the user's behalf, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically - for a small fee. Wormhole Connect automatically detects whether the relayer supports a token and will display the option if the `relay` route is enabled in the configuration. -```ts -Program log: Instruction: ReleaseInboundMint -Program log: Instruction: ReleaseInboundUnlock -``` ---- END CONTENT --- +## CCTP Routes (USDC) {: #cctp-routes-usdc} + +[Circle](https://www.circle.com/en/){target=\_blank}, the issuer of USDC, provides a native way for native USDC to be transferred between [CCTP-enabled](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank} chains. Wormhole Connect can facilitate such transfers. -Doc-Content: https://wormhole.com/docs/build/contract-integrations/wormhole-relayers ---- BEGIN CONTENT --- ---- -title: Wormhole-Deployed Relayers -description: Learn about the Wormhole-deployed relayer configuration for seamless cross-chain messaging between contracts on different EVM blockchains without off-chain deployments. ---- +Note that if native USDC is transferred from the CCTP-enabled chains to any other outside of this list, the transfer will be routed through the Token Bridge, and the resulting asset will be a Wormhole-wrapped token instead of native USDC. -# Wormhole Relayer +#### Manual Route {: #manual-route-cctp} -## Introduction +This transfer method requires two transactions: one on the origin chain to burn the USDC and one on the destination chain to mint the USDC. The manual CCTP route relies on CCTP only and doesn't use Wormhole messaging in the background. Enable the `cctpManual` route in the configuration to offer this option. -The Wormhole-deployed relayers provide a mechanism for contracts on one blockchain to send messages to contracts on another without requiring off-chain infrastructure. Through the Wormhole relayer module, developers can use an untrusted delivery provider to transport VAAs, saving the need to build and maintain custom relaying solutions. The option to [run a custom relayer](/docs/infrastructure/relayers/run-relayer/) is available for more complex needs. +#### Automatic Route {: #automatic-route-cctp} -This section covers the components and interfaces involved in using the Wormhole relayer module, such as message sending and receiving, delivery guarantees, and considerations for building reliable and efficient cross-chain applications. Additionally, you'll find details on how to handle specific implementation scenarios and track message delivery progress using the Wormhole CLI tool. +Trustless relayers can execute the second transaction on the user's behalf. Therefore, the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. To offer this option, enable the `cctpRelay` route in the configuration. -## Get Started with the Wormhole Relayer +## Native Token Transfers (NTT) Routes {: #native-token-transfers-ntt-routes} -Before getting started, it's important to note that the Wormhole-deployed relayer configuration is currently **limited to EVM environments**. The complete list of EVM environment blockchains is on the [Supported Networks](/docs/build/start-building/supported-networks/) page. +[Wormhole's Native Token Transfer (NTT) framework](https://github.com/wormhole-foundation/native-token-transfers/){target=\_blank} enables token issuers to retain full ownership of their tokens across any number of chains, unlike the Token Bridge. The token issuer must deploy NTT contracts, and Wormhole Connect needs to be [configured](/docs/build/transfers/connect/configuration/){target=\_blank} with the appropriate `nttGroups` before such tokens are recognized as transferrable via NTT. Refer to the [documentation in the NTT repository](https://github.com/wormhole-foundation/native-token-transfers?tab=readme-ov-file#overview){target=\_blank} for more information about the contracts needed and the framework in general. -To interact with the Wormhole relayer, you'll need to create contracts on the source and target chains to handle the sending and receiving of messages. No off-chain logic needs to be implemented to take advantage of Wormhole-powered relaying. +#### Manual Route {: #manual-route-ntt} -
- ![Wormhole Relayer](/docs/images/build/contract-integrations/wormhole-relayers/relayer-1.webp) -
The components outlined in blue must be implemented.
-
+This transfer method requires two transactions: one on the origin chain to burn or lock the tokens and one on the destination chain to mint them. To offer this option, enable the `nttManual` route in the configuration. -### Wormhole Relayer Interfaces +#### Automatic Route {: #automatic-route-ntt} -There are three relevant interfaces to discuss when utilizing the Wormhole relayer module: +Trustless relayers can execute the second transaction on the user's behalf, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. Wormhole Connect automatically detects whether the relayer supports a token and will display the option if the `nttRelay` route is enabled in the configuration. -- [**`IWormholeRelayer`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IWormholeRelayer.sol){target=\_blank} - the primary interface by which you send and receive messages. It allows you to request the sending of messages and VAAs -- [**`IWormholeReceiver`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IWormholeReceiver.sol){target=\_blank} - this is the interface you are responsible for implementing. It allows the selected delivery provider to deliver messages/VAAs to your contract -- [**`IDeliveryProvider`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IDeliveryProvider.sol){target=\_blank} - this interface represents the delivery pricing information for a given relayer network. Each delivery provider implements this on every blockchain they support delivering from +## ETH Bridge Route for Native ETH and wstETH {: #eth-bridge-route-for-native-eth-and-wsteth} -## Interact with the Wormhole Relayer - -To start interacting with the Wormhole relayer in your contracts, you'll need to import the `IWormholeRelayer` interface and set up a reference using the contract address to the Wormhole-deployed relayer on the supported network of your choice. +[Powered by Uniswap liquidity pools](https://github.com/wormhole-foundation/example-uniswap-liquidity-layer){target=\_blank}, this route can transfer native ETH or wstETH between certain EVMs without going through the native bridges. For example, you can transfer native ETH from Arbitrum to Optimism and end up with Optimism ETH all in one go. Supported chains are Ethereum, Arbitrum, Optimism, Base, Polygon (canonical wETH), BSC (canonical wETH), and Avalanche (canonical wETH). -To easily integrate with the Wormhole relayer interface, you can use the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank}. +#### Automatic Route {: #automatic-route-eth} -To retrieve the contract address of the Wormhole relayer, refer to the Wormhole relayer section on the [Contract Addresses](/docs/build/reference/contract-addresses/#wormhole-relayer) reference page. +Only the relayed route is available due to the complexity of the transaction that needs to be executed at the destination. To offer this option, enable the `ethBridge` and/or `wstETHBridge` route in the configuration to provide this option. -Your initial set up should resemble the following: +## USDT Bridge Route {: #usdt-bridge-route} -```solidity -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.26; +Operating on the same technology as the ETH Bridge, this route can transfer USDT between certain EVMs without going through the native bridges. The resulting token will be the canonical USDT token on the destination instead of the Wormhole-wrapped variant. Supported chains are Ethereum, Polygon, Avalanche, Arbitrum, Optimism, BSC, and Base. -import "wormhole-solidity-sdk/interfaces/IWormholeRelayer.sol"; +#### Automatic Route {: #automatic-route-usdt} -contract Example { - IWormholeRelayer public wormholeRelayer; +Only the relayed route is available due to the complexity of the transaction that needs to be executed on the destination. Enable the `usdtBridge` route in the configuration to offer this option. - constructor(address _wormholeRelayer) { - wormholeRelayer = IWormholeRelayer(_wormholeRelayer); - } -} -``` +## tBTC Route {: #tbtc-route} -The code provided sets up the basic structure for your contract to interact with the Wormhole relayer using the address supplied to the constructor. By leveraging methods from the `IWormholeRelayer` interface, you can implement message sending and receiving functionalities. The following sections will detail the specific methods you need to use for these tasks. +You can bridge [Threshold's Bitcoin](https://threshold.network/){target=\_blank} via this hybrid solution that combines the Token Bridge and Threshold's contracts. Native tBTC is first locked in the Wormhole Token Bridge, transferred to the destination in the form of Wormhole-wrapped tBTC, which is then immediately locked in Threshold's contract that mints native tBTC for it. The net result is that the user ends up with native tBTC on chains where this Threshold contract is deployed (e.g., Solana, Polygon, Arbitrum, Optimism, or Base). -### Send a Message +Note that if native tBTC is transferred out of these chains to any other outside of this list, the transfer will be routed through the Token Bridge, and the resulting asset will be a Wormhole-wrapped token instead of native tBTC. -To send a message to a contract on another EVM chain, you can call the `sendPayloadToEvm` method provided by the `IWormholeRelayer` interface. +#### Manual Route {: #manual-route-tbtc} -```solidity -function sendPayloadToEvm( - // Chain ID in Wormhole format - uint16 targetChain, - // Contract Address on target chain we're sending a message to - address targetAddress, - // The payload, encoded as bytes - bytes memory payload, - // How much value to attach to the delivery transaction - uint256 receiverValue, - // The gas limit to set on the delivery transaction - uint256 gasLimit -) external payable returns ( - // Unique, incrementing ID, used to identify a message - uint64 sequence -); -``` +This transfer method requires two transactions: one on the origin chain to burn or lock the tokens and one on the destination chain to mint them. To provide this option, enable the `tbtc` route in the configuration. +--- END CONTENT --- -The `sendPayloadToEvm` method is marked `payable` to receive fee payment for the transaction. The value to attach to the invocation is determined by calling the `quoteEVMDeliveryPrice`, which provides an estimate of the cost of gas on the target chain. +Doc-Content: https://wormhole.com/docs/build/transfers/connect/upgrade +--- BEGIN CONTENT --- +--- +title: Wormhole Connect v1.0 Migration Guide +description: Learn how to migrate to Wormhole Connect v1.0, with step-by-step guidance on updating your package and configuration. +--- -```solidity -function quoteEVMDeliveryPrice( - // Chain ID in Wormhole format - uint16 targetChain, - // How much value to attach to delivery transaction - uint256 receiverValue, - // The gas limit to attach to the delivery transaction - uint256 gasLimit -) external view returns ( - // How much value to attach to the send call - uint256 nativePriceQuote, - uint256 targetChainRefundPerGasUnused -); -``` +# Wormhole Connect v1.0 Migration Guide -This method should be called before sending a message, and the value returned for `nativePriceQuote` should be attached to the call to send the payload to cover the transaction's cost on the target chain. +## Overview -In total, sending a message across EVM chains can be as simple as getting a fee quote and sending the message as follows: +The Wormhole Connect feature has been updated to **version 1.0**, introducing a modernized design and improved routing for faster native-to-native token transfers. This stable release comes with several breaking changes in how to configure the application, requiring minor updates to your integration. -```solidity -// Get a quote for the cost of gas for delivery -(cost, ) = wormholeRelayer.quoteEVMDeliveryPrice( - targetChain, - valueToSend, - GAS_LIMIT -); +This guide will help you migrate to the new version in just a few simple steps. By following this migration guide, you'll learn how to: -// Send the message -wormholeRelayer.sendPayloadToEvm{value: cost}( - targetChain, - targetAddress, - abi.encode(payload), - valueToSend, - GAS_LIMIT -); -``` + - Update to the latest Connect package + - Apply configuration changes to the **`WormholeConnectConfig`** object + - Understand new routing capabilities and plugin options -### Receive a Message +These updates ensure better performance and a smoother integration experience. -To receive a message using a Wormhole relayer, the target contract must implement the [`IWormholeReceiver`](https://github.com/wormhole-foundation/wormhole-relayer-solidity-sdk/blob/main/src/interfaces/IWormholeReceiver.sol){target=\_blank} interface, as shown in the [previous section](#interacting-with-the-wormhole-relayer). +For complete documentation on the previous version of Wormhole Connect, please refer to the [Wormhole Connect guide](/docs/build/transfers/connect/){target=\_blank}. -```solidity -function receiveWormholeMessages( - bytes memory payload, // Message passed by source contract - bytes[] memory additionalVaas, // Any additional VAAs that are needed (Note: these are unverified) - bytes32 sourceAddress, // The address of the source contract - uint16 sourceChain, // The Wormhole chain ID - bytes32 deliveryHash // A hash of contents, useful for replay protection -) external payable; -``` +## Update the Connect Package -The logic inside the function body may be whatever business logic is required to take action on the specific payload. +To begin the migration process, update the Wormhole Connect [**npm package**](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/1.0.0-beta.6-development?activeTab=readme){target=\_blank} to the latest version 1.0. Updating to the latest version provides access to the newest features and improvements, including the modernized design and enhanced routing capabilities. -## Delivery Guarantees +Run the following command in your terminal: -The Wormhole relayer protocol is intended to create a service interface whereby mutually distrustful integrators and delivery providers can work together to provide a seamless dApp experience. You don't trust the delivery providers with your data, and the delivery providers don't trust your smart contract. The primary agreement between integrators and delivery providers is that when a delivery is requested, the provider will attempt to deliver the VAA within the provider's stated delivery timeframe. +```bash +npm install @wormhole-foundation/wormhole-connect@^1.0 +``` -This creates a marketplace whereby providers can set different price levels and service guarantees. Delivery providers effectively accept the slippage risk premium of delivering your VAAs in exchange for a set fee rate. Thus, the providers agree to deliver your messages even if they do so at a loss. +This command installs the latest stable version of Wormhole Connect and prepares your environment for the new configuration changes. -Delivery providers should set their prices such that they turn a profit on average but not necessarily on every single transfer. Thus, some providers may choose to set higher rates for tighter guarantees or lower rates for less stringent guarantees. +## Update the `WormholeConnectConfig` Object -## Delivery Statuses +In version 1.0, the `WormholeConnectConfig` object underwent several breaking changes. Most of these changes are minor and can be applied quickly. Below is a summary of the key changes, followed by detailed examples. -All deliveries result in one of the following four outcomes before the delivery provider's delivery timeframe. When they occur, these outcomes are emitted as EVM events from the Wormhole relayer contract. The four possible outcomes are: +### Summary of Breaking Changes -- (0) Delivery Success -- (1) Receiver Failure -- (2) Forward Request Success -- (3) Forward Request Failure +- Chain names are now capitalized: `solana` → `Solana` +- `env` renamed to `network` and is now capitalized: `mainnet` → `Mainnet` +- `networks` renamed to `chains`, with capitalized names +- `routes` updated to use route plugins +- `nttGroups` removed in favor of route plugin configuration +- `tokensConfig` updated, with a new key `wrappedTokens` added +- Many UI-related properties consolidated under a top-level `ui` key +- `customTheme` and `mode` were removed, replaced by a top-level `theme` property -A receiver failure is a scenario in which the selected provider attempted the delivery but it could not be completely successfully. The three possible causes for a delivery failure are: +These changes are explained in more detail below, with examples for easy reference. -- The target contract does not implement the `IWormholeReceiver` interface -- The target contract threw an exception or reverted during the execution of `receiveWormholeMessages` -- The target contract exceeded the specified `gasLimit` while executing `receiveWormholeMessages` +### Capitalize Chain Names -All three of these scenarios can be avoided with correct design by the integrator, and thus, it is up to the integrator to resolve them. Any other scenario that causes a delivery to not be performed should be considered an outage by some component of the system, including potentially the blockchains themselves. +In version 1.0, chain names are now consistent with the `Chain` type from the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank}, and must be capitalized. This affects all config properties where a chain is referenced, including `rpcs`, `rest`, `graphql`, and `chains`. -`Forward Request Success` and `Forward Failure` represent when the delivery succeeded and the user requested a forward during the delivery. If the user has enough funds left over as a refund to complete the forward, the forward will be executed, and the status will be `Forward Request Success`. Otherwise, it will be `Forward Request Failure`. +=== "v0.x" -## Other Considerations + ```typescript + const config: WormholeConnectConfig = { + rpcs: { + ethereum: 'INSERT_ETH_RPC_URL', + solana: 'INSERT_SOLANA_RPC_URL', + }, + }; + ``` +=== "v1.x" -Some implementation details should be considered during development to ensure safety and a pleasant UX. Ensure that your engineering efforts have appropriately considered each of the following areas: + ```typescript + const config: WormholeConnectConfig = { + rpcs: { + Ethereum: 'INSERT_ETH_RPC_URL', + Solana: 'INSERT_SOLANA_RPC_URL', + }, + }; + ``` -- Receiving a message from a relayer -- Checking for expected emitter -- Calling `parseAndVerify` on any additional VAAs -- Replay protection -- Message ordering (no guarantees on order of messages delivered) -- Forwarding and call chaining -- Refunding overpayment of `gasLimit` -- Refunding overpayment of value sent +You can find the complete list of supported chain names in the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/fa4ba4bc349a7caada809f209090d79a3c5962fe/core/base/src/constants/chains.ts#L12-L66){target=\_blank}. -## Track the Progress of Messages with the Wormhole CLI +### Rename `env` to `network` -While no off-chain programs are required, a developer may want to track the progress of messages in flight. To track the progress of messages in flight, use the [Wormhole CLI](/docs/build/toolkit/cli/) tool's `status` subcommand. As an example, you can use the following commands to track the status of a transfer by providing the environment, origin network, and transaction hash to the `worm status` command: +The `env` property has been renamed to `network`, with capitalized values. This change affects how you configure Testnet and Mainnet environments. -=== "Mainnet" +=== "v0.x" - ```bash - worm status mainnet ethereum INSERT_TRANSACTION_HASH + ```typescript + const config: WormholeConnectConfig = { + env: 'testnet', + }; ``` +=== "v1.x" -=== "Testnet" - - ```bash - worm status testnet ethereum INSERT_TRANSACTION_HASH + ```typescript + const config: WormholeConnectConfig = { + network: 'Testnet', + }; ``` -See the [Wormhole CLI tool docs](/docs/build/toolkit/cli/) for installation and usage. +If you don’t explicitly set the `network` value, Connect will default to `Mainnet`. -## Step-by-Step Tutorial +```typescript +// Defaults to Mainnet +const config: WormholeConnectConfig = {}; +``` -For detailed, step-by-step guidance on creating cross-chain contracts that interact with the Wormhole relayer, refer to the [Create Cross-Chain Contracts](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/) tutorial. ---- END CONTENT --- +For more information, refer to the [network constants list](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/base/src/constants/networks.ts){target=\_blank}. -Doc-Content: https://wormhole.com/docs/build/index ---- BEGIN CONTENT --- ---- -title: Build with Wormhole -description: Learn how to start building multichain solutions on Wormhole, with tips to get started, an overview of the toolkit, and an introduction to the protocols. -template: root-index-page.html ---- +### Rename `networks` to `chains` -# Build +The `networks` property, which allowed whitelisting chains, is now renamed `chains`, and the chain names are capitalized. -## Get Started +=== "v0.x" -Whether you’re developing front-end applications using Wormhole's application-layer tools or building smart contract integrations on top of Wormhole’s messaging protocols, learn how Wormhole can help you achieve seamless, multichain interoperability. + ```typescript + const config: WormholeConnectConfig = { + networks: ['solana', 'ethereum'], + }; + ``` +=== "v1.x" -
+ ```typescript + const config: WormholeConnectConfig = { + chains: ['Solana', 'Ethereum'], + }; + ``` -- :octicons-tools-16:{ .lg .middle } **Start Building** +### Update `routes` to Use Route Plugins - --- +The `routes` property in Wormhole Connect version 1.0 has significantly improved. Previously, `routes` was a simple array of strings. The latest version has been transformed into a flexible plugin system, allowing you to include specific routes for various protocols. - Get equipped with everything you need to start developing with Wormhole, including an overview of supported networks and a list of demo projects. +By default, if no `routes` property is set, Wormhole Connect will provide routes for two core protocols: - [:custom-arrow: Get started](/docs/build/start-building/) + - [Wormhole Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} + - [CCTP](/docs/learn/transfers/cctp/){target=\_blank} -- :octicons-browser-16:{ .lg .middle } **Build Frontend Applications** +For most use cases, integrators require more than the default routes. The new `routes` property allows you to specify which protocols to include and exclude any routes unnecessary for your application, including both default and third-party routes. - --- +#### Available `route` Plugins - Learn how tools like Queries, Wormhole Connect, and the Wormhole SDK come together to build applications with seamless interoperability. +The `@wormhole-foundation/wormhole-connect` package offers a variety of `route` plugins to give you flexibility in handling different protocols. You can choose from the following `route` exports for your integration: - [:custom-arrow: Build applications](/docs/build/applications/) +???- tip "`route` Plugins" + - **`TokenBridgeRoute`** - manually redeemed Wormhole Token Bridge route + - **`AutomaticTokenBridgeRoute`** - automatically redeemed (relayed) Token Bridge route + - **`CCTPRoute`** - manually redeemed CCTP route + - **`AutomaticCCTPRoute`** - automatically redeemed (relayed) CCTP route + - **`DEFAULT_ROUTES`** - array containing the four preceding routes (TokenBridgeRoute, AutomaticTokenBridgeRoute, CCTPRoute, AutomaticCCTPRoute) + - **`nttAutomaticRoute(nttConfig)`** - function that returns the automatically-redeemed (relayed) Native Token Transfer (NTT) route + - **`nttManualRoute(nttConfig)`** - function that returns the manually-redeemed NTT route + - **`nttRoutes(nttConfig)`** - function that returns both NTT routes as an array + - **`MayanRoute`** - route that offers multiple Mayan protocols + - **`MayanRouteSWIFT`** - route for Mayan’s Swift protocol only + - **`MayanRouteMCTP`** - route for Mayan’s MCTP protocol only + - **`MayanRouteWH`** - route for Mayan’s original Wormhole transfer protocol -- :octicons-file-code-16:{ .lg .middle } **Build Contract Integrations** +In addition to these routes, developers can create custom routes for their own Wormhole-based protocols. For examples, refer to the [NTT](https://github.com/wormhole-foundation/native-token-transfers/tree/main/sdk/route){target=\_blank} and the [Mayan](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} example GitHub repositories. - --- +For further details on the Route plugin interface, refer to the [Wormhole TypeScript SDK route code](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/route.ts){target=\_blank}. - Begin your journey by creating smart contracts that harness the power of Wormhole's advanced messaging protocols. +Now that you know the available `route` plugins, let's explore some examples of configuring them. - [:custom-arrow: Build contract integrations](/docs/build/contract-integrations/) +#### Example: Offer Only CCTP Transfers -- :octicons-gear-16:{ .lg .middle } **Toolkit** +To configure Wormhole Connect to offer only USDC transfers via the CCTP route, use the following configuration: - --- +```typescript +import WormholeConnect, { + AutomaticCCTPRoute, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; - Discover essential developer tools for managing and sending cross-chain transfers, including the Wormholescan explorer, Wormhole CLI, Wormhole SDKs, and more. +const config: WormholeConnectConfig = { + routes: [AutomaticCCTPRoute], +}; - [:custom-arrow: Discover tools](/docs/build/toolkit/) +; +``` -- :octicons-book-16:{ .lg .middle } **Reference** +#### Example: Offer All Default Routes and Third-Party Plugins - --- +In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge & CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/transfers/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. - Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and consistency levels for Guardians. +```typescript +import WormholeConnect, { + DEFAULT_ROUTES, + nttRoutes, + MayanRouteSWIFT, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; - [:custom-arrow: Explore reference](/docs/build/reference/) +import { myNttConfig } from './consts'; // Custom NTT configuration -
---- END CONTENT --- +const config: WormholeConnectConfig = { + routes: [...DEFAULT_ROUTES, ...nttRoutes(myNttConfig), MayanRouteSWIFT], +}; -Doc-Content: https://wormhole.com/docs/build/reference/chain-ids ---- BEGIN CONTENT --- ---- -title: Chain IDs -description: This page documents the Wormhole-specific chain IDs for each chain and contrasts them to the more commonly referenced EVM chain IDs originating in EIP-155. ---- +; +``` -# Chain IDs +This flexible plugin allows you to combine default routes (such as Token Bridge and CCTP) with third-party protocols, offering complete control over which routes are available in your application. -The following table documents the chain IDs used by Wormhole and places them alongside the more commonly referenced [EVM Chain IDs](https://chainlist.org/){target=\_blank}. +### Update the `tokensConfig` Structure -!!! note - Please note, Wormhole chain IDs are different than the more commonly referenced EVM [chain IDs](https://eips.ethereum.org/EIPS/eip-155){target=\_blank}, specified in the Mainnet and Testnet ID columns. +In Wormhole Connect version 1.0, the `tokensConfig` property has been updated to simplify the structure and improve flexibility for token handling across chains. The previous configuration has been streamlined, and a new key, `wrappedTokens,` has been introduced to handle foreign assets more effectively. - - +Key Changes to `tokensConfig`: -=== "Mainnet" + - **Capitalized chain names** - all chain names, like `ethereum`, must now be capitalized, such as `Ethereum`, to maintain consistency with the rest of the Wormhole SDK + - **`wrappedTokens`** - this new key replaces `foreignAssets` and defines the wrapped token addresses on foreign chains, making it easier to manage cross-chain transfers. It consolidates the wrapped token addresses into a cleaner structure. These addresses must be specified to enable token transfers to and from the foreign chain via token bridge routes + - **Simplified decimals** - instead of using a map of decimal values for different chains, you now only need to provide a single decimals value for the token's native chain -
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Hyperliquid50000998
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Monad48
Moonbeam161284
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Rootstock3330
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
+=== "v0.x" -=== "Testnet" + In the old structure, the `foreignAssets` field defined the token’s presence on other chains, and `decimals` were mapped across multiple chains. -
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Hyperliquid50000
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Rootstock3331
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
+ ```typescript + import WormholeConnect, { + WormholeConnectConfig, + } from '@wormhole-foundation/wormhole-connect'; - ---- END CONTENT --- + const config: WormholeConnectConfig = { + tokensConfig: { + WETH: { + key: 'WETH', + symbol: 'WETH', + nativeChain: 'ethereum', + icon: Icon.ETH, + tokenId: { + chain: 'ethereum', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + coinGeckoId: 'ethereum', + color: '#62688F', + decimals: { Ethereum: 18, default: 8 }, + foreignAssets: { + Solana: { + address: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', + decimals: 8, + }, + }, + }, + }, + }; + ``` +=== "v1.x" -Doc-Content: https://wormhole.com/docs/build/reference/consistency-levels ---- BEGIN CONTENT --- ---- -title: Consistency Levels -description: This page documents how long to wait for finality before signing, based on each chain’s consistency (finality) level and consensus mechanism. ---- + In v1.0, `foreignAssets` has been replaced with `wrappedTokens`, simplifying token transfers across chains by directly mapping wrapped token addresses. The `decimals` value is now a simple number representing the token’s decimals on its native chain. -# Consistency Levels + ```typescript + import WormholeConnect, { + WormholeConnectConfig, + } from '@wormhole-foundation/wormhole-connect'; -The following table documents each chain's `consistencyLevel` values (i.e., finality reached before signing). The consistency level defines how long the Guardians should wait before signing a VAA. The finalization time depends on the specific chain's consensus mechanism. The consistency level is a `u8`, so any single byte may be used. However, a small subset has particular meanings. If the `consistencyLevel` isn't one of those specific values, the `Otherwise` column describes how it's interpreted. + const config: WormholeConnectConfig = { + tokensConfig: { + WETH: { + key: 'WETH', + symbol: 'WETH', + nativeChain: 'Ethereum', // Chain name now capitalized + icon: Icon.ETH, + tokenId: { + chain: 'Ethereum', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + coinGeckoId: 'ethereum', + color: '#62688F', + decimals: 18, // Simplified decimals field + }, + }, + wrappedTokens: { + WETH: { + Solana: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', + /* additional chains */ + }, + }, + }; + ``` - - -
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 1095sDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 1066sDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 1026s
Blast200201finalized~ 1026s
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 1026s
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 1026s
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 903s
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 1025s
World Chain0~ 1026s
X Layer200201finalized~ 903s
XPLA0~ 5s
- ---- END CONTENT --- +### Update NTT Configuration -Doc-Content: https://wormhole.com/docs/build/reference/contract-addresses ---- BEGIN CONTENT --- ---- -title: Contract Addresses -description: This page documents the deployed contract addresses of the Wormhole contracts on each chain, including Core Contracts, TokenBridge, and more. ---- +In Wormhole Connect version 1.0, the `nttGroups` property, which was used to configure Native Token Transfers (NTT), has been removed. Instead, the NTT configuration is passed directly to the NTT route constructor. This update simplifies the setup and provides more flexibility for defining NTT routes. -# Contract Addresses +Key changes: -## Core Contracts + - **Removed `nttGroups`** - the `nttGroups` property has been removed from the configuration and is now passed as an argument to the `nttRoutes` function + - **Direct NTT route configuration** - NTT routes are now defined more explicitly, allowing for a more organized structure when specifying tokens, chains, and managers - - +This change simplifies the configuration process by providing a cleaner, more flexible way to handle NTT routes across different chains. -=== "Mainnet" +=== "v0.x" -
Chain NameContract Address
Ethereum0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Solanaworm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
Acala0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Algorand842125965
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum0xa5f208e072434bC67592E4C49C1B991BA79BCA46
Avalanche0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c
Base0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Berachain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Blast0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
BNB Smart Chain0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Celo0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Fantom0x126783A6Cb203a3E35344528B26ca3a0489a1485
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Injectiveinj17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9l2q74d
Kaia0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7
Karura0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Mantle0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Moonbeam0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3
NEARcontract.wormhole_crypto.near
Neutronneutron16rerygcpahqcxx5t8vjla46ym8ccn7xz7rtc6ju5ujcd36cmc7zs9zrunh
Oasis0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
Optimism0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722
Polygon0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7
PythnetH3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Scroll0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Seisei1gjrrme22cyha4ht2xapn3f08zzw6z3d4uxx6fyy9zd5dyr3yxgzqqncdqn
SNAXchain0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4
Sui0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c
Terraterra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5
Terra 2.0terra12mrnzvhx3rpej6843uge2yyfppfyd3u9c3uq223q8sl48huz9juqffcnhp
Unichain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
World Chain0xcbcEe4e081464A15d8Ad5f58BB493954421eB506
X Layer0x194B123c5E96B9b2E49763619985790Dc241CAC0
XPLAxpla1jn8qmdda5m6f6fqu9qv46rt7ajhklg40ukpqchkejcvy8x7w26cqxamv3w
+ In the previous version, `nttGroups` defined the NTT managers and transceivers for different tokens across multiple chains. -=== "Testnet" + ```typescript + import WormholeConnect, { + nttRoutes, + WormholeConnectConfig, + } from '@wormhole-foundation/wormhole-connect'; -
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
+ const config: WormholeConnectConfig = { + nttGroups: { + Lido_wstETH: { + nttManagers: [ + { + chainName: 'ethereum', + address: '0xb948a93827d68a82F6513Ad178964Da487fe2BD9', + tokenKey: 'wstETH', + transceivers: [ + { + address: '0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0', + type: 'wormhole', + }, + ], + }, + { + chainName: 'bsc', + address: '0x6981F5621691CBfE3DdD524dE71076b79F0A0278', + tokenKey: 'wstETH', + transceivers: [ + { + address: '0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986', + type: 'wormhole', + }, + ], + }, + ], + }, + }, + }; + ``` +=== "v1.x" -=== "Devnet" + In v1.0, `nttGroups` has been removed, and the configuration is passed to the NTT route constructor as an argument. The tokens and corresponding transceivers are now clearly defined within the `nttRoutes` configuration. -
Chain NameContract Address
Ethereum0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
SolanaBridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o
Algorand1004
Aptos0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017
BNB Smart Chain0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
NEARwormhole.test.near
Sui0x5a5160ca3c2037f4b4051344096ef7a48ebf4400b3f385e57ea90e1628a8bde0
Terraterra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au
Terra 2.0terra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au
- - + ```typescript + import WormholeConnect, { + nttRoutes, + WormholeConnectConfig, + } from '@wormhole-foundation/wormhole-connect'; -## Token Bridge + const config: WormholeConnectConfig = { + routes: [ + ...nttRoutes({ + tokens: { + Lido_wstETH: [ + { + chain: 'Ethereum', + manager: '0xb948a93827d68a82F6513Ad178964Da487fe2BD9', + token: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', + transceiver: [ + { + address: '0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0', + type: 'wormhole', + }, + ], + }, + { + chain: 'Bsc', + manager: '0x6981F5621691CBfE3DdD524dE71076b79F0A0278', + token: '0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C', + transceiver: [ + { + address: '0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986', + type: 'wormhole', + }, + ], + }, + ], + }, + }), + /* other routes */ + ], + }; + ``` - - + In this new structure, NTT routes are passed directly through the `nttRoutes` function, with the `token`, `chain`, `manager` and `transceiver` clearly defined for each supported asset. -=== "Mainnet" +### Update UI Configuration -
Chain NameContract Address
Ethereum0x3ee18B2214AFF97000D974cf647E7C347E8fa585
SolanawormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
Acala0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Algorand842126029
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum0x0b2402144Bb366A632D14B83F244D2e0e21bD39c
Avalanche0x0e082F06FF657D94310cB8cE8B0D9a04541d8052
Base0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627
Berachain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Blast0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
BNB Smart Chain0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7
Celo0x796Dff6D74F3E27060B71255Fe517BFb23C93eed
Fantom0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
Injectiveinj1ghd753shjuwexxywmgs4xz7x2q732vcnxxynfn
Kaia0x5b08ac39EAED75c0439FC750d9FE7E1F9dD0193F
Karura0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Mantle0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Moonbeam0xb1731c586ca89a23809861c6103f0b96b3f57d92
NEARcontract.portalbridge.near
Oasis0x5848C791e09901b40A9Ef749f2a6735b418d7564
Optimism0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b
Polygon0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE
Scroll0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Seisei1smzlm9t79kur392nu9egl8p8je9j92q4gzguewj56a05kyxxra0qy0nuf3
SNAXchain0x8B94bfE456B48a6025b92E11Be393BAa86e68410
Sui0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9
Terraterra10nmmwe8r3g99a9newtqa7a75xfgs2e8z87r2sf
Terra 2.0terra153366q50k7t8nn7gec00hg66crnhkdggpgdtaxltaq6xrutkkz3s992fw9
Unichain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
World Chain0xc309275443519adca74c9136b02A38eF96E3a1f6
X Layer0x5537857664B0f9eFe38C9f320F75fEf23234D904
XPLAxpla137w0wfch2dfmz7jl2ap8pcmswasj8kg06ay4dtjzw7tzkn77ufxqfw7acv
+In Wormhole Connect version 1.0, the user interface configuration has been significantly updated. Several previously scattered UI properties have now been consolidated under a new `ui` key, making the UI configuration cleaner and easier to manage. -=== "Testnet" +Key UI changes: -
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
+ - **Consolidated UI properties** - many UI-related properties moved under a new top-level ui key for better organization + - **Removed `customTheme` and `mode`** - these properties have been removed in favor of a new top-level prop called `theme`, which simplifies theming and allows dynamic switching between themes -=== "Devnet" +#### UI Properties -
Chain NameContract Address
Ethereum0x0290FB167208Af455bB137780163b7B7a9a10C16
SolanaB6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE
Algorand1006
Aptos0x84a5f374d29fc77e370014dce4fd6a55b58ad608de8074b0be5571701724da31
BNB Smart Chain0x0290FB167208Af455bB137780163b7B7a9a10C16
NEARtoken.test.near
Sui0xa6a3da85bbe05da5bfd953708d56f1a3a023e7fb58e5a824a3d4de3791e8f690
Terraterra1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrquka9l6
Terra 2.0terra1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrquka9l6
- - - -## Wormhole Relayer - - - - -=== "Mainnet" +The following properties that were previously defined at the root level of the configuration are now part of the `ui` key: -
Chain NameContract Address
Ethereum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Arbitrum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Avalanche0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Base0x706f82e9bb5b0813501714ab5974216704980e31
Blast0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
BNB Smart Chain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Celo0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Fantom0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Kaia0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Mantle0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Moonbeam0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Optimism0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Polygon0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Scroll0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
SNAXchain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
World Chain0x1520cc9e779c56dab5866bebfb885c86840c33d3
X Layer0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
+ - `explorer` → `ui.explorer` - specifies the explorer to use for viewing transactions + - `bridgeDefaults` → `ui.defaultInputs` - sets default input values for the bridge, such as the source and destination chains and token + - `pageHeader` → `ui.pageHeader` - sets the title and header for the page + - `menu` → `ui.menu` - defines the menu items displayed in the interface + - `searchTx` → `ui.searchTx` - configures the transaction search functionality + - `partnerLogo` → `ui.partnerLogo` - displays a partner's logo on the interface + - `walletConnectProjectId` → `ui.walletConnectProjectId` - integrates WalletConnect into the UI + - `showHamburgerMenu` → `ui.showHamburgerMenu` - enables or disables the hamburger menu for navigation -=== "Testnet" +Additionally, there are two new properties under `ui`: -
Chain NameContract Address
Ethereum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Arbitrum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Avalanche0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB
Base Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Berachain0x362fca37E45fe1096b42021b543f462D49a5C8df
BNB Smart Chain0x80aC94316391752A193C1c47E27D382b507c93F3
Celo0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84
Fantom0x9563a59c15842a6f322b10f69d1dd88b41f2e97b
Ink0x362fca37E45fe1096b42021b543f462D49a5C8df
Monad0x362fca37E45fe1096b42021b543f462D49a5C8df
Moonbeam0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0
Optimism Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Seievm0x362fca37E45fe1096b42021b543f462D49a5C8df
Unichain0x362fca37E45fe1096b42021b543f462D49a5C8df
+ - **`ui.title`** - sets the title rendered in the top left corner of the UI. The default is "Wormhole Connect" + - **`ui.getHelpUrl`** - URL that Connect will render when an unknown error occurs, allowing users to seek help. This can link to a Discord server or any other support channel -=== "Devnet" +```typescript +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; -
Chain NameContract Address
Ethereum0xcC680D088586c09c3E0E099a676FA4b6e42467b4
BNB Smart Chain0xcC680D088586c09c3E0E099a676FA4b6e42467b4
- - +const config: WormholeConnectConfig = { + ui: { + title: 'My Custom Bridge Example', + getHelpUrl: 'https://examplehelp.com/', + menu: [ + { + label: 'Support', + href: 'https://examplehelp.com/support', + target: '_blank', + order: 1, // Order of appearance in the menu + }, + { + label: 'About', + href: 'https://examplehelp.com/about', + target: '_blank', + order: 2, + }, + ], + showHamburgerMenu: false, + }, +}; +``` -## CCTP +#### UI Configuration - - +In the old structure, UI-related settings like `explorer` and `bridgeDefaults` were defined at the root level of the configuration. In version 1.0, these properties are now organized under the `ui` key, improving the configuration's readability and manageability. -=== "Mainnet" +=== "v0.x" -
Chain NameContract Address
Ethereum0xAaDA05BD399372f0b0463744C09113c137636f6a
Arbitrum0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Avalanche0x09Fb06A271faFf70A651047395AaEb6265265F13
Base0x03faBB06Fa052557143dC28eFCFc63FC12843f1D
Optimism0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Polygon0x0FF28217dCc90372345954563486528aa865cDd6
+ ```typescript + const config: WormholeConnectConfig = { + bridgeDefaults: { + fromNetwork: 'solana', + toNetwork: 'ethereum', + tokenKey: 'USDC', + requiredNetwork: 'solana', + }, + showHamburgerMenu: true, + }; + ``` +=== "v1.x" -=== "Testnet" + ```typescript + const config: WormholeConnectConfig = { + ui: { + defaultInputs: { + fromChain: 'Solana', // Chain names now capitalized + toChain: 'Ethereum', + tokenKey: 'USDC', + requiredChain: 'Solana', + }, + showHamburgerMenu: true, + }, + }; + ``` -
Chain NameContract Address
Ethereum Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Arbitrum Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Avalanche0x58f4c17449c90665891c42e14d34aae7a26a472e
Base Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Optimism Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
+#### Remove `customTheme` and `mode` Properties -=== "Devnet" +In version 1.0, the `customTheme` and `mode` properties, which were previously used to set themes, have been removed. They have been replaced by a new top-level prop called `theme`, which allows for more flexibility and dynamic updates to themes. - N/A - - +Important details: -## Read-Only Deployments + - The `theme` prop is not part of the `config` object and is passed separately to Wormhole Connect + - `config` cannot be modified after Connect has mounted, but the `theme` can be updated dynamically to support changes such as switching between light and dark modes or updating color schemes -=== "Mainnet" +=== "v0.x" -
Chain NameContract Address
Corn0xa683c66045ad16abb1bCE5ad46A64d95f9A25785
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Sonic0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Telos0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
+ ```typescript + const config: WormholeConnectConfig = { + customTheme: { + primaryColor: '#4266f5', + secondaryColor: '#ff5733', + }, + mode: 'dark', + }; -!!!note - Read-only deployments allow Wormhole messages to be received on chains not fully integrated with Wormhole Guardians. These deployments support cross-chain data verification but cannot originate messages. For example, a governance message can be sent from a fully integrated chain and processed on a read-only chain, but the read-only chain cannot send messages back. ---- END CONTENT --- + ; + ``` +=== "v1.x" -Doc-Content: https://wormhole.com/docs/build/reference/index ---- BEGIN CONTENT --- ---- -title: Reference -description: Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and consistency levels for Guardians. ---- + ```typescript + const theme: WormholeConnectTheme = { + mode: 'dark', // Can be dynamically changed + font: 'Arial', + button: { + primary: '#4266f5', + }, + }; -# Reference + ; + ``` -## Get Started +### Removed Configuration Properties -In this section, you'll find reference information that is essential for development. This includes Wormhole chain IDs, canonical contract addresses, and consistency levels for Guardians for each of the supported blockchains in the Wormhole ecosystem. +Several configuration properties have been removed in Wormhole Connect version 1.0. These keys no longer have any effect, and providing values for them in the configuration will not result in any changes. -
+Removed config keys: -- :octicons-list-ordered-16:{ .lg .middle } **Chain IDs** + - `cta` + - `cctpWarning` + - `pageSubHeader` + - `moreTokens` + - `moreChains` + - `ethBridgeMaxAmount` + - `wstETHBridgeMaxAmount` + - `customTheme` + - `mode` - --- +If your current setup includes any of these properties, you can safely remove them, as they are no longer supported in v1.0. - Find a mapping of Wormhole chain IDs to the names and network IDs of the supported blockchains. +## Use the CDN-Hosted Version of Wormhole Connect - [:custom-arrow: View list of chain IDs](/docs/build/reference/chain-ids/) +For those using the CDN-hosted version of Wormhole Connect, the package's installation and integration have been updated. You must install the Connect package from npm and use the new `wormholeConnectHosted` utility function. -- :material-timer-sand:{ .lg .middle } **Consistency Levels** +### Install and Integrate the Hosted Version - --- +1. Install the Connect package via npm: - See the levels of finality (consistency) a transaction should meet before being signed by a Guardian for each network. + ```bash + npm install @wormhole-foundation/wormhole-connect@^1.0 + ``` - [:custom-arrow: View list of consistency levels](/docs/build/reference/consistency-levels/) +2. After installing the package, you can embed Wormhole Connect into your page by adding the following code: -- :octicons-file-code-16:{ .lg .middle } **Contract Addresses** + ```typescript + import { wormholeConnectHosted } from '@wormhole-foundation/wormhole-connect'; - --- + const container = document.getElementById('connect')!; - Discover the contract addresses for Wormhole-deployed contracts on each of the supported blockchains. + wormholeConnectHosted(container); + ``` - This includes the following protocol contracts: +### Example: Custom Configuration for Hosted Version - - Core Contract - - Token Bridge - - NFT Bridge - - Wormhole relayer - - CCTP +The `wormholeConnectHosted` function accepts two parameters: `config` and `theme`. This allows you to customize the routes and apply a theme directly within the hosted version. Here’s an example of how you can pass a custom configuration: - [:custom-arrow: View list of contract addresses](/docs/build/reference/contract-addresses/) +```typescript +import { + wormholeConnectHosted, + MayanRoute, +} from '@wormhole-foundation/wormhole-connect'; -- :material-code-braces:{ .lg .middle } **Wormhole Formatted Addresses** +const container = document.getElementById('connect')!; - --- +wormholeConnectHosted(container, { + config: { + routes: [MayanRoute], + eventHandler: (e) => { + console.log('Connect event', e); + }, + }, + theme: { + background: { + default: '#004547', + }, + }, +}); +``` - Learn how Wormhole formats addresses into a 32-byte hex format for cross-chain compatibility. - - This includes converting addresses between their native formats and the Wormhole format across multiple blockchains. +In this example, the `config` object defines the routes (in this case, using the Mayan route), while the `theme` object allows customization of the Connect interface (e.g., background color). +--- END CONTENT --- - [:custom-arrow: View details on Wormhole formatted addresses](/docs/build/reference/wormhole-formatted-addresses/) +Doc-Content: https://wormhole.com/docs/build/transfers/index +--- BEGIN CONTENT --- +--- +title: Multichain Transfers +description: This section guides you through using Wormhole products to securely and efficiently transfer assets and messages across multiple blockchains. +--- -
+# Multichain Transfers --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands --- BEGIN CONTENT --- --- -title: Wormhole Formatted Addresses -description: Explanation of Wormhole formatted 32-byte hex addresses, their conversion, and usage across different blockchain platforms. +title: NTT CLI Commands +description: A comprehensive guide to the Native Token Transfers (NTT) CLI, detailing commands for managing token transfers across chains within the Wormhole ecosystem. --- -# Wormhole Formatted Addresses +# NTT CLI Commands ## Introduction -Wormhole formatted addresses are 32-byte hex representations of addresses from any supported blockchain. Whether an address originates from EVM, Solana, Cosmos, or another ecosystem, Wormhole standardizes all addresses into this format to ensure cross-chain compatibility. - -This uniform format is essential for smooth interoperability in token transfers and messaging across chains. Wormhole uses formatted addresses throughout the [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank}, especially in cross-chain transactions, such as transfer functions that utilize the `bytes32` representation for recipient addresses. - -## Platform-Specific Address Formats +The NTT Command-Line Interface (CLI) is a powerful tool for managing native token transfers across multiple blockchain networks within the Wormhole ecosystem. This page provides a comprehensive list of available commands, their descriptions, and examples to help you interact with and configure the NTT system effectively. Whether initializing deployments, updating configurations, or working with specific chains, the NTT CLI simplifies these operations through its intuitive commands. -Each blockchain ecosystem Wormhole supports has its method for formatting native addresses. To enable cross-chain compatibility, Wormhole converts these native addresses into the standardized 32-byte hex format. +## Table of Commands -Here’s an overview of the native address formats and how they are normalized to the Wormhole format: +The following table lists the available NTT CLI commands, descriptions, and examples. -| Platform | Native Address Format | Wormhole Formatted Address | -|-----------------|----------------------------------|----------------------------| -| EVM | Hex (e.g., 0x...) | 32-byte Hex | -| Solana | Base58 | 32-byte Hex | -| CosmWasm | Bech32 | 32-byte Hex | -| Algorand | Algorand App ID | 32-byte Hex | -| Sui | Hex | 32-byte Hex | -| Aptos | Hex | 32-byte Hex | -| Near | SHA-256 | 32-byte Hex | +!!! note + To explore detailed information about any NTT CLI command, including its options and examples, you can append `--help` to the command. This will display a comprehensive guide for the specific command. -These conversions allow Wormhole to interact seamlessly with various chains using a uniform format for all addresses. +### General Commands -### Address Format Handling +| Command | Description | Examples | +|-----------------------------------------|-------------------------------------------------------|--------------------------| +| `ntt update` | update the NTT CLI | `ntt update` | +| `ntt new ` | create a new NTT project | `ntt new my-ntt-project` | +| `ntt add-chain ` | add a chain to the deployment file | `ntt add-chain Ethereum --token 0x1234... --mode burning --latest`| +| `ntt upgrade ` | upgrade the contract on a specific chain | `ntt upgrade Solana --ver 1.1.0`| +| `ntt clone
` | initialize a deployment file from an existing contract| `ntt clone Mainnet Solana Sol5678...`| +| `ntt init ` | initialize a deployment file | `ntt init devnet` | +| `ntt pull` | pull the remote configuration | `ntt pull` | +| `ntt push` | push the local configuration | `ntt push` | +| `ntt status` | check the status of the deployment | `ntt status` | -The Wormhole SDK provides mappings that associate each platform with its native address format. You can find this mapping in the Wormhole SDK file [`platforms.ts`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/007f61b27c650c1cf0fada2436f79940dfa4f211/core/base/src/constants/platforms.ts#L93-L102){target=\_blank}: +### Configuration Commands -```typescript -const platformAddressFormatEntries = [ - ['Evm', 'hex'], - ['Solana', 'base58'], - ['Cosmwasm', 'bech32'], - ['Algorand', 'algorandAppId'], - ['Sui', 'hex'], - ['Aptos', 'hex'], - ['Near', 'sha256'], -]; -``` - -These entries define how the [`UniversalAddress`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/007f61b27c650c1cf0fada2436f79940dfa4f211/core/definitions/src/universalAddress.ts#L23){target=\_blank} class handles different address formats based on the platform. - -## Universal Address Methods - -The `UniversalAddress` class is essential for working with Wormhole formatted addresses. It converts native blockchain addresses into the standardized 32-byte hex format used across Wormhole operations. - -Key functions: - - - **`new UniversalAddress()`** - use the `UniversalAddress` constructor to convert native addresses into the Wormhole format - - ```typescript - const universalAddress = new UniversalAddress('0x123...', 'hex'); - ``` - - - **`toUniversalAddress()`** - converts a platform-specific address into the Wormhole formatted 32-byte hex address - - ```typescript - const ethAddress: NativeAddress<'Evm'> = toNative('Ethereum', '0x0C9...'); - const universalAddress = ethAddress.toUniversalAddress().toString(); - ``` - - - **`toNative()`** - converts the Wormhole formatted address back to a native address for a specific blockchain platform - - ```typescript - const nativeAddress = universalAddress.toNative('Evm'); - ``` - - - **`toString()`** - returns the Wormhole formatted address as a hex string, which can be used in various SDK operations - - ```typescript - console.log(universalAddress.toString()); - ``` - -These methods allow developers to convert between native addresses and the Wormhole format, ensuring cross-chain compatibility. - -## Convert Between Native and Wormhole Formatted Addresses - -The Wormhole SDK allows developers to easily convert between native addresses and Wormhole formatted addresses when building cross-chain applications. - -### Convert a Native Address to a Wormhole Formatted Address - -Example conversions for EVM and Solana: - -=== "EVM" - - ```typescript - import { toNative } from '@wormhole-foundation/sdk-core'; - -const ethAddress: NativeAddress<'Evm'> = toNative( - 'Ethereum', - '0x0C99567DC6f8f1864cafb580797b4B56944EEd28' -); -const universalAddress = ethAddress.toUniversalAddress().toString(); -console.log('Universal Address (EVM):', universalAddress); - ``` - -=== "Solana" - - ```typescript - import { toNative } from '@wormhole-foundation/sdk-core'; - -const solAddress: NativeAddress<'Solana'> = toNative( - 'Solana', - '6zZHv9EiqQYcdg52ueADRY6NbCXa37VKPngEHaokZq5J' -); -const universalAddressSol = solAddress.toUniversalAddress().toString(); -console.log('Universal Address (Solana):', universalAddressSol); - ``` - -The result is a standardized address format that is ready for cross-chain operations. - -### Convert Back to Native Addresses - -Below is how you can convert a Wormhole formatted address back to an EVM or Solana native address: - -```typescript -const nativeAddressEvm = universalAddress.toNative('Evm'); -console.log('EVM Native Address:', nativeAddressEvm); - -const nativeAddressSolana = universalAddress.toNative('Solana'); -console.log('Solana Native Address:', nativeAddressSolana); -``` - -These conversions ensure that your cross-chain applications can seamlessly handle addresses across different ecosystems. - -## Use Cases for Wormhole Formatted Addresses - -### Cross-chain Token Transfers - -Cross-chain token transfers require addresses to be converted into a standard format. For example, when transferring tokens from Ethereum to Solana, the Ethereum address is converted into a Wormhole formatted address to ensure compatibility. After the transfer, the Wormhole formatted address is converted back into the Solana native format. - -### Smart Contract Interactions - -In smart contract interactions, especially when building dApps that communicate across multiple chains, Wormhole formatted addresses provide a uniform way to reference addresses. This ensures that addresses from different blockchains can interact seamlessly, whether you're sending messages or making cross-chain contract calls. - -### DApp Development - -For cross-chain dApp development, Wormhole formatted addresses simplify handling user wallet addresses across various blockchains. This allows developers to manage addresses consistently, regardless of whether they work with EVM, Solana, or another supported platform. - -### Relayers and Infrastructure - -Finally, relayers and infrastructure components, such as Wormhole Guardians, rely on the standardized format to efficiently process and relay cross-chain messages. A uniform address format simplifies operations, ensuring smooth interoperability across multiple blockchains. ---- END CONTENT --- - -Doc-Content: https://wormhole.com/docs/build/start-building/demos ---- BEGIN CONTENT --- ---- -title: Example Demo Code Repos -description: Explore various demos showcasing Wormhole's features, including starter apps, cross-chain examples, and UI components for token transfers and lending protocols. ---- - -# Demos - -This page features various demos showcasing Wormhole's features, including starter apps, cross-chain examples, and UI components for token transfers and lending protocols. - -### Scaffolding - -[Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding){target=\_blank} is a starter application repository that contains example dApps that integrate with Wormhole messaging. It includes basic xDapp structures, tests, and walkthroughs for core components like Wormhole messaging and the portal token bridge. - -### Wormhole Examples - -[Wormhole Examples](https://github.com/wormhole-foundation/wormhole-examples){target=\_blank} contains a variety of example components. It features a mix of relayers, cross-chain applications, NFT projects, and more. - -### Basic Examples - -[Basic Examples](https://github.com/wormhole-foundation/xdapp-book/tree/main/projects){target=\_blank} features straightforward example projects that showcase minimum-code examples for how to send messages, tokens, and other standard functions. - -### Native USDC Bridging - -The [Native USDC Bridging](https://github.com/wormhole-foundation/wormhole-circle-integration){target=\_blank} repo demonstrates an integration of Circle's Cross-Chain Transfer Protocol using Wormhole. - -### Reference Bridge UI - -[Reference Bridge UI](https://github.com/wormhole-foundation/example-token-bridge-ui){target=\_blank} is an example GUI that can be used to perform token transfers around the ecosystem. - -### Borrow Lend - -[Borrow Lend](https://github.com/wormhole-foundation/example-wormhole-lending){target=\_blank} contains two examples of cross-chain lending protocol implementations. The first example provides a basic lending skeleton for borrowing and lending between two chains. In contrast, the second example offers a more advanced cross-chain lending model using a hub-and-spoke approach. - -### Wormhole NTT Connect Demo - -The [Wormhole NTT Connect](https://github.com/wormhole-foundation/demo-ntt-connect){target=\_blank} demo configures a Vite-React TypeScript application using the Wormhole TypeScript SDK and, as an example, preconfigures the Wormhole Connect widget to allow transfers between Sepolia and Solana Testnet environments. - -### Wormhole Demo NTT TS SDK - -The [Demo NTT TS SDK Example](https://github.com/wormhole-foundation/demo-ntt-ts-sdk){target=\_blank} demonstrates the use of the Wormhole TS SDK to facilitate token transfers between different blockchain networks after performing a deployment of the Native Token Transfers framework. ---- END CONTENT --- - -Doc-Content: https://wormhole.com/docs/build/start-building/index ---- BEGIN CONTENT --- ---- -title: Start Building -description: This section has all you need to start developing with Wormhole, including a guide to supported networks, tool sets, and code examples. ---- - -# Start Building - -## Introduction - -Wormhole's role as a Generic Message Passing (GMP) protocol means it facilitates interoperability across multiple areas of project development. The following sections will help you locate the tools most relevant to your development needs whether you are focused on building frontend user interfaces or smart contracts and protocols. This section also links to developer resources like references and code examples which are helpful for all builders looking to integrate with Wormhole. - -## Choose Your Development Pathway - -
- -- :octicons-browser-16:{ .lg .middle } **Build Frontend Applications** - - --- - - Build user-friendly frontends that interact with Wormhole's existing integrations, enabling your users to transfer assets, query information, and monitor cross-chain activity. - - [:custom-arrow: Build frontend applications](/docs/build/applications/) - -- :octicons-file-code-16:{ .lg .middle } **Build Contract Integrations** - - --- - - Leverage Wormhole's powerful messaging protocols to create contracts that can communicate and interact across multiple blockchains. By using Wormhole’s core infrastructure, you can enable secure and seamless messaging, asset transfers, and more between supported networks. - - [:custom-arrow: Integrate with contracts](/docs/build/contract-integrations/) - -
- -## Get Hands-On - -
- -- :octicons-repo-16:{ .lg .middle } **Tutorials** - - --- - - Follow in-depth, step-by-step tutorials to learn how to build cross-chain contracts, integrate Wormhole's SDK, and more. - - [:custom-arrow: Explore tutorials](/docs/tutorials/) - -- :octicons-code-16:{ .lg .middle } **Demos** - - --- - - Explore pre-built reference applications that demonstrate real-world use cases of Wormhole’s messaging protocols and token bridges. - - [:custom-arrow: Get inspired with demos](/docs/build/start-building/demos/) - -
- -## Essential Resources for Development - -
- -- :octicons-broadcast-16:{ .lg .middle } **Supported Networks** - - --- - - Explore the blockchains supported by Wormhole for cross-chain communication and asset transfers. Understand which networks are available for both Testnet and Mainnet environments. - - [:custom-arrow: Discover supported networks](/docs/build/start-building/supported-networks/) - -- :octicons-list-unordered-16:{ .lg .middle } **Reference** - - --- - - Access the essential Wormhole chain IDs and smart contract addresses for messaging protocols, token bridges, and other key components. - - [:custom-arrow: Explore Reference](/docs/build/reference/){target=\_blank} - - - -- :octicons-goal-16:{ .lg .middle } **Testnet Faucets** - - --- - - Get Testnet tokens to start experimenting with cross-chain transfers and contract deployment. +| Command | Description | Examples | +|---------------------------------------------|----------------------------------------|-------------------------------------| +| `ntt config set-chain `| set a configuration value for a chain | `ntt config set-chain Ethereum scan_api_key`| +| `ntt config unset-chain ` | unset a configuration value for a chain| `ntt config unset-chain Ethereum scan_api_key`| +| `ntt config get-chain ` | get a configuration value for a chain | `ntt config get-chain Ethereum scan_api_key`| - [:custom-arrow: Find Testnet faucets](/docs/build/start-building/testnet-faucets/) +### Solana Commands -
+| Command | Description | Examples | +|-----------------------------------------------|---------------------------------------------------------|------------------| +| `ntt solana key-base58 ` | print private key in base58 | `ntt solana key-base58 /path/to/keypair.json`| +| `ntt solana token-authority ` | print the token authority address for a given program ID| `ntt solana token-authority Sol1234...`| +| `ntt solana ata `| print the token authority address for a given program ID| `ntt solana ata Mint123... Owner123... token22`| --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/start-building/supported-networks +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control --- BEGIN CONTENT --- --- -title: Supported Networks -description: Learn about the compatible environments and individual networks that Wormhole supports. Readers can click on each of the blockchain logos for more information. +title: Native Token Transfers Access Control +description: Learn about the owner and pauser access roles for the NTT manager contract, which can be used to pause and un-pause token transfers. --- -# Supported Networks - -Wormhole supports several different blockchains and environments. Since many of the concepts for using Wormhole within a given blockchain environment are the same, this section is organized by environment, and individual chains are detailed within the environment page. - -## Supported Environments +## Owner and Pauser Roles -- [EVM (Ethereum and compatible chains)](#evm) -- [SVM (Solana and compatible chains)](#svm) -- [CosmWasm (Cosmos ecosystem chains)](#cosmwasm) -- [AVM (Algorand)](#avm) -- [NEAR VM (NEAR)](#near-vm) -- [Move VM (Aptos)](#move-vm) -- [Sui Move VM (Sui)](#sui-move-vm) +Pausing the Native Toke Transfer (NTT) Manager Contract will disallow initiating new token transfers. While the contract is paused, in-flight transfers can still be redeemed (subject to rate limits if configured). -## Supported Blockchains by Environment +NTT can be paused on a particular chain by updating the `paused` parameter on the deployment to `true` via the NTT CLI, then performing `ntt push` to sync the local configuration with the on-chain deployment. - - -
+- **Owner** - full control over NTT contracts, can perform administrative functions. Has the ability to un-pause contracts if they have been paused +- **Pauser** - can pause NTT contracts to halt token transfers temporarily. This role is crucial for responding quickly to adverse events without a prolonged governance process. Cannot un-pause contracts -### EVM +You may verify the current owner, pauser, and paused status of the NTT Manager contract on the `deployment.json` file in your NTT project directory. -
BlockchainEnvironmentMainnetTestnetQuick Links
EthereumEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
AcalaEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
ArbitrumEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
AvalancheEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
BaseEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
BerachainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
BlastEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
BNB Smart ChainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
CeloEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
FantomEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
GnosisEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
HyperEVMEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
InkEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
KaiaEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
KaruraEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
LineaEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
MantleEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
MonadEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
MoonbeamEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
NeonEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
OasisEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
OptimismEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
PolygonEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
RootstockEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
ScrollEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
SeievmEVM:x::white_check_mark:
SNAXchainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
UnichainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
World ChainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
X LayerEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
- -### SVM - -
BlockchainEnvironmentMainnetTestnetQuick Links
SolanaSVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
PythnetSVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
- -### AVM - -
BlockchainEnvironmentMainnetTestnetQuick Links
AlgorandAVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
- -### CosmWasm - -
BlockchainEnvironmentMainnetTestnetQuick Links
InjectiveCosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
NeutronCosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
OsmosisCosmWasm:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
SeiCosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
TerraCosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
Terra 2.0CosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
XPLACosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
- -### Move VM - -
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
- -### NEAR VM - -
BlockchainEnvironmentMainnetTestnetQuick Links
NEARNEAR VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
- -### Sui Move VM - -
BlockchainEnvironmentMainnetTestnetQuick Links
SuiSui Move VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
- -
- ---- END CONTENT --- - -Doc-Content: https://wormhole.com/docs/build/start-building/testnet-faucets ---- BEGIN CONTENT --- ---- -title: Testnet Faucets -description: This page includes resources to quickly find the Testnet tokens you need to deploy and test applications and contracts on Wormhole's supported networks. ---- - -# Testnet Faucets - -## Get Started - -Don't let the need for testnet tokens get in the way of buildling your next great idea with Wormhole. Use this guide to quickly locate the testnet token faucets you need to deploy and test applications and contracts on Wormhole's supported networks. - - - - -
- -### EVM - -
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
HyperliquidEVMHYPEHyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
RootstockEVMRBTCOfficial Rootstock Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
- -### SVM - -
TestnetEnvironmentTokenFaucet
PythnetSVMETHSuperchain Faucet
- -### AVM - -
TestnetEnvironmentTokenFaucet
AlgorandAVMALGOOfficial Algorand Faucet
- -### CosmWasm - -
TestnetEnvironmentTokenFaucet
CelestiaCosmWasmTIADiscord Faucet
Cosmos HubCosmWasmATOMDiscord Faucet
EvmosCosmWasmTEVMOSOfficial Evmos Faucet
InjectiveCosmWasmINJOfficial Injective Faucet
KujiraCosmWasmKUJIDiscord Faucet
NeutronCosmWasmNTRNList of Faucets
NobleCosmWasmUSDCCircle Faucet
OsmosisCosmWasmOSMOOfficial Osmosis Faucet
SEDACosmWasmSEDAOfficial SEDA Faucet
SeiCosmWasmSEISei Atlantic-2 Faucet
TerraCosmWasmLUNATerra Official Faucet
Terra 2.0CosmWasmLUNATerra Official Faucet
XPLACosmWasmXPLAXPLA Official Faucet
- -### Move VM - -
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
- -### NEAR VM - -
TestnetEnvironmentTokenFaucet
NEARNEAR VMNEAROfficial NEAR Faucet
- -### Sui Move VM - -
TestnetEnvironmentTokenFaucet
SuiSui Move VMSUIList of Faucets
- -
- ---- END CONTENT --- - -Doc-Content: https://wormhole.com/docs/build/toolkit/cli ---- BEGIN CONTENT --- ---- -title: Wormhole CLI -description: Learn how to install and use the Wormhole CLI, including commands and examples for managing multichain deployments, generating VAAs, and querying contract info. ---- - -# Wormhole CLI - -This tool is a command-line interface to Wormhole, allowing you to perform various actions, such as querying a transaction's status or submitting token transfers. - -## Installation - -Clone the repository and change directories to the appropriate directory: - -```bash -git clone https://github.com/wormhole-foundation/wormhole && -cd wormhole/clients/js -``` - -Build and install the CLI tool: - -```bash -make install -``` - -This installs two binaries, `worm-fetch-governance` and `worm` on your `$PATH`. To use `worm`, set up `$HOME/.wormhole/.env` with your private keys, based on `.env.sample` in this folder. - -## Usage - -You can interact with the Wormhole CLI by typing `worm` and including the `command` and any necessary subcommands and parameters. - -| Command | Description | -|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| -| `worm aptos INSERT_COMMAND` | Aptos utilities | -| `worm edit-vaa INSERT_COMMAND` | Edits or generates a VAA | -| `worm evm INSERT_COMMAND` | EVM utilities | -| `worm generate INSERT_COMMAND` | Generate VAAs (Devnet and Testnet only) | -| `worm info INSERT_COMMAND` | Contract, chain, RPC, and address information utilities | -| `worm near INSERT_NETWORK, INSERT_ACCOUNT` | NEAR utilities | -| `worm parse INSERT_VAA` | Parse a VAA (can be in either hex or base64 format) | -| `worm recover INSERT_DIGEST INSERT_SIGNATURE` | Recover an address from a signature | -| `worm status INSERT_NETWORK, INSERT_CHAIN, INSERT_TXN_HASH` | Prints information about the automatic delivery initiated on the specified network, chain, and transaction hash | -| `worm submit INSERT_VAA` | Execute a VAA | -| `worm sui INSERT_COMMAND` | Sui utilities | -| `worm transfer INSERT_SOURCE_CHAIN, INSERT_DESTINATION_CHAIN, INSERT_DESTINATION_ADDRESS, INSERT_AMOUNT, INSERT_NETWORK` | Transfers a token | -| `worm verify-vaa INSERT_VAA, INSERT_NETWORK` | Verifies a VAA by querying the Core Contract on Ethereum | - -You can also refer to the below options, available with all `worm` commands: - -```bash -Options: - --help Show help [boolean] - --version Show version number [boolean] -``` - -### Subcommands - -??? code "Aptos" - ```bash - worm aptos INSERT_COMMAND - -Commands: - worm aptos init-token-bridge Init token bridge contract - worm aptos init-wormhole Init Wormhole core contract - worm aptos deploy Deploy an Aptos package - worm aptos deploy-resource Deploy an Aptos package using a - resource account - worm aptos send-example-message Send example message - - worm aptos derive-resource-account Derive resource account address - - worm aptos derive-wrapped-address Derive wrapped coin type - - worm aptos hash-contracts Hash contract bytecodes for upgrade - worm aptos upgrade Perform upgrade after VAA has been - submitted - worm aptos migrate Perform migration after contract - upgrade - worm aptos faucet Request money from the faucet for a - given account - worm aptos start-validator Start a local aptos validator - -Options: - --help Show help [boolean] - --version Show version number [boolean] - ``` - -??? code "Edit VAA" - ```bash - worm edit-vaa INSERT_COMMAND - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -v, --vaa vaa in hex format [string] [required] - -n, --network Network - [required] [choices: "mainnet", "testnet", "devnet"] - --guardian-set-index, --gsi guardian set index [number] - --signatures, --sigs comma separated list of signatures [string] - --wormscanurl, --wsu url to wormscan entry for the vaa that - includes signatures [string] - --wormscan, --ws if specified, will query the wormscan entry - for the vaa to get the signatures [boolean] - --emitter-chain-id, --ec emitter chain id to be used in the vaa - [number] - --emitter-address, --ea emitter address to be used in the vaa[string] - --nonce, --no nonce to be used in the vaa [number] - --sequence, --seq sequence number to be used in the vaa[string] - --consistency-level, --cl consistency level to be used in the vaa - [number] - --timestamp, --ts timestamp to be used in the vaa in unix - seconds [number] - -p, --payload payload in hex format [string] - --guardian-secret, --gs Guardian's secret key [string] - ``` - -??? code "EVM" - ```bash - worm evm INSERT_COMMAND - -Commands: - worm evm address-from-secret Compute a 20 byte eth address from a 32 - byte private key - worm evm storage-update Update a storage slot on an EVM fork - during testing (anvil or hardhat) - worm evm chains Return all EVM chains - worm evm info Query info about the on-chain state of - the contract - worm evm hijack Override the guardian set of the core - bridge contract during testing (anvil - or hardhat) - worm evm start-validator Start a local EVM validator - -Options: - --help Show help [boolean] - --version Show version number [boolean] - --rpc RPC endpoint [string] - ``` - -??? code "Generate" - ```bash - worm generate INSERT_COMMAND - -Commands: - worm generate registration Generate registration VAA - worm generate upgrade Generate contract upgrade VAA - worm generate attestation Generate a token attestation VAA - worm generate recover-chain-id Generate a recover chain ID VAA - worm generate Sets the default delivery provider - set-default-delivery-provider for the Wormhole Relayer contract - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -g, --guardian-secret Guardians' secret keys (CSV) [string] [required] - ``` - -??? code "Info" - ```bash - worm info INSERT_COMMAND - -Commands: - worm info chain-id Print the wormhole chain ID integer - associated with the specified chain - name - worm info contract Print contract address - - worm info emitter
Print address in emitter address - format - worm info origin
Print the origin chain and address - of the asset that corresponds to the - given chain and address. - worm info registrations Print chain registrations - - worm info rpc Print RPC address - worm info wrapped Print the wrapped address on the - target chain that corresponds with - the specified origin chain and - address. - -Options: - --help Show help [boolean] - --version Show version number [boolean] - ``` - -??? code "NEAR" - ```bash - worm near INSERT_COMMAND - -Commands: - worm near contract-update Submit a contract update using our specific - APIs - worm near deploy Submit a contract update using near APIs - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -m, --module Module to query [choices: "Core", "NFTBridge", "TokenBridge"] - -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] - --account Near deployment account [string] [required] - --attach Attach some near [string] - --target Near account to upgrade [string] - --mnemonic Near private keys [string] - --key Near private key [string] - -r, --rpc Override default rpc endpoint url [string] - ``` - -??? code "Parse" - ```bash - worm parse INSERT_VAA - -Positionals: - vaa vaa [string] - -Options: - --help Show help [boolean] - --version Show version number [boolean] - ``` - -??? code "Recover" - ```bash - worm recover INSERT_DIGEST INSERT_SIGNATURE - -Positionals: - digest digest [string] - signature signature [string] - -Options: - --help Show help [boolean] - --version Show version number [boolean] - ``` - -??? code "Status" - ```bash - worm status INSERT_NETWORK, INSERT_CHAIN, INSERT_TXN_HASH - -Positionals: - network Network [choices: - 'mainnet', - 'testnet', - 'devnet'] - chain Source chain - [choices: - 'unset', - 'solana', - 'ethereum', - 'terra', - 'bsc', - 'polygon', - 'avalanche', - 'oasis', - 'algorand', - 'aurora', - 'fantom', - 'karura', - 'acala', - 'klaytn', - 'celo', - 'near', - 'moonbeam', - 'neon', - 'terra2', - 'injective', - 'osmosis', - 'sui', - 'aptos', - 'arbitrum', - 'optimism', - 'gnosis', - 'pythnet', - 'xpla', - 'btc', - 'base', - 'sei', - 'rootstock', - 'scroll', - 'mantle', - 'blast', - 'xlayer', - 'linea', - 'berachain', - 'seievm', - 'wormchain', - 'cosmoshub', - 'evmos', - 'kujira', - 'neutron', - 'celestia', - 'stargaze', - 'seda', - 'dymension', - 'provenance', - 'sepolia', - 'arbitrum_sepolia', - 'base_sepolia', - 'optimism_sepolia', - 'holesky', - 'polygon_sepolia'] - tx Source transaction hash [string] - -Options: - --help Show help [boolean] - --version Show version number [boolean] - ``` - -??? code "Submit" - ```bash - worm submit INSERT_VAA - -Positionals: - vaa vaa [string] - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -c, --chain chain name -[choices: 'unset', - 'solana', - 'ethereum', - 'terra', - 'bsc', - 'polygon', - 'avalanche', - 'oasis', - 'algorand', - 'aurora', - 'fantom', - 'karura', - 'acala', - 'klaytn', - 'celo', - 'near', - 'moonbeam', - 'neon', - 'terra2', - 'injective', - 'osmosis', - 'sui', - 'aptos', - 'arbitrum', - 'optimism', - 'gnosis', - 'pythnet', - 'xpla', - 'btc', - 'base', - 'sei', - 'rootstock', - 'scroll', - 'mantle', - 'blast', - 'xlayer', - 'linea', - 'berachain', - 'seievm', - 'wormchain', - 'cosmoshub', - 'evmos', - 'kujira', - 'neutron', - 'celestia', - 'stargaze', - 'seda', - 'dymension', - 'provenance', - 'sepolia', - 'arbitrum_sepolia', - 'base_sepolia', - 'optimism_sepolia', - 'holesky', - 'polygon_sepolia'] - -n, --network Network - [required] - [choices: - 'mainnet', - 'testnet', - 'devnet'] - -a, --contract-address Contract to submit VAA to (override config) [string] - --rpc RPC endpoint [string] - --all-chains, --ac Submit the VAA to all chains except for the origin - chain specified in the payload - [boolean] [default: false] - ``` - -??? code "Sui" - ```bash - worm sui INSERT_COMMAND - -Commands: - worm sui build-coin Build wrapped coin and dump bytecode. - - Example: - worm sui build-coin -d 8 -v V__0_1_1 -n - testnet -r - "https://fullnode.testnet.sui.io:443" - worm sui deploy Deploy a Sui package - worm sui init-example-message-app Initialize example core message app - worm sui init-token-bridge Initialize token bridge contract - worm sui init-wormhole Initialize wormhole core contract - worm sui publish-example-message Publish message from example app via - core bridge - worm sui setup-devnet Setup devnet by deploying and - initializing core and token bridges and - submitting chain registrations. - worm sui objects Get owned objects by owner - worm sui package-id Get package ID from State object ID - worm sui tx Get transaction details - -Options: - --help Show help [boolean] - --version Show version number [boolean] - ``` - -??? code "Transfer" - ```bash - worm transfer INSERT_SOURCE_CHAIN, INSERT_DESTINATION_CHAIN, INSERT_DESTINATION_ADDRESS, INSERT_AMOUNT, INSERT_NETWORK - -Options: - --help Show help [boolean] - --version Show version number [boolean] - --src-chain source chain [required] [choices: - 'solana', - 'ethereum', - 'terra', - 'bsc', - 'polygon', - 'avalanche', - 'oasis', - 'algorand', - 'aurora', - 'fantom', - 'karura', - 'acala', - 'klaytn', - 'celo', - 'near', - 'moonbeam', - 'neon', - 'terra2', - 'injective', - 'osmosis', - 'sui', - 'aptos', - 'arbitrum', - 'optimism', - 'gnosis', - 'pythnet', - 'xpla', - 'btc', - 'base', - 'sei', - 'rootstock', - 'scroll', - 'mantle', - 'blast', - 'xlayer', - 'linea', - 'berachain', - 'seievm', - 'wormchain', - 'cosmoshub', - 'evmos', - 'kujira', - 'neutron', - 'celestia', - 'stargaze', - 'seda', - 'dymension', - 'provenance', - 'sepolia', - 'arbitrum_sepolia', - 'base_sepolia', - 'optimism_sepolia', - 'holesky', - 'polygon_sepolia'] - --dst-chain destination chain - [required] [choices: - 'solana', - 'ethereum', - 'terra', - 'bsc', - 'polygon', - 'avalanche', - 'oasis', - 'algorand', - 'aurora', - 'fantom', - 'karura', - 'acala', - 'klaytn', - 'celo', - 'near', - 'moonbeam', - 'neon', - 'terra2', - 'injective', - 'osmosis', - 'sui', - 'aptos', - 'arbitrum', - 'optimism', - 'gnosis', - 'pythnet', - 'xpla', - 'btc', - 'base', - 'sei', - 'rootstock', - 'scroll', - 'mantle', - 'blast', - 'xlayer', - 'linea', - 'berachain', - 'seievm', - 'wormchain', - 'cosmoshub', - 'evmos', - 'kujira', - 'neutron', - 'celestia', - 'stargaze', - 'seda', - 'dymension', - 'provenance', - 'sepolia', - 'arbitrum_sepolia', - 'base_sepolia', - 'optimism_sepolia', - 'holesky', - 'polygon_sepolia'] - --dst-addr destination address [string] [required] - --token-addr token address [string] [default: native token] - --amount token amount [string] [required] - -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] - --rpc RPC endpoint [string] - ``` +```json +{ + "network": "Testnet", + "chains": { + "Sepolia": { + "version": "1.1.0", + "mode": "burning", + "paused": true, // set to true to pause the contract + "owner": "0x0088DFAC40029f266e0FF62B82E47A07467A0345", + "manager": "0x5592809cf5352a882Ad5E9d435C6B7355B716357", + //... + "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" + } + } +} +``` -??? code "Verify VAA" - ```bash - worm verify-vaa INSERT_VAA, INSERT_NETWORK +!!! note + While the `Pauser` can pause contracts, the ability to un-pause contracts is callable only by the `Owner`. -Options: - --help Show help [boolean] - --version Show version number [boolean] - -v, --vaa vaa in hex format [string] [required] - -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] - ``` +The `Owner` and the `Pauser` addresses can each pause the contract. Since the contract `Owner` address is typically a multisig or a more complex DAO governance contract, and pausing the contract only affects the availability of token transfers, protocols can choose to set the `Pauser` address to be a different address. Creating a separate `Pauser` helps protocols respond quickly to potential risks without going through a drawn-out process. +Consider separating `Owner` and `Pauser` roles for your multichain deployment. `Owner` and `Pauser` roles are defined directly on the `NttManager` contract. +--- END CONTENT --- -## Examples +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/index +--- BEGIN CONTENT --- +--- +title: Native Token Transfers (NTT) - Configuration +description: This section contains information on configuring Native Token Transfers (NTT), including guidance on setting Owner and Pauser access control roles and management of rate-limiting. +--- -### VAA generation +# Configure Native Token Transfers (NTT) -Use `generate` to create VAAs for testing. For example, use the following command to create an NFT bridge registration VAA: +## Get Started -```bash -worm generate registration --module NFTBridge \ - --chain bsc \ - --contract-address 0x706abc4E45D419950511e474C7B9Ed348A4a716c \ - --guardian-secret cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0 -``` +This section contains information on configuring Native Token Transfers (NTT), including guidance on setting Owner and Pauser access control roles and management of rate-limiting. -The below example generates a token attestation VAA: +
-```bash -worm generate attestation --emitter-chain ethereum \ - --emitter-address 11111111111111111111111111111115 \ - --chain ethereum \ - --token-address 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 \ - --decimals 6 \ - --symbol USDC \ - --name USDC \ - --guardian-secret cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0 -``` +- :octicons-clock-16:{ .lg .middle } **Rate Limiting** -### VAA parsing + --- -Use `parse` to parse a VAA into JSON: + Discover options for configuring rate limits and how queueing effects transaction flow. -```bash -worm parse $(worm-fetch-governance 13940208096455381020) -``` + [:custom-arrow: Explore rate limit options](/docs/build/transfers/native-token-transfers/configuration/rate-limiting/) -This example will fetch governance VAA `13940208096455381020` and print it as JSON: +- :octicons-unlock-16:{ .lg .middle } **Access Control** -```bash -# ...signatures elided -timestamp: 1651416474, -nonce: 1570649151, -emitterChain: 1, -emitterAddress: '0000000000000000000000000000000000000000000000000000000000000004', -sequence: 13940208096455381020n, -consistencyLevel: 32, -payload: { - module: 'Core', - type: 'GuardianSetUpgrade', - chain: 0, - newGuardianSetIndex: 2, - newGuardianSetLength: 19, - newGuardianSet: [ - '58cc3ae5c097b213ce3c81979e1b9f9570746aa5', - 'ff6cb952589bde862c25ef4392132fb9d4a42157', - '114de8460193bdf3a2fcf81f86a09765f4762fd1', - '107a0086b32d7a0977926a205131d8731d39cbeb', - '8c82b2fd82faed2711d59af0f2499d16e726f6b2', - '11b39756c042441be6d8650b69b54ebe715e2343', - '54ce5b4d348fb74b958e8966e2ec3dbd4958a7cd', - '66b9590e1c41e0b226937bf9217d1d67fd4e91f5', - '74a3bf913953d695260d88bc1aa25a4eee363ef0', - '000ac0076727b35fbea2dac28fee5ccb0fea768e', - 'af45ced136b9d9e24903464ae889f5c8a723fc14', - 'f93124b7c738843cbb89e864c862c38cddcccf95', - 'd2cc37a4dc036a8d232b48f62cdd4731412f4890', - 'da798f6896a3331f64b48c12d1d57fd9cbe70811', - '71aa1be1d36cafe3867910f99c09e347899c19c3', - '8192b6e7387ccd768277c17dab1b7a5027c0b3cf', - '178e21ad2e77ae06711549cfbb1f9c7a9d8096e8', - '5e1487f35515d02a92753504a8d75471b9f49edb', - '6fbebc898f403e4773e95feb15e80c9a99c8348d' - ] -} -``` + --- -### Submitting VAAs + Learn more about access control, including why you should consider setting a separate Pauser address as part of your development security plan. -Use `submit` to submit a VAA to a chain. It first parses the VAA and determines the destination chain and module. For example, a contract upgrade contains both the target chain and module, so the only required argument is the network moniker (`mainnet` or `testnet`): + [:custom-arrow: Explore access control roles](/docs/build/transfers/native-token-transfers/configuration/access-control/) -```bash -worm submit $(cat my-nft-registration.txt) --network mainnet -``` +
+--- END CONTENT --- -The script will ask you to specify the target chain for VAAs that don't have a specific target chain (like registrations or Guardian set upgrades). For example, to submit a Guardian set upgrade on all chains, simply run: +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/rate-limiting +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Rate Limiting +description: Learn about rate limits in Wormhole NTT by configuring send/receive limits, queuing, and canceling flows to manage multichain token transfers efficiently. +--- -```bash -worm-fetch-governance 13940208096455381020 > guardian-upgrade.txt -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain oasis -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain aurora -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain fantom -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain karura -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain acala -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain klaytn -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain avalanche -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain polygon -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain bsc -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain solana -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain terra -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain ethereum -worm submit $(cat guardian-upgrade.txt) --network mainnet --chain celo -``` +## Introduction -The VAA payload type (Guardian set upgrade) specifies that this VAA should go to the core bridge, and the tool directs it there. +The Native Token Transfer (NTT) framework provides configurable per-chain rate limits for sending and receiving token transfers. Integrators can manage these limits via their own governance processes to quickly adapt to on-chain activity. -### Getting Info +If a transfer is rate-limited on the source chain and queueing is enabled via `shouldQueue = true`, the transfer is placed into an outbound queue and can be released after the rate limit expires. -To get info about a contract (only EVM supported at this time), use the following command: +You can configure the following limits on every chain where NTT is deployed directly using the manager: -```bash -worm evm info -c bsc -n mainnet -m TokenBridge -``` +- **Sending limit** - a single outbound limit for sending tokens from the chain +- **Per-chain receiving limits** - the maximum receiving limit, which can be configured on a per-chain basis. For example, allowing 100 tokens to be received from Ethereum but only 50 tokens to be received from Arbitrum -Running this command generates the following output: +Rate limits are replenished every second over a fixed duration. While the default duration is 24 hours, the value is configurable at contract creation. Rate-limited transfers on the destination chain are added to an inbound queue with a similar release delay. -```bash -{ - "address": "0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7", - "wormhole": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B", - "implementation": "0x621199f6beB2ba6fbD962E8A52A320EA4F6D4aA3", - "isInitialized": true, - "tokenImplementation": "0x7f8C5e730121657E17E452c5a1bA3fA1eF96f22a", - "chainId": 4, - "finality": 15, - "evmChainId": "56", - "isFork": false, - "governanceChainId": 1, - "governanceContract": "0x0000000000000000000000000000000000000000000000000000000000000004", - "WETH": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - "registrations": { - "Solana": "0xec7372995d5cc8732397fb0ad35c0121e0eaa90d26f828a534cab54391b3a4f5", - "Ethereum": "0x0000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585", - "Terra": "0x0000000000000000000000007cf7b764e38a0a5e967972c1df77d432510564e2", - "Polygon": "0x0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde", - "Avalanche": "0x0000000000000000000000000e082f06ff657d94310cb8ce8b0d9a04541d8052", - "Oasis": "0x0000000000000000000000005848c791e09901b40a9ef749f2a6735b418d7564", - "Algorand": "0x67e93fa6c8ac5c819990aa7340c0c16b508abb1178be9b30d024b8ac25193d45", - "Aurora": "0x00000000000000000000000051b5123a7b0f9b2ba265f9c4c8de7d78d52f510f", - "Fantom": "0x0000000000000000000000007c9fc5741288cdfdd83ceb07f3ea7e22618d79d2", - "Karura": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624", - "Acala": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624", - "Klaytn": "0x0000000000000000000000005b08ac39eaed75c0439fc750d9fe7e1f9dd0193f", - "Celo": "0x000000000000000000000000796dff6d74f3e27060b71255fe517bfb23c93eed", - "Near": "0x148410499d3fcda4dcfd68a1ebfcdddda16ab28326448d4aae4d2f0465cdfcb7", - "Moonbeam": "0x000000000000000000000000b1731c586ca89a23809861c6103f0b96b3f57d92", - "Neon": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Terra2": "0xa463ad028fb79679cfc8ce1efba35ac0e77b35080a1abe9bebe83461f176b0a3", - "Injective": "0x00000000000000000000000045dbea4617971d93188eda21530bc6503d153313", - "Osmosis": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Sui": "0xccceeb29348f71bdd22ffef43a2a19c1f5b5e17c5cca5411529120182672ade5", - "Aptos": "0x0000000000000000000000000000000000000000000000000000000000000001", - "Arbitrum": "0x0000000000000000000000000b2402144bb366a632d14b83f244d2e0e21bd39c", - "Optimism": "0x0000000000000000000000001d68124e65fafc907325e3edbf8c4d84499daa8b", - "Gnosis": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Pythnet": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Xpla": "0x8f9cf727175353b17a5f574270e370776123d90fd74956ae4277962b4fdee24c", - "Btc": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Base": "0x0000000000000000000000008d2de8d2f73f1f4cab472ac9a881c9b123c79627", - "Sei": "0x86c5fd957e2db8389553e1728f9c27964b22a8154091ccba54d75f4b10c61f5e", - "Rootstock": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Scroll": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", - "Mantle": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", - "Blast": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", - "Xlayer": "0x0000000000000000000000005537857664b0f9efe38c9f320f75fef23234d904", - "Linea": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Berachain": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Seievm": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Snaxchain": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Wormchain": "0xaeb534c45c3049d380b9d9b966f9895f53abd4301bfaff407fa09dea8ae7a924", - "Cosmoshub": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Evmos": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Kujira": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Neutron": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Celestia": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Stargaze": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Seda": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Dymension": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Provenance": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Sepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", - "ArbitrumSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", - "BaseSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", - "OptimismSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", - "Holesky": "0x0000000000000000000000000000000000000000000000000000000000000000", - "PolygonSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000" - } -} -``` +## Update Rate Limits -### Additional Info Examples +To configure or update the sending and receiving rate limits, follow these steps: -You can get the contract address for a module as follows: +1. **Locate the deployment file** - open the `deployment.json` file in your NTT project directory. This file contains the configuration for your deployed contracts -```bash -worm info rpc INSERT_NETWORK INSERT_CHAIN INSERT_MODULE -``` +2. **Modify the limits section** - for each chain, locate the limits field and update the outbound and inbound values as needed + + ```json + "limits": { + "outbound": "1000.000000000000000000", + "inbound": { + "Ethereum": "100.000000000000000000", + "Arbitrum": "50.000000000000000000" + } + } + ``` + + - **`outbound`** - sets the maximum tokens allowed to leave the chain + - **`inbound`** - configures per-chain receiving limits for tokens arriving from specific chains + +3. **Push the configuration** - use the NTT CLI to synchronize the updated configuration with the blockchain + + ```bash + ntt push + ``` + +4. **Verify the changes** - after pushing, confirm the new rate limits by checking the deployment status + + ```bash + ntt status + ``` + +???- note "`deployment.json` example" + ```json + { + "network": "Testnet", + "chains": { + "Sepolia": { + "version": "1.1.0", + "mode": "burning", + "paused": false, + "owner": "0x0088DFAC40029f266e0FF62B82E47A07467A0345", + "manager": "0x5592809cf5352a882Ad5E9d435C6B7355B716357", + "token": "0x5CF5D6f366eEa7123BeECec1B7c44B2493569995", + "transceivers": { + "threshold": 1, + "wormhole": { + "address": "0x91D4E9629545129D427Fd416860696a9659AD6a1", + "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" + } + }, + "limits": { + "outbound": "184467440737.095516150000000000", + "inbound": { + "ArbitrumSepolia": "500.000000000000000000" + } + }, + "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" + } + } + } + ``` -To get the contract address for `NFTBridge` on BSC Mainnet, for example, you can provide the following command: +## Queuing Mechanism -```bash -worm info contract mainnet bsc NFTBridge -``` +When a transfer exceeds the rate limit, it is held in a queue and can be released after the set rate limit duration has expired. The sending and receiving queuing behavior is as follows: -You can get the RPC address for a chain as follows: +- **Sending** - if an outbound transfer violates rate limits, users can either revert and try again later or queue their transfer. Users must return after the queue duration has expired to complete sending their transfer +- **Receiving** - if an inbound transfer violates rate limits, it is in a queue. Users or relayers must return after the queue duration has expired to complete receiving their transfer on the destination chain -```bash -worm info rpc INSERT_NETWORK INSERT_CHAIN -``` +Queuing is configured dynamically during each transfer by passing the `shouldQueue` parameter to the [`transfer` function](https://github.com/wormhole-foundation/native-token-transfers/blob/5e7ceaef9a5e7eaa13e823a67c611dc684cc0c1d/evm/src/NttManager/NttManager.sol#L171-L182){target=\_blank} in the `NttManager` contract. -To get the RPC address for BSC Mainnet, for example, you can provide the following command: +## Cancel Flows -```bash -worm info rpc mainnet bsc -``` +If users bridge frequently between a given source chain and destination chain, the capacity could be exhausted quickly. Loss of capacity can leave other users rate-limited, potentially delaying their transfers. The outbound transfer cancels the inbound rate limit on the source chain to avoid unintentional delays. This allows for refilling the inbound rate limit by an amount equal to the outbound transfer amount and vice-versa, with the inbound transfer canceling the outbound rate limit on the destination chain and refilling the outbound rate limit with an amount. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/faqs +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm --- BEGIN CONTENT --- --- -title: Toolkit FAQs -description: FAQs on Wormhole Toolkit, covering Wormholescan, CLI, SDKs (TypeScript, Solidity), Tilt, error handling, transaction history, and manual VAA submission. +title: Native Token Transfers EVM Deployment +description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. --- -# Toolkit FAQs +# Native Token Transfers (NTT) EVM Development -## Why does the `toNative` function in the TypeScript SDK return an error? +## Deploy Your Token and Ensure Compatibility -The `toNative` function may return an error if the platform-specific module (such as Solana or EVM) is not correctly imported or passed into the Wormhole constructor. +If you still need to do so, deploy the token contract to the destination or spoke chains. -To fix this, ensure the relevant platform module is imported and included when initializing Wormhole. For example, if you're working with Solana, make sure to import the Solana module and pass it into the Wormhole constructor like this: +### Requirements for Token Deployment -```typescript -import solana from '@wormhole-foundation/sdk/solana'; -const wh = await wormhole('Testnet', [solana]); -``` +Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports two deployment modes: burn-and-mint and hub-and-spoke. These modes differ in how tokens are managed across chains. -## How can I retrieve the history of previously bridged transactions? +#### Burn-and-Mint Mode -To retrieve the history of previously bridged transactions, you can use the Wormholescan API. Use the following endpoint to query the transaction history for a specific address: +Tokens integrated with `NttManager` in `burning` mode require the following two functions to be present: + +- `burn(uint256 amount)` +- `mint(address account, uint256 amount)` + +These functions aren't part of the standard ERC-20 interface. The [`INttToken` interface](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} documents the required functions and convenience methods, errors, and events. + +??? code "View the complete `INttToken` Interface`" + ```solidity + // SPDX-License-Identifier: Apache 2 +pragma solidity >=0.8.8 <0.9.0; + +interface INttToken { + /// @notice Error when the caller is not the minter. + /// @dev Selector 0x5fb5729e. + /// @param caller The caller of the function. + error CallerNotMinter(address caller); + + /// @notice Error when the minter is the zero address. + /// @dev Selector 0x04a208c7. + error InvalidMinterZeroAddress(); + + /// @notice Error when insufficient balance to burn the amount. + /// @dev Selector 0xcf479181. + /// @param balance The balance of the account. + /// @param amount The amount to burn. + error InsufficientBalance(uint256 balance, uint256 amount); + + /// @notice The minter has been changed. + /// @dev Topic0 + /// 0x0b5e7be615a67a819aff3f47c967d1535cead1b98db60fafdcbf22dcaa8fa5a9. + /// @param newMinter The new minter. + event NewMinter(address previousMinter, address newMinter); + + // NOTE: the `mint` method is not present in the standard ERC20 interface. + function mint(address account, uint256 amount) external; + + // NOTE: the `setMinter` method is not present in the standard ERC20 interface. + function setMinter(address newMinter) external; + + // NOTE: NttTokens in `burn` mode require the `burn` method to be present. + // This method is not present in the standard ERC20 interface, but is + // found in the `ERC20Burnable` interface. + function burn(uint256 amount) external; +} + ``` + +Later, you set mint authority to the corresponding `NttManager` contract. You can also follow the scripts in the [example NTT token](https://github.com/wormhole-foundation/example-ntt-token){target=\_blank} repository to deploy a token contract. + +#### Hub-and-Spoke Mode + +A central hub chain (e.g., Ethereum) manages the total token supply in hub-and-spoke mode. Other chains (spokes) mint or burn tokens during cross-chain transfers, ensuring consistency with the locked tokens on the hub chain. + + - **Hub chain** - tokens are locked on the hub chain when transferring to spoke chains + - **Spoke chains** - tokens are native to the spoke chains and are either minted or burned during cross-chain transfers + +!!! note + The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. + +For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager locks tokens on Ethereum, and the corresponding amount is minted on Polygon. Similarly, transferring tokens back from Polygon to Ethereum burns the tokens on Polygon and unlocks the equivalent tokens on Ethereum. + +This process ensures that the total token supply remains consistent across all chains, with the hub chain acting as the source of truth. + +For more detailed information, see the [Deployment Models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank} page. + +### Key Differences Between Modes + + - **Burn-and-mint** - tokens must implement custom `mint` and `burn` functions, allowing each chain to manage token issuance independently + - **Hub-and-spoke** - tokens only need to be ERC20 compliant, with the hub chain acting as the source of truth for supply consistency + +## Deploy NTT + +Create a new NTT project: ```bash -https://api.wormholescan.io/api/v1/operations?address=INSERT_ADDRESS +ntt new my-ntt-deployment +cd my-ntt-deployment ``` -Simply replace `INSERT_ADDRESS_HERE` with the address you want to query. The API will return a list of operations, including details about previously bridged transactions. +Initialize a new `deployment.json` file specifying the network: + +=== "Testnet" -???- example "Fetch transaction history for a specific address" ```bash - curl -X GET "https://api.wormholescan.io/api/v1/operations?address=0x05c009C4C1F1983d4B915C145F4E782de23d3A38" -H "accept: application/json" + ntt init Testnet ``` -## How can I manually submit a VAA to a destination chain in the correct format? - -To manually submit a VAA (Verifiable Action Approval) to a destination chain, follow these steps: - -1. **Obtain the VAA in Base64 format** - navigate to the **Advanced** tab in [Wormholescan](https://wormholescan.io/){target=\_blank} to find the VAA associated with the transaction you want to submit and copy the VAA in base64 format +=== "Mainnet" ```bash - https://wormholescan.io/#/tx/INSERT_TX_HASH?view=advanced + ntt init Mainnet ``` -2. **Convert the VAA to hex** - you must convert the base64 VAA into a hexadecimal (hex) format before submitting it to the destination chain. This can be done using various online tools or via command-line utilities like `xxd` or a script in a language like Python +Ensure you have set up your environment correctly: -3. **Submit the VAA through Etherscan (for EVM chains)** - once the VAA is in hex format, go to the [Etherscan UI](https://etherscan.io/){target=\_blank} and submit it through the [`TokenBridge`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/ITokenBridge.sol){target=\_blank} contract’s method (such as the `CompleteTransfer` function or `CompleteTransferWithPayload`) +```bash +export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY +``` - - The `TokenBridge` contract addresses for each chain are available in the [Wormhole contract addresses](/docs/build/reference/contract-addresses/){target=\_blank} section +Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: - - Interact with the smart contract through the Etherscan UI by pasting the hex-encoded VAA into the appropriate field +```bash +# Set scanner API Keys as environment variables +export SEPOLIA_SCAN_API_KEY=INSERT_ETHERSCAN_SEPOLIA_API_KEY +export ARBITRUMSEPOLIA_SCAN_API_KEY=INSERT_ARBISCAN_SEPOLIA_API_KEY -Following these steps, you can manually submit a VAA in the proper format to a destination chain. ---- END CONTENT --- +# Add each chain +# The contracts will be automatically verified using the scanner API keys above +ntt add-chain Sepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS +ntt add-chain ArbitrumSepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS +``` -Doc-Content: https://wormhole.com/docs/build/toolkit/index ---- BEGIN CONTENT --- ---- -title: Wormhole Tooling -description: This page lists key dev tools, including the WormholeScan Explorer, Wormhole CLI, Wormhole SDKs, and APIs for querying network data. ---- +While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. -# Wormhole Tooling +The `ntt add-chain` command takes the following parameters: -Regardless of which network development environment you are using, there are a few Wormhole-specific tools you should know about. +- Name of each chain +- Version of NTT to deploy (use `--latest` for the latest contract versions) +- Mode (either `burning` or `locking`) +- Your token contract address -## Get Started +The NTT CLI prints detailed logs and transaction hashes, so you can see exactly what's happening under the hood. -
+## Configure NTT -- :octicons-telescope-16:{ .lg .middle } **Wormholescan** +The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. You can run: - --- +- `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain +- `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and set up rate limits with the appropriate number of decimals, depending on the specific chain. For example: - Wormholescan is an explorer for looking at individual transfer statuses on Mainnet and Testnet. + For Solana, the limits are set with 9 decimal places: + ```json + "inbound": { + "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana + } + ``` - [:custom-arrow: Review transactions on Wormholescan](https://wormholescan.io){target=\_blank} + For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: + ```json + "inbound": { + "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia + } + ``` -- :octicons-code-square-16:{ .lg .middle } **Wormhole CLI Tool** + This initial configuration ensures that the rate limits are correctly represented for each chain's token precision + +- `ntt push` - syncs the on-chain configuration with local changes made to your `deployment.json` file - --- +After you deploy the NTT contracts, ensure that the deployment is properly configured and your local representation is consistent with the actual on-chain state by running `ntt status` and following the instructions shown on the screen. - The Wormhole CLI is a Swiss-Army knife utility command line tool. It is excellent for creating one-off VAAs, parsing VAAs, reading Wormhole contract configurations, and more. +## Set Token Minter to NTT Manager - [:custom-arrow: Get started with the CLI](/docs/build/toolkit/cli/) +The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. -- :octicons-code-square-16:{ .lg .middle } **Wormhole SDK** +!!! note + The required NTT Manager address can be found in the `deployment.json` file. - --- +- If you followed the [`INttToken`](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} interface, you can execute the `setMinter(address newMinter)` function + ```json + cast send $TOKEN_ADDRESS "setMinter(address)" $NTT_MANAGER_ADDRESS --private-key $ETH_PRIVATE_KEY --rpc-url $YOUR_RPC_URL + ``` - Explore Wormhole's TypeScript SDK and learn how to perform different types of transfers, including native, token, and USDC transfers. +- If you have a custom process to manage token minters, you should now follow that process to add the corresponding NTT Manager as a minter - [:custom-arrow: Get started with the SDK](/docs/build/applications/wormhole-sdk/) +By default, NTT transfers to EVM blockchains support automatic relaying via the Wormhole relayer, which doesn't require the user to perform a transaction on the destination chain to complete the transfer. -- :octicons-code-square-16:{ .lg .middle } **Solidity SDK** +!!!important + To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. +--- END CONTENT --- - --- +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Solana Deployment +description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. +--- - Learn about Wormhole's Solidity SDK, including key components, interfaces, and tools for developing cross-chain decentralized applications on EVM-compatible blockchains. +# Native Token Transfers (NTT) Solana Deployment - [:custom-arrow: Get started with the SDK](/docs/build/toolkit/solidity-sdk/) +## Install Dependencies + +Ensure you have the following dependencies installed: + +- [Rust](https://www.rust-lang.org/tools/install){target=\_blank} +- [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** +- [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** -- :octicons-beaker-16:{ .lg .middle } **Tilt** +!!!Warning + Ensure you are using the above versions of Solana and Anchor. Running the deployment with a different version may cause issues. - --- +## Deploy NTT - Learn about Tilt, a Wormhole developer environment with a local Kubernetes set up for cross-chain testing with Guardian nodes and relayers for seamless development. +Create a new NTT project (or use an existing NTT project): - [:custom-arrow: Get started with Tilt](/docs/build/toolkit/tilt/) +```bash +ntt new my-ntt-deployment +cd my-ntt-deployment +``` -- :octicons-question-16:{ .lg .middle } **Toolkit FAQs** +Initialize a new `deployment.json` file specifying the network: - --- +=== "Testnet" - Find answers to common questions about Wormhole Toolkit, covering Wormholescan, CLI, SDKs, error handling, and more. + ```bash + ntt init Testnet + ``` - [:custom-arrow: Read Toolkit FAQs](/docs/build/toolkit/faqs/) +=== "Mainnet" -
+ ```bash + ntt init Mainnet + ``` -## Additional Resources +## Deploy Your Solana Token -
+???- interface "Deploy an SPL Token" -- :octicons-code-square-16:{ .lg .middle } **Wormhole Spy SDK** + 1. Generate a new Solana key pair to create a wallet: + ```bash + solana-keygen grind --starts-with w:1 --ignore-case + ``` - --- + 2. Set Solana configuration to use the new key pair created in step 1: + ```bash + solana config set --keypair INSERT_PATH_TO_KEYPAIR_JSON + ``` - The Wormhole Spy SDK allows you to listen to all the Guardian Network activity. + 3. Set the Solana configuration to use the default RPC URL for Devnet: + ```bash + solana config set -ud + ``` - [:custom-arrow: Check out the Spy SDK repository](https://github.com/wormhole-foundation/wormhole/tree/main/spydk/js){target=\_blank} + 4. Request an airdrop of two SOL and check the balance: + ```bash + solana airdrop 2 & solana balance + ``` -- :octicons-pencil-16:{ .lg .middle } **VAA Parser** + 5. Install or update the SPL Token CLI: + ```bash + cargo install spl-token-cli + ``` - --- + 6. Create a new token with the SPL Token CLI (make sure you have enough balance to pay for the transaction): + ```bash + spl-token create-token + ``` - The VAA Parser is a resource for parsing out details of an encoded VAA. + 7. Create a new account for the token created in step 6: + ```bash + spl-token create-account INSERT_TOKEN_ADDRESS + ``` - [:custom-arrow: Try the VAA Parser](https://wormholescan.io/#/developers/vaa-parser){target=\_blank} + 8. Mint `1000` tokens to the created account: + ```bash + spl-token mint INSERT_TOKEN_ADDRESS 1000 + ``` -
---- END CONTENT --- +!!! note + NTT versions `>=v2.0.0+solana` support SPL tokens with transfer hooks. -Doc-Content: https://wormhole.com/docs/build/toolkit/solidity-sdk ---- BEGIN CONTENT --- ---- -title: Solidity SDK -description: How to use the Wormhole Solidity SDK for cross-chain messaging, token transfers, and integrating decentralized applications on EVM-compatible blockchains. ---- +### Deployment Mode Requirements -# Solidity SDK +The NTT CLI supports two deployment models: **Hub-and-Spoke** and **Burn-and-Mint**. +For a detailed explanation of these models, see the [Deployment Models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank} page. -## Introduction +#### Hub-and-Spoke -The [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} simplifies cross-chain messaging on EVM-compatible chains by providing essential Solidity interfaces, utility libraries, and testing tools. It allows developers to build secure and efficient cross-chain decentralized applications (dApps) without manually interacting with Wormhole’s core contracts across multiple chains. +No additional configuration is required for hub-and-spoke deployments. Tokens retain their original mint authority, so the steps below are not necessary. You can [generate a new NTT program key pair](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#generate-ntt-program-key-pair) and [deploy the NTT program](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#__tabbed_2_2) directly. -By abstracting away complex interactions, the SDK drastically reduces the overhead associated with cross-chain development. It provides: +#### Burn-and-Mint - - **Unified interfaces** - developers can use a standardized set of Solidity interfaces to handle cross-chain messaging, token transfers, and verifiable action approvals (VAAs) without needing to manage the underlying infrastructure - - **Automated message delivery** - the SDK leverages Wormhole’s relayer infrastructure, automatically delivering messages across chains, reducing the need for manual intervention, and simplifying gas management on the target chain - - **Seamless integration with Wormhole services** - the SDK integrates with Wormhole’s `TokenBridge` and Circle’s CCTP, providing built-in mechanisms for cross-chain asset transfers, making token bridges and cross-chain messaging easy to implement - - **Testing and development tools** - it comes with comprehensive tools for local testing and simulation, allowing developers to validate their cross-chain logic before deployment, minimizing the risk of errors in production environments +For burn-and-mint deployments, you must configure the token's mint authority to enable cross-chain transfers. To complete the required setup, follow the steps in the following sections. -These features significantly streamline the development workflow by reducing complexity and offering tools compatible with various EVM versions. This helps developers avoid issues that arise from differences in EVM equivalence across chains. +## Configuration and Deployment -This guide covers installation, key concepts, and usage examples to help you build secure cross-chain applications using the SDK, from token transfers to advanced message passing. +### Generate NTT Program Key Pair -## Installation +When you deploy a Solana program, you need to hardcode the program ID (a Pubkey) into the program code. The NTT CLI allows you to do this seamlessly. -To install the SDK, use [Foundry and Forge](https://book.getfoundry.sh/getting-started/installation){target=\_blank}. This pulls the necessary libraries into your project: +Generate a new NTT program key pair using: ```bash -forge install wormhole-foundation/wormhole-solidity-sdk@v0.1.0 +solana-keygen grind --starts-with ntt:1 --ignore-case ``` -When developing cross-chain applications, ensure that the chains you target support the EVM version you’re using. For instance, the PUSH0 opcode (introduced in Solidity 0.8.20) may not be available on all chains. To avoid compatibility issues, you can set the EVM version in your `foundry.toml` file: +### Derive Token Authority -```toml -evm_version = "paris" -``` +In this step, you'll derive the token authority Program Derived Address (PDA) of the newly generated NTT program ID: -This ensures compatibility across all targeted chains, even if some do not yet support the latest EVM upgrades. +```bash +ntt solana token-authority INSERT_YOUR_NTT_PROGRAM_KEY_PAIR +``` -## Key Considerations +This script will output the derived PDA, which you will use in the next step. -Before deploying applications using the Wormhole Solidity SDK, keep these considerations in mind: +### Set SPL Token Mint Authority - - **Version compatibility** - the SDK is evolving, and using tagged releases for production is crucial, as the main branch may introduce breaking changes - - **IERC-20 remapping** - the SDK provides a remapping mechanism to handle potential conflicts between different implementations of IERC20, ensuring seamless integration with other libraries - - **Testing** - given the cross-chain dependencies, testing all integrations is critical to avoid issues in production environments +!!!Warning + You must create your token's metadata before delegating mint authority. [See an example on how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata){target=\_blank}. -## Concepts and Components +If deploying in `burning` mode, you'll set the SPL token mint authority to the newly generated token authority PDA: -The Wormhole Solidity SDK consists of key components that streamline cross-chain communication, allowing developers to securely and efficiently interact with Wormhole’s infrastructure. Below are the critical concepts and contracts you'll encounter when working with the SDK. +```bash +spl-token authorize INSERT_TOKEN_ADDRESS mint INSERT_DERIVED_PDA +``` -### Cross-Chain Messaging with the Wormhole Relayer SDK +!!! note + Please ensure that you are using Anchor CLI version `0.29.0`. Running the deployment with a different version may cause compatibility issues. -The [`WormholeRelayerSDK.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank} contract simplifies cross-chain messaging and asset transfers by integrating several necessary modules, including the Wormhole relayer. By automating message delivery between chains, the Wormhole relayer removes the need for developers to manage relayer infrastructure or handle gas on the target chain. Delivery providers handle the message payload, ensuring secure and efficient communication. -You can refer to the [Wormhole relayer documentation](/docs/build/contract-integrations/wormhole-relayers/){target=\_blank} for more details. +### Deploy NTT -Key modules in the SDK include: +Generate or export your payer key pair, then run: - - **`Base.sol`** - the core module for cross-chain messaging. It provides utility functions like `onlyWormholeRelayer()` and `setRegisteredSender()`, ensuring that only messages from trusted relayers are processed +=== "Burn-and-Mint" - - **`TokenBase.sol`** - this module extends the base messaging functionality to support cross-chain token transfers. It includes utilities for securely sending and receiving tokens between EVM-compatible chains + ```bash + ntt add-chain Solana --latest --mode burning --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ``` - - **`CCTPBase.sol`** - designed for Circle’s Cross-Chain Transfer Protocol, this module manages asset transfers such as USDC between chains. It includes functionalities for both sending and receiving CCTP-based assets +=== "Hub-and-Spoke" - - **`CCTPAndTokenBase.sol`** - a combined module that supports token and CCTP-based asset transfers in a single implementation. This module simplifies development for applications needing to handle both types of transfers + ```bash + ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ``` -The Wormhole Solidity SDK offers a unified framework for cross-chain communication. Developers can select specific modules based on their application’s requirements, whether for messaging, token transfers, or CCTP. Each module includes built-in security measures, ensuring that only authorized senders or relayers are accepted, thereby protecting the application from unauthorized interactions. +!!! note + The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. -Please refer to the complete `WormholeRelayerSDK.sol` file below for further details. +The NTT Solana program will then compile and deploy, returning the program ID. -???- code "`WormholeRelayerSDK.sol`" - ```solidity - // SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.19; +!!! note + Refer to the [Solana docs](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for failed deployments, which provide instructions on finding buffer accounts and closing them to reclaim allocated SOL. -import "wormhole-sdk/interfaces/IWormholeReceiver.sol"; -import "wormhole-sdk/interfaces/IWormholeRelayer.sol"; -import "wormhole-sdk/constants/Chains.sol"; -import "wormhole-sdk/Utils.sol"; +### Configure NTT -import {Base} from "wormhole-sdk/WormholeRelayer/Base.sol"; -import {TokenBase, TokenReceiver, TokenSender} from "wormhole-sdk/WormholeRelayer/TokenBase.sol"; -import {CCTPBase, CCTPReceiver, CCTPSender} from "wormhole-sdk/WormholeRelayer/CCTPBase.sol"; -import {CCTPAndTokenBase, CCTPAndTokenReceiver, CCTPAndTokenSender} from "wormhole-sdk/WormholeRelayer/CCTPAndTokenBase.sol"; - ``` +The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. You can run: -### Base Contract Overview +- `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain +- `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and sets up rate limits with the appropriate number of decimals, depending on the specific chain. For example: -The [`Base.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/Base.sol){target=\_blank} contract is a core part of the Wormhole Solidity SDK, providing essential helper functions and modifiers for managing cross-chain messages securely via the Wormhole Relayer. It handles sender registration and message validation, ensuring only authorized senders from specific chains can send messages. + For Solana, the limits are set with 9 decimal places: + ```json + "inbound": { + "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana + } + ``` - - **`onlyWormholeRelayer()`** - a modifier that ensures only authorized messages from the Wormhole relayer contract are processed, restricting access to certain functions + For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: + ```json + "inbound": { + "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia + } + ``` - ```solidity - require( - msg.sender == address(wormholeRelayer), - "Msg.sender is not Wormhole Relayer" - ); - _; - } - ``` + This initial configuration ensures that the rate limits are correctly represented for each chain's token precision. - - **`setRegisteredSender()`** - restricts message acceptance to a registered sender from a specific chain, ensuring messages are only processed from trusted sources +### Deploy NTT to Solana - ```solidity - uint16 sourceChain, - bytes32 sourceAddress - ) public { - require( - msg.sender == registrationOwner, - "Not allowed to set registered sender" - ); - registeredSenders[sourceChain] = sourceAddress; - } - ``` +You can now push the deployment to the Solana network, specifying the key pair that will cover the gas fees: -These security measures ensure messages come from the correct source and are processed securely. Please refer to the complete `Base.sol` contract below for further details. +```bash +ntt push --payer INSERT_YOUR_KEYPAIR_JSON +``` -???- code "`Base.sol`" - ```solidity - // SPDX-License-Identifier: Apache 2 -pragma solidity ^0.8.19; +By default, NTT transfers to Solana support manual relaying, which requires the user to perform a transaction on Solana to complete the transfer. UI components such as Wormhole Connect support this out of the box. For automatic Wormhole relaying support on Solana, [contact](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} Wormhole contributors. -import "wormhole-sdk/interfaces/IWormholeReceiver.sol"; -import "wormhole-sdk/interfaces/IWormholeRelayer.sol"; -import "wormhole-sdk/interfaces/IWormhole.sol"; -import "wormhole-sdk/Utils.sol"; +!!!important + To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. +--- END CONTENT --- -abstract contract Base { - IWormholeRelayer public immutable wormholeRelayer; - IWormhole public immutable wormhole; +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/index +--- BEGIN CONTENT --- +--- +title: Native Token Transfers (NTT) - Deployment +description: This section provides information on installing Wormhole's Native Token Transfer framework, deployment to EVM and Solana, and post deployment NTT maintenance. +--- - address registrationOwner; - mapping(uint16 => bytes32) registeredSenders; +# Deploy Native Token Transfers (NTT) - constructor(address _wormholeRelayer, address _wormhole) { - wormholeRelayer = IWormholeRelayer(_wormholeRelayer); - wormhole = IWormhole(_wormhole); - registrationOwner = msg.sender; - } +## Get Started - modifier onlyWormholeRelayer() { - require( - msg.sender == address(wormholeRelayer), - "Msg.sender is not Wormhole Relayer" - ); - _; - } +This section provides information on installing Wormhole's Native Token Transfer framework, deployment to EVM and Solana, and post deployment NTT maintenance. - modifier isRegisteredSender(uint16 sourceChain, bytes32 sourceAddress) { - require( - registeredSenders[sourceChain] == sourceAddress, - "Not registered sender" - ); - _; - } +
- /** - * Sets the registered address for 'sourceChain' to 'sourceAddress' - * So that for messages from 'sourceChain', only ones from 'sourceAddress' are valid - * - * Assumes only one sender per chain is valid - * Sender is the address that called 'send' on the Wormhole Relayer contract on the source chain) - */ - function setRegisteredSender( - uint16 sourceChain, - bytes32 sourceAddress - ) public { - require( - msg.sender == registrationOwner, - "Not allowed to set registered sender" - ); - registeredSenders[sourceChain] = sourceAddress; - } -} - ``` +- :octicons-download-16:{ .lg .middle } **Installation** -### Interface for Cross-Chain Messages + --- -The Wormhole Solidity SDK interacts with the Wormhole relayer for sending and receiving messages across EVM-compatible chains. The [`IWormholeRelayer`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/IWormholeRelayer.sol){target=\_blank} and [`IWormholeReceiver`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/IWormholeReceiver.sol){target=\_blank} interfaces are central to cross-chain communication, enabling secure and efficient message delivery. + Prerequisites and commands for installing the NTT CLI and working with the NTT framework. -For detailed information on how to implement these interfaces, refer to the [Wormhole Relayer Interfaces documentation](/docs/build/contract-integrations/wormhole-relayers/#wormhole-relayer-interfaces){target=\_blank}. This section covers: + [:custom-arrow: Install the NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) - - **`IWormholeRelayer`** – methods for sending cross-chain messages, VAAs, and token transfers - - **`IWormholeReceiver`** – the required implementation for receiving cross-chain messages - - **`quoteEVMDeliveryPrice()`** – how to estimate gas and fees for cross-chain transactions +- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM** -These interfaces reduce the complexity of cross-chain dApp development by abstracting away the details of relayer infrastructure, ensuring that message delivery is handled efficiently. + --- -### Advanced Concepts + Find information on preparing for NTT deployment to EVM, including an example NTT token repository. -For developers interested in exploring additional advanced topics, the following sections provide insights into key aspects of the SDK’s functionality. + [:custom-arrow: Deploy token and NTT contracts](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/) -???- note "Error Handling and Reverts" - The SDK defines several custom errors to help developers handle common issues like incorrect gas fees, invalid senders, and more. For example, `InvalidMsgValue` is thrown when the message value for a relayed message is erroneous. +- :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** - ```solidity - error InvalidMsgValue(uint256 msgValue, uint256 totalFee); - ``` + --- -## Usage + Your guide to NTT deployment to Solana, including setup, token compatibility, mint/burn modes, and CLI usage. -This section covers cross-chain messaging and token transfers and shows how to use the Wormhole Solidity SDK in real-world scenarios. + [:custom-arrow: Deploy token and NTT contracts](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/) -### Send a Cross-Chain Message +- :octicons-search-16:{ .lg .middle } **Post Deployment** -To send a cross-chain message, inherit from the base contract provided by the SDK and use its helper methods to define your message and sender address. Here’s a basic example: + --- -```solidity -pragma solidity ^0.8.19; + Learn how to best monitor and maintain your NTT deployment to get the most out of your Wormhole integration while providing security for users. -import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/Base.sol"; + [:custom-arrow: Explore next steps](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/) -contract CrossChainSender is Base { - constructor( - address _wormholeRelayer, - address _wormhole - ) Base(_wormholeRelayer, _wormhole) {} +- :octicons-alert-16:{ .lg .middle } **Troubleshooting** - function sendMessage( - bytes memory message, - uint16 targetChain, - bytes32 targetAddress - ) external payable { - // Register sender and send message through WormholeRelayer - setRegisteredSender(targetChain, msg.sender); - onlyWormholeRelayer().sendPayloadToEvm( - targetChain, - address(targetAddress), - message, - 0, - 500_000 - ); - } -} -``` + --- -This contract extends `Base.sol` and allows sending cross-chain messages securely using the `WormholeRelayer`. + Explore solutions and detailed guidance in our troubleshooting guide to resolve issues with NTT deployment. -### Send Tokens Across Chains + [:custom-arrow: Get help](/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting/) -The SDK enables seamless token transfers between EVM-compatible chains in addition to sending messages. To facilitate cross-chain token transfers, you can extend the SDK's `TokenSender` and `TokenReceiver` base contracts. +
+--- END CONTENT --- -```solidity -pragma solidity ^0.8.19; +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/installation +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Installation +description: Learn how to Install Wormhole’s Native Token Transfers (NTT) framework, a flexible and composable framework for transferring tokens across blockchains. +--- -import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/TokenBase.sol"; +# Install the Native Token Transfers CLI -contract CrossChainTokenSender is TokenSender { - constructor( - address _wormholeRelayer, - address _wormhole - ) TokenSender(_wormholeRelayer, _wormhole) {} +## Installation - function sendToken( - address token, - uint256 amount, - uint16 targetChain, - bytes32 targetAddress - ) external payable { - // Send tokens across chains - transferTokenToTarget(token, amount, targetChain, targetAddress); - } -} -``` +In this video, the Wormhole team walks you through installing the Native Token Transfers (NTT) CLI. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide. -In this example, `TokenSender` initiates a token transfer to another chain. The SDK’s built-in utilities securely handle token transfers, ensuring proper VAAs are generated and processed. +
-### Receive Tokens Across Chains +The fastest way to deploy Native Token Transfers (NTT) is using the NTT CLI. As prerequisites, ensure you have the following installed: -To receive tokens on the target chain, implement a contract that inherits from `TokenReceiver` and overrides the `receiveWormholeMessages` function. +- Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} +- Install [Bun](https://bun.sh/){target=\_blank} -```solidity -pragma solidity ^0.8.19; +Install the NTT CLI: -import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/TokenBase.sol"; +```bash +curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash +``` -contract CrossChainTokenReceiver is TokenReceiver { - constructor( - address _wormholeRelayer, - address _wormhole - ) TokenReceiver(_wormholeRelayer, _wormhole) {} +Verify the NTT CLI is installed: - // Function to handle received tokens from another chain - function receiveWormholeMessages( - bytes memory payload, - bytes[] memory additionalMessages, - bytes32 sourceAddress, - uint16 sourceChain, - bytes32 deliveryHash - ) external payable override { - // Process the received tokens here - receiveTokens(payload); - } -} +```bash +ntt --version ``` -In this example, `TokenReceiver` allows the contract to handle tokens sent from the source chain. Once the cross-chain message is received, the `receiveWormholeMessages` function processes the incoming tokens. Always validate the message's authenticity and source. +### Updating + +To update an existing NTT CLI installation, run: + +```bash +ntt update +``` !!! note - Always verify the source of incoming messages and tokens to prevent unauthorized access to your contract. Please refer to the [Emitter Verification](/docs/build/contract-integrations/core-contracts/#validating-the-emitter/){target=\_blank} section for more details. + NTT CLI installations and updates will always pick up the latest tag with name vX.Y.Z+cli and verify that the underlying commit is included in main. -## Testing Environment +For local development, you can update your CLI version from a specific branch or install from a local path. -The SDK includes built-in support for Forge-based testing, which allows you to test your cross-chain applications locally before deploying them to production. Testing with the same Solidity compiler version and configuration you plan to use in production is highly recommended to catch any potential issues early. +To install from a specific branch, run: -For a detailed example, check out the below repositories: +```bash +ntt update --branch foo +``` - - [Cross chain messaging](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/){target=\_blank} - - [Cross chain token transfer](/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/){target=\_blank} +To install locally, run: +```bash +ntt update --path path/to/ntt/repo +``` + +Git branch and local installations enable a fast iteration loop as changes to the CLI code will immediately be reflected in the running binary without having to run any build steps. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/tilt +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment --- BEGIN CONTENT --- --- -title: Tilt Introduction and Setup -description: Learn about Tilt, a Wormhole dev environment with a local Kubernetes set up for cross-chain testing with Guardian nodes and relayers for seamless development. +title: Native Token Transfers Post Deployment +description: Learn post-deployment guidelines for optimizing Wormhole NTT, which include testing, security, frontend integration, ecosystem coordination, and monitoring. --- -# Tilt - -[Tilt](https://tilt.dev/){target=\_blank} is part of the official Docker ecosystem. It's a tool that allows developers to configure a Kubernetes environment for development easily. +# Native Token Transfers (NTT) Post Deployment -!!! note - Tilt is often referred to as "Devnet" in the Wormhole ecosystem, so any information labeled as "Devnet" also applies to Tilt. +## Post Deployment Recommendations -However, in the context of Wormhole, "Tilt" refers to the development environment used by the [Wormhole Core repository](https://github.com/wormhole-foundation/wormhole){target=\_blank}. This environment stands up Docker images for all the tools necessary to build across multiple blockchains, including: +To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed NTT: -- All the Wormhole-supported blockchains and ecosystems -- A Guardian node -- Relayers -- Databases, Redis -- Utility front ends +- Implement a robust testing plan for your multichain token before launching +- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits +- Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience +- Alternatively the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately +- Monitor and maintain your multichain deployment -The Tilt environment is designed to provide an entire cross-chain development stack right out of the box. +## Post Deployment Integration Demos -## Is Tilt Right for You? +
-Tilt is a good option for developers who need a local development environment and have access to a machine that can handle running it. It is also an excellent option for developers who want to establish a CI testing suite. +- :octicons-code-16:{ .lg .middle } **Wormhole NTT Connect Demo** -=== "Pros" + --- - - Out-of-the-box support for the many components needed to develop across the heterogeneous blockchain spaces - - Consistent development environment, where contracts deploy deterministically, and everything is already linked up - - Ability to easily enable or disable components as needed - - Regularly updated as new components join the Wormhole ecosystem + Check out an example project that uses a Vite-React TypeScript application and integrates it with Wormhole Connect, a customizable widget for cross-chain asset transfers. -=== "Cons" + [:custom-arrow: Explore the NTT Connect demo](https://github.com/wormhole-foundation/demo-ntt-connect) - - Relatively high system requirements, but this can be mitigated by disabling components - - Most blockchains are "blank slates" with no contracts deployed. Thus, if your contracts have any dependencies, you may have to deploy them yourself or alter the default Tilt configuration - - Spin-up and rebuild times can be slow, which can result in a slow workflow +- :octicons-code-16:{ .lg .middle } **Wormhole NTT TypeScript SDK Demo** -## Tilt Installation + --- -Tilt functions best in a UNIX-style environment. To run the Tilt environment, make sure you have [Tilt](https://docs.tilt.dev/install.html){target=\_blank} and [Go](https://go.dev/doc/install){target=\_blank} installed. + Reference an example project that uses the Wormhole TypeScript SDK to facilitate token transfers between different blockchain networks after deploying the NTT framework. -### MacOS Instructions + [:custom-arrow: Explore the NTT TypeScript SDK demo](https://github.com/wormhole-foundation/demo-ntt-ts-sdk) -You'll need to have `homebrew` installed on your system. You can install it with: +
+--- END CONTENT --- -```bash -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -``` +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting +--- BEGIN CONTENT --- +--- +title: Troubleshooting NTT Deployment +description: Resolve common issues in NTT deployment with this troubleshooting guide covering Solana, EVM, mint authority, decimals, and rate limits. +--- -Install Go: +# Troubleshooting NTT Deployment -```bash -brew install go -``` +If you encounter issues during the NTT deployment process, check the following common points: -Install Docker: +- **Solana and Anchor versions** - ensure you are using the expected versions of Solana and Anchor as outlined in the [deployment page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#install-dependencies){target=\_blank} + - [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** + - [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** +- **Token compliance on EVM** - verify that your token is an ERC20 token on the EVM chain +- **Mint authority transfer** + - **For burn or spoke tokens on Solana** - ensure the token mint authority was transferred as described in the [set SPL Token Mint Authority](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#set-spl-token-mint-authority){target=\_blank} section + - **For EVM tokens** - confirm the token minter was set to the NTT Manager. Refer to the [set Token Minter to NTT Manager](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/#set-token-minter-to-ntt-manager){target=\_blank} section for details +- **Decimal configuration** - run `ntt pull` to correctly configure the decimals in your `deployment.json` file. More details in the [configure NTT](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#configure-ntt){target=\_blank} section +- **Rate limit configuration** - increase your rate limits to a value greater than zero. A rate limit of zero can cause transactions to get stuck. Learn more on how to [configure rate limits](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/#configure-ntt){target=\_blank} +- **Docker environment based on Ubuntu 20.04 with all dependencies required for Wormhole NTT CLI development** - run `docker compose up -d` to start the container in your terminal from the directory containing the `docker-compose.yml` file -```bash -brew install docker -``` + ???- interface "Dockerfile" -After installation, go into Docker settings and switch on `kubernetes`. Also configure Docker to have 4 CPUs and about 16GB of RAM. + ```Dockerfile + FROM ubuntu:20.04 + # Set environment variables to prevent interactive prompts during installation + ENV DEBIAN_FRONTEND=noninteractive -Install Tilt: + # Update and install necessary dependencies + RUN apt-get update && apt-get install -y \ + curl \ + wget \ + git \ + build-essential \ + libssl-dev \ + libudev-dev \ + pkg-config \ + python3 \ + python3-pip \ + software-properties-common \ + ca-certificates \ + unzip \ + clang \ + cmake \ + protobuf-compiler \ + && apt-get clean && rm -rf /var/lib/apt/lists/* -```bash -brew install tilt -``` + # Install Rust + RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + ENV PATH="/root/.cargo/bin:$PATH" -### Linux Instructions + # Install Solana CLI ({{ntt.solana_cli_version}}) + RUN sh -c "$(curl -sSfL https://release.solana.com/{{ntt.solana_cli_version}}/install)" + ENV PATH="/root/.local/share/solana/install/active_release/bin:$PATH" -#### Install Go + # Install Anchor using avm + RUN cargo install --git https://github.com/coral-xyz/anchor avm --locked --force \ + && avm install 0.29.0 \ + && avm use 0.29.0 + ENV PATH="/root/.avm/bin:$PATH" -You can install Go with the following command: -```bash -wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz && -rm -r /usr/local/go && tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz -``` + ENV NVM_DIR=/root/.nvm + RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash \ + && . "$NVM_DIR/nvm.sh" \ + && nvm install 22 \ + && nvm use 22 \ + && nvm alias default 22 + ENV PATH="$NVM_DIR/versions/node/v22.12.0/bin:$PATH" -#### Install Docker Desktop + # Install Bun + RUN curl -fsSL https://bun.sh/install | bash + ENV PATH="/root/.bun/bin:$PATH" -If you're using Linux with a windows manager, it's highly recommended that you install Docker Desktop, since it comes with built-in Kubernetes, and you won't need to download Minikube. It's recommended that you allocate Docker at least 4 CPUs and 16GB RAM. Also, make sure you set up Docker as a non-root user. You can refer to [this list of Docker installation methods](https://docs.docker.com/engine/install/ubuntu/#installation-methods){target=\_blank}. + # Install Foundry + RUN curl -L https://foundry.paradigm.xyz | bash + ENV PATH="/root/.foundry/bin:${PATH}" + RUN /bin/bash -c "source /root/.bashrc && foundryup" -If you're using Docker Desktop, you can enable Kubernetes by going into Settings > Kubernetes and checking the checkbox to enable Kubernetes. + # Install Wormhole NTT CLI + RUN curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash -![Enable Kubernetes](/docs/images/build/toolkit/tilt/tilt-1.webp) + # Add a default working directory + WORKDIR /app -#### Minikube + # Expose port for development if needed + EXPOSE 8899 -The alternative to Docker Desktop with Kubernetes is to install [minikube](https://minikube.sigs.k8s.io/docs/start/){target=\_blank}. You can configure Minikube as follows: + # Entry point for the container + CMD ["bash"] + ``` -```bash -minikube start --driver=docker --kubernetes-version=v1.23.3 --cpus=4 --memory=14G --disk-size=10G --namespace=wormhole -``` + ???- interface "docker-compose.yml" + ```yml + services: + portal-ntt: + build: + context: . + dockerfile: Dockerfile + platform: linux/amd64 + volumes: + - ./src:/app + working_dir: /app + tty: true + ``` +--- END CONTENT --- -If you reboot your VM you'll need to run the `minikube start` command again before you bring up Tilt. +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs +--- BEGIN CONTENT --- +--- +title: Native Token Transfers FAQs +description: Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. +--- -#### Install Tilt +# Wormhole NTT FAQs -You can install Tilt with the following command: +## Do you have an example of how cross-chain lending can be implemented using Wormhole? -```bash -curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash -``` +Yes, we have an example of cross-chain lending that leverages [Wormhole’s Token Bridge](/learn/transfers/token-nft-bridge/){target=\_blank}. In this example, collateral deposits (such as ETH on Ethereum) are bridged to a hub chain. Once the collateral is deposited, the borrowed assets, like wrapped BNB, are bridged to Binance Smart Chain. You can explore the full implementation in this [cross-chain lending example repository](https://github.com/wormhole-foundation/example-wormhole-lending){target=_blank}. -### Linux Experimental Instructions +Alternatively, you can also implement cross-chain lending using [Wormhole’s core messaging](/learn/transfers/native-token-transfers/){target=\_blank} instead of the Token Bridge, which avoids the limitations imposed by governor limits. ETH would be custodied on Ethereum, and BNB on the Binance spoke during this setup. When a user deposits ETH on Ethereum, a core bridge message is sent to the hub for accounting purposes. The hub then emits a message that can be redeemed on Binance to release the BNB. This approach allows for more direct asset control across chains while reducing reliance on Token Bridge limits. -This is an experimental, single-command setup script. +## What causes the "No protocols registered for Evm" error in Wormhole SDK? -!!! warning - This is only recommended if you're running headless Linux and unable to use Docker Desktop, as you can enable Kubernetes from Docker. +This error typically occurs when the [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} cannot recognize or register the necessary EVM protocols, which are required for interacting with Ethereum-based networks. The most common reason for this error is that the relevant EVM package for Wormhole's NTT has not been imported correctly. -This experimental single command setup script should install dependencies for you on Linux and configure everything properly. If it doesn't work as expected, refer to the [standard Linux installation steps above](#linux-instructions). +To resolve this issue, ensure you have imported the appropriate Wormhole SDK package for EVM environments. The necessary package for handling NTT on EVM chains is `@wormhole-foundation/sdk-evm-ntt`. Here's the correct import statement: -```bash -curl $URL | sh install_linux.sh && -cd wormhole/ && -./tilt.sh +```rust +import '@wormhole-foundation/sdk-evm-ntt'; ``` -If you've all got prerequisites installed, clone the Wormhole Core Repository and start Tilt. - -```bash -git clone --branch main https://github.com/wormhole-foundation/wormhole.git && -cd wormhole && -tilt up -``` +By importing this package, the Wormhole SDK can register and utilize the required protocols for EVM chains, enabling cross-chain token transfers using the NTT framework. Ensure to include this import at the start of your code, especially before attempting any interactions with EVM chains in your project. -### Virtual Machine Instructions +## How can I transfer ownership of NTT to a multisig? -If you're running Tilt in a VM, you'll need to pass in some extra flags to enable Tilt to listen to incoming traffic from external addresses: +Transferring ownership of Wormhole's NTT to a multisig is a two-step process for safety. This ensures that ownership is not transferred to an address that cannot claim it. Refer to the `transfer_ownership` method in the [NTT Manager Contract](https://github.com/wormhole-foundation/native-token-transfers/blob/main/solana/programs/example-native-token-transfers/src/instructions/admin.rs#L16-L60){target=\_blank} to initiate the transfer. -```bash -tilt up --host=0.0.0.0 -- --webHost=0.0.0.0 -``` +1. **Initiate transfer** - use the `transfer_ownership` method on the NTT Manager contract to set the new owner (the multisig) +2. **Claim ownership** - the multisig must then claim ownership via the `claim_ownership` instruction. If not claimed, the current owner can cancel the transfer +3. **Single-step transfer (Riskier)** - you can also use the `transfer_ownership_one_step_unchecked` method to transfer ownership in a single step, but if the new owner cannot sign, the contract may become locked. Be cautious and ensure the new owner is a Program Derived Address (PDA) -You can now access the Tilt UI at `vm_external_ip:10350`. If the VM's external IP doesn't work, check the firewall and port settings to make sure your VM allows incoming traffic. Be sure to check out the [`Tiltfile`](https://github.com/wormhole-foundation/wormhole/blob/main/Tiltfile){target=\_blank}, which has much of the configuration and arguments for the development environment. It's relatively straightforward to enable and disable components. For example, you can enable blockchains by setting them to true at startup. Note the use of the `--` separator between Tilt command flags and the flags you wish to pass to configure the setup. +For a practical demonstration of transferring ownership of Wormhole's NTT to a multisig on Solana, visit the [GitHub demo](https://github.com/wormhole-foundation/demo-ntt-solana-multisig-tools){target=\_blank} providing scripts and guidance for managing an NTT program using Squads multisig functionality, including ownership transfer procedures. -```bash -tilt up -- --algorand --solana -``` +## How can I specify a custom RPC for NTT? -## Using Tilt +To specify a custom RPC for Wormhole's NTT, create an `overrides.json` file in the root of your deployment directory. This file allows you to define custom RPC endpoints, which can be helpful when you need to connect to specific nodes or networks for better performance, security, or control over the RPC connection. -Tilt can be treated as an external environment or Devnet that you can easily spin up and tear down. If you've followed the standard setup, all your resources will be bound to various ports on localhost. To see all the endpoints that are hosted in your Tilt environment, you should check out the Tilt dashboard, located at `http://localhost:10350/overview`. +Below’s an example of how the `overrides.json` file should be structured: -All the deployed contract addresses can be found under the Devnet section of the chain being used in the [Environments](/docs/build/start-building/supported-networks/){target=\_blank} pages. Useful information pertaining to funded wallets and private keys can also be found in the [`Devnet.md`](https://github.com/wormhole-foundation/wormhole/blob/main/docs/devnet.md){target=\_blank} file of the docs. +???- code "`overrides.json`" + ```json + { + "chains": { + "Bsc": { + "rpc": "http://127.0.0.1:8545" + }, + "Sepolia": { + "rpc": "http://127.0.0.1:8546" + }, + "Solana": { + "rpc": "http://127.0.0.1:8899" + } + } + } + ``` -## Shutting Down Tilt +## How can I redeem tokens if NTT rate limits block them on the target chain? -To shut down Tilt, run `tilt down` with the same network flags provided in the `tilt up` command. +If the rate limits on Wormhole's NTT block tokens from being received on the target chain, the transaction will typically be paused until the rate limits are adjusted. Rate limits are implemented to manage congestion and prevent chain abuse, but they can occasionally delay token redemptions. -```bash -tilt down -- --solana --algorand -``` +To resolve this: -## FAQ +1. **Adjust rate limits** - the rate limits must be modified by an administrator or through the appropriate configuration tools to allow the blocked transaction to proceed +2. **Resume transaction flow** - once the rate limits are adjusted, you can resume the flow, which should be visible in the UI. The tokens will then be redeemable on the target chain -### Where are Fantom, Celo, Polygon, and Other EVM Chains? +In most cases, the transaction will resume automatically once the rate limits are adjusted, and the UI will guide you through the redemption process. -The smart contract development environment is effectively the same for all chains that support EVM. For changes in gas costs and transaction times, consider testing contract logic on Devnet and then using Testnet environments to get chain-specific answers. +## What are the challenges of deploying NTT to non-EVM chains? -### Solana is Taking Forever +NTT requires the same transceiver for all routes, limiting flexibility when deploying across EVM and non-EVM chains. For example, if you're deploying to Ethereum, Arbitrum, and Solana, you can't use Wormhole and Axelar as transceivers because Axelar doesn't support Solana. This constraint forces integrators to use a single transceiver (e.g., Wormhole) for all chains, reducing flexibility in optimizing cross-chain transfers. -Due to Solana's architecture, building the Solana pod often takes 25-40 minutes. Consider increasing the number of CPU cores assigned to Devnet for a faster build. +## Does the NTT manager function as an escrow account for a hub chain? -### Solana Program Deploy Doesn't Work +Yes, the NTT manager acts like an escrow account for non-transferable tokens on a hub chain. To manage non-transferable tokens, you would add the NTT manager to the allowlist, ensuring that only the NTT manager can hold and control the tokens as they are transferred across chains. -Kubernetes doesn't currently allow port forwarding for UDP ports ([GitHub Issue](https://github.com/kubernetes/kubernetes/issues/47862){target=\_blank}), which is what Solana uses for `solana program deploy`. Instead, it is recommended to use [Solana Deployer](https://github.com/acheroncrypto/solana-deployer){target=\_blank}. Not only does this deploy programs over regular RPC (thus bypassing UDP port requirements), but it's also much faster than `Solana program deploy.` +## Which functions or events does Connect rely on for NTT integration? -### How Do I Reset State For a Pod? +Connect relies on the NTT SDK for integration, with platform-specific implementations for both [Solana](https://github.com/wormhole-foundation/native-token-transfers/blob/main/solana/ts/sdk/ntt.ts){target=\_blank} and [EVM](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/ts/src/ntt.ts){target=\_blank}. The key methods involved include: -If you want to iterate quickly and don't want to bring Tilt down and back up, you can reset a pod's state by clicking the refresh button next to the pod name in the Tilt UI. +- **Initiate and redeem functions** - these functions are essential for initiating token transfers and redeeming them on the destination chain +- **Rate capacity methods** - methods for fetching inbound and outbound rate limits are also critical for controlling the flow of tokens and preventing congestion -## Contracts and Accounts +These functions ensure Connect can handle token transfers and manage chain-rate limits. -The Devnet environment deploys the core layer and Token Bridge to each chain at the same addresses every time. It also provides funds to specific wallets. +## How does the relayer contract determine which transceiver to call? -## Default Ports +The source chain's transceiver includes the destination chain's transceiver in the message via the relayer contract. The admin configures each transceiver's mapping of its peers on other chains. This mapping allows the destination transceiver to verify that the message came from a trusted source. -| Service | Port | -|:------------------:|:----:| -| Guardian REST | 7071 | -| Guardian gRPC Port | 7070 | -| Eth0 RPC | 8545 | -| Eth1 RPC | 8546 | -| Solana RPC | 8899 | ---- END CONTENT --- +## How do I create a verifier or transceiver? -Doc-Content: https://wormhole.com/docs/build/toolkit/wormhole-sdk/index ---- BEGIN CONTENT --- ---- -title: Wormhole SDK -description: The Wormhole SDK provides tools for cross-chain communication, token bridges, and more, enabling developers to integrate with multiple blockchain environments. ---- +To run your verifier, you need to implement a transceiver. This involves approximately 200 lines of code, leveraging the base functionality provided by the [abstract transceiver contract](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/Transceiver/Transceiver.sol){target=\_blank}. -# Wormhole SDK +For reference, you can review the [Axelar transceiver implementation](https://github.com/wormhole-foundation/example-wormhole-axelar-wsteth/blob/main/src/axelar/AxelarTransceiver.sol){target=\_blank}. -## Get Started +## Can I use Hetzner for the NTT deployment? -The Wormhole SDK provides developers with essential tools for cross-chain communication, token bridges, and more. This SDK enables seamless interaction between different blockchain environments with a focus on performance and usability. +No, using Hetzner servers for Solana deployments is not recommended. Hetzner has blocked Solana network activity on its servers, leading to connection issues. Hetzner nodes will return a `ConnectionRefused: Unable to connect` error for Solana deployments. Therefore, choosing alternative hosting providers that support Solana deployments is advisable to ensure seamless operation. -
+## How can I transfer tokens with NTT with an additional payload? -- :octicons-book-16:{ .lg .middle } **Wormhole SDK** +You can include an extra payload in NTT messages by overriding specific methods in the [NttManager contract](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol){target=\_blank}. - --- +- On the source chain, override the [`_handleMsg` function](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol#L216-L226){target=\_blank} to query any additional data you need for the transfer. The extra payload can then be added to the message +- On the destination chain override the [`_handleAdditionalPayload` function](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol#L262-L275){target=\_blank} to process and utilize the extra payload sent in the message - Learn about the core functionalities of the Wormhole SDK, including how to use its features for building cross-chain applications. +!!!Important + You cannot pass the additional data as part of the entry point directly. Instead, the data must be queried on-chain via the `_handleMsg` method, ensuring the payload is properly included and processed. - [:custom-arrow: Explore the SDK](/docs/build/applications/wormhole-sdk/wormhole-sdk/) +## Why use NTT over xERC20? -- :octicons-code-16:{ .lg .middle } **Layouts** +Shortcomings of xERC20: - --- +- **Single point of failure** - xERC20 relies on multiple bridges, but a compromise in any single bridge can jeopardize the token. It enforces a 1-of-n design rather than a more robust m-of-n approach +- **No pausing** - xERC20 lacks mechanisms to pause operations during emergencies +- **No access control** - there are no built-in access controls for managing token transfers securely +- **Limited rate limiting** - rate limits are bridge-specific and cannot be set per chain, reducing flexibility and security +- **No integration with relaying systems** - xERC20 does not natively support relayer systems, limiting its usability in automated or dynamic setups - Discover how to define, serialize, and deserialize data structures using the Wormhole SDK's layout system, ensuring efficient cross-chain communication. +While xERC20 is an extension of the ERC20 standard, NTT is designed as a framework rather than a rigid standard. It is compatible with any token that supports `burn` and `mint` functions and allows the NTT manager to act as a minter. - [:custom-arrow: Learn about layouts](/docs/build/applications/wormhole-sdk/sdk-layout/) +## How can I start transferring tokens to a chain that is in burning mode, if no tokens are locked yet? -
+To begin transferring tokens to a chain in burning mode when no tokens are locked, you must first send tokens to the NTT manager to back the supply. The address of the NTT manager can be found in the `deployment.json` file. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/index +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/index --- BEGIN CONTENT --- --- -title: Run Infrastructure Services -description: Follow the guides in this section to learn how to run off-chain infrastructure services, such as running a spy or a customized relayer. -template: root-index-page.html +title: Native Token Transfers (NTT) +description: This section provides comprehensive guidance on configuring, deploying, and managing your Native Token Transfers (NTT) integration. --- -# Infrastructure +# Native Token Transfers ## Get Started -Follow the guides in this section to learn how to run off-chain infrastructure services, such as running a spy or a customized relayer. +This section provides comprehensive guidance on configuring, deploying, and managing your Native Token Transfers (NTT) integration. It includes information relevant to both new token deployments and existing token management.
-- :octicons-terminal-16:{ .lg .middle } **Relayers** +- :octicons-rocket-16:{ .lg .middle } **Deployment Process** --- - Learn how to develop your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. + Guidance on installation, deployment to EVM and Solana, and maintaining your NTT after deployment. - [:custom-arrow: Run a relayer](/docs/infrastructure/relayers/run-relayer/) + [:custom-arrow: Start the deployment process](/docs/build/transfers/native-token-transfers/deployment-process/) -
+- :octicons-gear-16:{ .lg .middle } **Configure NTT** -
+ --- -- :octicons-terminal-16:{ .lg .middle } **Spy** + Find information on configuring NTT, including guidance on setting Owner and Pauser access control roles and management of rate-limiting. + + [:custom-arrow: Configure your NTT deployment](/docs/build/transfers/native-token-transfers/configuration/) + +- :octicons-question-16:{ .lg .middle } **NTT FAQs** --- - Learn how to run a Spy locally to listen for and forward messages (Verifiable Action Approvals, or VAAs) published on the Wormhole network. + Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. - [:custom-arrow: Run a Spy](/docs/infrastructure/spy/run-spy/) + [:custom-arrow: Check out the FAQs](/docs/build/transfers/native-token-transfers/faqs/)
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/relayers/index +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers --- BEGIN CONTENT --- --- -title: Relayers -description: Learn how to develop your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. +title: Managers and Transceivers +description: Explore the roles of Managers and Transceivers in NTT cross-chain token transfers, including key functions, lifecycle events, and rate-limiting mechanisms. --- -# Relayers - -## Get Started - -
- -- :octicons-terminal-16:{ .lg .middle } **Run a Custom Relayer** - - --- - - This section guides you through developing your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. - -
- - Benefits of running your own relayer: - - - You can add logic to customize the delivery of messages - - You can perform off-chain computations resulting in optimized gas costs - -
- - Requirements for running your own relayer: - - - You are responsible for developing and hosting your relayer - - You are responsible for paying target chain fees - - You are responsible for the liveness of your relayer - -
- - [:custom-arrow: Get started now](/docs/infrastructure/relayers/run-relayer/) - -
+# Managers and Transceivers -## Additional Resources +## Managers -
+_Managers_ oversee the token transfer process and handle rate-limiting and message attestation. They manage interactions with multiple transceivers and ensure that tokens are locked or burned on the source chain before being minted or unlocked on the destination chain. Each NTT manager corresponds to a single token but can control multiple transceivers. Key functions include: -- :octicons-question-16:{ .lg .middle } **What is a Relayer?** +- **`transfer`** - initiate the transfer process where tokens on the source chain are locked or burned. This process ensures that an equivalent amount of tokens can be minted or unlocked on the destination chain - --- + ```solidity + function transfer( + uint256 amount, // amount (in atomic units) + uint16 recipientChain, // chain ID (Wormhole formatted) + bytes32 recipient // recipient address (Wormhole formatted) + ) external payable nonReentrant whenNotPaused returns (uint64) + ``` - Learn about what a relayer is, what role it plays in the delivery of cross-chain messages, and the different types of relayers in the Wormhole ecosystem. +- **`quoteDeliveryPrice`** - calculate the cost of sending messages across chains by querying the transceivers for estimates on message delivery fees, allowing users to know the price before initiating a transfer - [:custom-arrow: Learn more about relayers](/docs/learn/infrastructure/relayer/) + ```solidity + function quoteDeliveryPrice( + uint16 recipientChain, // chain ID (Wormhole formatted) + bytes memory transceiverInstructions // extra instructions for transceivers (Transceiver-dependent on whether extra instructions are used/accepted) + ) public view returns (uint256[] memory, uint256) + ``` -- :material-package-variant:{ .lg .middle } **Simplify the Development Process** +- **`setPeer`** - to maintain secure cross-chain communication, managers establish trust relationships between different instances of NTT manager contracts across chains. By recognizing each other as peers, they ensure that the token transfers happen securely and that rate limits on inbound transactions are respected - --- + ```solidity + function setPeer( + uint16 peerChainId, // chain ID (Wormhole formatted) + bytes32 peerContract, // peer NTT Manager address (Wormhole formatted) + uint8 decimals, // token decimals on the peer chain + uint256 inboundLimit // inbound rate limit (in atomic units) + ) public onlyOwner + ``` - Use the Wormhole Relayer Engine package as a foundational toolkit to develop your own customized off-chain relaying service, enabling tailored message handling. +## Transceivers - [:custom-arrow: Check out the Relayer Engine source code](https://github.com/wormhole-foundation/relayer-engine){target=\_blank} +_Transceivers_ are responsible for routing NTT transfers through the manager on the source chain and ensuring they are delivered to the corresponding manager on the recipient chain. They work with managers to ensure that messages are accurately processed and tokens are correctly transferred, providing a reliable system for cross-chain token transfers. Transceivers can be defined independently of the Wormhole core and modified to support any verification backend. Key functions: -
---- END CONTENT --- +- **`sendMessage`** - this external function sends token transfer messages to a specified recipient chain. It encodes the token transfer details into a message format recognized by the system -Doc-Content: https://wormhole.com/docs/infrastructure/relayers/run-relayer ---- BEGIN CONTENT --- ---- -title: Run a Relayer -description: Learn how to build and configure your own off-chain custom relaying solution to relay Wormhole messages for your applications using the Relayer Engine. ---- + ```solidity + function sendMessage( + uint16 recipientChain, // chain ID (Wormhole formatted) + TransceiverStructs.TransceiverInstruction memory instruction, // extra instruction for the Transceiver (optional, dependent on whether extra instructions are used/accepted for this Transceiver) + bytes memory nttManagerMessage, // serialized NTT Manager message, provided by the NTT Manager + bytes32 recipientNttManagerAddress, // NTT Manager address on the recipient chain (Wormhole formatted) + bytes32 refundAddress // address to receive refunds on the destination chain in case of excess quotes (Wormhole formatted) + ) external payable nonReentrant onlyNttManager + ``` -# Run a Custom Relayer +- **`quoteDeliveryPrice`** - provides an estimation of the cost associated with delivering a message to a target chain and gauges transaction fees -## Introduction + ```solidity + function quoteDeliveryPrice( + uint16 targetChain, // chain ID (Wormhole formatted) + TransceiverStructs.TransceiverInstruction memory instruction // extra instruction for the Transceiver (optional, dependent on whether extra instructions are used/accepted for this Transceiver) + ) external view returns (uint256) + ``` -Relayers play a crucial role in cross-chain communication, ensuring that messages are transferred seamlessly between different blockchains. While Wormhole relayers provide a reliable way to handle these transfers, they might not always meet every application's unique requirements. +## Lifecycle of a Message -Custom relayers address these limitations by offering tailored solutions that cater to the distinct needs of your application. Developing a custom relayer gives you complete control over message processing, delivery mechanisms, and integration with existing systems. This customization allows for optimized performance and the ability to implement specific features that Wormhole-deployed relayers might not support. +### EVM -A custom relayer might be as simple as an in-browser process that polls the API for the availability of a VAA after submitting a transaction and delivers it to the target chain. It might also be implemented with a Spy coupled with some daemon listening for VAAs from a relevant chain ID and emitter, then taking action when one is observed. +#### Transfer -This guide teaches you how to set up and configure a custom relayer for efficient message handling. You'll start by understanding how to uniquely identify a VAA using its emitter address, sequence ID, and chain ID. Then, you'll explore the Relayer Engine, a package that provides a framework for building custom relayers, and learn how to fetch and handle VAAs using the Wormhole SDK. +A client calls on `transfer` to initiate an NTT transfer. The client must specify, at minimum, the transfer amount, the recipient chain, and the recipient address on the recipient chain. `transfer` also supports a flag to specify whether the `NttManager` should queue rate-limited transfers or revert. Clients can also include additional instructions to forward along to the transceiver on the source chain. Depending on the mode set in the initial configuration of the `NttManager` contract, transfers are either "locked" or "burned." Once the transfer has been forwarded to the transceiver, the `NttManager` emits the `TransferSent` event. -## Get Started with a Custom Relayer +**Events** -To start building a custom relayer, it's essential to grasp the components you'll be managing as part of your relaying service. Your relayer must be capable of retrieving and delivering VAAs. +```ts +/// @notice Emitted when a message is sent from the nttManager. +/// @dev Topic0 +/// 0x9716fe52fe4e02cf924ae28f19f5748ef59877c6496041b986fbad3dae6a8ecf +/// @param recipient The recipient of the message. +/// @param amount The amount transferred. +/// @param fee The amount of ether sent along with the tx to cover the delivery fee. +/// @param recipientChain The chain ID of the recipient. +/// @param msgSequence The unique sequence ID of the message. +event TransferSent( + bytes32 recipient, uint256 amount, uint256 fee, uint16 recipientChain, uint64 msgSequence +); +``` -
- ![Custom relayer](/docs/images/infrastructure/relayers/run-relayer/relayer-1.webp) -
The off-chain components outlined in blue must be implemented.
-
+#### Rate Limit -### How to Uniquely Identify a VAA +A transfer can be rate-limited on both the source and destination chains. If a transfer is rate-limited on the source chain and the `shouldQueue` flag is enabled, it is added to an outbound queue. The transfer can be released after the configured `_rateLimitDuration` has expired via the `completeOutboundQueuedTransfer` method. The `OutboundTransferQueued` and `OutboundTransferRateLimited` events are emitted. -Regardless of the environment, to get the VAA you intend to relay, you need: +If the client attempts to release the transfer from the queue before the expiry of the `rateLimitDuration`, the contract reverts with an `OutboundQueuedTransferStillQueued` error. -- The `emitter` address -- The `sequence` ID of the message you're interested in -- The `chainId` for the chain that emitted the message +Similarly, rate-limited transfers on the destination chain are added to an inbound queue. These transfers can be released from the queue via the `completeInboundQueuedTransfer` method, and the `InboundTransferQueued` event is emitted. -With these three components, you're able to uniquely identify a VAA and process it. +If the client attempts to release the transfer from the queue before the `rateLimitDuration` expires, the contract reverts with an `InboundQueuedTransferStillQueued` error. -## Use the Relayer Engine +To deactivate the rate limiter, set `_rateLimitDuration` to 0 and enable the `_skipRateLimiting` field in the `NttManager` constructor. Configuring this incorrectly will throw an error. If the rate limiter is deactivated, the inbound and outbound rate limits can be set to 0. -The [`relayer-engine`](https://github.com/wormhole-foundation/relayer-engine){target=\_blank} is a package that provides the structure and a starting point for a custom relayer. +**Events** -With the Relayer Engine, a developer can write specific logic for filtering to receive only the messages they care about. +```ts +/// @notice Emitted whenn an outbound transfer is queued. +/// @dev Topic0 +/// 0x69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f. +/// @param queueSequence The location of the transfer in the queue. +event OutboundTransferQueued(uint64 queueSequence); +``` -Once a Wormhole message is received, the developer may apply additional logic to parse custom payloads or submit the Verifiable Action Approvals (VAA) to one or many destination chains. +```ts +/// @notice Emitted when an outbound transfer is rate limited. +/// @dev Topic0 +/// 0x754d657d1363ee47d967b415652b739bfe96d5729ccf2f26625dcdbc147db68b. +/// @param sender The initial sender of the transfer. +/// @param amount The amount to be transferred. +/// @param currentCapacity The capacity left for transfers within the 24-hour window. +event OutboundTransferRateLimited( + address indexed sender, uint64 sequence, uint256 amount, uint256 currentCapacity +); +``` -To use the Relayer Engine, a developer may specify how to relay Wormhole messages for their app using an idiomatic Express/Koa middleware-inspired API, then let the library handle all the details. +```ts +/// @notice Emitted when an inbound transfer is queued +/// @dev Topic0 +/// 0x7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f3162. +/// @param digest The digest of the message. +event InboundTransferQueued(bytes32 digest); +``` -### Install the Relayer Engine +#### Send -First, install the `relayer-engine` package with your favorite package manager: +Once the `NttManager` forwards the message to the transceiver, the message is transmitted via the `sendMessage method`. The method signature is enforced by the transceiver but transceivers are free to determine their own implementation for transmitting messages. (e.g. a message routed through the Wormhole transceiver can be sent via Wormhole relaying, a custom relayer, or manually published via the core bridge). -```bash -npm i @wormhole-foundation/relayer-engine +Once the message has been transmitted, the contract emits the `SendTransceiverMessage` event. + +**Events** + +```ts +/// @notice Emitted when a message is sent from the transceiver. +/// @dev Topic0 +/// 0x53b3e029c5ead7bffc739118953883859d30b1aaa086e0dca4d0a1c99cd9c3f5. +/// @param recipientChain The chain ID of the recipient. +/// @param message The message. +event SendTransceiverMessage( + uint16 recipientChain, TransceiverStructs.TransceiverMessage message +); ``` -### Get Started with the Relayer Engine +#### Receive -In the following example, you'll: +Once a message has been emitted by a transceiver on the source chain, an off-chain process (for example, a relayer) will forward the message to the corresponding transceiver on the recipient chain. The relayer interacts with the transceiver via an entry point to receive messages. For example, the relayer will call the `receiveWormholeMessage` method on the `WormholeTransceiver` contract to execute the message. The `ReceiveRelayedMessage` event is emitted during this process. -1. Set up a `StandardRelayerApp`, passing configuration options for our relayer -2. Add a filter to capture only those messages our app cares about, with a callback to do _something_ with the VAA once received -3. Start the relayer app +This method should also forward the message to the `NttManager` on the destination chain. Note that the transceiver interface doesn't declare a signature for this method because receiving messages is specific to each transceiver, and a one-size-fits-all solution would be overly restrictive. -```typescript -import { - Environment, - StandardRelayerApp, - StandardRelayerContext, -} from '@wormhole-foundation/relayer-engine'; -import { CHAIN_ID_SOLANA } from '@certusone/wormhole-sdk'; +The `NttManager` contract allows an M of N threshold for transceiver attestations to determine whether a message can be safely executed. For example, if the threshold requirement is 1, the message will be executed after a single transceiver delivers a valid attestation. If the threshold requirement is 2, the message will only be executed after two transceivers deliver valid attestations. When a transceiver attests to a message, the contract emits the `MessageAttestedTo` event. -(async function main() { - // Initialize relayer engine app and pass relevant config options - const app = new StandardRelayerApp( - Environment.TESTNET, - // Other app specific config options can be set here for things - // like retries, logger, or redis connection settings - { - name: 'ExampleRelayer', - } - ); +NTT implements replay protection, so if a given transceiver attempts to deliver a message attestation twice, the contract reverts with `TransceiverAlreadyAttestedToMessage` error. NTT also implements replay protection against re-executing messages. This check also acts as reentrancy protection as well. - // Add a filter with a callback that will be invoked - // on finding a VAA that matches the filter - app.chain(CHAIN_ID_SOLANA).address( - // Emitter address on Solana - 'DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe', - // Callback function to invoke on new message - async (ctx, next) => { - const vaa = ctx.vaa; - const hash = ctx.sourceTxHash; - console.log( - `Got a VAA with sequence: ${vaa.sequence} from with txhash: ${hash}` - ); - } - ); +If a message has already been executed, the contract ends execution early and emits the `MessageAlreadyExecuted` event instead of reverting via an error. This mitigates the possibility of race conditions from transceivers attempting to deliver the same message when the threshold is less than the total number of available of transceivers (i.e. threshold < totalTransceivers) and notifies the client (off-chain process) so they don't attempt redundant message delivery. - // Add and configure any other middleware here +**Events** - // Start app. Blocks until unrecoverable error or process is stopped - await app.listen(); -})(); +```ts +/// @notice Emitted when a relayed message is received. +/// @dev Topic0 +/// 0xf557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475 +/// @param digest The digest of the message. +/// @param emitterChainId The chain ID of the emitter. +/// @param emitterAddress The address of the emitter. +event ReceivedRelayedMessage(bytes32 digest, uint16 emitterChainId, bytes32 emitterAddress); ``` -The first meaningful line instantiates the `StandardRelayerApp`, a subclass of the `RelayerApp` with standard defaults. +```ts +/// @notice Emitted when a message is received. +/// @dev Topic0 +/// 0xf6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0. +/// @param digest The digest of the message. +/// @param emitterChainId The chain ID of the emitter. +/// @param emitterAddress The address of the emitter. +/// @param sequence The sequence of the message. +event ReceivedMessage( + bytes32 digest, uint16 emitterChainId, bytes32 emitterAddress, uint64 sequence +); +``` -```typescript -export class StandardRelayerApp< - ContextT extends StandardRelayerContext = StandardRelayerContext, -> extends RelayerApp { - // ... - constructor(env: Environment, opts: StandardRelayerAppOpts) { +```ts +/// @notice Emitted when a message has already been executed to notify client of against retries. +/// @dev Topic0 +/// 0x4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2. +/// @param sourceNttManager The address of the source nttManager. +/// @param msgHash The keccak-256 hash of the message. +event MessageAlreadyExecuted(bytes32 indexed sourceNttManager, bytes32 indexed msgHash); ``` -The only field you pass in the `StandardRelayerAppOpts` is the name to help identify log messages and reserve a namespace in Redis. +#### Mint or Unlock -??? code "`StandardRelayerAppOpts`" +Once a transfer has been successfully verified, the tokens can be minted (if the mode is "burning") or unlocked (if the mode is "locking") to the recipient on the destination chain. Note that the source token decimals are bounded between `0` and `TRIMMED_DECIMALS` as enforced in the wire format. The transfer amount is untrimmed (scaled-up) if the destination chain token decimals exceed `TRIMMED_DECIMALS`. Once the appropriate number of tokens have been minted or unlocked to the recipient, the `TransferRedeemed` event is emitted. - Other options can be passed to the `StandardRelayerApp` constructor to configure the app further. +**Events** - ```typescript - wormholeRpcs?: string[]; // List of URLs from which to query missed VAAs -concurrency?: number; // How many concurrent requests to make for workflows -spyEndpoint?: string; // The hostname and port of our Spy -logger?: Logger; // A custom Logger -privateKeys?: Partial<{ [k in ChainId]: any[]; }>; // A set of keys that can be used to sign and send transactions -tokensByChain?: TokensByChain; // The token list we care about -workflows?: { retries: number; }; // How many times to retry a given workflow -providers?: ProvidersOpts; // Configuration for the default providers -fetchSourceTxhash?: boolean; // whether or not to get the original transaction ID/hash -// Redis config -redisClusterEndpoints?: ClusterNode[]; -redisCluster?: ClusterOptions; -redis?: RedisOptions; - ``` +```ts +/// @notice Emitted when a transfer has been redeemed +/// (either minted or unlocked on the recipient chain). +/// @dev Topic0 +/// 0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91. +/// @param digest The digest of the message. +event TransferRedeemed(bytes32 indexed digest); +``` -The next meaningful line in the example adds a filter middleware component. This middleware will cause the relayer app to request a subscription from the Spy for any VAAs that match the criteria and invoke the callback with the VAA. +### Solana -If you'd like your program to subscribe to `multiple` chains and addresses, you can call the same method several times or use the `multiple` helper. +#### Transfer -```typescript -app.multiple( - { - [CHAIN_ID_SOLANA]: 'DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe', - [CHAIN_ID_ETH]: ['0xabc1230000000...', '0xdef456000...'], - }, - myCallback -); +A client calls the `transfer_lock` or `transfer_burn` instruction based on whether the program is in `LOCKING` or `BURNING` mode. The program mode is set during initialization. When transferring, the client must specify the amount of the transfer, the recipient chain, the recipient address on the recipient chain, and the boolean flag `should_queue` to specify whether the transfer should be queued if it hits the outbound rate limit. If `should_queue` is set to false, the transfer reverts instead of queuing if the rate limit were to be hit. + +!!! note + Using the wrong transfer instruction, i.e. `transfer_lock` for a program that is in `BURNING` mode, will result in an `InvalidMode` error. + +Depending on the mode and instruction, the following will be produced in the program logs: + +```ts +Program log: Instruction: TransferLock +Program log: Instruction: TransferBurn ``` -The last line in the simple example runs `await app.listen()`, which starts the relayer engine. Once started, the Relayer Engine issues subscription requests to the Spy and begins any other workflows (e.g., tracking missed VAAs). +Outbound transfers are always added to an Outbox via the `insert_into_outbox` method. This method checks the transfer against the configured outbound rate limit amount to determine whether the transfer should be rate-limited. An `OutboxItem` is a Solana Account that holds details of the outbound transfer. The transfer can be released from the Outbox immediately if no rate limit is hit. The transfer can be released from the Outbox immediately unless a rate limit is hit, in which case it will only be released after the delay duration associated with the rate limit has expired. -This will run until the process is killed or encounters an unrecoverable error. To gracefully shut down the relayer, call `app.stop()`. +#### Rate Limit -The source code for this example is available in the [`relayer-engine` repository](https://github.com/wormhole-foundation/relayer-engine/blob/main/examples/simple/src/app.ts){target=\_blank}. +During the transfer process, the program checks rate limits via the `consume_or_delay` function. The Solana rate-limiting logic is equivalent to the EVM rate-limiting logic. -## Start Background Processes +If the transfer amount fits within the current capacity: -!!! note - These processes _must_ be running for the relayer app below to work. +- Reduce the current capacity +- Refill the inbound capacity for the destination chain +- Add the transfer to the Outbox with `release_timestamp` set to the current timestamp, so it can be released immediately. -Next, you must start a Spy to listen for available VAAs published on the Guardian network. You also need a persistence layer. This example uses Redis. +If the transfer amount doesn't fit within the current capacity: -More details about the Spy are available in the [Spy Documentation](/docs/learn/infrastructure/spy){target=\_blank}. +- If `shouldQueue = true`, add the transfer to the Outbox with `release_timestamp` set to the current timestamp plus the configured `RATE_LIMIT_DURATION`. +- If `shouldQueue = false`, revert with a `TransferExceedsRateLimit` error -### Wormhole Network Spy +#### Send -For our relayer app to receive messages, a local Spy must be running that watches the Guardian network. Our relayer app will receive updates from this Spy. +The caller then needs to request each transceiver to send messages via the `release_outbound` instruction. To execute this instruction, the caller needs to pass the account of the Outbox item to be released. The instruction will then verify that the transceiver is one of the specified senders for the message. Transceivers then send the messages based on the verification backend they are using. + +For example, the Wormhole transceiver will send by calling `post_message` on the Wormhole program, so that the Wormhole Guardians can observe and verify the message. -=== "Mainnet Spy" +!!! note + When `revert_on_delay` is true, the transaction will revert if the release timestamp hasn't been reached. When `revert_on_delay` is false, the transaction succeeds, but the outbound release isn't performed. - ```bash - docker run --pull=always --platform=linux/amd64 \ - -p 7073:7073 \ - --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ - spy \ - --nodeKey /node.key \ - --spyRPC "[::]:7073" \ - --env mainnet - ``` +The following will be produced in the program logs: -=== "Testnet Spy" +```ts +Program log: Instruction: ReleaseOutbound +``` - ```bash - docker run --pull=always --platform=linux/amd64 \ - -p 7073:7073 \ - --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ - spy \ - --nodeKey /node.key \ - --spyRPC "[::]:7073" \ - --env testnet - ``` +#### Receive -### Redis Persistence +Similar to EVM, transceivers vary in how they receive messages since message relaying and verification methods may differ between implementations. -!!! note - While you're using [Redis](https://redis.io/docs/latest/develop/get-started/){target=\_blank} here, the persistence layer can be swapped out for some other database by implementing the appropriate [interface](https://github.com/wormhole-foundation/relayer-engine/blob/main/relayer/storage/redis-storage.ts){target=\_blank}. +The Wormhole transceiver receives a verified Wormhole message on Solana via the `receive_message` entrypoint instruction. Callers can use the `receive_wormhole_message` Anchor library function to execute this instruction. The instruction verifies the Wormhole Verified Action Approvals (VAAs) and stores it in a `VerifiedTransceiverMessage` account. -A Redis instance must also be available to persist job data for fetching VAAs from the Spy. +The following will be produced in the program logs: -```bash -docker run --rm -p 6379:6379 --name redis-docker -d redis +```ts +Program log: Instruction: ReceiveMessage ``` -## Use the Wormhole SDK +`redeem` checks the inbound rate limit and places the message in an Inbox. Logic works the same as the outbound rate limit mentioned previously. -You can also use the Wormhole SDK to poll the Guardian RPC until a signed VAA is ready using the SDK's `getSignedVAAWithRetry` function. +The following will be produced in the program logs: ```ts -import { - getSignedVAAWithRetry, - parseVAA, - CHAIN_ID_SOLANA, - CHAIN_ID_ETH, -} from '@certusone/wormhole-sdk'; +Program log: Instruction: Redeem +``` -const RPC_HOSTS = [ - /* ...*/ -]; +#### Mint or Unlock -async function getVAA( - emitter: string, - sequence: string, - chainId: number -): Promise { - // Wait for the VAA to be ready and fetch it from the guardian network - const { vaaBytes } = await getSignedVAAWithRetry( - RPC_HOSTS, - chainId, - emitter, - sequence - ); - return vaaBytes; -} +The inbound transfer is released and the tokens are unlocked or minted to the recipient through either `release_inbound_mint` if the mode is `BURNING`, or `release_inbound_unlock` if the mode is `LOCKING`. Similar to transfer, using the wrong transfer instruction (such as `release_inbound_mint` for a program that is in locking mode) will result in `InvalidMode` error. -const vaaBytes = await getVAA('INSERT_EMITTER_ADDRESS', 1, CHAIN_ID_ETH); +!!! note + When `revert_on_delay` is true, the transaction will revert if the release timestamp hasn't been reached. When `revert_on_delay` is false, the transaction succeeds, but the minting/unlocking isn't performed. + +Depending on the mode and instruction, the following will be produced in the program logs: + +```ts +Program log: Instruction: ReleaseInboundMint +Program log: Instruction: ReleaseInboundUnlock ``` +--- END CONTENT --- -Once you have the VAA, the delivery method is chain-dependent. +Doc-Content: https://wormhole.com/docs/infrastructure/index +--- BEGIN CONTENT --- +--- +title: Run Infrastructure Services +description: Follow the guides in this section to learn how to run off-chain infrastructure services, such as running a spy or a customized relayer. +template: root-index-page.html +--- -=== "EVM" +# Infrastructure - On EVM chains, the bytes for the VAA can be passed directly as an argument to an ABI method. +## Get Started - ```ts - // Set up eth wallet -const ethProvider = new ethers.providers.StaticJsonRpcProvider( - 'INSERT_RPC_URL' -); -const ethWallet = new ethers.Wallet('INSERT_PRIVATE_KEY', ethProvider); +Follow the guides in this section to learn how to run off-chain infrastructure services, such as running a spy or a customized relayer. -// Create client to interact with our target app -const ethHelloWorld = HelloWorld__factory.connect( - 'INSERT_CONTRACT_ADDRESS', - ethWallet -); +
-// Invoke the receiveMessage on the ETH contract and wait for confirmation -const receipt = await ethHelloWorld - .receiveMessage(vaaBytes) - .then((tx: ethers.ContractTransaction) => tx.wait()) - .catch((msg: any) => { - console.error(msg); - return null; - }); - ``` +- :octicons-terminal-16:{ .lg .middle } **Relayers** -=== "Solana" + --- - On Solana, the VAA is first posted to the core bridge, and then a custom transaction is prepared to process and validate the VAA. + Learn how to develop your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. - ```ts - import { CONTRACTS } from '@certusone/wormhole-sdk'; + [:custom-arrow: Run a relayer](/docs/infrastructure/relayers/run-relayer/) -export const WORMHOLE_CONTRACTS = CONTRACTS[NETWORK]; -export const CORE_BRIDGE_PID = new PublicKey(WORMHOLE_CONTRACTS.solana.core); +
-// First, post the VAA to the core bridge -await postVaaSolana( - connection, - wallet.signTransaction, - CORE_BRIDGE_PID, - wallet.key(), - vaaBytes -); +
-const program = createHelloWorldProgramInterface(connection, programId); -const parsed = isBytes(wormholeMessage) - ? parseVaa(wormholeMessage) - : wormholeMessage; +- :octicons-terminal-16:{ .lg .middle } **Spy** -const ix = program.methods - .receiveMessage([...parsed.hash]) - .accounts({ - payer: new PublicKey(payer), - config: deriveConfigKey(programId), - wormholeProgram: new PublicKey(wormholeProgramId), - posted: derivePostedVaaKey(wormholeProgramId, parsed.hash), - foreignEmitter: deriveForeignEmitterKey(programId, parsed.emitterChain), - received: deriveReceivedKey( - programId, - parsed.emitterChain, - parsed.sequence - ), - }) - .instruction(); + --- -const transaction = new Transaction().add(ix); -const { blockhash } = await connection.getLatestBlockhash(commitment); -transaction.recentBlockhash = blockhash; -transaction.feePayer = new PublicKey(payerAddress); + Learn how to run a Spy locally to listen for and forward messages (Verifiable Action Approvals, or VAAs) published on the Wormhole network. -const signed = await wallet.signTxn(transaction); -const txid = await connection.sendRawTransaction(signed); + [:custom-arrow: Run a Spy](/docs/infrastructure/spy/run-spy/) -await connection.confirmTransaction(txid); - ``` +
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/spy/index +Doc-Content: https://wormhole.com/docs/infrastructure/relayers/index --- BEGIN CONTENT --- --- -title: Spy -description: Discover everything you need to about the Wormhole Spy, a daemon that watches the Guardian Network and subscribe to signed messages. +title: Relayers +description: Learn how to develop your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. --- -# Spy +# Relayers ## Get Started
-- :octicons-terminal-16:{ .lg .middle } **Run a Spy** +- :octicons-terminal-16:{ .lg .middle } **Run a Custom Relayer** --- - The content in this section shows you how you can run your own infrastructure and spin up a Spy daemon locally to subscribe to a stream of messages, also known as Verifiable Action Approvals (VAAs). + This section guides you through developing your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. - [:custom-arrow: Get started now](/docs/infrastructure/spy/run-spy/) +
-
+ Benefits of running your own relayer: -## Additional Resources + - You can add logic to customize the delivery of messages + - You can perform off-chain computations resulting in optimized gas costs -
+
-- :octicons-question-16:{ .lg .middle } **What is a Spy?** + Requirements for running your own relayer: - --- + - You are responsible for developing and hosting your relayer + - You are responsible for paying target chain fees + - You are responsible for the liveness of your relayer - Learn about what a Spy is and what role it plays in the delivery of cross-chain messages. +
- [:custom-arrow: Learn more about Spies](/docs/learn/infrastructure/spy/) + [:custom-arrow: Get started now](/docs/infrastructure/relayers/run-relayer/) -- :material-package-variant:{ .lg .middle } **Interact with a Spy** +
+ +## Additional Resources + +
+ +- :octicons-question-16:{ .lg .middle } **What is a Relayer?** --- - Use the Wormhole Spy SDK to subscribe to the stream of signed messages. + Learn about what a relayer is, what role it plays in the delivery of cross-chain messages, and the different types of relayers in the Wormhole ecosystem. - [:custom-arrow: Use the Wormhole Spy SDK](https://github.com/wormhole-foundation/wormhole/blob/main/spydk/js/README.md){target=\_blank} + [:custom-arrow: Learn more about relayers](/docs/learn/infrastructure/relayer/) -- :material-package-variant:{ .lg .middle } **Alternative Implementations** +- :material-package-variant:{ .lg .middle } **Simplify the Development Process** --- - Check out Beacon, an alternative highly available version of the Wormhole Spy. + Use the Wormhole Relayer Engine package as a foundational toolkit to develop your own customized off-chain relaying service, enabling tailored message handling. - [:custom-arrow: Use Pyth Beacon](https://github.com/pyth-network/beacon){target=\_blank} + [:custom-arrow: Check out the Relayer Engine source code](https://github.com/wormhole-foundation/relayer-engine){target=\_blank}
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/spy/run-spy +Doc-Content: https://wormhole.com/docs/infrastructure/relayers/run-relayer --- BEGIN CONTENT --- --- -title: Run a Spy -description: Learn how to run a Spy locally to listen for and forward messages (Verifiable Action Approvals, or VAAs) published on the Wormhole network. +title: Run a Relayer +description: Learn how to build and configure your own off-chain custom relaying solution to relay Wormhole messages for your applications using the Relayer Engine. --- -# Run a Spy +# Run a Custom Relayer ## Introduction -The Spy is a lightweight component in the Wormhole infrastructure designed to listen for and forward messages (Verifiable Action Approvals (VAAs)) published on the Wormhole network. Running a Spy locally allows developers to subscribe to a filtered stream of these messages, facilitating the development of custom relayers or other integrations with Wormhole. +Relayers play a crucial role in cross-chain communication, ensuring that messages are transferred seamlessly between different blockchains. While Wormhole relayers provide a reliable way to handle these transfers, they might not always meet every application's unique requirements. -For a more comprehensive understanding of the Spy and its role within the Wormhole ecosystem, refer to the [Spy Documentation](/docs/learn/infrastructure/spy/){target=\_blank}. +Custom relayers address these limitations by offering tailored solutions that cater to the distinct needs of your application. Developing a custom relayer gives you complete control over message processing, delivery mechanisms, and integration with existing systems. This customization allows for optimized performance and the ability to implement specific features that Wormhole-deployed relayers might not support. -## How to Start a Spy +A custom relayer might be as simple as an in-browser process that polls the API for the availability of a VAA after submitting a transaction and delivers it to the target chain. It might also be implemented with a Spy coupled with some daemon listening for VAAs from a relevant chain ID and emitter, then taking action when one is observed. -To start a Spy locally, run the following Docker command: +This guide teaches you how to set up and configure a custom relayer for efficient message handling. You'll start by understanding how to uniquely identify a VAA using its emitter address, sequence ID, and chain ID. Then, you'll explore the Relayer Engine, a package that provides a framework for building custom relayers, and learn how to fetch and handle VAAs using the Wormhole SDK. -=== "Mainnet" +## Get Started with a Custom Relayer - ```sh - docker run --pull=always --platform=linux/amd64 \ - -p 7073:7073 \ - --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ - spy \ - --nodeKey /node.key \ - --spyRPC "[::]:7073" \ - --env mainnet - ``` +To start building a custom relayer, it's essential to grasp the components you'll be managing as part of your relaying service. Your relayer must be capable of retrieving and delivering VAAs. -=== "Testnet" +
+ ![Custom relayer](/docs/images/infrastructure/relayers/run-relayer/relayer-1.webp) +
The off-chain components outlined in blue must be implemented.
+
- ```sh - docker run --pull=always --platform=linux/amd64 \ - -p 7073:7073 \ - --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ - spy \ - --nodeKey /node.key \ - --spyRPC "[::]:7073" \ - --env testnet - ``` +### How to Uniquely Identify a VAA -If you want to run the Spy built from source, change `ghcr.io/wormhole-foundation/guardiand:latest` to `guardian` after building the `guardian` image. +Regardless of the environment, to get the VAA you intend to relay, you need: -Optionally, add the following flags to skip any VAAs with invalid signatures: +- The `emitter` address +- The `sequence` ID of the message you're interested in +- The `chainId` for the chain that emitted the message -=== "Mainnet" +With these three components, you're able to uniquely identify a VAA and process it. - ```sh - --ethRPC https://eth.drpc.org - --ethContract 0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B - ``` +## Use the Relayer Engine -=== "Testnet" +The [`relayer-engine`](https://github.com/wormhole-foundation/relayer-engine){target=\_blank} is a package that provides the structure and a starting point for a custom relayer. - ```sh - --ethRPC https://sepolia.drpc.org/ - --ethContract 0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78 - ``` +With the Relayer Engine, a developer can write specific logic for filtering to receive only the messages they care about. -Optionally, add the following flags to prevent unbounded log growth: +Once a Wormhole message is received, the developer may apply additional logic to parse custom payloads or submit the Verifiable Action Approvals (VAA) to one or many destination chains. -```sh ---log-opt max-size=10m \ ---log-opt max-file=3 +To use the Relayer Engine, a developer may specify how to relay Wormhole messages for their app using an idiomatic Express/Koa middleware-inspired API, then let the library handle all the details. + +### Install the Relayer Engine + +First, install the `relayer-engine` package with your favorite package manager: + +```bash +npm i @wormhole-foundation/relayer-engine ``` -## Subscribe to Filtered VAAs +### Get Started with the Relayer Engine -Once running, a [gRPC](https://grpc.io/){target=\_blank} client (i.e., your program) can subscribe to a filtered stream of messages (VAAs). +In the following example, you'll: -Use this [proto-spec file](https://github.com/wormhole-foundation/wormhole/blob/main/proto/spy/v1/spy.proto){target=\_blank} to generate a client for the gRPC service. +1. Set up a `StandardRelayerApp`, passing configuration options for our relayer +2. Add a filter to capture only those messages our app cares about, with a callback to do _something_ with the VAA once received +3. Start the relayer app -!!! note - If using JavaScript/TypeScript, the [Spydk](https://www.npmjs.com/package/@certusone/wormhole-spydk){target=\_blank} makes setting up a client easier. +```typescript +import { + Environment, + StandardRelayerApp, + StandardRelayerContext, +} from '@wormhole-foundation/relayer-engine'; +import { CHAIN_ID_SOLANA } from '@certusone/wormhole-sdk'; -## Data Persistence +(async function main() { + // Initialize relayer engine app and pass relevant config options + const app = new StandardRelayerApp( + Environment.TESTNET, + // Other app specific config options can be set here for things + // like retries, logger, or redis connection settings + { + name: 'ExampleRelayer', + } + ); -The Spy does not have a built-in persistence layer, so it is typically paired with something like Redis or an SQL database to record relevant messages. + // Add a filter with a callback that will be invoked + // on finding a VAA that matches the filter + app.chain(CHAIN_ID_SOLANA).address( + // Emitter address on Solana + 'DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe', + // Callback function to invoke on new message + async (ctx, next) => { + const vaa = ctx.vaa; + const hash = ctx.sourceTxHash; + console.log( + `Got a VAA with sequence: ${vaa.sequence} from with txhash: ${hash}` + ); + } + ); -The persistence layer needs to implement the appropriate interface. For example, you can check out the [Redis interface](https://github.com/wormhole-foundation/relayer-engine/blob/main/relayer/storage/redis-storage.ts){target=\_blank} used by the Relayer Engine, a package that implements a client and persistence layer for messages received from a Spy subscription. ---- END CONTENT --- + // Add and configure any other middleware here -Doc-Content: https://wormhole.com/docs/learn/fundamentals/architecture ---- BEGIN CONTENT --- ---- -title: Architecture -description: Overview of Wormhole's architecture, detailing key on-chain and off-chain components like the Core Contract, Guardian Network, and relayers. ---- + // Start app. Blocks until unrecoverable error or process is stopped + await app.listen(); +})(); +``` -# Architecture Overview +The first meaningful line instantiates the `StandardRelayerApp`, a subclass of the `RelayerApp` with standard defaults. -## Architecture +```typescript +export class StandardRelayerApp< + ContextT extends StandardRelayerContext = StandardRelayerContext, +> extends RelayerApp { + // ... + constructor(env: Environment, opts: StandardRelayerAppOpts) { +``` -Wormhole has several noteworthy components. Before discussing each component in depth, this page will provide an overview of how the major pieces fit together. +The only field you pass in the `StandardRelayerAppOpts` is the name to help identify log messages and reserve a namespace in Redis. -![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/fundamentals/architecture/architecture-1.webp) +??? code "`StandardRelayerAppOpts`" -The diagram outlines the end-to-end flow of cross-chain communication through Wormhole's architecture: + Other options can be passed to the `StandardRelayerApp` constructor to configure the app further. -1. **Source chain** - a source contract emits a message by interacting with the [Wormhole Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank} on the source chain, which publishes the message in the blockchain's transaction logs -2. **Guardian Network** - [Guardians](/docs/learn/infrastructure/guardians/){target=\_blank} validate these messages and sign them to produce [Verifiable Action Approvals (VAAs)](/docs/learn/infrastructure/vaas/){target=\_blank} -3. **Relayers** - off-chain relayers or applications fetch the VAA and relay it to the target chain -4. **Target chain** - on the target chain, the message is consumed by the appropriate contract. This contract interacts with the Wormhole Core Contract to verify the VAA and execute the intended cross-chain operation. The flow from the relayer to the target chain involves an entry point contract, which could vary based on the use case: + ```typescript + wormholeRpcs?: string[]; // List of URLs from which to query missed VAAs +concurrency?: number; // How many concurrent requests to make for workflows +spyEndpoint?: string; // The hostname and port of our Spy +logger?: Logger; // A custom Logger +privateKeys?: Partial<{ [k in ChainId]: any[]; }>; // A set of keys that can be used to sign and send transactions +tokensByChain?: TokensByChain; // The token list we care about +workflows?: { retries: number; }; // How many times to retry a given workflow +providers?: ProvidersOpts; // Configuration for the default providers +fetchSourceTxhash?: boolean; // whether or not to get the original transaction ID/hash +// Redis config +redisClusterEndpoints?: ClusterNode[]; +redisCluster?: ClusterOptions; +redis?: RedisOptions; + ``` - - In some applications, the target contract acts as the entry point and performs verification via the Core Contract - - In products like the Token Bridge, the Token Bridge contract itself interacts with the Core Contract +The next meaningful line in the example adds a filter middleware component. This middleware will cause the relayer app to request a subscription from the Spy for any VAAs that match the criteria and invoke the callback with the VAA. -## On-Chain Components +If you'd like your program to subscribe to `multiple` chains and addresses, you can call the same method several times or use the `multiple` helper. -- **Emitter** - a contract that calls the publish message method on the Core Contract. The Core Contract will write an event to the transaction logs with details about the emitter and sequence number to identify the message. This may be your [xDapp](/docs/learn/fundamentals/glossary/#xdapp){target=\_blank} or an existing ecosystem protocol -- **[Wormhole Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank}** - primary contract, this is the contract which the Guardians observe and which fundamentally allows for cross-chain communication -- **Transaction logs** - blockchain-specific logs that allow the Guardians to observe messages emitted by the Core Contract +```typescript +app.multiple( + { + [CHAIN_ID_SOLANA]: 'DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe', + [CHAIN_ID_ETH]: ['0xabc1230000000...', '0xdef456000...'], + }, + myCallback +); +``` -## Off-Chain Components +The last line in the simple example runs `await app.listen()`, which starts the relayer engine. Once started, the Relayer Engine issues subscription requests to the Spy and begins any other workflows (e.g., tracking missed VAAs). -- **Guardian Network** - validators that exist in their own P2P network. Guardians observe and validate the messages emitted by the Core Contract on each supported chain to produce VAAs (signed messages) -- **[Guardian](/docs/learn/infrastructure/guardians/){target=\_blank}** - one of 19 validators in the Guardian Network that contributes to the VAA multisig -- **[Spy](/docs/learn/infrastructure/spy/){target=\_blank}** - a daemon that subscribes to messages published within the Guardian Network. A Spy can observe and forward network traffic, which helps scale up VAA distribution -- **[API](https://docs.wormholescan.io/){target=\_blank}** - a REST server to retrieve details for a VAA or the Guardian Network -- **[VAAs](/docs/learn/infrastructure/vaas/){target=\_blank}** - Verifiable Action Approvals (VAAs) are the signed attestation of an observed message from the Wormhole Core Contract -- **[Relayer](/docs/learn/infrastructure/relayer/){target=\_blank}** - any off-chain process that relays a VAA to the target chain - - **Wormhole relayers** - a decentralized relayer network that delivers messages that are requested on-chain via the Wormhole relayer contract - - **Custom relayers** - relayers that only handle VAAs for a specific protocol or cross-chain application. They can execute custom logic off-chain, reducing gas costs and increasing cross-chain compatibility. Currently, cross-chain application developers are responsible for developing and hosting custom relayers ---- END CONTENT --- +This will run until the process is killed or encounters an unrecoverable error. To gracefully shut down the relayer, call `app.stop()`. -Doc-Content: https://wormhole.com/docs/learn/fundamentals/glossary ---- BEGIN CONTENT --- ---- -title: Glossary -description: Explore a comprehensive glossary of technical terms and key concepts used in the Wormhole network, covering Chain ID, Guardian, VAA, and more. ---- +The source code for this example is available in the [`relayer-engine` repository](https://github.com/wormhole-foundation/relayer-engine/blob/main/examples/simple/src/app.ts){target=\_blank}. -# Glossary +## Start Background Processes -This glossary is an index of technical term definitions for words commonly used in Wormhole documentation. +!!! note + These processes _must_ be running for the relayer app below to work. -## Chain ID +Next, you must start a Spy to listen for available VAAs published on the Guardian network. You also need a persistence layer. This example uses Redis. -Wormhole assigns a unique `u16` integer chain ID to each supported blockchain. These chain IDs are specific to Wormhole and may differ from those used by blockchains to identify their networks. +More details about the Spy are available in the [Spy Documentation](/docs/learn/infrastructure/spy){target=\_blank}. -You can find each chain ID documented on the [Wormhole Chain IDs](/docs/build/reference/chain-ids/){target=\_blank} page. +### Wormhole Network Spy -## Consistency Level +For our relayer app to receive messages, a local Spy must be running that watches the Guardian network. Our relayer app will receive updates from this Spy. -The level of finality (consistency) a transaction should meet before being signed by a Guardian. See the [Consistency Levels](/docs/build/reference/consistency-levels/){target=\_blank} reference page for details. +=== "Mainnet Spy" -## Delivery Provider + ```bash + docker run --pull=always --platform=linux/amd64 \ + -p 7073:7073 \ + --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ + spy \ + --nodeKey /node.key \ + --spyRPC "[::]:7073" \ + --env mainnet + ``` -A Delivery Provider monitors for Wormhole Relayer delivery requests and delivers those requests to the intended target chain as instructed. +=== "Testnet Spy" -## Emitter + ```bash + docker run --pull=always --platform=linux/amd64 \ + -p 7073:7073 \ + --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ + spy \ + --nodeKey /node.key \ + --spyRPC "[::]:7073" \ + --env testnet + ``` -The emitter contract makes the call to the Wormhole Core Contract. The published message includes the emitter contract address and, a sequence number for the message is tracked to provide a unique ID. +### Redis Persistence -## Finality +!!! note + While you're using [Redis](https://redis.io/docs/latest/develop/get-started/){target=\_blank} here, the persistence layer can be swapped out for some other database by implementing the appropriate [interface](https://github.com/wormhole-foundation/relayer-engine/blob/main/relayer/storage/redis-storage.ts){target=\_blank}. -The finality of a transaction depends on its blockchain properties. Once a transaction is considered final, you can assume the resulting state changes it caused won't be reverted. +A Redis instance must also be available to persist job data for fetching VAAs from the Spy. -## Guardian +```bash +docker run --rm -p 6379:6379 --name redis-docker -d redis +``` -A [Guardian](/docs/learn/infrastructure/guardians/){target=\_blank} is one of the 19 parties running validators in the Guardian Network contributing to the VAA multisig. +## Use the Wormhole SDK -## Guardian Network +You can also use the Wormhole SDK to poll the Guardian RPC until a signed VAA is ready using the SDK's `getSignedVAAWithRetry` function. -Validators in their own P2P network who serve as Wormhole's oracle by observing activity on-chain and generating signed messages attesting to that activity. +```ts +import { + getSignedVAAWithRetry, + parseVAA, + CHAIN_ID_SOLANA, + CHAIN_ID_ETH, +} from '@certusone/wormhole-sdk'; -## Guardian Set +const RPC_HOSTS = [ + /* ...*/ +]; -The Guardian Set is a set of guardians responsible for validating a message emitted from the core contracts. Occasionally, the members of the set will change through a governance action. +async function getVAA( + emitter: string, + sequence: string, + chainId: number +): Promise { + // Wait for the VAA to be ready and fetch it from the guardian network + const { vaaBytes } = await getSignedVAAWithRetry( + RPC_HOSTS, + chainId, + emitter, + sequence + ); + return vaaBytes; +} -## Heartbeat +const vaaBytes = await getVAA('INSERT_EMITTER_ADDRESS', 1, CHAIN_ID_ETH); +``` -Each Guardian will issue a `heartbeat` on a 15-second interval to signal that it is still running and convey details about its identity, uptime, version, and the status of the connected nodes. +Once you have the VAA, the delivery method is chain-dependent. -You can view the heartbeats on the [Wormhole dashboard](https://wormhole-foundation.github.io/wormhole-dashboard/#/?endpoint=Mainnet){target=\_blank}. +=== "EVM" -## Observation + On EVM chains, the bytes for the VAA can be passed directly as an argument to an ABI method. + + ```ts + // Set up eth wallet +const ethProvider = new ethers.providers.StaticJsonRpcProvider( + 'INSERT_RPC_URL' +); +const ethWallet = new ethers.Wallet('INSERT_PRIVATE_KEY', ethProvider); + +// Create client to interact with our target app +const ethHelloWorld = HelloWorld__factory.connect( + 'INSERT_CONTRACT_ADDRESS', + ethWallet +); -An Observation is a data structure describing a message emitted by the Core Contract and noticed by the Guardian node. +// Invoke the receiveMessage on the ETH contract and wait for confirmation +const receipt = await ethHelloWorld + .receiveMessage(vaaBytes) + .then((tx: ethers.ContractTransaction) => tx.wait()) + .catch((msg: any) => { + console.error(msg); + return null; + }); + ``` -## Relayer +=== "Solana" -A relayer is any process that delivers VAAs to a destination. + On Solana, the VAA is first posted to the core bridge, and then a custom transaction is prepared to process and validate the VAA. -## Sequence + ```ts + import { CONTRACTS } from '@certusone/wormhole-sdk'; -A nonce, strictly increasing, which is tracked by the Wormhole Core Contract and unique to the emitter chain and address. +export const WORMHOLE_CONTRACTS = CONTRACTS[NETWORK]; +export const CORE_BRIDGE_PID = new PublicKey(WORMHOLE_CONTRACTS.solana.core); -## Spy +// First, post the VAA to the core bridge +await postVaaSolana( + connection, + wallet.signTransaction, + CORE_BRIDGE_PID, + wallet.key(), + vaaBytes +); -A Spy is a daemon that eavesdrops on the messages passed between Guardians, typically to track VAAs as they get signed. +const program = createHelloWorldProgramInterface(connection, programId); +const parsed = isBytes(wormholeMessage) + ? parseVaa(wormholeMessage) + : wormholeMessage; -## VAA +const ix = program.methods + .receiveMessage([...parsed.hash]) + .accounts({ + payer: new PublicKey(payer), + config: deriveConfigKey(programId), + wormholeProgram: new PublicKey(wormholeProgramId), + posted: derivePostedVaaKey(wormholeProgramId, parsed.hash), + foreignEmitter: deriveForeignEmitterKey(programId, parsed.emitterChain), + received: deriveReceivedKey( + programId, + parsed.emitterChain, + parsed.sequence + ), + }) + .instruction(); -[Verifiable Action Approvals](/docs/learn/infrastructure/vaas/){target=\_blank} (VAAs) are the base data structure in the Wormhole ecosystem. They contain the messages emitted by [xDapps](#xdapp) along with information such as what contract emitted the message. +const transaction = new Transaction().add(ix); +const { blockhash } = await connection.getLatestBlockhash(commitment); +transaction.recentBlockhash = blockhash; +transaction.feePayer = new PublicKey(payerAddress); -## Validator +const signed = await wallet.signTxn(transaction); +const txid = await connection.sendRawTransaction(signed); -A daemon configured to monitor a blockchain node and observe messages emitted by the Wormhole contracts. +await connection.confirmTransaction(txid); + ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/fundamentals/index +Doc-Content: https://wormhole.com/docs/infrastructure/spy/index --- BEGIN CONTENT --- --- -title: Learn about the Fundamentals -description: Discover Wormhole's fundamentals, including what Wormhole is, its architecture, and the robust security measures that safeguard cross-chain interactions. +title: Spy +description: Discover everything you need to about the Wormhole Spy, a daemon that watches the Guardian Network and subscribe to signed messages. --- -# Wormhole Fundamentals +# Spy ## Get Started -This section covers the fundamentals of Wormhole, including what Wormhole is, a look at its architecture, and an overview of the robust security measures that safeguard cross-chain interactions. -
-- :octicons-book-16:{ .lg .middle } **Introduction to Wormhole** +- :octicons-terminal-16:{ .lg .middle } **Run a Spy** --- - New to Wormhole? Check out the introduction to Wormhole to learn what Wormhole is, the problems it solves, and how it works to solve them. - - [:custom-arrow: Take a first glance at Wormhole](/docs/learn/fundamentals/introduction/) + The content in this section shows you how you can run your own infrastructure and spin up a Spy daemon locally to subscribe to a stream of messages, also known as Verifiable Action Approvals (VAAs). -- :octicons-shield-lock-16:{ .lg .middle } **Security** + [:custom-arrow: Get started now](/docs/infrastructure/spy/run-spy/) - --- +
- Wormhole safeguards cross-chain communication with a strong focus on security, using proven technology and decentralized validation via Guardians. +## Additional Resources - [:custom-arrow: Review security measures](/docs/learn/fundamentals/security/) +
-- :octicons-stack-16:{ .lg .middle } **Architecture Overview** +- :octicons-question-16:{ .lg .middle } **What is a Spy?** --- - Explore Wormhole's architecture to understand how its core components seamlessly work together to deliver cross-chain messages securely. + Learn about what a Spy is and what role it plays in the delivery of cross-chain messages. + + [:custom-arrow: Learn more about Spies](/docs/learn/infrastructure/spy/) - [:custom-arrow: Discover how Wormhole works](/docs/learn/fundamentals/architecture/) +- :material-package-variant:{ .lg .middle } **Interact with a Spy** -
+ --- -## Reference + Use the Wormhole Spy SDK to subscribe to the stream of signed messages. -
+ [:custom-arrow: Use the Wormhole Spy SDK](https://github.com/wormhole-foundation/wormhole/blob/main/spydk/js/README.md){target=\_blank} -- :octicons-list-unordered-16:{ .lg .middle } **Glossary** +- :material-package-variant:{ .lg .middle } **Alternative Implementations** --- - Check out key terms and their definitions within the Wormhole ecosystem to better understand the concepts and language used throughout the platform. + Check out Beacon, an alternative highly available version of the Wormhole Spy. - [:custom-arrow: Get to know the terms](/docs/learn/fundamentals/glossary/) + [:custom-arrow: Use Pyth Beacon](https://github.com/pyth-network/beacon){target=\_blank}
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/fundamentals/introduction +Doc-Content: https://wormhole.com/docs/infrastructure/spy/run-spy --- BEGIN CONTENT --- --- -title: Introduction to Wormhole -description: Wormhole is a protocol for seamless communication between blockchains, enabling cross-chain applications and integrations. ---- - -# Introduction to Wormhole - -In the rapidly evolving landscape of blockchain technology, interoperability between different blockchains remains a significant challenge. Developers often face hurdles in creating applications that can seamlessly operate across multiple blockchains, limiting innovation and the potential of decentralized ecosystems. - -Wormhole addresses this problem by providing a _generic message-passing_ protocol that enables secure and efficient communication between blockchains. By allowing data and asset transfers across various blockchain networks, Wormhole breaks down the walls that traditionally separate these ecosystems. - -Wormhole is distinguished by its focus on robust security, scalability, and transparency. The protocol is supported by a decentralized network of validators that ensure the integrity of every cross-chain transaction. This, combined with Wormhole’s proven performance in real-world applications, gives developers a dependable platform to create and scale multichain applications confidently. - -![Message-passing process in the Wormhole protocol](/docs/images/learn/fundamentals/introduction/introduction-1.webp) - -!!! note - The above is an oversimplified illustration of the protocol; details about the architecture and components are available on the [architecture page](/docs/learn/fundamentals/architecture/){target=\_blank}. - -Wormhole allows developers to leverage the strengths of multiple blockchain ecosystems without being confined to one. This means applications can benefit from the unique features of various networks—such as Solana's high throughput, Ethereum's security, and Cosmos's interoperability while maintaining a unified, efficient user experience. - -This page introduces the key concepts and components necessary to understand how Wormhole enables fast, secure, and scalable cross-chain communication. - -## What Problems Does Wormhole Solve? - -Interoperability is a critical challenge in the rapidly evolving blockchain landscape. Individual blockchains are often isolated, limiting the potential for integrated applications operating across multiple ecosystems. Wormhole solves this problem by enabling seamless communication between blockchains, allowing developers to create multichain applications that can leverage the unique features of each network. - -Critical problems Wormhole addresses include: - -- **Blockchain isolation** - Wormhole connects disparate blockchains, enabling the transfer of assets, data, and governance actions across networks -- **Cross-chain complexity** - by abstracting the complexities of cross-chain communication, Wormhole makes it easier for developers to build and deploy cross-chain applications -- **Security and decentralization** - Wormhole prioritizes security through a decentralized Guardian network that validates and signs messages, ensuring the integrity of cross-chain interactions - -## What Does Wormhole Offer? - -Wormhole provides a suite of tools and protocols that support a wide range of use cases: - -- **Cross-chain messaging** - securely transfer arbitrary data between blockchains, enabling the development of cross-chain decentralized applications (xDapps) -- **Asset transfers** - facilitate the movement of tokens and NFTs across supported chains with ease, powered by protocols built on Wormhole like [Portal](https://portalbridge.com/){target=\_blank} -- **Developer tools** - leverage [Wormhole’s SDKs](/docs/build/applications/wormhole-sdk/){target=\_blank}, [APIs](/docs/build/toolkit/#wormhole-api-docs){target=\_blank}, [Wormhole Scan](https://wormholescan.io/){target=\_blank}, and documentation to build and deploy cross-chain applications quickly and efficiently - -## What Isn't Wormhole? - -- **Wormhole is _not_ a blockchain** - it acts as a communication layer that connects different blockchains, enabling them to interact without being a blockchain itself -- **Wormhole is _not_ a token bridge** - while it facilitates token transfers, Wormhole also supports a wide range of cross-chain applications, making it much more versatile than a typical bridge - -## Use Cases of Wormhole - -Consider the following examples of potential applications enabled by Wormhole: - -- **Cross-chain exchange** - using [Wormhole Connect](/docs/build/applications/connect/overview/){target=\_blank}, developers can build exchanges that allow deposits from any Wormhole-connected chain, significantly increasing liquidity access -- **[Cross-chain governance](https://wormhole.com/blog/stake-for-governance-is-now-live-for-w-token-holders){target=\_blank}** - NFT collections on different networks can use Wormhole to communicate votes cast on their respective chains to a designated "voting" chain for combined proposals -- **Cross-chain game** - games can be developed on a performant network like Solana, with rewards issued as NFTs on another network, such as Ethereum - -## Explore - -Discover more about the Wormhole ecosystem, components, and protocols: - -- **[Architecture](/docs/learn/fundamentals/architecture/){target=\_blank}** - explore the components of the protocol -- **[Protocol Specifications](https://github.com/wormhole-foundation/wormhole/tree/main/whitepapers){target=\_blank}** - learn about the protocols built on top of Wormhole - -## Demos - -Demos offer more realistic implementations than tutorials: - -- **[Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding){target=\_blank}** - quickly set up a project with the Scaffolding repository -- **[xDapp Book Projects](https://github.com/wormhole-foundation/xdapp-book/tree/main/projects){target=\_blank}** - run and learn from example programs - -More demos are available in the [demos page](/docs/build/start-building/demos/){target=\_blank}. - -!!! note - Wormhole Integration Complete? - - Let us know so we can list your project in our ecosystem directory and introduce you to our global, multichain community! - - **[Reach out now!](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank}** - -## Supported Blockchains - -Wormhole supports a growing number of blockchains. - - - -
- -### EVM - -
BlockchainEnvironmentMainnetTestnetQuick Links
EthereumEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
AcalaEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
ArbitrumEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
AvalancheEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
BaseEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
BerachainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
BlastEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
BNB Smart ChainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
CeloEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
FantomEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
GnosisEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
HyperEVMEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
InkEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
KaiaEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
KaruraEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
LineaEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
MantleEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
MonadEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
MoonbeamEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
NeonEVM:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
OasisEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
OptimismEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
PolygonEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
RootstockEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
ScrollEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
SeievmEVM:x::white_check_mark:
SNAXchainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
UnichainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
World ChainEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
X LayerEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+title: Run a Spy +description: Learn how to run a Spy locally to listen for and forward messages (Verifiable Action Approvals, or VAAs) published on the Wormhole network. +--- -### SVM +# Run a Spy -
BlockchainEnvironmentMainnetTestnetQuick Links
SolanaSVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
PythnetSVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+## Introduction -### AVM +The Spy is a lightweight component in the Wormhole infrastructure designed to listen for and forward messages (Verifiable Action Approvals (VAAs)) published on the Wormhole network. Running a Spy locally allows developers to subscribe to a filtered stream of these messages, facilitating the development of custom relayers or other integrations with Wormhole. -
BlockchainEnvironmentMainnetTestnetQuick Links
AlgorandAVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+For a more comprehensive understanding of the Spy and its role within the Wormhole ecosystem, refer to the [Spy Documentation](/docs/learn/infrastructure/spy/){target=\_blank}. -### CosmWasm +## How to Start a Spy -
BlockchainEnvironmentMainnetTestnetQuick Links
InjectiveCosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
NeutronCosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
OsmosisCosmWasm:x::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
SeiCosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
TerraCosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
Terra 2.0CosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
XPLACosmWasm:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+To start a Spy locally, run the following Docker command: -### Move VM +=== "Mainnet" -
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+ ```sh + docker run --pull=always --platform=linux/amd64 \ + -p 7073:7073 \ + --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ + spy \ + --nodeKey /node.key \ + --spyRPC "[::]:7073" \ + --env mainnet + ``` -### NEAR VM +=== "Testnet" -
BlockchainEnvironmentMainnetTestnetQuick Links
NEARNEAR VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+ ```sh + docker run --pull=always --platform=linux/amd64 \ + -p 7073:7073 \ + --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ + spy \ + --nodeKey /node.key \ + --spyRPC "[::]:7073" \ + --env testnet + ``` -### Sui Move VM +If you want to run the Spy built from source, change `ghcr.io/wormhole-foundation/guardiand:latest` to `guardian` after building the `guardian` image. -
BlockchainEnvironmentMainnetTestnetQuick Links
SuiSui Move VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+Optionally, add the following flags to skip any VAAs with invalid signatures: -
- ---- END CONTENT --- +=== "Mainnet" -Doc-Content: https://wormhole.com/docs/learn/fundamentals/security ---- BEGIN CONTENT --- ---- -title: Security -description: Explore Wormhole's security features, including the Guardian network, governance, monitoring, open-source development, and bug bounty programs. ---- + ```sh + --ethRPC https://eth.drpc.org + --ethContract 0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B + ``` -# Security +=== "Testnet" -## Core Security Assumptions + ```sh + --ethRPC https://sepolia.drpc.org/ + --ethContract 0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78 + ``` -At its core, Wormhole is secured by a network of [Guardian](/docs/learn/infrastructure/guardians/){target=\_blank} nodes that validate and sign messages. If a super majority (e.g., 13 out of 19) of Guardians sign the same message, it can be considered valid. A smart contract on the target chain will verify the signatures and format of the message before approving any transaction. +Optionally, add the following flags to prevent unbounded log growth: -- Wormhole's core security primitive is its signed messages (signed [VAAs](/docs/learn/fundamentals/glossary/#vaa){target=\_blank}) -- The Guardian network is currently secured by a collection of 19 of the world's top [validator companies](https://wormhole-foundation.github.io/wormhole-dashboard/#/?endpoint=Mainnet){target=\_blank} -- Guardians produce signed state attestations (signed VAAs) when requested by a Core Contract integrator -- Every Guardian runs full nodes (rather than light nodes) of every blockchain in the Wormhole network, so if a blockchain suffers a consensus attack or hard fork, the blockchain will disconnect from the network rather than potentially produce invalid signed VAAs -- Any Signed VAA can be verified as authentic by the Core Contract of any other chain -- [Relayers](/docs/learn/fundamentals/glossary/#relayer){target=\_blank} are considered untrusted in the Wormhole ecosystem +```sh +--log-opt max-size=10m \ +--log-opt max-file=3 +``` -In summary: +## Subscribe to Filtered VAAs -- **Core integrators aren't exposed to risk from chains and contracts they don't integrate with** -- By default, you only trust Wormhole's signing process and the core contracts of the chains you're on -- You can expand your contract and chain dependencies as you see fit +Once running, a [gRPC](https://grpc.io/){target=\_blank} client (i.e., your program) can subscribe to a filtered stream of messages (VAAs). -Core assumptions aside, many other factors impact the real-world security of decentralized platforms. Here is more information on additional measures that have been put in place to ensure the security of Wormhole. +Use this [proto-spec file](https://github.com/wormhole-foundation/wormhole/blob/main/proto/spy/v1/spy.proto){target=\_blank} to generate a client for the gRPC service. -## Guardian Network +!!! note + If using JavaScript/TypeScript, the [Spydk](https://www.npmjs.com/package/@certusone/wormhole-spydk){target=\_blank} makes setting up a client easier. -Wormhole is an evolving platform. While the Guardian set currently comprises 19 validators, this is a limitation of current blockchain technology. +## Data Persistence -### Governance +The Spy does not have a built-in persistence layer, so it is typically paired with something like Redis or an SQL database to record relevant messages. -Governance is the process through which contract upgrades happen. Guardians manually vote on governance proposals that originate inside the Guardian Network and are then submitted to ecosystem contracts. +The persistence layer needs to implement the appropriate interface. For example, you can check out the [Redis interface](https://github.com/wormhole-foundation/relayer-engine/blob/main/relayer/storage/redis-storage.ts){target=\_blank} used by the Relayer Engine, a package that implements a client and persistence layer for messages received from a Spy subscription. +--- END CONTENT --- -This means that governance actions are held to the same security standard as the rest of the system. A two-thirds supermajority of the Guardians is required to pass any governance action. +Doc-Content: https://wormhole.com/docs/learn/glossary +--- BEGIN CONTENT --- +--- +title: Glossary +description: Explore a comprehensive glossary of technical terms and key concepts used in the Wormhole network, covering Chain ID, Guardian, VAA, and more. +--- -Governance messages can target any of the various wormhole modules, including the core contracts and all currently deployed token bridge contracts. When a Guardian signs such a message, its signature implies a vote on the action in question. Once more than two-thirds of the Guardians have signed, the message and governance action are considered valid. +# Glossary -All governance actions and contract upgrades have been managed via Wormhole's on-chain governance system. +This glossary is an index of technical term definitions for words commonly used in Wormhole documentation. -Via governance, the Guardians can: +## Chain ID -- Change the current Guardian set -- Expand the Guardian set -- Upgrade ecosystem contract implementations +Wormhole assigns a unique `u16` integer chain ID to each supported blockchain. These chain IDs are specific to Wormhole and may differ from those used by blockchains to identify their networks. -The governance system is fully open source in the core repository. See the [Open Source section](#open-source){target=\_blank} for contract source. +You can find each chain ID documented on the [Wormhole Chain IDs](/docs/build/reference/chain-ids/){target=\_blank} page. -## Monitoring +## Consistency Level -A key element of Wormhole's defense-in-depth strategy is that each Guardian is a highly competent validator company with its own in-house processes for running, monitoring, and securing blockchain operations. This heterogeneous approach to monitoring increases the likelihood that fraudulent activity is detected and reduces the number of single failure points in the system. +The level of finality (consistency) a transaction should meet before being signed by a Guardian. See the [Consistency Levels](/docs/build/reference/consistency-levels/){target=\_blank} reference page for details. -Guardians are not just running Wormhole validators; they're running validators for every blockchain inside of Wormhole as well, which allows them to perform monitoring holistically across decentralized computing rather than just at a few single points. +## Delivery Provider -Guardians monitor: +A Delivery Provider monitors for Wormhole Relayer delivery requests and delivers those requests to the intended target chain as instructed. -- Block production and consensus of each blockchain - if a blockchain's consensus is violated, it will be disconnected from the network until the Guardians resolve the issue -- Smart contract level data - via processes like the Governor, Guardians constantly monitor the circulating supply and token movements across all supported blockchains -- Guardian level activity - the Guardian Network functions as an autonomous decentralized computing network, ensuring independent security measures across its validators +## Emitter -## Asset Layer Protections +The emitter contract makes the call to the Wormhole Core Contract. The published message includes the emitter contract address and, a sequence number for the message is tracked to provide a unique ID. -One key strength of the Wormhole ecosystem is the Guardians’ ability to validate and protect the integrity of assets across multiple blockchains. +## Finality -To enforce the Wormhole Asset Layer’s core protections, the Global Accountant tracks the total circulating supply of all Wormhole assets across all chains, preventing any blockchain from bridging assets that could violate the supply invariant. +The finality of a transaction depends on its blockchain properties. Once a transaction is considered final, you can assume the resulting state changes it caused won't be reverted. -In addition to the Global Accountant, Guardians may only sign transfers that do not violate the requirements of the Governor. The [Governor](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0007_governor.md){target=\_blank} tracks inflows and outflows of all blockchains and delays suspicious transfers that may indicate an exploit. +## Guardian -## Open Source +A [Guardian](/docs/learn/infrastructure/guardians/){target=\_blank} is one of the 19 parties running validators in the Guardian Network contributing to the VAA multisig. -Wormhole builds in the open and is always open source. +## Guardian Network -- **[Wormhole core repository](https://github.com/wormhole-foundation/wormhole){target=\_blank}** -- **[Wormhole Foundation GitHub organization](https://github.com/wormhole-foundation){target=\_blank}** -- **[Wormhole contract deployments](/docs/learn/infrastructure/core-contracts/){target=\_blank}** +Validators in their own P2P network who serve as Wormhole's oracle by observing activity on-chain and generating signed messages attesting to that activity. -## Audits +## Guardian Set -Wormhole has been heavily audited, with _29 third-party audits completed_ and more started. Audits have been performed by the following firms: +The Guardian Set is a set of guardians responsible for validating a message emitted from the core contracts. Occasionally, the members of the set will change through a governance action. -- [Trail of Bits](https://www.trailofbits.com/){target=\_blank} -- [Neodyme](https://neodyme.io/en/){target=\_blank} -- [Kudelski](https://kudelskisecurity.com/){target=\_blank} -- [OtterSec](https://osec.io/){target=\_blank} -- [Certik](https://www.certik.com/){target=\_blank} -- [Hacken](https://hacken.io/){target=\_blank} -- [Zellic](https://www.zellic.io/){target=\_blank} -- [Coinspect](https://www.coinspect.com/){target=\_blank} -- [Halborn](https://www.halborn.com/){target=\_blank} -- [Cantina](https://cantina.xyz/welcome){target=\_blank} +## Heartbeat -All audits and final reports can be found in [security page of the GitHub Repo](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md#3rd-party-security-audits){target=\blank}. +Each Guardian will issue a `heartbeat` on a 15-second interval to signal that it is still running and convey details about its identity, uptime, version, and the status of the connected nodes. -## Bug Bounties +You can view the heartbeats on the [Wormhole dashboard](https://wormhole-foundation.github.io/wormhole-dashboard/#/?endpoint=Mainnet){target=\_blank}. -Wormhole has one of the largest bug bounty programs in software development and has repeatedly shown commitment to engaging with the white hat community. +## Observation -Wormhole runs a bug bounty program through [Immunefi](https://immunefi.com/bug-bounty/wormhole/){target=\blank} program, with a top payout of **5 million dollars**. +An Observation is a data structure describing a message emitted by the Core Contract and noticed by the Guardian node. -If you are interested in contributing to Wormhole security, please look at this section for [Getting Started as a White Hat](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md#white-hat-hacking){target=\blank}, and follow the [Wormhole Contributor Guidelines](https://github.com/wormhole-foundation/wormhole/blob/main/CONTRIBUTING.md){target=\blank}. +## Relayer -For more information about submitting to the bug bounty programs, refer to the [Wormhole Immunefi page](https://immunefi.com/bug-bounty/wormhole/){target=\blank}. +A relayer is any process that delivers VAAs to a destination. -## Learn More +## Sequence -The [SECURITY.md](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md){target=\blank} from the official repository has the latest security policies and updates. +A nonce, strictly increasing, which is tracked by the Wormhole Core Contract and unique to the emitter chain and address. + +## Spy + +A Spy is a daemon that eavesdrops on the messages passed between Guardians, typically to track VAAs as they get signed. + +## VAA + +[Verifiable Action Approvals](/docs/learn/infrastructure/vaas/){target=\_blank} (VAAs) are the base data structure in the Wormhole ecosystem. They contain the messages emitted by [xDapps](#xdapp) along with information such as what contract emitted the message. + +## Validator + +A daemon configured to monitor a blockchain node and observe messages emitted by the Wormhole contracts. --- END CONTENT --- Doc-Content: https://wormhole.com/docs/learn/governance/architecture @@ -14195,7 +13319,7 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove Learn how to get started with MultiGov, from evaluating cross-chain governance needs to deploying with help from the Tally team. - [:custom-arrow: Start the integration process now](/docs/build/contract-integrations/multigov/) + [:custom-arrow: Start the integration process now](/docs/build/multigov/) - :octicons-rocket-16:{ .lg .middle } **Deployment** @@ -14203,7 +13327,7 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. - [:custom-arrow: Discover how to deploy MultiGov](/docs/build/contract-integrations/multigov/deployment/) + [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deployment/) - :octicons-code-square-16:{ .lg .middle } **Tutorials** @@ -14219,7 +13343,7 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove Find answers to common technical questions about MultiGov, covering technical setup, security, proposal creation, and more. - [:custom-arrow: Find the answer to your technical questions](/docs/build/contract-integrations/multigov/faq/) + [:custom-arrow: Find the answer to your technical questions](/docs/build/multigov/faq/)
--- END CONTENT --- @@ -14281,39 +13405,66 @@ This section offers informational content on Wormhole, covering its architecture
-- :octicons-book-16:{ .lg .middle } **Fundamentals** +- :octicons-inbox-16:{ .lg .middle } **Infrastructure Components** --- - Start with the basics to get a solid understanding of what Wormhole has to offer and how it works to provide secure cross-chain communication. + Explore Wormhole's core infrastructure components and the unique roles each plays in enabling seamless message delivery across chains. - [:custom-arrow: Get started](/docs/learn/fundamentals/) + [:custom-arrow: Understand Wormhole's infrastructure](/docs/learn/infrastructure/) -- :octicons-inbox-16:{ .lg .middle } **Infrastructure Components** +- :octicons-people-16:{ .lg .middle } **Multichain Governance** --- - Explore Wormhole's core infrastructure components and the unique roles each plays in enabling seamless message delivery across chains. + Explore this section to gain a foundational understanding of MultiGov, Wormhole's approach to multichain governance. - [:custom-arrow: Understand Wormhole's infrastructure](/docs/learn/infrastructure/) + [:custom-arrow: Learn about MultiGov](/docs/learn/governance/) -- :octicons-mail-16:{ .lg .middle } **Messaging** +
+--- END CONTENT --- - --- +Doc-Content: https://wormhole.com/docs/learn/infrastructure/architecture +--- BEGIN CONTENT --- +--- +title: Architecture +description: Overview of Wormhole's architecture, detailing key on-chain and off-chain components like the Core Contract, Guardian Network, and relayers. +--- - Discover Wormhole's messaging protocols and how each facilitates secure and efficient communication across blockchains. +# Architecture Overview - [:custom-arrow: Explore messaging protocols](/docs/learn/messaging/) +## Architecture -- :octicons-people-16:{ .lg .middle } **Multichain Governance** +Wormhole has several noteworthy components. Before discussing each component in depth, this page will provide an overview of how the major pieces fit together. - --- +![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/infrastructure/architecture/architecture-1.webp) - Explore this section to gain a foundational understanding of MultiGov, Wormhole's approach to multichain governance. +The diagram outlines the end-to-end flow of cross-chain communication through Wormhole's architecture: - [:custom-arrow: Learn about MultiGov](/docs/learn/governance/) +1. **Source chain** - a source contract emits a message by interacting with the [Wormhole Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank} on the source chain, which publishes the message in the blockchain's transaction logs +2. **Guardian Network** - [Guardians](/docs/learn/infrastructure/guardians/){target=\_blank} validate these messages and sign them to produce [Verifiable Action Approvals (VAAs)](/docs/learn/infrastructure/vaas/){target=\_blank} +3. **Relayers** - off-chain relayers or applications fetch the VAA and relay it to the target chain +4. **Target chain** - on the target chain, the message is consumed by the appropriate contract. This contract interacts with the Wormhole Core Contract to verify the VAA and execute the intended cross-chain operation. The flow from the relayer to the target chain involves an entry point contract, which could vary based on the use case: + + - In some applications, the target contract acts as the entry point and performs verification via the Core Contract + - In products like the Token Bridge, the Token Bridge contract itself interacts with the Core Contract + +## On-Chain Components + +- **Emitter** - a contract that calls the publish message method on the Core Contract. The Core Contract will write an event to the transaction logs with details about the emitter and sequence number to identify the message. This may be your [xDapp](/docs/learn/glossary/#xdapp){target=\_blank} or an existing ecosystem protocol +- **[Wormhole Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank}** - primary contract, this is the contract which the Guardians observe and which fundamentally allows for cross-chain communication +- **Transaction logs** - blockchain-specific logs that allow the Guardians to observe messages emitted by the Core Contract + +## Off-Chain Components -
+- **Guardian Network** - validators that exist in their own P2P network. Guardians observe and validate the messages emitted by the Core Contract on each supported chain to produce VAAs (signed messages) +- **[Guardian](/docs/learn/infrastructure/guardians/){target=\_blank}** - one of 19 validators in the Guardian Network that contributes to the VAA multisig +- **[Spy](/docs/learn/infrastructure/spy/){target=\_blank}** - a daemon that subscribes to messages published within the Guardian Network. A Spy can observe and forward network traffic, which helps scale up VAA distribution +- **[API](https://docs.wormholescan.io/){target=\_blank}** - a REST server to retrieve details for a VAA or the Guardian Network +- **[VAAs](/docs/learn/infrastructure/vaas/){target=\_blank}** - Verifiable Action Approvals (VAAs) are the signed attestation of an observed message from the Wormhole Core Contract +- **[Relayer](/docs/learn/infrastructure/relayer/){target=\_blank}** - any off-chain process that relays a VAA to the target chain + - **Wormhole relayers** - a decentralized relayer network that delivers messages that are requested on-chain via the Wormhole relayer contract + - **Custom relayers** - relayers that only handle VAAs for a specific protocol or cross-chain application. They can execute custom logic off-chain, reducing gas costs and increasing cross-chain compatibility. Currently, cross-chain application developers are responsible for developing and hosting custom relayers --- END CONTENT --- Doc-Content: https://wormhole.com/docs/learn/infrastructure/core-contracts @@ -14351,7 +13502,7 @@ Below is a simplified breakdown that focuses on the role of the Wormhole Core Co 2. **Guardian verification** - the Guardians observe and sign the message independently. Once enough Guardians have signed the message, the collection of signatures is combined with the message and metadata to produce a VAA 3. **Message reception and execution** - on the target chain, the Wormhole Core Contract receives the verified message, checks the Guardians' signatures, and executes the corresponding actions, such as minting tokens, updating states, or calling specific smart contract functions -For a closer look at how messages flow between chains and all of the components involved, you can refer to the [Architecture Overview](/docs/learn/fundamentals/architecture/) page. +For a closer look at how messages flow between chains and all of the components involved, you can refer to the [Architecture Overview](/docs/learn/infrastructure/architecture/) page. ### Message Submission @@ -14480,7 +13631,7 @@ This section provides a closer look at the core components that power Wormhole's 3. The validated message is encapsulated in a VAA (Verifiable Action Approval), combining the message with Guardian signatures to create a proof 4. A relayer relays the VAA to the target chain, which is then verified by the Wormhole Core Contract on the target chain - You can find more information about the infrastructure components and how they work together on the [Architecture Overview](/docs/learn/fundamentals/architecture/) page. + You can find more information about the infrastructure components and how they work together on the [Architecture Overview](/docs/learn/infrastructure/architecture/) page. @@ -14556,332 +13707,685 @@ This section highlights the crucial principles underpinning the operation and ha Relayers are fundamentally trustless entities within the network. This means that while they don't require your trust, they shouldn't be trusted implicitly. They function as delivery mechanisms, transporting VAAs from their source to their destination. -Key characteristics of VAAs include: +Key characteristics of VAAs include: + +- Public emission from the Guardian Network +- Authentication through signatures from the Guardian Network +- Verifiability by any entity or any Wormhole Core Contract +- As a result of these characteristics, anyone can pick up a VAA and deliver it anywhere, but no one can alter the VAA content without invalidating the signatures + +When designing contracts, it's crucial to only trust information contained within your contract or a VAA. Relying on information from a relayer could expose you to input attacks. + +Advanced strategies can involve relayers performing trustless off-chain computation passed into the destination contract. These strategies can optimize gas costs but also create attack vectors if not used correctly. + +In summary, the design of a relayer should ensure that there's a single, deterministic way to process messages in your protocol. In an optimally designed protocol, relayers should have a "correct" implementation, mirroring "crank turner" processes used elsewhere in blockchain. + +## Client-Side Relaying + +Client-side relaying relies on user-facing front ends, such as a webpage or a wallet, to complete the cross-chain process. + +**Key Features** + +- **Cost-efficiency** - users only pay the transaction fee for the second transaction, eliminating any additional costs +- **No backend infrastructure** - the process is completely client-based, eliminating the need for a backend relaying infrastructure + +**Implementation** + +Users themselves carry out the three steps of the cross-chain process: + +1. Perform an action on chain A +2. Retrieve the resulting VAA from the Guardian Network +3. Perform an action on chain B using the VAA + +**Considerations** + +!!! note + Though simple, this type of relaying is generally not recommended if your aim is a highly polished user experience. It can, however, be useful for getting a Minimum Viable Product (MVP) up and running. + +- Users must sign all required transactions with their own wallet +- Users must have funds to pay the transaction fees on every chain involved +- The user experience may be cumbersome due to the manual steps involved + +## Custom Relayers + +Custom relayers are purpose-built components within the Wormhole protocol, designed to relay messages for specific applications. They are capable of performing off-chain computations and can be customized to suit a variety of use cases. + +The main method of setting up a custom relayer is by listening directly to the Guardian Network via a [Spy](/learn/infrastructure/spy/). + +**Key Features** + +- **Optimization** - capable of performing trustless off-chain computations which can optimize gas costs +- **Customizability** - allows for specific strategies like batching, conditional delivery, multi-chain deliveries, and more +- **Incentive structure** - developers have the freedom to design an incentive structure suitable for their application +- **Enhanced UX** - the ability to retrieve a VAA from the Guardian Network and perform an action on the target chain using the VAA on behalf of the user can simplify the user experience + +**Implementation** + +!!! note + To make the development of custom relayers easier, a plugin relayer is available in the [main Wormhole repository](https://github.com/wormhole-foundation/wormhole/tree/main/relayer){target=\_blank}. This sets up the basic infrastructure for relaying, allowing developers to focus on implementing the specific logic for their application. + +**Considerations** + +Remember, despite their name, custom relayers still need to be considered trustless. VAAs are public and can be submitted by anyone, so developers shouldn't rely on off-chain relayers to perform any computation considered "trusted." + +- Development work and hosting of relayers are required +- The fee-modeling can become complex, as relayers are responsible for paying target chain fees +- Relayers are responsible for availability, adding dependency for the cross-chain application + +## Wormhole Relayers + +Wormhole relayers are a component of a decentralized network in the Wormhole protocol, facilitating the delivery of VAAs to recipient contracts compatible with the standard relayer API. + +**Key Features** + +- **Lower operational costs** - no need to develop, host, or maintain individual relayers +- **Simplified integration** - because there is no need to run a relayer, integration is as simple as calling a function and implementing an interface + +**Implementation** + +The Wormhole relayer integration involves two key steps: + +- **Delivery request** - request delivery from the ecosystem Wormhole relayer contract +- **Relay reception** - implement a [`receiveWormholeMessages`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/bacbe82e6ae3f7f5ec7cdcd7d480f1e528471bbb/src/interfaces/IWormholeReceiver.sol#L44-L50){target=\_blank} function within their contracts. This function is invoked upon successful relay of the VAA + +**Considerations** + +!!! note + Developers should note that the choice of relayers depends their project's specific requirements and constraints. Wormhole relayers offer simplicity and convenience but limit customization and optimization opportunities compared to custom relayers. + +- All computations are performed on-chain +- Potentially less gas-efficient compared to custom relayers +- Optimization features like conditional delivery, batching, off-chain calculations might be restricted +- Support may not be available for all chains +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/spy +--- BEGIN CONTENT --- +--- +title: Spy +description: Discover Wormhole's Spy daemon, which subscribes to gossiped messages in the Guardian Network, including VAAs and Observations, with setup instructions. +--- + +# Spy + +## Introduction + +In Wormhole’s ecosystem, the _Spy_ is a daemon, a continuously running background process that monitors messages within the Guardian Network. Unlike Guardians, Spies don’t perform validation; instead, they serve as an interface for observing the network’s message traffic, enabling applications and users to access live data transmitted over Wormhole. + +The primary purpose of a Spy is to subscribe to the gossiped messages across the Guardian Network, tracking key message types that allow integrators and applications to monitor real-time network activity without directly engaging in consensus operations. + +## Key Features of the Spy + +### Monitor Spy-Accessible Messages + +Spies can access the following categories of messages shared over the gossip protocol:: + +- [Verifiable Action Approvals (VAAs)](/docs/learn/infrastructure/vaas/){target=\_blank} - packets of cross-chain data. The Spy can detect whether a VAA has been approved by the Guardian Network, making it a valuable tool for applications needing real-time cross-chain verification +- [Observations](/docs/learn/glossary/#observation){target=\_blank} - emitted by Wormhole’s core contracts, observations are picked up by the Guardians and relayed across the network. Spies allow users to monitor these messages, adding transparency and insight into blockchain events +- [Guardian heartbeats](/docs/learn/glossary/#heartbeat){target=\_blank} - heartbeat messages represent Guardian node statusn. By monitoring heartbeats, a Spy can signal the liveness and connectivity of Guardians in the network + +## Integrator Use Case + +The Spy provides a valuable mechanism for integrators to observe real-time network activity in the Guardian Network without directly engaging in validation or consensus. By running a Spy, integrators can track cross-chain events, and message flows — such as VAAs, observations, and Guardian heartbeats — to monitor network activity essential to their applications. + +This monitoring capability is especially beneficial for applications that need immediate insights into cross-chain data events. Integrators can run a Spy to ensure their applications are promptly informed of message approvals, observations, or Guardian liveness signals, supporting timely and responsive app behavior without additional overhead on network resources. + +## Resources + +For more information, you can check out the following resources: + +- The source code for the Go implementation of the Spy is available on [GitHub](https://github.com/wormhole-foundation/wormhole/blob/main/node/cmd/spy/spy.go){target=\_blank} +- To find out how to [start and run a Spy](/docs/infrastructure/spy/run-spy/){target=\_blank}, refer to the infrastructure section. This setup enables integrators to create a custom endpoint that applications can use to observe message flows in the Guardian Network, providing greater flexibility and control over cross-chain monitoring +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/vaas +--- BEGIN CONTENT --- +--- +title: VAAs +description: Learn about Verified Action Approvals (VAAs) in Wormhole, their structure, validation, and role in cross-chain communication. +--- + +# Verified Action Approvals + +VAAs are Wormhole's core messaging primitive. They are packets of cross-chain data emitted whenever a cross-chain application contract interacts with the Core Contract. + +The Guardians must validate messages emitted by contracts before sending them to the target chain. Once a majority of Guardians observe the message and determine finality, the Guardians sign a keccak256 hash of the message body. + +The message is wrapped up in a structure called a VAA, which combines the message with the Guardian signatures to form a proof. + +VAAs are uniquely indexed by the (`emitter_chain`, `emitter_address`, `sequence`) tuple. To obtain a VAA, one can query the [Wormholescan API](https://docs.wormholescan.io/){target=\_blank} with this information. + +!!!note + The `sequence` field depends on the final ordering of blocks on the emitter chain. When a lower consistency level is chosen (i.e., not waiting for finality), there is a chance that chain reorganizations could lead to multiple, different VAAs appearing for what looks like the “same” message on the user side. The tuple (`emitter_chain`, `emitter_address`, `sequence`) can only be considered unique if the chain does not undergo a reorg and the block containing the message has effectively reached finality. However, there is always a small chance of an extended reorg that could invalidate or alter a previously emitted sequence number. + +These VAAs are ultimately what a smart contract on a receiving chain must process to receive a Wormhole message. + +## VAA Format + +The basic VAA has two components: a header and a body. + +### Header + +The header holds metadata about the current VAA, the Guardian set that is currently active, and the list of signatures gathered so far. + +- `version` ++"byte"++ - the VAA Version +- `guardian_set_index` ++"u32"++ - indicates which Guardian set is signing +- `len_signatures` ++"u8"++ - the number of signatures stored +- `signatures` ++"[]signature"++ - the collection of Guardian signatures + +Where each `signature` is: + +- `index` ++"u8"++ - the index of this Guardian in the Guardian set +- `signature` ++"[65]byte"++ - the ECDSA signature + +### Body + +The body is _deterministically_ derived from an on-chain message. Any two Guardians processing the same message must derive the same resulting body. This requirement exists so that there is always a one-to-one relationship between VAAs and messages to avoid double-processing messages. + +!!!note + While the body is derived from the on-chain message, this is only strictly true once the chain's state is finalized (i.e., no further reorgs). If a reorg occurs and a transaction that previously appeared in block X is replaced by block Y, Guardians observing different forks may generate different VAAs for what the emitter contract believes is the “same” message. + + This scenario is less likely once a block is sufficiently buried, but it can still happen if you choose a faster (less finalized) consistency level. + +- `timestamp` ++"u32"++ - the timestamp of the block this message was published in +- `nonce` ++"u32"++ +- `emitter_chain` ++"u16"++ - the id of the chain that emitted the message +- `emitter_address` ++"[32]byte"++ - the contract address (Wormhole formatted) that called the Core Contract +- `sequence` ++"u64"++ - the auto-incrementing integer that represents the number of messages published by this emitter +- `consistency_level` ++"u8"++ - the consistency level (finality) required by this emitter +- `payload` ++"[]byte"++ - arbitrary bytes containing the data to be acted on + +The body contains relevant information for entities, such as contracts, or other systems, that process or utilize VAAs. When a function like `parseAndVerifyVAA` is called, the body is returned, allowing verification of the `emitterAddress` to determine if the VAA originated from a trusted contract. + +!!! note + Because VAAs have no destination, they are effectively multicast. Any Core Contract on any chain in the network will verify them as authentic. If a VAA has a specific destination, relayers are entirely responsible for completing that delivery appropriately. + +## Consistency and Finality + +The consistency level determines whether Guardians wait for a chain’s final commitment state or issue a VAA sooner under less-final conditions. This choice is especially relevant for blockchains without instant finality, where the risk of reorganization remains until a block is deeply confirmed. + +Guardian watchers are specialized processes that monitor each blockchain in real time. They enforce the selected consistency level by deciding whether enough commitment has been reached before signing and emitting a VAA. Some chains allow only one commitment level (effectively final), while others let integrators pick between near-final or fully finalized states. Choosing a faster option speeds up VAA production but increases reorg risk; choosing a more conservative option takes longer but reduces the likelihood of rollback. + +## Signatures + +The body of the VAA is hashed twice with `keccak256` to produce the signed digest message. + +```js +// hash the bytes of the body twice +digest = keccak256(keccak256(body)) +// sign the result +signature = ecdsa_sign(digest, key) +``` + +!!! note + Different implementations of the ECDSA signature validation may apply a keccak256 hash to the message passed, so care must be taken to pass the correct arguments. + + For example, the [Solana secp256k1 program](https://docs.solanalabs.com/runtime/programs#secp256k1-program){target=\_blank} will hash the message passed. In this case, the argument for the message should be a single hash of the body, not the twice-hashed body. + +## Payload Types + +Different applications built on Wormhole may specify a format for the payloads attached to a VAA. This payload provides information on the target chain and contract so it can take action (e.g., minting tokens to a receiver address). + +### Token Transfer + +Tokens are transferred between chains using a lockup/mint and burn/unlock mechanism. Many bridges use such a basic method, but the implementation described leverages the generic message-passing protocol provided by Wormhole to handle the routing of lock and burn events across chains. This approach ensures that Wormhole's Token Bridge is chain-agnostic. The bridge can be rapidly integrated into any network with a Wormhole contract. Wormhole's generic message-passing doesn't require any program to send messages to understand the specific implementation details of other chains. + +To transfer tokens from Chain A to Chain B, you must lock them on A and mint them on B. The tokens on A must be proven to be locked before the minting can occur on B. To facilitate this process, Chain A first locks the tokens and emits a message indicating that the locking has been completed. This message has the following structure and is referred to as a transfer message: + +- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `1` for a token transfer +- `amount` ++"u256"++ - amount of tokens being transferred +- `token_address` ++"u8[32]"++ - address on the source chain +- `token_chain` ++"u16"++ - numeric ID for the source chain +- `to` ++"u8[32]"++ - address on the destination chain +- `to_chain` ++"u16"++ - numeric ID for the destination chain +- `fee` ++"u256"++ - portion of amount paid to a relayer + +This structure contains everything the receiving chain needs to learn about a lockup event. Once Chain B receives this payload, it can mint the corresponding asset. + +Note that Chain B is agnostic regarding how the tokens on the sending side were locked. They could have been burned by a mint or locked in a custody account. The protocol relays the event once enough Guardians have attested to its existence. + +### Attestation + +The Transfer event in the preceding section needs an important detail added. While the program on Chain B can trust the message to inform it of token lockup events, it has no way of verifying the correct token is locked up. The address alone is a meaningless value to most users. To solve this, the Token Bridge supports token attestation. + +For a token attestation, Chain A emits a message containing metadata about a token, which Chain B may use to preserve the name, symbol, and decimal precision of a token address. + +The message format for this action is as follows: + +- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `2` for an attestation +- `token_address` ++"[32]byte"++ - address of the originating token contract +- `token_chain` ++"u16"++ - chain ID of the originating token +- `decimals` ++"u8"++ - number of decimals this token should have +- `symbol` ++"[32]byte"++ - short name of asset +- `name` ++"[32]byte"++ - full name of asset + +Attestations use a fixed-length byte array to encode UTF8 token name and symbol data. -- Public emission from the Guardian Network -- Authentication through signatures from the Guardian Network -- Verifiability by any entity or any Wormhole Core Contract -- As a result of these characteristics, anyone can pick up a VAA and deliver it anywhere, but no one can alter the VAA content without invalidating the signatures +!!! note + Because the byte array is fixed length, the data contained may truncate multibyte Unicode characters. -When designing contracts, it's crucial to only trust information contained within your contract or a VAA. Relying on information from a relayer could expose you to input attacks. +When sending an attestation VAA, it is recommended to send the longest UTF-8 prefix that doesn't truncate a character and then right-pad it with zero bytes. -Advanced strategies can involve relayers performing trustless off-chain computation passed into the destination contract. These strategies can optimize gas costs but also create attack vectors if not used correctly. +When parsing an attestation VAA, it is recommended to trim all trailing zero bytes and converting the remainder to UTF-8 via any lossy algorithm. -In summary, the design of a relayer should ensure that there's a single, deterministic way to process messages in your protocol. In an optimally designed protocol, relayers should have a "correct" implementation, mirroring "crank turner" processes used elsewhere in blockchain. +!!! note + Be mindful that different on-chain systems may have different VAA parsers, resulting in different names/symbols on different chains if the string is long or contains invalid UTF8. -## Client-Side Relaying +Without knowing a token's decimal precision, Chain B cannot correctly mint the number of tokens when processing a transfer. For this reason, the Token Bridge requires an attestation for each token transfer. -Client-side relaying relies on user-facing front ends, such as a webpage or a wallet, to complete the cross-chain process. +### Token Transfer with Message -**Key Features** +!!! note + This VAA type is also referred to as a payload3 message or a Contract Controlled Transfer. -- **Cost-efficiency** - users only pay the transaction fee for the second transaction, eliminating any additional costs -- **No backend infrastructure** - the process is completely client-based, eliminating the need for a backend relaying infrastructure +The Token Transfer with Message data structure is identical to the token-only data structure, except for the `fee` field, which is replaced with the `from_address` field, and the addition of a `payload` field containing arbitrary bytes. In this arbitrary byte field, an app may include additional data in the transfer to inform some application-specific behavior. -**Implementation** +- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `3` for a token transfer with message +- `amount` ++"u256"++ - amount of tokens being transferred +- `token_address` ++"u8[32]"++ - address on the source chain +- `token_chain` ++"u16"++ - numeric ID for the source chain +- `to` ++"u8[32]"++ - address on the destination chain +- `to_chain` ++"u16"++ - numeric ID for the destination chain +- `from_address` ++"u8[32]"++ - address that called the Token Bridge on the source chain +- `payload` ++"[]byte"++ - message, arbitrary bytes, app specific -Users themselves carry out the three steps of the cross-chain process: +### Governance -1. Perform an action on chain A -2. Retrieve the resulting VAA from the Guardian Network -3. Perform an action on chain B using the VAA +Governance VAAs don't have a `payload_id` field like the preceding formats. They're used to trigger some action in the deployed contracts (for example, upgrade). -**Considerations** +### Action Structure -!!! note - Though simple, this type of relaying is generally not recommended if your aim is a highly polished user experience. It can, however, be useful for getting a Minimum Viable Product (MVP) up and running. +Governance messages contain pre-defined actions, which can target the various Wormhole modules currently deployed on-chain. The structure contains the following fields: -- Users must sign all required transactions with their own wallet -- Users must have funds to pay the transaction fees on every chain involved -- The user experience may be cumbersome due to the manual steps involved +- `module` ++"u8[32]"++ - contains a right-aligned module identifier +- `action` ++"u8"++ - predefined governance action to execute +- `chain` ++"u16"++ - chain the action is targeting. This should be set to `0` for all chains +- `args` ++"any"++ - arguments to the action -## Custom Relayers +Below is an example message containing a governance action triggering a code upgrade to the Solana Core Contract. The module field here is a right-aligned encoding of the ASCII Core, represented as a 32-byte hex string. -Custom relayers are purpose-built components within the Wormhole protocol, designed to relay messages for specific applications. They are capable of performing off-chain computations and can be customized to suit a variety of use cases. +```js +module: 0x0000000000000000000000000000000000000000000000000000436f7265 +action: 1 +chain: 1 +new_contract: 0x348567293758957162374959376192374884562522281937446234828323 +``` -The main method of setting up a custom relayer is by listening directly to the Guardian Network via a [Spy](/learn/infrastructure/spy/). +### Actions -**Key Features** +The meaning of each numeric action is pre-defined and documented in the Wormhole design documents. For each application, the relevant definitions can be found via these links: -- **Optimization** - capable of performing trustless off-chain computations which can optimize gas costs -- **Customizability** - allows for specific strategies like batching, conditional delivery, multi-chain deliveries, and more -- **Incentive structure** - developers have the freedom to design an incentive structure suitable for their application -- **Enhanced UX** - the ability to retrieve a VAA from the Guardian Network and perform an action on the target chain using the VAA on behalf of the user can simplify the user experience +- [Core governance actions](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0002_governance_messaging.md){target=\_blank} +- [Token Bridge governance actions](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0003_token_bridge.md){target=\_blank} -**Implementation** +## Lifetime of a Message !!! note - To make the development of custom relayers easier, a plugin relayer is available in the [main Wormhole repository](https://github.com/wormhole-foundation/wormhole/tree/main/relayer){target=\_blank}. This sets up the basic infrastructure for relaying, allowing developers to focus on implementing the specific logic for their application. + Anyone can submit the VAA to the target chain. The Guardians typically don't perform this step to avoid transaction fees. Instead, applications built on top of Wormhole can acquire the VAA via the Guardian RPC and make the submission in a separate flow. -**Considerations** +With the concepts now defined, it is possible to illustrate what a full flow for message passing between two chains looks like. The following stages demonstrate each step of processing that the Wormhole network performs to route a message. -Remember, despite their name, custom relayers still need to be considered trustless. VAAs are public and can be submitted by anyone, so developers shouldn't rely on off-chain relayers to perform any computation considered "trusted." +1. **A message is emitted by a contract running on Chain A** - any contract can emit messages, and the Guardians are programmed to observe all chains for these events. Here, the Guardians are represented as a single entity to simplify the graphics, but the observation of the message must be performed individually by each of the 19 Guardians +2. **Signatures are aggregated** - Guardians observe and sign the message independently. Once enough Guardians have signed the message, the collection of signatures is combined with the message and metadata to produce a VAA +3. **VAA submitted to target chain** - the VAA acts as proof that the Guardians have collectively attested the existence of the message payload; to complete the final step, the VAA itself is submitted (or relayed) to the target chain to be processed by a receiving contract -- Development work and hosting of relayers are required -- The fee-modeling can become complex, as relayers are responsible for paying target chain fees -- Relayers are responsible for availability, adding dependency for the cross-chain application +![Lifetime of a message diagram](/docs/images/learn/infrastructure/vaas/lifetime-vaa-diagram.webp) +--- END CONTENT --- -## Wormhole Relayers +Doc-Content: https://wormhole.com/docs/learn/introduction +--- BEGIN CONTENT --- +--- +title: Introduction to Wormhole +description: Wormhole is a protocol for seamless communication between blockchains, enabling cross-chain applications and integrations. +--- -Wormhole relayers are a component of a decentralized network in the Wormhole protocol, facilitating the delivery of VAAs to recipient contracts compatible with the standard relayer API. +# Introduction to Wormhole -**Key Features** +In the rapidly evolving landscape of blockchain technology, interoperability between different blockchains remains a significant challenge. Developers often face hurdles in creating applications that can seamlessly operate across multiple blockchains, limiting innovation and the potential of decentralized ecosystems. -- **Lower operational costs** - no need to develop, host, or maintain individual relayers -- **Simplified integration** - because there is no need to run a relayer, integration is as simple as calling a function and implementing an interface +Wormhole addresses this problem by providing a _generic message-passing_ protocol that enables secure and efficient communication between blockchains. By allowing data and asset transfers across various blockchain networks, Wormhole breaks down the walls that traditionally separate these ecosystems. -**Implementation** +Wormhole is distinguished by its focus on robust security, scalability, and transparency. The protocol is supported by a decentralized network of validators that ensure the integrity of every cross-chain transaction. This, combined with Wormhole’s proven performance in real-world applications, gives developers a dependable platform to create and scale multichain applications confidently. -The Wormhole relayer integration involves two key steps: +![Message-passing process in the Wormhole protocol](/docs/images/learn/introduction/introduction-1.webp) -- **Delivery request** - request delivery from the ecosystem Wormhole relayer contract -- **Relay reception** - implement a [`receiveWormholeMessages`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/bacbe82e6ae3f7f5ec7cdcd7d480f1e528471bbb/src/interfaces/IWormholeReceiver.sol#L44-L50){target=\_blank} function within their contracts. This function is invoked upon successful relay of the VAA +!!! note + The above is an oversimplified illustration of the protocol; details about the architecture and components are available on the [architecture page](/docs/learn/infrastructure/architecture/){target=\_blank}. -**Considerations** +Wormhole allows developers to leverage the strengths of multiple blockchain ecosystems without being confined to one. This means applications can benefit from the unique features of various networks—such as Solana's high throughput, Ethereum's security, and Cosmos's interoperability while maintaining a unified, efficient user experience. -!!! note - Developers should note that the choice of relayers depends their project's specific requirements and constraints. Wormhole relayers offer simplicity and convenience but limit customization and optimization opportunities compared to custom relayers. +This page introduces the key concepts and components necessary to understand how Wormhole enables fast, secure, and scalable cross-chain communication. -- All computations are performed on-chain -- Potentially less gas-efficient compared to custom relayers -- Optimization features like conditional delivery, batching, off-chain calculations might be restricted -- Support may not be available for all chains ---- END CONTENT --- +## What Problems Does Wormhole Solve? -Doc-Content: https://wormhole.com/docs/learn/infrastructure/spy ---- BEGIN CONTENT --- ---- -title: Spy -description: Discover Wormhole's Spy daemon, which subscribes to gossiped messages in the Guardian Network, including VAAs and Observations, with setup instructions. ---- +Interoperability is a critical challenge in the rapidly evolving blockchain landscape. Individual blockchains are often isolated, limiting the potential for integrated applications operating across multiple ecosystems. Wormhole solves this problem by enabling seamless communication between blockchains, allowing developers to create multichain applications that can leverage the unique features of each network. -# Spy +Critical problems Wormhole addresses include: -## Introduction +- **Blockchain isolation** - Wormhole connects disparate blockchains, enabling the transfer of assets, data, and governance actions across networks +- **Cross-chain complexity** - by abstracting the complexities of cross-chain communication, Wormhole makes it easier for developers to build and deploy cross-chain applications +- **Security and decentralization** - Wormhole prioritizes security through a decentralized Guardian network that validates and signs messages, ensuring the integrity of cross-chain interactions -In Wormhole’s ecosystem, the _Spy_ is a daemon, a continuously running background process that monitors messages within the Guardian Network. Unlike Guardians, Spies don’t perform validation; instead, they serve as an interface for observing the network’s message traffic, enabling applications and users to access live data transmitted over Wormhole. +## What Does Wormhole Offer? -The primary purpose of a Spy is to subscribe to the gossiped messages across the Guardian Network, tracking key message types that allow integrators and applications to monitor real-time network activity without directly engaging in consensus operations. +Wormhole provides a suite of tools and protocols that support a wide range of use cases: -## Key Features of the Spy +- **Cross-chain messaging** - securely transfer arbitrary data between blockchains, enabling the development of cross-chain decentralized applications (xDapps) +- **Asset transfers** - facilitate the movement of tokens and NFTs across supported chains with ease, powered by protocols built on Wormhole like [Portal](https://portalbridge.com/){target=\_blank} +- **Developer tools** - leverage [Wormhole’s SDKs](/docs/build/toolkit/typescript-sdk/){target=\_blank}, [APIs](/docs/build/toolkit/#wormhole-api-docs){target=\_blank}, [Wormhole Scan](https://wormholescan.io/){target=\_blank}, and documentation to build and deploy cross-chain applications quickly and efficiently -### Monitor Spy-Accessible Messages +## What Isn't Wormhole? -Spies can access the following categories of messages shared over the gossip protocol:: +- **Wormhole is _not_ a blockchain** - it acts as a communication layer that connects different blockchains, enabling them to interact without being a blockchain itself +- **Wormhole is _not_ a token bridge** - while it facilitates token transfers, Wormhole also supports a wide range of cross-chain applications, making it much more versatile than a typical bridge -- [Verifiable Action Approvals (VAAs)](/docs/learn/infrastructure/vaas/){target=\_blank} - packets of cross-chain data. The Spy can detect whether a VAA has been approved by the Guardian Network, making it a valuable tool for applications needing real-time cross-chain verification -- [Observations](/docs/learn/fundamentals/glossary/#observation){target=\_blank} - emitted by Wormhole’s core contracts, observations are picked up by the Guardians and relayed across the network. Spies allow users to monitor these messages, adding transparency and insight into blockchain events -- [Guardian heartbeats](/docs/learn/fundamentals/glossary/#heartbeat){target=\_blank} - heartbeat messages represent Guardian node statusn. By monitoring heartbeats, a Spy can signal the liveness and connectivity of Guardians in the network +## Use Cases of Wormhole -## Integrator Use Case +Consider the following examples of potential applications enabled by Wormhole: -The Spy provides a valuable mechanism for integrators to observe real-time network activity in the Guardian Network without directly engaging in validation or consensus. By running a Spy, integrators can track cross-chain events, and message flows — such as VAAs, observations, and Guardian heartbeats — to monitor network activity essential to their applications. +- **Cross-chain exchange** - using [Wormhole Connect](/docs/build/transfers/connect/overview/){target=\_blank}, developers can build exchanges that allow deposits from any Wormhole-connected chain, significantly increasing liquidity access +- **[Cross-chain governance](https://wormhole.com/blog/stake-for-governance-is-now-live-for-w-token-holders){target=\_blank}** - NFT collections on different networks can use Wormhole to communicate votes cast on their respective chains to a designated "voting" chain for combined proposals +- **Cross-chain game** - games can be developed on a performant network like Solana, with rewards issued as NFTs on another network, such as Ethereum -This monitoring capability is especially beneficial for applications that need immediate insights into cross-chain data events. Integrators can run a Spy to ensure their applications are promptly informed of message approvals, observations, or Guardian liveness signals, supporting timely and responsive app behavior without additional overhead on network resources. +## Explore -## Resources +Discover more about the Wormhole ecosystem, components, and protocols: -For more information, you can check out the following resources: +- **[Architecture](/docs/learn/infrastructure/architecture/){target=\_blank}** - explore the components of the protocol +- **[Protocol Specifications](https://github.com/wormhole-foundation/wormhole/tree/main/whitepapers){target=\_blank}** - learn about the protocols built on top of Wormhole -- The source code for the Go implementation of the Spy is available on [GitHub](https://github.com/wormhole-foundation/wormhole/blob/main/node/cmd/spy/spy.go){target=\_blank} -- To find out how to [start and run a Spy](/docs/infrastructure/spy/run-spy/){target=\_blank}, refer to the infrastructure section. This setup enables integrators to create a custom endpoint that applications can use to observe message flows in the Guardian Network, providing greater flexibility and control over cross-chain monitoring ---- END CONTENT --- +## Demos -Doc-Content: https://wormhole.com/docs/learn/infrastructure/vaas ---- BEGIN CONTENT --- ---- -title: VAAs -description: Learn about Verified Action Approvals (VAAs) in Wormhole, their structure, validation, and role in cross-chain communication. ---- +Demos offer more realistic implementations than tutorials: -# Verified Action Approvals +- **[Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding){target=\_blank}** - quickly set up a project with the Scaffolding repository +- **[xDapp Book Projects](https://github.com/wormhole-foundation/xdapp-book/tree/main/projects){target=\_blank}** - run and learn from example programs -VAAs are Wormhole's core messaging primitive. They are packets of cross-chain data emitted whenever a cross-chain application contract interacts with the Core Contract. + -The message is wrapped up in a structure called a VAA, which combines the message with the Guardian signatures to form a proof. +!!! note + Wormhole Integration Complete? -VAAs are uniquely indexed by the (`emitter_chain`, `emitter_address`, `sequence`) tuple. To obtain a VAA, one can query the [Wormholescan API](https://docs.wormholescan.io/){target=\_blank} with this information. + Let us know so we can list your project in our ecosystem directory and introduce you to our global, multichain community! -!!!note - The `sequence` field depends on the final ordering of blocks on the emitter chain. When a lower consistency level is chosen (i.e., not waiting for finality), there is a chance that chain reorganizations could lead to multiple, different VAAs appearing for what looks like the “same” message on the user side. The tuple (`emitter_chain`, `emitter_address`, `sequence`) can only be considered unique if the chain does not undergo a reorg and the block containing the message has effectively reached finality. However, there is always a small chance of an extended reorg that could invalidate or alter a previously emitted sequence number. + **[Reach out now!](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank}** -These VAAs are ultimately what a smart contract on a receiving chain must process to receive a Wormhole message. +## Supported Blockchains -## VAA Format +Wormhole supports a growing number of blockchains. -The basic VAA has two components: a header and a body. + + +
-### Header +### EVM -The header holds metadata about the current VAA, the Guardian set that is currently active, and the list of signatures gathered so far. +
BlockchainEnvironmentMainnetTestnetQuick Links
EthereumEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
AcalaEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
ArbitrumEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
AvalancheEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BaseEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BerachainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BlastEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BNB Smart ChainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
CeloEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
FantomEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
GnosisEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
HyperEVMEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
InkEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
KaiaEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
KaruraEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
LineaEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MantleEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MonadEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
MoonbeamEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
NeonEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OasisEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OptimismEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
PolygonEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
RootstockEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
ScrollEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
SeievmEVM:x::white_check_mark:
SNAXchainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
UnichainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
World ChainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
X LayerEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-- `version` ++"byte"++ - the VAA Version -- `guardian_set_index` ++"u32"++ - indicates which Guardian set is signing -- `len_signatures` ++"u8"++ - the number of signatures stored -- `signatures` ++"[]signature"++ - the collection of Guardian signatures +### SVM -Where each `signature` is: +
BlockchainEnvironmentMainnetTestnetQuick Links
SolanaSVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
PythnetSVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-- `index` ++"u8"++ - the index of this Guardian in the Guardian set -- `signature` ++"[65]byte"++ - the ECDSA signature +### AVM -### Body +
BlockchainEnvironmentMainnetTestnetQuick Links
AlgorandAVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-The body is _deterministically_ derived from an on-chain message. Any two Guardians processing the same message must derive the same resulting body. This requirement exists so that there is always a one-to-one relationship between VAAs and messages to avoid double-processing messages. +### CosmWasm -!!!note - While the body is derived from the on-chain message, this is only strictly true once the chain's state is finalized (i.e., no further reorgs). If a reorg occurs and a transaction that previously appeared in block X is replaced by block Y, Guardians observing different forks may generate different VAAs for what the emitter contract believes is the “same” message. - - This scenario is less likely once a block is sufficiently buried, but it can still happen if you choose a faster (less finalized) consistency level. +
BlockchainEnvironmentMainnetTestnetQuick Links
InjectiveCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
NeutronCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OsmosisCosmWasm:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
SeiCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
TerraCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
Terra 2.0CosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
XPLACosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-- `timestamp` ++"u32"++ - the timestamp of the block this message was published in -- `nonce` ++"u32"++ -- `emitter_chain` ++"u16"++ - the id of the chain that emitted the message -- `emitter_address` ++"[32]byte"++ - the contract address (Wormhole formatted) that called the Core Contract -- `sequence` ++"u64"++ - the auto-incrementing integer that represents the number of messages published by this emitter -- `consistency_level` ++"u8"++ - the consistency level (finality) required by this emitter -- `payload` ++"[]byte"++ - arbitrary bytes containing the data to be acted on +### Move VM -The body contains relevant information for entities, such as contracts, or other systems, that process or utilize VAAs. When a function like `parseAndVerifyVAA` is called, the body is returned, allowing verification of the `emitterAddress` to determine if the VAA originated from a trusted contract. +
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-!!! note - Because VAAs have no destination, they are effectively multicast. Any Core Contract on any chain in the network will verify them as authentic. If a VAA has a specific destination, relayers are entirely responsible for completing that delivery appropriately. +### NEAR VM -## Consistency and Finality +
BlockchainEnvironmentMainnetTestnetQuick Links
NEARNEAR VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-The consistency level determines whether Guardians wait for a chain’s final commitment state or issue a VAA sooner under less-final conditions. This choice is especially relevant for blockchains without instant finality, where the risk of reorganization remains until a block is deeply confirmed. +### Sui Move VM -Guardian watchers are specialized processes that monitor each blockchain in real time. They enforce the selected consistency level by deciding whether enough commitment has been reached before signing and emitting a VAA. Some chains allow only one commitment level (effectively final), while others let integrators pick between near-final or fully finalized states. Choosing a faster option speeds up VAA production but increases reorg risk; choosing a more conservative option takes longer but reduces the likelihood of rollback. +
BlockchainEnvironmentMainnetTestnetQuick Links
SuiSui Move VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
-## Signatures +
+ +--- END CONTENT --- -The body of the VAA is hashed twice with `keccak256` to produce the signed digest message. +Doc-Content: https://wormhole.com/docs/learn/security +--- BEGIN CONTENT --- +--- +title: Security +description: Explore Wormhole's security features, including the Guardian network, governance, monitoring, open-source development, and bug bounty programs. +--- -```js -// hash the bytes of the body twice -digest = keccak256(keccak256(body)) -// sign the result -signature = ecdsa_sign(digest, key) -``` +# Security -!!! note - Different implementations of the ECDSA signature validation may apply a keccak256 hash to the message passed, so care must be taken to pass the correct arguments. - - For example, the [Solana secp256k1 program](https://docs.solanalabs.com/runtime/programs#secp256k1-program){target=\_blank} will hash the message passed. In this case, the argument for the message should be a single hash of the body, not the twice-hashed body. +## Core Security Assumptions -## Payload Types +At its core, Wormhole is secured by a network of [Guardian](/docs/learn/infrastructure/guardians/){target=\_blank} nodes that validate and sign messages. If a super majority (e.g., 13 out of 19) of Guardians sign the same message, it can be considered valid. A smart contract on the target chain will verify the signatures and format of the message before approving any transaction. -Different applications built on Wormhole may specify a format for the payloads attached to a VAA. This payload provides information on the target chain and contract so it can take action (e.g., minting tokens to a receiver address). +- Wormhole's core security primitive is its signed messages (signed [VAAs](/docs/learn/glossary/#vaa){target=\_blank}) +- The Guardian network is currently secured by a collection of 19 of the world's top [validator companies](https://wormhole-foundation.github.io/wormhole-dashboard/#/?endpoint=Mainnet){target=\_blank} +- Guardians produce signed state attestations (signed VAAs) when requested by a Core Contract integrator +- Every Guardian runs full nodes (rather than light nodes) of every blockchain in the Wormhole network, so if a blockchain suffers a consensus attack or hard fork, the blockchain will disconnect from the network rather than potentially produce invalid signed VAAs +- Any Signed VAA can be verified as authentic by the Core Contract of any other chain +- [Relayers](/docs/learn/glossary/#relayer){target=\_blank} are considered untrusted in the Wormhole ecosystem -### Token Transfer +In summary: -Tokens are transferred between chains using a lockup/mint and burn/unlock mechanism. Many bridges use such a basic method, but the implementation described leverages the generic message-passing protocol provided by Wormhole to handle the routing of lock and burn events across chains. This approach ensures that Wormhole's Token Bridge is chain-agnostic. The bridge can be rapidly integrated into any network with a Wormhole contract. Wormhole's generic message-passing doesn't require any program to send messages to understand the specific implementation details of other chains. +- **Core integrators aren't exposed to risk from chains and contracts they don't integrate with** +- By default, you only trust Wormhole's signing process and the core contracts of the chains you're on +- You can expand your contract and chain dependencies as you see fit -To transfer tokens from Chain A to Chain B, you must lock them on A and mint them on B. The tokens on A must be proven to be locked before the minting can occur on B. To facilitate this process, Chain A first locks the tokens and emits a message indicating that the locking has been completed. This message has the following structure and is referred to as a transfer message: +Core assumptions aside, many other factors impact the real-world security of decentralized platforms. Here is more information on additional measures that have been put in place to ensure the security of Wormhole. -- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `1` for a token transfer -- `amount` ++"u256"++ - amount of tokens being transferred -- `token_address` ++"u8[32]"++ - address on the source chain -- `token_chain` ++"u16"++ - numeric ID for the source chain -- `to` ++"u8[32]"++ - address on the destination chain -- `to_chain` ++"u16"++ - numeric ID for the destination chain -- `fee` ++"u256"++ - portion of amount paid to a relayer +## Guardian Network -This structure contains everything the receiving chain needs to learn about a lockup event. Once Chain B receives this payload, it can mint the corresponding asset. +Wormhole is an evolving platform. While the Guardian set currently comprises 19 validators, this is a limitation of current blockchain technology. -Note that Chain B is agnostic regarding how the tokens on the sending side were locked. They could have been burned by a mint or locked in a custody account. The protocol relays the event once enough Guardians have attested to its existence. +### Governance -### Attestation +Governance is the process through which contract upgrades happen. Guardians manually vote on governance proposals that originate inside the Guardian Network and are then submitted to ecosystem contracts. -The Transfer event in the preceding section needs an important detail added. While the program on Chain B can trust the message to inform it of token lockup events, it has no way of verifying the correct token is locked up. The address alone is a meaningless value to most users. To solve this, the Token Bridge supports token attestation. +This means that governance actions are held to the same security standard as the rest of the system. A two-thirds supermajority of the Guardians is required to pass any governance action. -For a token attestation, Chain A emits a message containing metadata about a token, which Chain B may use to preserve the name, symbol, and decimal precision of a token address. +Governance messages can target any of the various wormhole modules, including the core contracts and all currently deployed token bridge contracts. When a Guardian signs such a message, its signature implies a vote on the action in question. Once more than two-thirds of the Guardians have signed, the message and governance action are considered valid. -The message format for this action is as follows: +All governance actions and contract upgrades have been managed via Wormhole's on-chain governance system. -- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `2` for an attestation -- `token_address` ++"[32]byte"++ - address of the originating token contract -- `token_chain` ++"u16"++ - chain ID of the originating token -- `decimals` ++"u8"++ - number of decimals this token should have -- `symbol` ++"[32]byte"++ - short name of asset -- `name` ++"[32]byte"++ - full name of asset +Via governance, the Guardians can: -Attestations use a fixed-length byte array to encode UTF8 token name and symbol data. +- Change the current Guardian set +- Expand the Guardian set +- Upgrade ecosystem contract implementations -!!! note - Because the byte array is fixed length, the data contained may truncate multibyte Unicode characters. +The governance system is fully open source in the core repository. See the [Open Source section](#open-source){target=\_blank} for contract source. -When sending an attestation VAA, it is recommended to send the longest UTF-8 prefix that doesn't truncate a character and then right-pad it with zero bytes. +## Monitoring -When parsing an attestation VAA, it is recommended to trim all trailing zero bytes and converting the remainder to UTF-8 via any lossy algorithm. +A key element of Wormhole's defense-in-depth strategy is that each Guardian is a highly competent validator company with its own in-house processes for running, monitoring, and securing blockchain operations. This heterogeneous approach to monitoring increases the likelihood that fraudulent activity is detected and reduces the number of single failure points in the system. -!!! note - Be mindful that different on-chain systems may have different VAA parsers, resulting in different names/symbols on different chains if the string is long or contains invalid UTF8. +Guardians are not just running Wormhole validators; they're running validators for every blockchain inside of Wormhole as well, which allows them to perform monitoring holistically across decentralized computing rather than just at a few single points. -Without knowing a token's decimal precision, Chain B cannot correctly mint the number of tokens when processing a transfer. For this reason, the Token Bridge requires an attestation for each token transfer. +Guardians monitor: -### Token Transfer with Message +- Block production and consensus of each blockchain - if a blockchain's consensus is violated, it will be disconnected from the network until the Guardians resolve the issue +- Smart contract level data - via processes like the Governor, Guardians constantly monitor the circulating supply and token movements across all supported blockchains +- Guardian level activity - the Guardian Network functions as an autonomous decentralized computing network, ensuring independent security measures across its validators -!!! note - This VAA type is also referred to as a payload3 message or a Contract Controlled Transfer. +## Asset Layer Protections -The Token Transfer with Message data structure is identical to the token-only data structure, except for the `fee` field, which is replaced with the `from_address` field, and the addition of a `payload` field containing arbitrary bytes. In this arbitrary byte field, an app may include additional data in the transfer to inform some application-specific behavior. +One key strength of the Wormhole ecosystem is the Guardians’ ability to validate and protect the integrity of assets across multiple blockchains. -- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `3` for a token transfer with message -- `amount` ++"u256"++ - amount of tokens being transferred -- `token_address` ++"u8[32]"++ - address on the source chain -- `token_chain` ++"u16"++ - numeric ID for the source chain -- `to` ++"u8[32]"++ - address on the destination chain -- `to_chain` ++"u16"++ - numeric ID for the destination chain -- `from_address` ++"u8[32]"++ - address that called the Token Bridge on the source chain -- `payload` ++"[]byte"++ - message, arbitrary bytes, app specific +To enforce the Wormhole Asset Layer’s core protections, the Global Accountant tracks the total circulating supply of all Wormhole assets across all chains, preventing any blockchain from bridging assets that could violate the supply invariant. -### Governance +In addition to the Global Accountant, Guardians may only sign transfers that do not violate the requirements of the Governor. The [Governor](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0007_governor.md){target=\_blank} tracks inflows and outflows of all blockchains and delays suspicious transfers that may indicate an exploit. -Governance VAAs don't have a `payload_id` field like the preceding formats. They're used to trigger some action in the deployed contracts (for example, upgrade). +## Open Source -### Action Structure +Wormhole builds in the open and is always open source. -Governance messages contain pre-defined actions, which can target the various Wormhole modules currently deployed on-chain. The structure contains the following fields: +- **[Wormhole core repository](https://github.com/wormhole-foundation/wormhole){target=\_blank}** +- **[Wormhole Foundation GitHub organization](https://github.com/wormhole-foundation){target=\_blank}** +- **[Wormhole contract deployments](/docs/learn/infrastructure/core-contracts/){target=\_blank}** -- `module` ++"u8[32]"++ - contains a right-aligned module identifier -- `action` ++"u8"++ - predefined governance action to execute -- `chain` ++"u16"++ - chain the action is targeting. This should be set to `0` for all chains -- `args` ++"any"++ - arguments to the action +## Audits -Below is an example message containing a governance action triggering a code upgrade to the Solana Core Contract. The module field here is a right-aligned encoding of the ASCII Core, represented as a 32-byte hex string. +Wormhole has been heavily audited, with _29 third-party audits completed_ and more started. Audits have been performed by the following firms: -```js -module: 0x0000000000000000000000000000000000000000000000000000436f7265 -action: 1 -chain: 1 -new_contract: 0x348567293758957162374959376192374884562522281937446234828323 -``` +- [Trail of Bits](https://www.trailofbits.com/){target=\_blank} +- [Neodyme](https://neodyme.io/en/){target=\_blank} +- [Kudelski](https://kudelskisecurity.com/){target=\_blank} +- [OtterSec](https://osec.io/){target=\_blank} +- [Certik](https://www.certik.com/){target=\_blank} +- [Hacken](https://hacken.io/){target=\_blank} +- [Zellic](https://www.zellic.io/){target=\_blank} +- [Coinspect](https://www.coinspect.com/){target=\_blank} +- [Halborn](https://www.halborn.com/){target=\_blank} +- [Cantina](https://cantina.xyz/welcome){target=\_blank} -### Actions +All audits and final reports can be found in [security page of the GitHub Repo](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md#3rd-party-security-audits){target=\blank}. -The meaning of each numeric action is pre-defined and documented in the Wormhole design documents. For each application, the relevant definitions can be found via these links: +## Bug Bounties -- [Core governance actions](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0002_governance_messaging.md){target=\_blank} -- [Token Bridge governance actions](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0003_token_bridge.md){target=\_blank} +Wormhole has one of the largest bug bounty programs in software development and has repeatedly shown commitment to engaging with the white hat community. -## Lifetime of a Message +Wormhole runs a bug bounty program through [Immunefi](https://immunefi.com/bug-bounty/wormhole/){target=\blank} program, with a top payout of **5 million dollars**. -!!! note - Anyone can submit the VAA to the target chain. The Guardians typically don't perform this step to avoid transaction fees. Instead, applications built on top of Wormhole can acquire the VAA via the Guardian RPC and make the submission in a separate flow. +If you are interested in contributing to Wormhole security, please look at this section for [Getting Started as a White Hat](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md#white-hat-hacking){target=\blank}, and follow the [Wormhole Contributor Guidelines](https://github.com/wormhole-foundation/wormhole/blob/main/CONTRIBUTING.md){target=\blank}. -With the concepts now defined, it is possible to illustrate what a full flow for message passing between two chains looks like. The following stages demonstrate each step of processing that the Wormhole network performs to route a message. +For more information about submitting to the bug bounty programs, refer to the [Wormhole Immunefi page](https://immunefi.com/bug-bounty/wormhole/){target=\blank}. -1. **A message is emitted by a contract running on Chain A** - any contract can emit messages, and the Guardians are programmed to observe all chains for these events. Here, the Guardians are represented as a single entity to simplify the graphics, but the observation of the message must be performed individually by each of the 19 Guardians -2. **Signatures are aggregated** - Guardians observe and sign the message independently. Once enough Guardians have signed the message, the collection of signatures is combined with the message and metadata to produce a VAA -3. **VAA submitted to target chain** - the VAA acts as proof that the Guardians have collectively attested the existence of the message payload; to complete the final step, the VAA itself is submitted (or relayed) to the target chain to be processed by a receiving contract +## Learn More -![Lifetime of a message diagram](/docs/images/learn/infrastructure/vaas/lifetime-vaa-diagram.webp) +The [SECURITY.md](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md){target=\blank} from the official repository has the latest security policies and updates. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/messaging/cctp +Doc-Content: https://wormhole.com/docs/learn/transfers/cctp --- BEGIN CONTENT --- --- title: Circle's CCTP Bridge @@ -14901,13 +14405,13 @@ While this protocol is wholly separate from Wormhole itself, Wormhole builds on !!! note Wormhole supports all CCTP-supported chains but at the moment only a [handful of chains](https://developers.circle.com/stablecoins/docs/supported-domains){target=\_blank} are supported by Circle. -You can use Wormhole's CCTP-powered USDC bridging by embedding the [Connect Widget](/docs/build/applications/connect/overview/){target=\_blank} or by integrating the [TypeScript SDK](/docs/build/applications/wormhole-sdk/){target=\_blank} directly. +You can use Wormhole's CCTP-powered USDC bridging by embedding the [Connect Widget](/docs/build/transfers/connect/overview/){target=\_blank} or by integrating the [TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} directly. ## Automatic Relaying To complete a CCTP transfer, the [Circle Attestation](https://developers.circle.com/api-reference/stablecoins/common/get-attestation){target=\_blank} must be delivered to the destination chain. -This attestation delivery may be difficult or impossible in some contexts. For example, in a browser context, the user doesn't wish to wait for finality to deliver the attestation. To address this difficulty, the Wormhole CCTP relayer may be used either with the [Wormhole Connect Widget](/docs/build/applications/connect/overview/){target=\_blank} or more directly with the [Wormhole TypeScript SDK](/docs/build/applications/wormhole-sdk/){target=\_blank}. +This attestation delivery may be difficult or impossible in some contexts. For example, in a browser context, the user doesn't wish to wait for finality to deliver the attestation. To address this difficulty, the Wormhole CCTP relayer may be used either with the [Wormhole Connect Widget](/docs/build/transfers/connect/overview/){target=\_blank} or more directly with the [Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank}. The Wormhole CCTP Relayer charges a fee to deliver the attestation and complete the transfer. @@ -14930,7 +14434,7 @@ The ability to perform native gas drop off addresses the common issue where a us --> --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/messaging/index +Doc-Content: https://wormhole.com/docs/learn/transfers/index --- BEGIN CONTENT --- --- title: Messaging Protocols @@ -14951,7 +14455,7 @@ This section covers various aspects and services related to communication protoc The Token Bridge provides a secure, low-lift integration for cross-chain transfers of fungible tokens. - [:custom-arrow: Learn more about Token Bridges](/docs/learn/messaging/token-bridge/) + [:custom-arrow: Learn more about Token Bridges](/docs/learn/transfers/token-bridge/) - :octicons-book-16:{ .lg .middle } **Circle's CCTP Bridge** @@ -14959,7 +14463,7 @@ This section covers various aspects and services related to communication protoc The CCTP Bridge supports fast and cost-effective native USDC transfers across blockchains using Circle's Cross Chain Transfer Protocol (CCTP). - [:custom-arrow: Learn more about CCTP](/docs/learn/messaging/cctp/) + [:custom-arrow: Learn more about CCTP](/docs/learn/transfers/cctp/) - :octicons-book-16:{ .lg .middle } **Native Token Transfers** @@ -14967,12 +14471,12 @@ This section covers various aspects and services related to communication protoc Wormhole's Native Token Transfers (NTT) offers an open source and flexible framework for cross-chain token transfers, providing full control over token behavior on each blockchain. - [:custom-arrow: Learn more about NTT](/docs/learn/messaging/native-token-transfers/) + [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/) --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/messaging/native-token-transfers/architecture +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/architecture --- BEGIN CONTENT --- --- title: Native Token Transfers Architecture @@ -14983,7 +14487,7 @@ description: Explore Wormhole's Native Token Transfers architecture, which cover The Native Token Transfers (NTT) architecture within the Wormhole ecosystem offers a robust framework for secure and efficient token transfers across multiple blockchains. This architecture relies on the manager and transceiver core components that work together to manage cross-chain communication and token operations complexities. -For the technical implementations of the functions, refer to the [Managers and Transceivers](/docs/build/contract-integrations/native-token-transfers/managers-transceivers/){target=\_blank} page. +For the technical implementations of the functions, refer to the [Managers and Transceivers](/docs/build/transfers/native-token-transfers/managers-transceivers/){target=\_blank} page. ## System Components @@ -15025,10 +14529,10 @@ How it works: 2. It quotes delivery fees, handles cross-chain message relaying, and verifies delivery to ensure tokens are safely transferred 3. For each message, the transceiver coordinates with managers, ensuring only authorized transfers are processed on the destination chain -![NTT architecture diagram](/docs/images/learn/messaging/native-token-transfers/architecture/architecture-1.webp) +![NTT architecture diagram](/docs/images/learn/transfers/native-token-transfers/architecture/architecture-1.webp) !!! note - [Learn more](/docs/learn/messaging/native-token-transfers/architecture/#lifecycle-of-a-message){target=\_blank} about the architecture of Native Token Transfers message lifecycles. + [Learn more](/docs/learn/transfers/native-token-transfers/architecture/#lifecycle-of-a-message){target=\_blank} about the architecture of Native Token Transfers message lifecycles. #### Custom Transceivers @@ -15036,7 +14540,7 @@ The NTT framework supports advanced features such as custom transceivers for spe NTT has the flexibility to support custom message verification in addition to Wormhole Guardian message verification. Custom verifiers are implemented as transceiver contracts and can be protocol-specific or provided by other third-party attesters. Protocols can also configure the threshold of attestations required to mark a token transfer as valid — for example, 2/2, 2/3, 3/5. -![Custom Attestation with NTT diagram](/docs/images/learn/messaging/native-token-transfers/architecture/architecture-2.webp) +![Custom Attestation with NTT diagram](/docs/images/learn/transfers/native-token-transfers/architecture/architecture-2.webp) The verifier performs checks based on predefined criteria and issues approval for transactions that meet these requirements. This approval is incorporated into the Wormhole message, ensuring that only transactions verified by both the Wormhole Guardian Network and the additional verifier are processed. The model includes an extra verifier in the bridging process, enhancing security and providing an added assurance of transaction integrity. @@ -15094,7 +14598,7 @@ Finally, after the message is verified and attested to, the tokens can be either In both cases, once the tokens have been released, the transfer process is complete, and the recipient receives the tokens. Events are emitted to indicate that the transfer has been fully redeemed. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/messaging/native-token-transfers/deployment +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/deployment --- BEGIN CONTENT --- --- title: Native Token Transfers - Deployment Models @@ -15126,7 +14630,7 @@ This model best suits new token deployments or projects willing to upgrade exist - **Destination chain** - equivalent tokens are minted on the destination chain --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/messaging/native-token-transfers/index +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/index --- BEGIN CONTENT --- --- title: A Quick Look at Native Token Transfers @@ -15147,7 +14651,7 @@ This section covers Wormhole's Native Token Transfers (NTT), an open source, fle Dive into an introduction to NTT and discover what NTT is, what its key features are, and the available integration paths. - [:custom-arrow: Learn more about NTT](/docs/learn/messaging/native-token-transfers/overview/) + [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/overview/) - :octicons-question-16:{ .lg .middle } **Architecture** @@ -15155,7 +14659,7 @@ This section covers Wormhole's Native Token Transfers (NTT), an open source, fle Explore NTT's architecture to understand its core components and how they work together to manage cross-chain communication. - [:custom-arrow: Discover how NTT works](/docs/learn/messaging/native-token-transfers/architecture/) + [:custom-arrow: Discover how NTT works](/docs/learn/transfers/native-token-transfers/architecture/) - :octicons-book-16:{ .lg .middle } **Deployment Models** @@ -15163,7 +14667,7 @@ This section covers Wormhole's Native Token Transfers (NTT), an open source, fle The NTT framework offers two deployment models for different token management needs: the hub-and-spoke and burn-and-mint models. - [:custom-arrow: Check out the deployment models](/docs/learn/messaging/native-token-transfers/deployment/) + [:custom-arrow: Check out the deployment models](/docs/learn/transfers/native-token-transfers/deployment/) - :octicons-shield-lock-16:{ .lg .middle } **Security** @@ -15171,7 +14675,7 @@ This section covers Wormhole's Native Token Transfers (NTT), an open source, fle Explore NTT's security measures, including the Global Accountant and governance strategies for seamless token safety. - [:custom-arrow: Review the security measures](/docs/learn/messaging/native-token-transfers/security/) + [:custom-arrow: Review the security measures](/docs/learn/transfers/native-token-transfers/security/) @@ -15187,7 +14691,7 @@ Ready to dive in and start building? Check out the following resources to begin Explore detailed guides that walk you through the entire deployment process, from installing the NTT CLI to deploying NTT across supported chains. - [:custom-arrow: Deploy now using the NTT CLI](/docs/build/contract-integrations/native-token-transfers/deployment-process/) + [:custom-arrow: Deploy now using the NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/) - :octicons-checklist-16:{ .lg .middle } **Post Deployment Recommendations** @@ -15195,12 +14699,12 @@ Ready to dive in and start building? Check out the following resources to begin Already deployed your NTT project? Check out these post deployment recommendations and integration demos to get the most out of your deployment. - [:custom-arrow: Get the most of out your NTT deployment](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/) + [:custom-arrow: Get the most of out your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/) --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/messaging/native-token-transfers/overview +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview --- BEGIN CONTENT --- --- title: Native Token Transfers Overview @@ -15210,10 +14714,10 @@ description: Explore Wormhole's Native Token Transfers for flexible cross-chain # Native Token Transfers !!!tip "Looking to deploy NTT?" - If you're ready to deploy NTT or access the CLI, follow the detailed [NTT Deployment Section](/docs/build/contract-integrations/native-token-transfers/deployment-process/){target=\_blank}. + If you're ready to deploy NTT or access the CLI, follow the detailed [NTT Deployment Section](/docs/build/transfers/native-token-transfers/deployment-process/){target=\_blank}. - - For deployment steps on EVM, visit the [Deploy to EVM page](/docs/build/contract-integrations/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} - - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/learn/messaging/native-token-transfers/overview/){target=\_blank} + - For deployment steps on EVM, visit the [Deploy to EVM page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} + - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} ## Introduction @@ -15260,7 +14764,7 @@ The Token Bridge offers a secure, low-effort integration suitable for applicatio - **Mechanism** - solely utilizes a lock and mint model. Unlike NTT, the Token Bridge issues a wrapped asset on the destination chain, rather than preserving the original token contract - **Security** - preconfigured rate limiting and integrated Global Accountant -- **Contract ownership** - Token Bridge contracts are upgradeable via [Wormhole Governance](/docs/learn/fundamentals/security/){target=\_blank} +- **Contract ownership** - Token Bridge contracts are upgradeable via [Wormhole Governance](/docs/learn/security/){target=\_blank} - **Token contracts** - wrapped asset contract owned by the Wormhole Token Bridge contract, upgradeable via a 13/19 Guardian governance process - **Integration** - straightforward and permissionless method to deploy on multiple chains @@ -15272,7 +14776,7 @@ The Token Bridge offers a secure, low-effort integration suitable for applicatio Native Token Transfers (NTT) in Wormhole primarily support **ERC-20 tokens**, the most widely used standard for fungible tokens on the Ethereum network and other EVM-compatible blockchains. The NttManager contract leverages the IERC20 interface and SafeERC20 utility from OpenZeppelin to ensure secure and efficient token transfers. Additionally, it supports ERC-20 Burnable tokens, allowing tokens to be burned on the source chain when needed for cross-chain transfers. At this time, NTT focuses on ERC-20 tokens, and other token standards, such as ERC-721 (non-fungible tokens) or ERC-1155 (multi-token standard), are not natively supported. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/messaging/native-token-transfers/security +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/security --- BEGIN CONTENT --- --- title: Native Token Transfers Security @@ -15303,7 +14807,7 @@ The registry component of the NTT system is crucial for maintaining a trusted li This governance model ensures that the system remains secure while being adaptable to new requirements in any environment where it is deployed. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/messaging/token-bridge +Doc-Content: https://wormhole.com/docs/learn/transfers/token-bridge --- BEGIN CONTENT --- --- title: Token Bridge @@ -15339,7 +14843,7 @@ The transfer process is simple yet secure, involving a few key steps: 3. **Message emission** - a message detailing the transfer is sent through Wormhole’s Guardian Network, which verifies the transfer and signs the message 4. **Verification and minting** - on the destination chain, the transfer message is verified, and wrapped tokens are minted, or native tokens are released from custody -![Token Bridge detailed flow](/docs/images/learn/messaging/token-bridge/token-bridge-diagram.webp) +![Token Bridge detailed flow](/docs/images/learn/transfers/token-bridge/token-bridge-diagram.webp) ### Key Features of the Token Bridge @@ -15405,7 +14909,7 @@ Wormhole Connect makes it simple to link your application to multiple blockchain Get deeper insights into setting up and customizing Wormhole Connect. Explore advanced guides, best practices, and configuration tips to streamline your cross-chain integrations. - [:custom-arrow: Learn more](/docs/build/applications/connect/) + [:custom-arrow: Learn more](/docs/build/transfers/connect/) --- END CONTENT --- @@ -15465,7 +14969,7 @@ npm install @wormhole-foundation/wormhole-connect ### Integrate Connect into the Application -Now, we need to modify the default `App.js` file to integrate Wormhole Connect. We are going to use [version V1.0](/docs/build/applications/connect/upgrade/){target=\_blank}, make sure to check which version of connect you are using. Open `src/App.js` and replace the content with the following code: +Now, we need to modify the default `App.js` file to integrate Wormhole Connect. We are going to use [version V1.0](/docs/build/transfers/connect/upgrade/){target=\_blank}, make sure to check which version of connect you are using. Open `src/App.js` and replace the content with the following code: === "JavaScript" @@ -15521,7 +15025,7 @@ Now, we need to modify the default `App.js` file to integrate Wormhole Connect. ### Customize Wormhole Connect -To further customize Wormhole Connect for your application, such as adjusting the UI, adding custom tokens, or configuring specific chain settings, you can refer to the [Wormhole Connect Configuration guide](/docs/build/applications/connect/configuration/#introduction){target=\_blank}. +To further customize Wormhole Connect for your application, such as adjusting the UI, adding custom tokens, or configuring specific chain settings, you can refer to the [Wormhole Connect Configuration guide](/docs/build/transfers/connect/configuration/#introduction){target=\_blank}. ### Run the Application @@ -15621,7 +15125,7 @@ We'll interact with two key Wormhole components: the [Wormhole relayer](/docs/le Additionally, we'll rely on the Wormhole relayer to automatically determine cross-chain transaction costs and facilitate payments. This feature simplifies cross-chain development by allowing you to specify only the target chain and the message. The relayer handles the rest, ensuring that the message is transmitted with the appropriate fee. -![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/fundamentals/architecture/architecture-1.webp) +![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/infrastructure/architecture/architecture-1.webp) ## Prerequisites @@ -18176,18 +17680,8 @@ Expand the reach of your decentralized applications by building smart contracts Dive deeper into Wormhole’s foundational concepts for cross-chain contracts. Discover how messaging, guardians, and VAAs work together to enable secure, scalable dApps. - [:custom-arrow: Explore Core Contracts](/docs/learn/infrastructure/core-contracts/) -- :octicons-tools-16:{ .lg .middle } **Build Contract Integrations** - - --- - - Explore advanced contract integrations with Wormhole. Access reference code, best practices, and guidance for deploying robust cross-chain smart contracts. - - - [:custom-arrow: Build contract integrations](/docs/build/contract-integrations/) - --- END CONTENT --- @@ -18411,7 +17905,7 @@ Welcome to the MultiGov tutorials section. In this section, you will find tutori Integrate MultiGov into your smart contracts. Access reference code, best practices, and guidance for deploying cross-chain governance systems. - [:custom-arrow: Build with MultiGov](/docs/build/contract-integrations/multigov/) + [:custom-arrow: Build with MultiGov](/docs/build/multigov/) --- END CONTENT --- @@ -18673,7 +18167,7 @@ The Wormhole SDK provides the essential building blocks for creating robust cros Learn to build cross-chain dApps using the Wormhole SDK. Access detailed guides, reference code, and best practices for robust application development. - [:custom-arrow: Learn more](/docs/build/applications/wormhole-sdk/) + [:custom-arrow: Learn more](/docs/build/toolkit/typescript-sdk/) --- END CONTENT --- @@ -18691,7 +18185,7 @@ description: Learn to build a cross-chain native token transfer app using Wormho ## Introduction -This tutorial guides you through building a cross-chain token transfer application using the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} and its [Token Bridge](/docs/learn/messaging/token-bridge/){target=\_blank} method. The Token Bridge method enables secure and efficient cross-chain asset transfers across different blockchain networks, allowing users to move tokens seamlessly. +This tutorial guides you through building a cross-chain token transfer application using the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} and its [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} method. The Token Bridge method enables secure and efficient cross-chain asset transfers across different blockchain networks, allowing users to move tokens seamlessly. By leveraging Wormhole’s Token Bridge, this guide shows you how to build an application that supports multiple transfer types: @@ -19499,7 +18993,7 @@ description: Learn how to perform USDC cross-chain transfers using Wormhole SDK ## Introduction -In this guide, we will show you how to bridge native USDC across different blockchain networks using [Circle's Cross-Chain Transfer Protocol](/learn/messaging/cctp/){target=\_blank} (CCTP) and [Wormhole’s TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main){target=\_blank}. +In this guide, we will show you how to bridge native USDC across different blockchain networks using [Circle's Cross-Chain Transfer Protocol](/learn/transfers/cctp/){target=\_blank} (CCTP) and [Wormhole’s TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main){target=\_blank}. Traditionally, cross-chain transfers using CCTP involve multiple manual steps, such as initiating the transfer on the source chain, relaying messages between chains, and covering gas fees on both the source and destination chains. Without the TypeScript SDK, developers must handle these operations independently, adding complexity and increasing the chance for errors, mainly when dealing with gas payments on the destination chain and native gas token management. diff --git a/tutorials/by-product/connect/index.md b/tutorials/by-product/connect/index.md index 92ade8c28..8e9e1b8ad 100644 --- a/tutorials/by-product/connect/index.md +++ b/tutorials/by-product/connect/index.md @@ -29,6 +29,6 @@ Wormhole Connect makes it simple to link your application to multiple blockchain Get deeper insights into setting up and customizing Wormhole Connect. Explore advanced guides, best practices, and configuration tips to streamline your cross-chain integrations. - [:custom-arrow: Learn more](/docs/build/applications/connect/) + [:custom-arrow: Learn more](/docs/build/transfers/connect/) \ No newline at end of file diff --git a/tutorials/by-product/connect/react-dapp.md b/tutorials/by-product/connect/react-dapp.md index 4ab1ce540..3a627bae5 100644 --- a/tutorials/by-product/connect/react-dapp.md +++ b/tutorials/by-product/connect/react-dapp.md @@ -51,7 +51,7 @@ npm install @wormhole-foundation/wormhole-connect ### Integrate Connect into the Application -Now, we need to modify the default `App.js` file to integrate Wormhole Connect. We are going to use [version V1.0](/docs/build/applications/connect/upgrade/){target=\_blank}, make sure to check which version of connect you are using. Open `src/App.js` and replace the content with the following code: +Now, we need to modify the default `App.js` file to integrate Wormhole Connect. We are going to use [version V1.0](/docs/build/transfers/connect/upgrade/){target=\_blank}, make sure to check which version of connect you are using. Open `src/App.js` and replace the content with the following code: === "JavaScript" @@ -107,7 +107,7 @@ Now, we need to modify the default `App.js` file to integrate Wormhole Connect. ### Customize Wormhole Connect -To further customize Wormhole Connect for your application, such as adjusting the UI, adding custom tokens, or configuring specific chain settings, you can refer to the [Wormhole Connect Configuration guide](/docs/build/applications/connect/configuration/#introduction){target=\_blank}. +To further customize Wormhole Connect for your application, such as adjusting the UI, adding custom tokens, or configuring specific chain settings, you can refer to the [Wormhole Connect Configuration guide](/docs/build/transfers/connect/configuration/#introduction){target=\_blank}. ### Run the Application diff --git a/tutorials/by-product/contract-integrations/cross-chain-contracts.md b/tutorials/by-product/contract-integrations/cross-chain-contracts.md index 8f2072946..9b7518d6d 100644 --- a/tutorials/by-product/contract-integrations/cross-chain-contracts.md +++ b/tutorials/by-product/contract-integrations/cross-chain-contracts.md @@ -23,7 +23,7 @@ We'll interact with two key Wormhole components: the [Wormhole relayer](/docs/le Additionally, we'll rely on the Wormhole relayer to automatically determine cross-chain transaction costs and facilitate payments. This feature simplifies cross-chain development by allowing you to specify only the target chain and the message. The relayer handles the rest, ensuring that the message is transmitted with the appropriate fee. -![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/fundamentals/architecture/architecture-1.webp) +![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/infrastructure/architecture/architecture-1.webp) ## Prerequisites diff --git a/tutorials/by-product/contract-integrations/index.md b/tutorials/by-product/contract-integrations/index.md index 9018d18be..4699df488 100644 --- a/tutorials/by-product/contract-integrations/index.md +++ b/tutorials/by-product/contract-integrations/index.md @@ -37,16 +37,6 @@ Expand the reach of your decentralized applications by building smart contracts Dive deeper into Wormhole’s foundational concepts for cross-chain contracts. Discover how messaging, guardians, and VAAs work together to enable secure, scalable dApps. - [:custom-arrow: Explore Core Contracts](/docs/learn/infrastructure/core-contracts/) -- :octicons-tools-16:{ .lg .middle } **Build Contract Integrations** - - --- - - Explore advanced contract integrations with Wormhole. Access reference code, best practices, and guidance for deploying robust cross-chain smart contracts. - - - [:custom-arrow: Build contract integrations](/docs/build/contract-integrations/) - - \ No newline at end of file + diff --git a/tutorials/by-product/multigov/index.md b/tutorials/by-product/multigov/index.md index 56b60d2e0..566ae2b63 100644 --- a/tutorials/by-product/multigov/index.md +++ b/tutorials/by-product/multigov/index.md @@ -40,6 +40,6 @@ Welcome to the MultiGov tutorials section. In this section, you will find tutori Integrate MultiGov into your smart contracts. Access reference code, best practices, and guidance for deploying cross-chain governance systems. - [:custom-arrow: Build with MultiGov](/docs/build/contract-integrations/multigov/) + [:custom-arrow: Build with MultiGov](/docs/build/multigov/) diff --git a/tutorials/by-product/wormhole-sdk/index.md b/tutorials/by-product/wormhole-sdk/index.md index 2e4dadf84..ac0d2a5f5 100644 --- a/tutorials/by-product/wormhole-sdk/index.md +++ b/tutorials/by-product/wormhole-sdk/index.md @@ -37,6 +37,6 @@ The Wormhole SDK provides the essential building blocks for creating robust cros Learn to build cross-chain dApps using the Wormhole SDK. Access detailed guides, reference code, and best practices for robust application development. - [:custom-arrow: Learn more](/docs/build/applications/wormhole-sdk/) + [:custom-arrow: Learn more](/docs/build/toolkit/typescript-sdk/) \ No newline at end of file diff --git a/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge.md b/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge.md index b21dfafa1..a4ad94cd4 100644 --- a/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge.md +++ b/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge.md @@ -9,7 +9,7 @@ description: Learn to build a cross-chain native token transfer app using Wormho ## Introduction -This tutorial guides you through building a cross-chain token transfer application using the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} and its [Token Bridge](/docs/learn/messaging/token-bridge/){target=\_blank} method. The Token Bridge method enables secure and efficient cross-chain asset transfers across different blockchain networks, allowing users to move tokens seamlessly. +This tutorial guides you through building a cross-chain token transfer application using the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} and its [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} method. The Token Bridge method enables secure and efficient cross-chain asset transfers across different blockchain networks, allowing users to move tokens seamlessly. By leveraging Wormhole’s Token Bridge, this guide shows you how to build an application that supports multiple transfer types: diff --git a/tutorials/by-product/wormhole-sdk/usdc-via-cctp.md b/tutorials/by-product/wormhole-sdk/usdc-via-cctp.md index 3e5a8ed40..821c0fbcc 100644 --- a/tutorials/by-product/wormhole-sdk/usdc-via-cctp.md +++ b/tutorials/by-product/wormhole-sdk/usdc-via-cctp.md @@ -9,7 +9,7 @@ description: Learn how to perform USDC cross-chain transfers using Wormhole SDK ## Introduction -In this guide, we will show you how to bridge native USDC across different blockchain networks using [Circle's Cross-Chain Transfer Protocol](/learn/messaging/cctp/){target=\_blank} (CCTP) and [Wormhole’s TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main){target=\_blank}. +In this guide, we will show you how to bridge native USDC across different blockchain networks using [Circle's Cross-Chain Transfer Protocol](/learn/transfers/cctp/){target=\_blank} (CCTP) and [Wormhole’s TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main){target=\_blank}. Traditionally, cross-chain transfers using CCTP involve multiple manual steps, such as initiating the transfer on the source chain, relaying messages between chains, and covering gas fees on both the source and destination chains. Without the TypeScript SDK, developers must handle these operations independently, adding complexity and increasing the chance for errors, mainly when dealing with gas payments on the destination chain and native gas token management. From 1658d7374f86d8a86b691d4c3cef72a1bf7c3f79 Mon Sep 17 00:00:00 2001 From: Ilaria <43253244+ilariae@users.noreply.github.com> Date: Tue, 4 Mar 2025 11:28:28 +0100 Subject: [PATCH 02/40] Ilariae/settlement ia (#268) * add settlement to learn section * add settlement to buil section * fix links * liquidity layer code snippets * solver snippets * llms --------- Co-authored-by: Ilaria Enache --- .../settlement/placeFastMarketOrder.sol | 8 + .../transfers/settlement/placeMarketOrder.sol | 6 + .../transfers/settlement/solver-config.json | 77 +++ build/transfers/.pages | 1 + build/transfers/settlement/.pages | 5 + build/transfers/settlement/index.md | 30 + build/transfers/settlement/liquidity-layer.md | 94 +++ build/transfers/settlement/solver.md | 153 +++++ .../transfers/settlement/mayan-mctp.webp | Bin 0 -> 112234 bytes .../transfers/settlement/mayan-swift.webp | Bin 0 -> 111454 bytes .../settlement/settlement-overview.webp | Bin 0 -> 103666 bytes learn/transfers/.pages | 1 + learn/transfers/settlement/.pages | 5 + learn/transfers/settlement/architecture.md | 102 ++++ learn/transfers/settlement/index.md | 30 + learn/transfers/settlement/overview.md | 43 ++ llms.txt | 568 ++++++++++++++++++ 17 files changed, 1123 insertions(+) create mode 100644 .snippets/code/build/transfers/settlement/placeFastMarketOrder.sol create mode 100644 .snippets/code/build/transfers/settlement/placeMarketOrder.sol create mode 100644 .snippets/code/build/transfers/settlement/solver-config.json create mode 100644 build/transfers/settlement/.pages create mode 100644 build/transfers/settlement/index.md create mode 100644 build/transfers/settlement/liquidity-layer.md create mode 100644 build/transfers/settlement/solver.md create mode 100644 images/learn/transfers/settlement/mayan-mctp.webp create mode 100644 images/learn/transfers/settlement/mayan-swift.webp create mode 100644 images/learn/transfers/settlement/settlement-overview.webp create mode 100644 learn/transfers/settlement/.pages create mode 100644 learn/transfers/settlement/architecture.md create mode 100644 learn/transfers/settlement/index.md create mode 100644 learn/transfers/settlement/overview.md diff --git a/.snippets/code/build/transfers/settlement/placeFastMarketOrder.sol b/.snippets/code/build/transfers/settlement/placeFastMarketOrder.sol new file mode 100644 index 000000000..0b86a6a54 --- /dev/null +++ b/.snippets/code/build/transfers/settlement/placeFastMarketOrder.sol @@ -0,0 +1,8 @@ +function placeFastMarketOrder( + uint128 amountIn, + uint16 targetChain, + bytes32 redeemer, + bytes calldata redeemerMessage, + uint128 maxFee, + uint32 deadline +) external payable returns (uint64 sequence, uint64 fastSequence); \ No newline at end of file diff --git a/.snippets/code/build/transfers/settlement/placeMarketOrder.sol b/.snippets/code/build/transfers/settlement/placeMarketOrder.sol new file mode 100644 index 000000000..e7abb1214 --- /dev/null +++ b/.snippets/code/build/transfers/settlement/placeMarketOrder.sol @@ -0,0 +1,6 @@ +function placeMarketOrder( + uint128 amountIn, + uint16 targetChain, + bytes32 redeemer, + bytes calldata redeemerMessage, +) external payable returns (uint64 sequence, uint64 protocolSequence); \ No newline at end of file diff --git a/.snippets/code/build/transfers/settlement/solver-config.json b/.snippets/code/build/transfers/settlement/solver-config.json new file mode 100644 index 000000000..610fe2d30 --- /dev/null +++ b/.snippets/code/build/transfers/settlement/solver-config.json @@ -0,0 +1,77 @@ +{ + "environment": "Testnet", + "zmqChannels": { + "fastVaa": "tcp://localhost:6001", + "finalizedVaa": "tcp://localhost:6002" + }, + "publisher": { + "log": { + "level": "info" + }, + "vaaSpy": { + "host": "localhost:7073", + "enableObservationCleanup": true, + "observationSeenThresholdMs": 1500000, + "observationCleanupIntervalMs": 500, + "observationsToRemovePerInterval": 5, + "delayedThresholdMs": 60000 + } + }, + "solver": { + "log": { + "level": "info", + "filename": "logs/solver.log" + }, + "connection": { + "rpc": "", + "maxTransactionsPerSecond": 5, + "commitment": "processed", + "addressLookupTable": "YourAddressLookupTab1eHere11111111111111111", + "matchingEngine": "mPydpGUWxzERTNpyvTKdvS7v8kvw5sgwfiP8WQFrXVS", + "mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", + "knownAtaOwners": [ + "Payer11111111111111111111111111111111111111", + "Payer11111111111111111111111111111111111112", + "Payer11111111111111111111111111111111111113" + ] + } + }, + "routerEndpoints": [ + { + "chain": "Sepolia", + "endpoint": "0xE57D917bf955FedE2888AAbD056202a6497F1882", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "Avalanche", + "endpoint": "0x8Cd7D7C980cd72eBD16737dC3fa04469dcFcf07A", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "OptimismSepolia", + "endpoint": "0x6BAa7397c18abe6221b4f6C3Ac91C88a9faE00D8", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "ArbitrumSepolia", + "endpoint": "0xe0418C44F06B0b0D7D1706E01706316DBB0B210E", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "BaseSepolia", + "endpoint": "0x824Ea687CD1CC2f2446235D33Ae764CbCd08e18C", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "Polygon", + "endpoint": "0xa098368AaaDc0FdF3e309cda710D7A5f8BDEeCD9", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + } + ] +} \ No newline at end of file diff --git a/build/transfers/.pages b/build/transfers/.pages index 84979bde9..6800984b7 100644 --- a/build/transfers/.pages +++ b/build/transfers/.pages @@ -3,5 +3,6 @@ nav: - index.md - connect - native-token-transfers + - settlement # TODO: Token Bridge - 'CCTP Bridge': 'cctp.md' diff --git a/build/transfers/settlement/.pages b/build/transfers/settlement/.pages new file mode 100644 index 000000000..0f4313897 --- /dev/null +++ b/build/transfers/settlement/.pages @@ -0,0 +1,5 @@ +title: Wormhole Settlement +nav: + - index.md + - 'Build on the Wormhole Liquidity Layer': 'liquidity-layer.md' + - 'Run a Wormhole Settlement Solver': 'solver.md' diff --git a/build/transfers/settlement/index.md b/build/transfers/settlement/index.md new file mode 100644 index 000000000..cd2a6d3c7 --- /dev/null +++ b/build/transfers/settlement/index.md @@ -0,0 +1,30 @@ +--- +title: Wormhole Settlement +description: Start building with Wormhole Settlement; integrate with the Liquidity Layer and set up Solvers to enable seamless cross-chain asset transfers. +--- + +# Wormhole Settlement + +## Get Started + +This section provides resources to build with Wormhole Settlement, including integrating the Liquidity Layer into your application and running a Solver for efficient cross-chain asset transfers. + +
+ +- :octicons-code-16:{ .lg .middle } **Build on the Liquidity Layer** + + --- + + Integrate seamlessly with Wormhole's Liquidity Layer, learn key EVM contract functions for fast and secure cross-chain transfers. + + [:custom-arrow: Build on the Liquidity layer](/docs/build/transfers/settlement/liquidity-layer/) + +- :octicons-code-16:{ .lg .middle } **Run a Settlement Solver** + + --- + + Set up, configure, and run a Wormhole Settlement Solver on Solana's Matching Engine to fulfill cross-chain transfers efficiently and securely. + + [:custom-arrow: Run a Solver](/docs/build/transfers/settlement/solver/) + +
\ No newline at end of file diff --git a/build/transfers/settlement/liquidity-layer.md b/build/transfers/settlement/liquidity-layer.md new file mode 100644 index 000000000..4c06d0b46 --- /dev/null +++ b/build/transfers/settlement/liquidity-layer.md @@ -0,0 +1,94 @@ +--- +title: Wormhole Settlement Liquidity Layer +description: Learn how to build on the Wormhole Liquidity Layer, the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems. +--- + +# Build on the Wormhole Liquidity Layer + +## Introduction + +The Wormhole Liquidity Layer is the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems. It allows these protocols to bundle call data containing arbitrary actions that can be executed atomically alongside each transfer. This feature enables developers to create fully chain-abstracted user experiences, including constructing natively cross-chain decentralized exchanges (DEXs), borrow-lend protocols, payment protocols, and other applications atop this layer. The following section describes the key smart contract components for teams seeking to build atop Wormhole Settlement. + +## EVM Functions + +The EVM Token Router is a simple interface against which to integrate. For an integrator, the contracts have two main entry points: `placeMarketOrder` and `placeFastMarketOrder`. + +### Fast Market Order + +The `placeFastMarketOrder` function allows the caller to elect for a _faster-than-finality_ transfer of USDC (with an arbitrary message payload) to the destination chain by setting the `maxFee` and `deadline` parameters. Using this interface does not guarantee that the caller's transfer will be delivered faster than finality; however, any willing market participants can compete for the specified `maxFee` by participating in an auction on the Solana `MatchingEngine` + +```solidity title="`placeFastMarketOrder` Interface" +--8<-- 'code/build/transfers/settlement/placeFastMarketOrder.sol' +``` + +??? interface "Parameters `placeFastMarketOrder()`" + + `amountIn` ++"uint128"++ + + The amount to transfer. + + --- + + `targetChain` ++"uint16"++ + + Target chain ID. + + --- + + `redeemer` ++"bytes32"++ + + Redeemer contract address. + + --- + + `redeemerMessage` ++"bytes"++ + + An arbitrary payload for the redeemer. + + --- + + `maxFee` ++"uint128"++ + + The maximum fee the user wants to pay to execute a fast transfer. + + --- + + `deadline` ++"uint32"++ + + The deadline for the fast transfer auction to start. Note: This timestamp should be for the `MatchingEngine` chain (such as Solana) to avoid any clock drift issues between different blockchains. Integrators can set this value to `0` if they don't want to use a deadline. + +The `placeFastMarketOrder` function returns a sequence number for the Wormhole Fill message. This function requires the caller to provide a `msg.value` equal to the amount returned by the `messageFee()` function on the `IWormhole.sol` interface. + +### Market Order + +The `placeMarketOrder` function is a _wait-for-full-finality_ USDC transfer with an arbitrary message payload. The Swap Layer, built on top of the Wormhole Settlement, uses this function if the auction on the matching engine for `placeFastMarketOrder` doesn't start within a specific deadline. + +```solidity title="`placeMarketOrder` Interface" +--8<-- 'code/build/transfers/settlement/placeMarketOrder.sol' +``` + +??? interface "Parameters `placeMarketOrder()`" + + `amountIn` ++"uint128"++ + + The amount to transfer. + + --- + + `targetChain` ++"uint16"++ + + Target chain ID. + + --- + + `redeemer` ++"bytes32"++ + + Redeemer contract address. + + --- + + `redeemerMessage` ++"bytes"++ + + An arbitrary payload for the redeemer. + +The `placeMarketOrder` function returns a sequence number for the Wormhole Fill message. This function requires the caller to provide a `msg.value` equal to the amount returned by the `messageFee()` function on the `IWormhole.sol` interface. diff --git a/build/transfers/settlement/solver.md b/build/transfers/settlement/solver.md new file mode 100644 index 000000000..060c2a015 --- /dev/null +++ b/build/transfers/settlement/solver.md @@ -0,0 +1,153 @@ +--- +title: Wormhole Settlement Solver +description: Set up, configure, and run a Wormhole Settlement Solver on Solana's Matching Engine to fulfill cross-chain transfers efficiently and securely. +--- + +# Run a Wormhole Settlement Solver + +## Introduction + +This page provides instructions on how to set up, configure, and run a Solver for Wormhole Settlement using the [example solver](https://github.com/wormholelabs-xyz/example-liquidity-layer/tree/update-solver-example/solver){target=\_blank}. + +A Solver is an off-chain agent responsible for: + +- Listening to cross-chain transfer requests sent over Wormhole +- Bidding in auctions (on Solana) to fulfill each request +- Facilitating the actual cross-chain transfer by locking/burning assets on Solana and minting/unlocking them on the destination chain +- Rebalancing once the origin chain transaction finalizes and is redeemed back on Solana + +For information on how the protocol functions and its core features, please visit the [Wormhole Settlement](/docs/learn/transfers/settlement/overview/){target=\_blank} page. + +## Background + +The Solana Matching Engine's permissionless English auction is a central component of Wormhole Settlement protocol architecture. The Matching Engine contract allows any third-party solver to interact with the matching engine to place bids or improve existing ones. The contract includes four key instructions: + +1. `initialize_auction` - creates a new auction account on-chain and sets basic parameters like the auction's token mint, the amount required, and the bidding period details +2. `bid` - allows a solver to place or update a bid on the active auction +3. `finalize_auction` - following the conclusion of the auction, this instruction completes the fast transfer by sending funds to the recipient on the target chain. This instruction may call the Circle CCTP contract or release an NTT contract in the future, depending on the shuttle asset in question. Failure to execute this message within a predefined grace period may result in a penalty for the winning bidder. +4. `cancel_auction` - cancels an open auction when the auction is no longer valid or was created by mistake. The program returns all locked funds to their respective owners + +These instructions work together to carry out the auction as follows: + +- The solver transfers the bid amount to the program escrow account, which ensures they have liquidity +- With each successful call of `bid`, the program updates the auction to the new highest bidder, and the prior bid is atomically sent back to the originating solver +- The originating solver can repurpose the returned funds and use them to improve their bid +- Following the auction, the winning solver has to call an instruction on the matching engine to execute the intent + +When placing a bid, whether initial or improved, the solver must deposit the required funds plus a security deposit into the matching engine contract. In this permissionless auction, the requirement of this principal amount plus the security deposit ensures a solver's credible commitment to fulfill the transfer. Malicious actors could place hollow bids without this safeguard, undermining the auction's credibility and hindering true price discovery. + +If the winning solver fails to call the `finalize_auction` instruction, other competing solvers may permissionlessly 'slash' the solver by executing the instruction on their behalf and collecting a portion of the original security deposit as a reward. The remaining portion is routed to the user as compensation for the unanticipated delay. This mechanism properly incentivizes timely execution through solver redundancy and competition. + +## Testnet Example Solver + +You can clone the Wormhole [`example-liquidity-layer`](https://github.com/wormholelabs-xyz/example-liquidity-layer){target=\_blank} repository to use the included [`solver`](https://github.com/wormholelabs-xyz/example-liquidity-layer/tree/main/solver){target=\_blank} directory as an example solver to fulfill fast orders by interacting with the Matching Engine on Solana. + +!!!warning + This example is not optimized for performance, has only been tested on Solana devnet, and is not intended for production use. Any assumptions made in this example may not translate to mainnet. + +### Prerequisites + +In order to build and install dependencies locally in this repo, you will need: + +- node v20.18.1 +- npmv - get started by installing `nvm` using this [installation guide](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating){target=\_blank} + +Navigate into the `solver` directory, then run the command below to set up your environment and install the node dependencies and Matching Engine package: + +```sh +make dependencies +``` + +### Set up Config + +The following is an example of a `config.json` file for Solana devnet. The keys here are required for both the publisher and example solver processes. + +```json title="config.json" +--8<-- 'code/build/transfers/settlement/solver-config.json' +``` + +The rollback risks and offer edges configured in the sample config are arbitrary placeholders. You should use historical data and your risk tolerance, to determine appropriate values for your project. + +### Listen to Activity + +The example solver listens to attested Wormhole messages (VAAs) published on the Wormhole Guardian gossip network. To listen to this gossip network and run the VAA publisher, run the command below. Docker compose is used to listen to the Pyth Beacon and start the [`publishActivity`](https://github.com/wormholelabs-xyz/example-liquidity-layer/blob/update-solver-example/solver/app/publishActivity.ts){target=\_blank} process. + +```sh +NETWORK=testnet CONFIG=path/to/config.json make run-publisher +``` + +You should see output resembling: + +
+ Start logging with info level. + 2025-01-21 16:38:28.145 [publisher] info: Environment: Testnet + 2025-01-21 16:38:36.631 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33635, vaaTime=1737499116 + 2025-01-21 16:38:51.044 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33637, vaaTime=1737499130 + 2025-01-21 16:40:24.890 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33639, vaaTime=1737499224 +
+ +To set up the Pyth Beacon (which is run using make `run-publisher`), you may need to increase the UDP buffer size for the OS: + +=== "Linux" + + ```sh + sudo sysctl -w net.core.rmem_max=2097152 + sudo sysctl -w net.core.rmem_default=2097152 + ``` + +=== "MacOS" + + ```sh + sudo sysctl -w net.inet.udp.recvspace=2097152 + ``` + +### Running the Example Solver + +Using the same config for your publisher, run the example solver with the command below. + +```sh +CONFIG=path/to/config.json make run-solver +``` + +It is recommended you write log output to a file so errors can be tracked. The example config above specifies an example log filename. + +This process reads the following environment variables: + +```sh +SOLANA_PRIVATE_KEY_1= +SOLANA_PRIVATE_KEY_2= +SOLANA_PRIVATE_KEY_3= +SOLANA_PRIVATE_KEY_4= +SOLANA_PRIVATE_KEY_5= +``` + +At least one of these environment variables must be defined as a keypair encoded in base64 format. These payers must have SOL to send transactions on Solana devnet. If they need funds, they can request them from the [Solana devnet faucet](https://faucet.solana.com/){target=\_blank}. + +The example solver assumes that these payers own USDC Associated Token Accounts(ATAs), which will be used to fulfill fast transfers. These ATAs must be funded with Solana Devnet USDC. If your ATAs need funds, request some at the [Circle testnet faucet](https://faucet.circle.com/){target=\_blank}. + +Wallets and their corresponding ATA will be disabled if there are insufficient funds to pay for transactions or fulfill fast transfers. These constraints can be modified using the `updatePayerMinimumLamports` and `updateTokenMinimumBalance` methods. + +An address lookup table is required to execute some transactions. Use the command below to create one. + +```sh +CONFIG=path/to/config.json make create-lut +``` + +`SOLANA_PRIVATE_KEY_1` must be defined for this script to work. + +The example solver has the following toggles depending on which orders you want to fulfill: + +- `enableCctpOrderPipeline()` +- `enableLocalOrderPipeline()` +- `enablePlaceInitialOffer()` +- `enableImproveOffer()` + +See the comments in [runExampleSolver](https://github.com/wormholelabs-xyz/example-liquidity-layer/blob/update-solver-example/solver/app/runExampleSolver.ts){target=\_blank} for more information. + +This example solver does NOT do the following: + +- Discriminate between the CCTP source networks. You must add logic to determine whether you want to constrain fulfilling orders from specific networks. This solver will try to fulfill all orders as long as `enableCctpOrderPipeline()` is called +- Discriminate among fulfillment sizes. No logic determines how small or large fast order transfer sizes should be. This solver will try to fulfill anything as long as your balance can handle it +- Add auctions to auction history. We recommend that after settling a complete auction (one that you have won), you write the auction pubkey to a database and have a separate process to add auction history entries to reclaim rent from these auction accounts. The auction history time delay is two hours after the VAA timestamp. This example does not prescribe any specific database, so add whichever you want + + diff --git a/images/learn/transfers/settlement/mayan-mctp.webp b/images/learn/transfers/settlement/mayan-mctp.webp new file mode 100644 index 0000000000000000000000000000000000000000..75c817a863021205441673bb6177fa3d3705a4c0 GIT binary patch literal 112234 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 z⪰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�D*lR9fUk z!rn6V#*FDE?m=D7d;}vVz7fwV#_x%=EOoKQ_{KcL=f(ZTmB`%c zKE=k{oE{LGewJ>V-|5yiY%xroLJo!rR}#psscN2p4$jfs4hME`r^>oe|aK#Hr24MRYooQ@wpc53m{x_Ll%vjw6c_Kk*37j{xSV(@&|WDbNf@ z=uaviEbO3KAA5Lk3SX!+=vT;z-O z6Es64>7)txo29@BL3vt7+f&V2m>mZGJ)QWr&M;7-%?)CzuZEHNkj7q(z-go@6@E$v zBil$gjZy1!L+Httj**U1&_w|I7ue)_-AjUHNY?5V$iua4h7(~*C$JX2&Jqc zuG)qT8|7clMnFHL)PvZRL2B}qq>>B70~Qn@Q{L7ol3_Bw3|a5#Xra*SGN0)#T}Jq= zX(KYeq&}KCCt%R2&g7Qn7or>I@;Yi8531H92D)5T!%DZLP&W*H2?JDCj{%XlAdXN+ z8-XLY1ygVbX4m<8{8am?p~RHwWcW&4jP}F**19l|H?LM4f-&{CFFX zc0KMg>o?+m>5cy;6uL%0o{vBSSUDNqij`1WbfoQZt?lbra0e&$Lff%4{((L)*8a|+ zJofrvJfErCLOgc9jvi3G^P|SL7yh?n_LfYhh!m`5W0@%vWce#2_4ix1a3GBg)^iA- z{|#Vq!tzq62dP~OEdUnFR#_lzS)B{^_rIwzK%ZjEur$8<_M8H85EG-si5tj+u0G3g z_$t<`7Z#cT+KmtmX~s?KBEx#gSrnG;`8pAf8E1CXFPzmfJ@T8I4@N=^cF6mnR|Uxq z#^s7F5)g&B7v}i-fY$bkP@V13FyH81;jmv;*N;MT|qvqi|J-x2xuq~ z9nEEBuNejfEeu0UBE{S_G=7gClY#suks(p51F5Yqw;aH=75fWCe<{Nwv$4@Y zdb(Jb20PJyADfyhipP=TqEGB~KhI4Yf;^Ozo;brM+uyY7Rz~jsTcnyPWr*1FvzLzV zXGd$F(>Y}Aq)hsRyau#1q_->n6?HFn)2|Q$(pd^{8H*~AXwepwn7sHQ=8V@kj26xE z^`_bfBFt-34=KQxPx(T2!R>kdVEG6pNh3vcZf z_=Lsq0F}u1o^I{I@t@K+AUuB5VL&wr_wndqLNVm=8VwD09z6Ee>C%}i{KJSdt0%< z$FTX<^FxZ$yM84e<=eqy{$U34?!^Ys-iZ2*J{m>1p%6U&%Q+@@O((Qh64~AtBE{yT z_TPN}zulO)@c-ZYC(_zFeJ@Kz)wF-8%eb-(TVT71tJf3J4wre^vAkT*6NP4Osgi{b z$u_P2=ZOy2SrG|9pGei(Uy81FD0T1V8Asih8v*g~$bIA(wG&~-x z98fYU`%_0Svp=o@0b4jzR3>AC^pTwBEAG zyvdNb*|(GCt2u^tTO{kgXS!?mA-q>rp81HN9tQ*H^EObI{MnQyMam!2$u}mO_8$#& zJj*l$mfg@4)YW><>^%=f#|`J7@c@Mw9QN)0>Cr+K&!kMU`piMyolYw}y$}Bcm)EXp zWM|GrBeuJ6-=G)jYkg#Alkj=Uei9^cFJI8DdWf_Dq6-Qp-!>rU%L1YJHh=FI_?Nrq z=wqarJ6`~;vn)dUSMKvH?C8Sg5eNK@LipKg<$0bT9O8nj4KSW zeKgthGhXG?i&n-H%#NRtbfnG0D0tpI`i!&|yg*glJe6A-~?@I=)%g8?87(+gV-BES)8Y^#Y7QX{8k^e)y#GLy-NTyG@@a zs@FB!ZKCfDJS)FKiszCQqI{X60@(vHXYrnE_~P&n?3cDPNla*YT{D}4H_f#k{Zn&m z_eZ%}LbSrjHG@(@YUa{+*%pGE9uo(q?-51=F$-2nkBH3PH1XN?xnHNU{(@VHIeJNK zX#Wk-u;JBlw!5DcG(t%!@_dEf=$<-K8$}Nog9L)Qlui5OsBn-_Gu~d~db-JGjh#$% zA>KlBPCxTn8_x43u7qBF3e4oo7a=DG*M$-alSe}7veOVS@1_TldNhJtd42zqeEK{9 zeGJBiAX5RZ{{Kozr9iovkXK2thk=3F$G!C}O5D##@w zEJ_v@Fl^`?gt#ALL z?|sP(OeG-Om4T@S;%%gQ1b6FBdzt&L0u_DSsPFpqnUJHPZ8e4!KZm~eDw5GR9_)1Q zN`K|TcKD+H)$jMlY0}42y&?wQE9;QI#e%1Rn=TV2)BX%m3vWoL8!8eQuN8kB*!8hj z8&zyguFOyFaR2_;B!i{RrLbB%+#pz#m?sOp(C7!kRQcH7*P)mG!k>h$*8LNrz-VT@ z&=D)@1+`gY8Qo!+eApPDX3J^|PoPTxt&r$ei-gpo;=w-5@Ld*>7BuQy=$UIcZ8yxB z4)z#&`!E=;8NHb>xTPMXrCcYCHMd3%=uO5Qdve((KeThvlG*V(4ZrCL{g;N;&;Dxk zA}eKa!s2EM1q^G)P?{@a$%+@KPHZK!Zl3!6ww7m(E>;aE54plqUaXO^sLv#7PoHu>orr(dD8zQEZ zR>=7rM=u@B$L>_Db)qD}XS83wlBECJl?`Jv`aG3B?ifu@@Y6ZjD_fEv2ICL6Dv(i_ z$l$wA0$apTo4YCik02GnLmqDj$2S%6W8`}6>qyTWfA($syAO=74(!IQX3wKyibk_A z*0k7@9NQPi!e<87H~$_@GINz1UEmUM0rot~25*7-FuLQNF66bB@L!p^AtDjKS*X)T zbn>zE7G=LFh*`&JYrqit+%^i9B-xJ&Tv-}KR8ba5(}q4>$mLN9hq(6{B2Hf8^=Z%T zCZWHjk$u}155Z%e5%T-M&7_HWB7JOF2&iF!J&J;KCl0VTVqnnYuunx8f`J$YF*XW&RDfn#DIpDsuphN+oh}eL7QH>9s5eejccX&zbN`lM+k3txzJo zE_)MAk3ozg?_QaRKfMdf$kjIs!d?avwUA$sP=+yv^oMtEc1)OF#DNkrMo?PLjq}JZ zn3z_`x2?L*)+2|oie*9w|E;c`4rF;TdrzWM7G_94I#s(>n3<_SCeq(fvr=KF$Ve`8 z-#7H4L^{q_U#5t#Rg~+1b3s%u=bZdqqeQGGR#}O7M?Ks64NcPhA$Kx*x(eYIgVM3Q zYO!uUDOM9SO`r@ylXxm9J2QA{lWm-?icMv}q=e7zUVAChps%^iCvsU5|JeZ$pIX*T z(_Bw0^l9nexiO=m)7%(S_uM4}LbQcStLoj2*D4Ysv-X!m{?XpGA8!e7zkql3cK0Gjm@59k$>BQ8Qc%b0bJZ9Mj-bn6!r1)Xehmw z54l=(eZ;XA z!GICz2V8W`IUax0z(tX^idAw7VLJG=i)#p%E(Ar}XEUjua$)g%4d&CR0C}2ctTsuJ zbZEc1XC`(x{O{s&1=D%KsN2qq5vLVz=-qeVg~EMCv1V*clB*ZH7{u0$pm6@*SIGb6 zsz;f1Xh!4{=zLkQ6)y`LRnjhpWrxb!ssn~ncsD{?7L)c^L&yq6bcC(Ts_aF`pmXY? z2Oe0KXmC%IV;XZ8uq#1LG5RRTYW8^~snkANS8WB)qD4u_#Y!k@n&*g0ZY^tc!plV# zP7Y9lTEae%o2`C4g~Qo4&d$M7fBJq1rdvdH^y3G``$o=~Vh?he$Hxo+mElDOM%0uT z-6vI(w@WJ+q9WlSO}h<_M*5$mCr9>`-DGPXARc}oTKI<_(pmzlN~+D+rugb1Pky~! zN`yf!HGeqzeEMkmeZ76LVC6cyLE%fMiQ=+>J6L_z1H;}`!=|~GD*D1hhsW6|2ts(q z8X5=mY&9UTV-?HRu~($Ds7p|0$nOGgEF%T5-echbG!oVBz?QnF7;wYz^FoaoPE6hl z3?^vFXm^78LONUHOOG;F3A%hmawq@o$ZW71b#Ml^OpMA0OA(1ggXqUrMaKkPGWMjC zb=#4BFX9_i@Z(moH>*91k?4L1E%rz)qB0_1ko7n{0^N?H7d7s}<7noQWzXR*}T}F#uVQvm}m3pH2 z_3?B2L5=ue&+aWVMT=qIYE0jLt4n-%T6lss;>+54Ql}&dH*frR*o<)PH+AdtZGH~70kvz~j7vE@q zF`(;a0{y7k24%|73NhAyO*ifa>YBODw>CF5-)D|EeLu9GQLgi-y%KvsDKs+`lMD)S z0!_Bi5o|Q?F?&e^C-Y07nAwHDTxg%DS}|!u=%v+MxhLd9;KLCnC16E4L%e$Y`SwXK z>vR-lW}=B#++3PkrA&Ylz_o3bm;TenkXj*zQZ&DIkRh{%wKBl_N6BSGI&(- zfe`{~rJE6%kQ87-!PEv5MmcUg(81iuf~<~lm~j#JP2_^~{>PI0YwZnurpPHcrbNv? zQ`Z6hd=i%aSTjiDcR~tdd5Mqty2A?y`%?a2t~y;h%zSUF4$xv5gVlau!F}jGK=Vm# zTI!0s4Qo>cRA!O4vaKXbqBGK`looQ!!5=cv0Zl+zP;76mgC2$keGiKMy~NDesr;l; z)X6(-m+WU~_zrzC3aC$nnt;Ig{@xobqZfk~dMEe4)|i4e?jS@DChtr&!YJibo4bNW z(;`&G%Kt=d5Qup|_@dsVytm?-DGkXEO1-EixV2S_>pHHHbTw1zUb{3wFYb*N?%(X7 z%vLWcM%XM{PRiT(@KMjm7W!YvhLK=b6rZ$l8*8LR4$FJ7&f)}$AOHcJGs0J{vS6GV zWHwb4B-4`Y)Q4VVbiNgmEWn(%f`0X{oX?@V+)=FpXDRu86WM1PQ;V@(dGNstR*tkS zF3KQcP|)R+qUZirmnGzaQhv5w|2?;WZnBsQL>z87P|5F1gbR(QNHWl_x*jj@vC+eP zQ%mN;XUg5G@9jz6PC`H*Wa5wRL1YsA8Ex*bvh7L#DEN?pie6RgMjMBgR!!4Z!5Xn66AqNfydu zRfmgOL>o6c(81^p!h50jajR~HsW@XLXjG6&!PCiK=0=geqhNRN)c&GM%i^3mylKv$ zpCiR@=TeZ5Wl@y#>JY2z<}om=pm>S+T-JDuyAlraP$?i-iAH7c{L{{IPBj{(ad3)=pnOnV|DBWWgyzicl63NE)2USf`A*ga>C_+@2VK4aX^7nDe?P>C1y}K} z-4AMLkB7@RIb5`O`8IssGUmlX6n_zSKPutVk)}0ZOZgC>vZUECO4sSpc$~gL$7Vr1 z3usbz97~bY!2#n@mi<_SBBK8uy^#N78f0423Dj-si^IZqdaS(Sm0ktVt{EFx3K}AyRlZa!3Kq=<(KuZ9I!~~_jH7BjBtBD9Xv)i!C ztsm7%3OalbF|mH54704VUx5=VQt(@9ZXZ^olT|UffiOs95xBU8(g*0Ylo;bbd9vOM z*udKxA;^ytPJB!GHid9=awip*gb-p}dO?z{3p)*YuFv;r$a@gDJ4%h}(bE8ITP zF6`$?;!dVF7l)SiF^lCt3nY?U?KB$;?rEt4P|v9^ovuVpg-;L|{h%%-hM16Kk;A#?I?=7P1eAK?PSa zeUN787^@z%Z61|V+J3HqcmH~28I>iyqRaQ<3AG-5I|B0RW^ zMFXY=?Bl4FX*?CPj?5fqUvUTVts|9$l`Trg5y=~nIx7H&nPLR3EsFAO;W&6=?@2Jp z+yKIjJbCbCbraXyhU8*6i^_Oh!!(ClzKCkZ4uOC=d9YZ%^6vPjV^Tsti&hLH&3WBE zQIu7PWx;!hnv>e@jl(;tGE?z)rRAs!NA2(_ z4E7{NQP|kqDLoqa9!;*XkBj6A_Jc>W_{-)gx!fN*jRp$)g`u*IoGTR()Z&HZ9p)jX zAaOxWNOb23NNwL$8m#TORgS-a-Noc!?BSOVf_p~wfMf>I4Wbr&ufu^Y)=WfbN%@(V z*b$B)AkB%Xn8FqI`C9%fHb6dnYWw9hT_So*Skyl?w@Vff4tYjxS_5jwz=C%ixCq}t z-V5P}+0sc8FNrpyZ<{@g`E=xr zc%da5>g9E46_?7big*)$R$uYySILJ0L*-x8`2^#)wEn=JnFSu%UhgH;Fpf>cI9uS6 zSnewE4Zz0BPEjp?cQ@5rc}b9{k2y5nnmM!-MzlZ1<@T0;0`}pBBBLSP1Q^FIpyjze zRWaw>e&Dkn*tE9QZP62}3j^1oBCt}BOCX^2oWRx7*{B zW+V(~>a9uBadZY_=q&YLVV}!mZ04`7d5nVd(0WLWG{QC!n*f0&W9%WRGc}KJIQ40) zb%fhs_r~SDjL0N|I50-YLFj!Y9MLo;{@7IgIMHA*?}&sc@moDTwrJ;W9`8OYBwr!uLd$g9KjoMYnqzjf2BdoJ$3l6rxw>w6;Pvfj<~SJ0 zV(MI;9WIC66Ey!Nxgct=8CgZiG0?>e)cndnM0 z19;Xp^J23*z<9))@%{%zw_?mR?ATLf>LzkzfTV8ES1?Y20?v5IO(q zvDT6YQ+pl42wM%5P!~4x~DSuC$7# zHF)^2v;h#JXscpi3Xx=5uSrfxP#1YV9||E;PK~Vp&lue(rzmD5R;b3h10O~^h0M-X zh^9BoWjwumW||<$06q^>StZqaVBRmFOX+ez`$4XR#h z{_!@3x^{t|Z~P5b`|aSt;XR1hzqjgb0hpv5uM1aOxPz{Bfc2s&z~btI07XmpM~ygm@> zN85Z>hp*%?BU20Dz`1|`D|iX!Lup=*HQ%Pw91_==jHgEi_OHw>~;lN3h@Yc*X+x!n!?@* zvmL+9oRUwQ-=-v!MDo3nNM`hk$lU5rZCWmHmKVQQ2lUKSRu-2AGA4R59G ze6>Caz}F{O_JW#V^s$($su-}IT(g@bR7l8L#%rb!*CcF2Qq?6*)rhPb46rEm6`Tj1 zZUpZjkXBO*kuByp5CnHcmb(AJjpEnu#+7WtIQML2;j~4%$p+Ci4$4N z@PrrQr&Y$d&GrLJ7VlCWUqPcBYkdBPA3Wxh;GsGVHHlE@?d5YikvKr3D%ne4JEo30 zZu1TBe8I~WWNc_5%D!6k0)-%RYypYa{dhh1)t>W=Zthd)32`WO;c=S!m^AjeG^?hFoE9pZkz-vv)yglRvv|*^W9dORw;{((ziu)z^>LL1 zT1NMxLCwEB`jJ{@9b8_+Y+}H=7>d1X13<@i1PApUa|&Ru=*$dIsOZGxuZ~GBR<|kwO9?GH><>IQCYj-CX%bkSklH>(Jja)3XL-QxZ8zs=h zqaHXGls)J&{mwfNWRoApMj$v!;@WQ|VXvtvOEL?*Z3xKu@Ic6c?tED|eMijG)y6PZ zRoJ^K3qzk*LA$JV?49Be-ytuK%HU}70 zQ06#!OGdyCvT7p}((!~kzJZ%Jnq!e%ukL{&*4D{Ov|W1Q7qhRct8jO=7;k#$(gm#b zoVSjL?aMB0X!<=^{uVzAmPjkdk+pVLRZd2fLlXPcaSd#O=K zP>;*3j2#LO+b1SjpuC%SemK^rbb5-E;i$p1{FFT)&}<2})*uLS|p){f`6YRv!X6}NnKkedma%xK&B(e=|LEiK)Vq=+hsr9a4-(+T%IjAi zgD7_M?oDAOsnJKNVH6h#>E0?2sQ|r+zXM5>Z-P;Ceu?2KFJ`MESIr+)R zmQid(U_v-;a!>+4Zf9p+QWUp}YXr*JGT}6kjA$>^tC|+R5&S(l?&Qt)Izx^l#uQcM z)Sjg4-CITK>cJkRy9zkw0QE0f?b2YwHSB@F^@M^8zcPI}yhA44uE=ffKd_n;KzgX> zM(9(bhg%(9+nmW_?#EPHa2Fxr)ADX=Ple1${@ zoglmaMK0^0PL%38$IRm{iQ!lJ6D&K>V}|sW7%s{A#?AWJQ>cVyvwwj0;%;>S4z2Uo zOy(+b2uBTE@`F8m0Wb5NVP#eHPxGt}t}aCP>t&r+^t4wIS57BL*bFgo>CWz`WAYpy zrxO5gI~Kc+V}x?xfLBqK7D#PJ#ir&}$z|~i$Ce@rAn{lp*cEOxTr2J-ZTE@S0_1Z9 z^Zu@Uv*9{oT^qjj{SQ!vW>{-VLG*cKf+cE7=J9U9F_Oo2(L)&&uu;(M=uVS?EM42# z{&cBhP^@uO!RQrN(LR+7sKFSLtaI9%*Dh1`51o_mC93zKb~h_BGO{M$v+BKh$*!+l zE>K)2Gxunp_Tx1HNxyAwgG#dbb4MaPdAI-H?X2V2j{4WWWa0T_VMjh-Ua00^@Y}7K zVW5^_?2U+eGN~v!t8TJbzjJ{q0+rdxE7#e2SWvIT@Q4Wm@BTI)RH>I3DI=A`I4^kuQK}r8r_$2R zQ|;C>sy^$gk=QYJ;&YSvw(eOZyemS#M`aI*dPZi<#Eb=MrAbU%(76F%wF2)Mv5J80 zy1&Y14EVcC)`Lt-;ua~lDtl&{KgN!UTvso&TnkY+CF|<@0IcksbSTgVV$q#Paz;7mkl0TlC!A;gA=%XF= zNbTIj?&YkDY?wQ*YP1v3*)?tf5!t$*pmr~A$XF3m_tH$}H9&C8>PPoh=37*pP_#0e zVw%!+5Yn7nXz129hDqs^`uNVei8U>NBcJW_5&Og$$=re@6O4X*ZS%ZFHNU8Y z)v(pM@~!q9i^sJ3&%M`5mfZ^%1&7p=fq7z$sBXgJh9k7XaPifEr-rWKjhoSwJqJev zS5uNe_t|}!kST10VNzWqT_{@xG~6ukK=h%yrV{v+-8cu}+JNa^9*O{zP&zN%o?szt zVzkXfEvnrltXkA~>#^?%Wy6Wr`k=4JJSUbf@9a{kJY>LHa!-ytQtMdlXT(7EDo#LU-pIMKIise+b=mU-5eYly&wLay-QjAI$R1imjXY&jF! z&3kfQO99uT!kuX$w{Px#zn1gK%VeizMl)FQ^`F*othEHu^!52|S5WTd$NE1e5(^%ofAwdvVOCPcC{Bx83r$YSZ9lkWhWp zF)=aX;oPv8WTNBs&h~#(3#BuZQ3;n}0>s!ZJ3C`Krc|ijAi~YFfi&dGLlQjxqdDDkBJ%QoXy0~yVO4U+LJN5?5BVu zbn!D9)CJzSCk-Qs!uRb4)G1014j*0G2@p@3b4eJA^LLtd1zPTl5_D~;`RDPpUv}x# zWGVoUbLjF|1X*rSD$qkjJsW^6u~)ka+y6TeKRW{u3k-kb(Vkt`+R_$HoDt=!tw3{p zDZ4oG%_KX;ZiCFrUw;(!dH z-*YK&_V+KSqr}UeCU~10A@9C(@+-oc%Dj-5^PJNBxz_d+me^)CMb%>U5o1o&S`Myb zP+q4_T{`|N?IpCAE?CqbjUX>VH>7HfgG8;`<-|xLXlE6Vh?1?q_sUmgtQj@CIfex& zM7=H#RJdEQ5Y_JFb~~P*4 zGeBB>;{n>=lWmUz`3HHtu=i>HmhAy$6S>Y4LVQRa4rr*`!$RR@Z^)-bYdWYlnvqr! zoq|k!T?aohkiTHv(B9*5Z;t_^J+G@%=ZS>_Pd+3LRXkodel~Ro>H2rbi+!(RaIC? z@&b{&!Qnm;Q5rt;Y1}^BHB5Kfh_s`zwTA#Atg{$U?q1I3l)C<%etb7aQh&J6WS8$R zi*I`vSjx0T#X6FU*_KjP5|PLfrCxxO=ga{El8hM({e!CJJXgvk?3gy-tx?pK{x@NJ zFcmc3t1%=!VipsNLK4M8)+6vSOQnGibDNCHk0Im&8@~sC_HT#0{Y66kwU=zo-*7TV z+iz;rDO%w*6=qO?@~i?mou&H28(_)mu$e+p+By>ikn-esBUj?2wOBD01|?-8$4AVK zrjUb0hz|;z!=P1wZERc1{3nh0ru~eU;pny8fA>jSSr5Zqacp_G*T2oZRi3MqS#uQ> zGx+m}|8;qpOH1Y11VlcK=}iYe&c=mpQ|sw|eaQK#h<5D?@tuxTY`x(LS3_KPn~fq= z4(V3D@jDAeKddR}bL0M1|4wRZ^SQVZ#&u!u@~23In2WJYX{&E@zjSk}V#I4h!5cRI znH?1>e~?8a>sie+go^2FLo@8-2uu$N1&{7g;pZ=fh}&(ai)O2wUO-^Q-!hvcB_(La zP;x+aBJ##^@d>&hC59F@8+}v38=mIYskrjKHCB%_lyjX1GjOf5zF8AC+Aco1hvmkH zJapAc>#zH&q9c2mmzA@qzX&E6^}Tqz?2{sNg;U+d3BHxkN#De08f0EBHY?yAarV{d z(V{j8i>M70)mOQ8wCkO2x2gR44DxW$v^J_L}e{G%h|uhlGRFP=8%573w`x zPPhF$kwV!qlej9Wlu`VRE9gz?>fObQI^FL68j+_p4bv2P)Hjz$bV4?_0H)?w5zCJ7 zA0`#z+i3y!vpzp>c=5!cBiv1{GUKaNFJXi<`)gN;ovn`^{)OnGro{WbWhWMouTBFo z%=Bgt9fp8@-kz?3S->j2q*r>&oD9b9oTTtKAOW={T^;`zlX#uCbW05_ZYMj!3eI)$ z6da){v@^tQg_?;8G7l0Ypca0!_|rbac%FIaFCZf}NO{=*-_2BiX|WL@sL&Ej82uY? zA%@1?*{!|1nwBjE#E<3nNuRJXaC}}LBM6U`ng7Ts=n+K7+mJ^og=K)O{edX!N-H&_9YIsh!R|~w`5X19!X^?2rQqnZZ^_K({l-$*Bg{_=rq-`+z+6H z9fnp27n!qFoPUVg&t>i{gBWL7fkUTZNwaQACwk|wB%5A=1*PRM=`z_rTXvBLfefBd zS4n2?eg+=q1LgEX9J&yZ3t6mc6IGUnIoUE{Rt%DdBiSlgS$^hu!R@KqbKdc35!p~Y zFEE1bcl?J76$e`m42CCiX}s3BuGg~pnlPI3gF^A3W>;ZNKWEH))J0B=(c83}IUT)W zHfU%P<(1#`^n8(lDOl5}y+4+V@z=VE&^)?Pu5vrpt5blO+u~tBm^eOkNlXSeq;Id z!TT_#*13$r*BcZFI%8~jyg=Ib(4o&GlAtwL|E};!jAx|5gbmJ{Dayv(i<<;$ob<(4t zg|6fdNh3Rhh=WZND`ifut3ztP9tC zV#O)u=v}K}yvL|=WZ~gJme&lK2$foU36wB|P0HmmiW$f%&As0i+77S5pNK8dKdwO# zXkY}=)e$i@w^x@+@7wz&G(4=E0>HjQX3owWNNuGrn2+!LIcW}!xE}qu5cGA|Sk)GaFq%Fl z{?EQyMC1*GK!|{4Nb`h|k=6P8nK>%m85zqnnCSGgcHA`;d3YLPmmnugzgrp)N8%_% zo1pd5y(1#({#Ho=3^7P4Wxv=l-5Aa-J+Ui8vvR8=gu$o46K$o>DPVRw!H@ zlDE`lTMAK3x#O|!irZM49lTudG2gB02~B4Z944QmcXhCgnM5P@v+)P@LzJybRK>l> z+kD^@+Cm-je}*z1#mU%FmKXX4f5~(+7B!dbzxeDIUhs{KJG-^w?j#DtOh;Dq~xt`&^|>4fv%`O=4KRI|xaub<~JcIA)` zc{^#y0ZLbbDCOML_MK<}5m*!M%;4O8Lg9s^@BFdcE@o;qq4o7uT(ClqdOgbnjEQwa z*Q0E1TnK#SugB=O;9=q=D9nNG@4BSE@HBu`yRfDori5s`y4yb2Hx8$?QJQTrw*5)# z$fvZyS9cRJFV;Q-mUW}UZcH-??P;an(LnXN=@doqe;vRzubn7YJ|!6t$1sVTv-V%J zs0tT6Hh-;YuMln%Wl=xQ2N2Kd{sp|+Pw`$D_|(!A}qTS~;Yv~@41L_(TmN>Zi!dWzo9Qf?e2 z6yj407LY%AUPEDb0{oSMWQ^!Ny}mJiuQN3jgwO}6yH{q%L@{?;F=VX;`N1X3;=Jxb zZ9_GY)3s$focsLTC4Gb7rL-j?)C{-IbPAB(>*Xw@F(O2yXE%i)9iz|gkPFmZf-R+q zA}rGjda#q=-*^1RRXqvxaC8O87jEQOu>VJ4@o3|KY!O&HnHN(&6plE9%tnTCOqtQo z1#0&yWU|TG^oTvfH-d-vY4J56n$1AU0V)LK^i{3FGAf^PdanFg`29|rVv(^3-^%M} zKOC`M1`*wqZ7*En=IudHT3-7bIh)+%E-ZL7 zA2oY9GlCwv2%ptGD=~(Tj3jO4|x`*pUYW?Of&#+MRDMY6vNv6)fdE#eC^in~{a{ zZNEQiiSiG3OGtYGu%gU_D6yf?CqqsE!Maj)CHaRzZ&` z&UnAJ08=#Uxe-9-Pakph@SbvLiI(Q-gr*sSi527jK{l8)@p~CeU6d=-qQ1Ld0VJ#Y zr|ZW^t5VU{I|C;25CTE@x#wV0|7AJoj&m96f96G4VlO1 z$06NF2j72NyyeFvLxKlF_@c?D^8%U;W>><0YQ{ zAL%|j(K3rgOBa53NA`5eU(9@Fl@_+Wph2AfN_*|701AE^MP_pB4KKl`z+wXT9B?dC z)yxmh6mntEUV;Q@iiwq1{Gm@$=6otgG<|ez+;PCh@`xw2tc<9Z13oj`$@wfe&pJGP zaUFwdEh0jXh+|OxYr!`VF&M)m1JGGP_MLELqfxpw(C_MuvQQgN=!-$OjK1 zT_aFX+7!^XwF-Zo7!U1dbiJpDVFUz)O~3iC(6VM3VW8D7pH#?kRCudo9JrBaxMMQ< zcbt5;kdJz^pIZ4Edt~4NN?7}CovdIgPi_;7748hXXz>oCI!<9Z<=_SfoT0ZfCO%88 z*{Wmey0k$cDa~#Jyc~#+*>UqbGpDYup?B0eEFW)|h1}>E+wp!#K7}Hl?Dqz0Oq>?9 zbJL_jk-#=pOEw7xdKJRQ6a2Rq31;hgv8~|@5VNN6Be$~M2-nc z1-zl>FO2uwY5?7m^RS4zUs9#jnqqDemy3@g!E69w?zT6uv|!VVGay9xlpK1fFXusz zLh*N@(kYW7JV?tJDt@KXFEyr5ne~6)#eUJ}4p8AsBr3S?0~X%D8hHDkL~l=tv~f7E z@E!doYPI2Nk__=4LfsvXmm@sJ3TEF9 zR(dgnrMtIDK___V2;7~t)Li5h%kzCt#V`ucr}tnU42s)LW4T||g<=xnyU%di7w@Bk9=iA`S4!x ziLR2vq1FwUyTN>Glw=^;xm%t6aMax{%pqHmnX4B^dL>`J7A4bXZNb0xe0Fjm&yrVv9IAfs8fsWyG;@{RG3g!%JPW@zFcsX zaA$Z`v8nKyj|;ub)f&R~HW)4OV)5;~vK;PkuA7uAD|uh#U3;79K{vM>XDkEPjNLH8 z;3q8$2xo3yNm;|Mo9vc9G}&IHW1!KzrU3CMn&q0>t&O_0YTND;8f?xT>aTz>Cif(P z^#=%c57(SgJ^Jz_-<}ZLkJlc)-Qj);C;q-lT36Tn83bT% zRbrb?gl?H1VAgk+r^02hrI8Xx!=D5mqMOnI#0gm)jEcwDL2gqx5@zYh)=k_oLU;{7 zrvbSd?Ws-4I|l$m?VG|48Tkum>aTUvIj6|(`f}9_!ay9%8rc2I!pX}wP?y)jPt6Pq z2@CFVp?A5|9_oi;FI@?R%KJ1yv4&vR)|9s1!{PZb)*;eM{G6BwOtwk``J3sz)b|!R zF_aE6s$M?_)rWUoLga|*3L%_oE+O5<2qIK)!T0KZRj#q84@0bi?nFwzt51DB2)YsN ztV8wL*}*VNLD68~FO4~tP=Gj@jjxt4C7tMdJw13!LJH+#%z?J#yxE`9Dm6n!`;o_v5UCL6WRva0vX(yP(A<$MUn&fnx zhJmA{cuKOxTdv2t!}CTl76XGgRdr)aMFqu#vL|H=?ANNTtK;)@tyvPH@F+bGQkc0`4`F3W;#&v{76f_@a5CB z;@m_!d6H^sMmzp%?*~)m`IG+;lgx-BHax~=7Dz#w_K0PMdvx3#d^5coEExD6Ur~%aI1WO7Py;QDTC+}te7LbHPXEWozQ5GY z6GM8r_-T&C8jwWlf#YeVgSwOUCk$s74K5#Cc9oiiEt)nOFmV^H2FrR(|vkTbz<4~#5ekfdBTDbDx7FVZU&b&mud z{{hG_ta!)vf@ng~IK3)FRuer$jkc8>3yYR(Y7wi5-pCQ6(G|p+DaIN+MR=Au__L6) zC<99~!gu`zw8=)#ZX%~Mbw*IBy9sVHa}zTgrr=A9+{+)4;hg&d;O+r)CZ9Z$l2m6A{yi*CUe8!63#!FsERX4wfc1LRf!0Xm zZ8ZwueGCFtFqDUjS<#707GyP-xdb^;Oka8$OPBcf3xj-kWtXcYwa9!8@0H9k-&fw< z+`#F`IiPdoBV+A{$mJ7~!nLVyJ9;?qY#cN{(_Qqf<=Ak57u?(8B*J`e1Mxxf$G~9) zrnt<&_o2g?pltnNOdWTARiXPU0_kQ^16=bv>%`mAK`d>%pBG#^MFcis?ENrD$M3;F zr#Ftxp*=#BqE8frJgoN!{ooHY1Moaud2SSW8)_6I97^6U!q4zC5a3cTYRa4;SF>X; zeCZWC_u%gpAd_cP8Q~D#$sHF{XoAOIy<|w{;bq}toDq2zDa))gE1?( zqlsn>zR8^z@QKSnh?8?Q1pBG}gc_((fHUS&ak!f5hI~^uh{M+f&S;$9zrMKS3_2hR z9Td2Fct@zz{JBX7Ybq0VKoWV3WRuP@_~~3to2F_3+6wkpXW52Y{whi42!$o{e2SLb zsg1!Qt4S8F_43Rg!1AvBXl?^|2AMgAso41hDZvp*b{hC8FXhn1?|P&9DBO*)t2F|c zC%PW)2P&vzY*VOXE0V_0NXPhL_;KjAQ=Bv138kc5f;RoJ7l;&mf;!tQEdw2Q&y2l*Jak7F&OGvfDt6izm6KDQHw`a#7ylY6s1 z;XH>51yqJ?&#I1v!=M)_?bKBon^Ppi-pY1~zOiNqF$8h+ zAR?l5l20(h0^A2fIG}N!{K&qbwt@%ixv+IVdKD)yGDbd`g}6z`HmmA0<>#8rFsq^` zC?wkZgTJD0eEY(XR5){TZ@=KbT`UE;&PM(-FR9O!FZepph6ii(2W>y*xp|nwhenSx z8>E?5b*jssC2WII;jsXR!QQ^zbZ>FXI=~ghVLYS#odE%mr2+8 zcfoED73(M~-MuBRIN8muFeja10)-1#-Qr2x&4FQ2;eBg}Rjp@GxLNRqJ%WasMr$)V z&F>lG%;T3%zSx?T)83#_>d{~5@NfSsg1=DC0tcsLw%QmN`N%cyv7|gLDIo%`PKij( zBe0W~w6Y&s%JFie0K`ZCfh2>w#m~lTiYjZZxKrLmiXd7h*Aq^33A~vIvH~lKUoze9 zAt?W?ZOUk(9-bocbb__g%;V3Gb_aQgkG-3<@`h>p9P$2y8+pugv9XWs4a8hp5Xma< zii{=_SKbcXTD!VNpJgw_y);hIOe$QV*hGdaGFi&AFqFAt)VeLlp4ox#M@u8V3(W0nw3M#K?Zo*xPZiqVy^Aq*`b37JEY@ zk8-SG8iwtJ(ae71Rj=tps<5BM-!+Qcj(UWA9b-B!?)V1A*DZOY$_?`N9I(g+>Iso2 z$LogToC!eOV+>PRwQ+fZw%G;tlXKy!22a8KEy3N4pg#~HDRXsSHVWS>Lig_LgK?Qp zqD!9q)OFmPt8>aL%Q=_Ksj!kn-wCoV zEKf2;^&Zs?07u*w!Ai=~a+~aH_oCl47fRTPT_uUOwDwg(iZI`we1s!Uo`tx8P?x)SOh<&w4q&iL#^j|FHx2tzglwV4AvUUj zXyR9FLO4D&AJd_Gzl{pF5lubfNl{jkv6qKjUUxpA!08p?^6!K@wRe!$x z1jz;o?eN0VydX`*q%{pyEUnYXK7xEU-sfvTQ^6(tT5mbBP@Q71cAfjSQnPLr$@!Mf zY9Mli>&q;13-KFI1#`6&R*OeOVm(H?@L$^U`a!;yire1{<#o9M4`zgU)AINZf36~7 zZ{c5r@h$nv>)U$U?OZc)1qN z4)Och&`fLrDql=X7vIk%s0m5s_CbsG6y&Y3M9uoSdH=I1#FscwtrIkrqUZwD1O$#f z5Gj^lOYRIQ_9SotJjh@IofC*ttUMWRr^kBS(^UBT(k4Ub*`5#T&iiZ-5|c{zZ!ENN z;y@EqKCG!t^UYy=yU`dxX7GaRJ)|YWxBuP**2{RIlgIqVK;E zE#{><#q8Y{#XCjPE(N$;)tL!4o{`Y!5MTk8D7e$}P=4P;QL+VAGDdFG#7>M{y^~&B zqgsQcK{kd50}P=K1>i2@!C5DuYVgr>b6?GJJ;3BWR)ggTX&5t_W&4Rfo~dIfc0P_03HBW*o-;Gx({W)EmeZxr3ndxZPb`9K*Jrft74*G2Z>-r zMhkSv)&nbrYubQec8F9G1Enc%H`{4bw7E6DfpVVllKp!( zSxn=c+f(Frbmt|19kquWO3Q)&(J7PhM*$)XmwTKJ;FjC957|>uNQD=D1R*gRxU%88 zuMWpIPtPIX|8 zbHrRRC3w5XLrSK4vP)G_52kuNXO?eG2TIdQwl=gHn?0~7$ZXyMav^%>IX=uk04uGX zgwr1QUR~jbP9HPedL~QYtV^-Fc+e znw-C?lo>laLhL1Gk=z||q-Qjlc9OZHa0V*RSP6m?f&JXY4~ZwJnh(GTMJ+UV@5 zdHp6tY_M_cV1JiKFN{5=nt`=#B?U<*-8;0Uxc~0;FtC8)^wKQJE zX?4cT^Z1ju%Cv+5f#W2#Nx|l??pgE&STCkuh6fnJYl#vUuua?v8%a#kPn1FIPugAp zB!{eaA1;s;qOJd+8P%TZ(p?j1wDqBD5OF!t=)8qf?u5YdEvEWbAR3mlx|$X9csPM= zQgfS;M0@Q%rW$2@F3@DmbErt8KnXj~T!eDsl$sBPEaRwhy+u0!w8`?c{aXy6Io!sF z8Xy;cc}^ecx8=v|Zy0Jqg-leVVDJvR6$CR8I}5kfVi+{~@F+wZwCOaaO(>Nf5v6z! zlVi&&0VfAY>KdV|ff$;4ICeNsnN2WrBk=#jNa@eQPtK!n_u-s&Y7Vm-*e=`XRtQ|n zbD=WYqv~Rk=y6hI_u{p~!D<&NR${={k1<8dHGGTL09oqtTHr@L}5~rlu7Ff%6}LoE|8yc7Udzf z`3Kfm<}J6R$}#h+G<03hmDN2Cvc%rsr_Dw^qISt`v!8yFh^ig~FQ&KuZz`WiYfbWi z7Vh6*AtwD^;!vE?nh*us^Q)Frsw?}AH^{80?5<;rNwEBp0K^wvhiWzn9`f%D^vU~KX1f{>t$74yQxZ@Oi8W{1KcL*QdzX@KuV91Byz+8kro`Pxl!*cm} zkBCxc>TS{2Y|myq6*bw2WM*CtG)LZ0tO%nNKx5Q=0RlkVpk~=Gd{j$)#_vA~DTTkA zgLsVwZ=OX*<+9zhN)V0Ll%G}sf#|)DhrV^KepNlSUT=1u?xOkE&gw+q+ghzxn z`P8UUKeGU~V=MeZYptROBd}3*y9$uG#jhStZ$$dtMY4S!8KzFr2x_MYVt`S#g7ok@ z>dl84`clvGs?M6H>T#nY)d8)-m4r{fcR#=uC4YukxIP(mQ^rR!Ga#x#0g*cbB2VvX zVQ;b$1TqHO7>7#K3^Ng$UX_;qF?V?TI{x}=5v4*nlP7Uogq9xzB_6Bjl5~8}^#eH` zz*lJ|BaTHEs7J#zm|#tiVs*|++0fPE6! zjW`~Zs+&n`HrCB5;9HG{F&9XA*GIrjN#A(RXaPC-9_KsPCcYpZ|Lo}$GSQ_~q-$l; zU7}MEjtKa~vc0QP4!sz&Fbrp)eAPYiwHV|#?1Q3Aotje-nWaJ#;edEidTk?!z*=aQ zdghAvg>RpK9GUxQjhMtaI;*rdF11RcCqeXz|o%TR!?Wnjx4WUSC7-=ur%;YW^s(=&TP>L)30# zvW+f6*IiRM_6dK(DoUozJWCDYY}Gf`u`E!NE3E<}R$LhPIbr!EYeMCDmnyc2nWAsA z2|1ul1Q(-kok`Rus1n(AcVP7(j$6@^mdpnjrAE}W2^Q)a$JYQwA~{)XpWIxc+YO>5 z=xchdzD?T6&!C+O{+G;^R5Y&y7jSBbUWE3@YU3$b!MJ=l+lez|kS+>g*Vat;TC0DD zt2x^O{zb`?J;M+_hQ+lga(`(b((^9g3mldvcPZj|J?G}LZMW6d6QkZ&GqBA#a=7|< zL>!{+EsOI3v5`3ECRz-Fg~7aX9msYzT~EXU`>Aw_2(QpH8F_F2%)#wh4zw@cI1kS{ zG~I!}_$cwjBF=OPfki^Cr081xQKIsfG3^}6>`vn|DRai&JsRhRbJGfWoV2}PlpRof zIskgB*t-(^Cp4_M_7wai`^I0KAJ;aJfEM(Xyv^q$4A&JNxt+Ilu)^omPKy{?5y5iC z`KMJDu(q9j@l|J~eB9RJ(P8s^aM-R8YoX0K%&7meXT8GJtE;1JyD;?Kou@rN7b@U5 zP9LO}Non%@+)2|d_c8h{fT1D|r{Hwl0;7DWMUtm8ni7#qGQ~zdV@pp^qlRQ@05&xq zKS8OW06wVp9vvMy!N-^DZTRDG001J$cK+DOKSs=mi8-67VqeT$N*%rwoj|Sayw7Sw zCkfhAMd$OT9N;rN87N)>RIpiGg=G1MI1I##PjVQT(y1};SdJ`yBv=*znD3v}tULhR zfBBlv4dZWTJxwI4*h;#_uJQ&gz$$VPC@Y)xq99tppqD!DBb77+$_%>!4q(g~006qE z@^e-;TQE9Mur6==Uh2t~y|*8Va|N|ml46_Infrl1F)E_?MfN$;^#Wvzp10)QsbeNp zWAqcAS$PoOCXrnF2Fr26Wc1(%^4yctgKk#Q2@Wgm z2V6Jy`}6c4)|rsLkq$ps+(@27dNV$BsO>36$aLc`B#moR8#b`{wzEM083c#48wiDh z)MLL4T|T8!*v9ts=vxXED$AXqf15g~MOzKg{G`1284&cJ)muu5#^fw9sMBm``qzgm z!#8$I!G8y)A94KMG(P*8Hy8Kp73PI65#sI9s0}1#Hdg*CtF8FRCO~JskKaCIj-n_w zYLQufIUw^=9xUnFJfT~=KXut0hqf#Gb9@_ETKy7#5WokW7za#F;ng%b)hTD=EIMoX z60AXd=|0*^!_bXfbmseS$9+e<9&@23>}~4)tQUREk^Nu3sm%ZJ)EAUC|D>&)S6E(@MojUg;J0%^nu95sJ30ONRW8DvNe6Di}|Jd4XCqu0W@GVqPvnnyL ziiuj{Kp8}(UleS^_Gy4!qvDCGwRAOX;!}s2hF+lucZ`rgI|;}kX6WECY|y2#1yz`J!JLLVZwufQ|qJ zikvPmt-504O>_DuDdpP-ldT7!Qb_|tx<6k3fF@ex-q%6Cnts;`2{Q|g42nyy^z37K z;gK9lR8<^EEd^CRU%^s|Tfe(^s*b#FxP{#@6E9#Qx3=_+vwZLh)(fI?$p~|F`_lRp zIhkyDc5lXN!ZM0eC$b{tERt@Kxj5G^U12jl6;Xs6RCZR>jkz4Eh5o}kNH8GqSFP>R z!IA2zYE!f8YZ~cOEdSuXn~)C&WdbNuU3%$8&VMCMo%ajwvoRPcq?czc955o<1DjA5 z`*Zp8R=)PBBy$hjhD{O+SuE9A?yYbhUGi@jhF+0zjK>fPmYeyOIhD!Rib$ex_{v4@ zU03wyyI9n z&KS()8nkLkm+Y|_BYX=pI*X%bs@#)50oUMQMV_64s_;7>W`9A=&JwPw{S0RmtWu8} zR~^c{PGa1X!P0=KLBtP^7Bx1L8VX_xmt3p2QUeM|J;F=_((xk}!-(|o4IrKNK7Qzq vwAwR32#{>$8}?e`))RTE<+(pUyuL*k@E+_ literal 0 HcmV?d00001 diff --git a/images/learn/transfers/settlement/mayan-swift.webp b/images/learn/transfers/settlement/mayan-swift.webp new file mode 100644 index 0000000000000000000000000000000000000000..b5f218b770510c34d5ce1e1318353c98fbf9d597 GIT binary patch literal 111454 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Μ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 literal 0 HcmV?d00001 diff --git a/images/learn/transfers/settlement/settlement-overview.webp b/images/learn/transfers/settlement/settlement-overview.webp new file mode 100644 index 0000000000000000000000000000000000000000..ff25173a00afe370dd519ce944a2c72e32c9d8b1 GIT binary patch literal 103666 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 Dm@_~Z literal 0 HcmV?d00001 diff --git a/learn/transfers/.pages b/learn/transfers/.pages index 17b035577..70d592ca8 100644 --- a/learn/transfers/.pages +++ b/learn/transfers/.pages @@ -2,5 +2,6 @@ title: Multichain Transfers nav: - index.md - native-token-transfers + - settlement - 'Token Bridge': 'token-bridge.md' - 'CCTP Bridge': 'cctp.md' diff --git a/learn/transfers/settlement/.pages b/learn/transfers/settlement/.pages new file mode 100644 index 000000000..3ed7da377 --- /dev/null +++ b/learn/transfers/settlement/.pages @@ -0,0 +1,5 @@ +title: Wormhole Settlement +nav: + - index.md + - 'Overview': 'overview.md' + - 'Protocol Architectures': 'architecture.md' \ No newline at end of file diff --git a/learn/transfers/settlement/architecture.md b/learn/transfers/settlement/architecture.md new file mode 100644 index 000000000..777445cb4 --- /dev/null +++ b/learn/transfers/settlement/architecture.md @@ -0,0 +1,102 @@ +--- +title: Settlement Protocol Architectures +description: Explore Wormhole Settlement's native swap protocols—Liquidity Layer, Mayan Swift, and MCTP—for scalable, efficient cross-chain asset transfers. +--- + +# Settlement Protocol Architectures + +## Introduction + +This page describes the high-level mechanics of the underlying native swap protocols in the Wormhole SDK. While built on Wormhole messaging, each protocol uses a novel architecture with unique price discovery, scalability, and latency tradeoffs. These designs enable redundancy to handle highly asymmetric flows and sharp volume changes. These sections will cover the following: + +- **Wormhole Liquidity Layer** - a cross-chain transfer protocol that utilizes Solana as the central orchestration layer for cross-chain intents, allowing solvers to deploy liquidity from a single Solana-based hub rather than distributing it across each supported chain +- **Mayan Swift** - a flexible cross-chain intent protocol that embeds a competitive on-chain price auction to determine the best possible execution for the expressed user intent +- **Mayan MCTP** - a cross-chain intents protocol that leverages Circle's CCTP (Cross-Chain Transfer Protocol) mechanism and Wormhole messaging to enable secure, fee-managed asset transfers across chains + +## Wormhole Liquidity Layer + +Wormhole Liquidity Layer is a cross-chain transfer protocol that enables faster-than-finality transfers across the Wormhole ecosystem through a novel, Solana-based hub-and-spoke architecture. The hub-and-spoke model leverages interoperable token standards like Circle's CCTP (and Wormhole's NTT), allowing the solver to natively mint and burn assets between chains for intent fulfillment. This architecture allows solvers to facilitate cross-chain transfers by fronting assets on the destination chain and assuming the finality risk of the originating source chain transaction. + +Solvers concentrate their liquidity entirely on Solana, where they participate in permissionless on-chain English auctions (open ascending-price auctions where bidders publicly raise bids until only one bidder remains) to fulfill each cross-chain transfer. Upon the conclusion of each auction, the winning solver initiates a transfer from Solana to the specified destination chain. The solver rebalances inventory once the originating source chain transaction reaches finality and arrives to Solana. + +![Wormhole Settlments Liquidity layer architecture diagram: source chain to hub to destination chain](/docs/images/learn/transfers/settlement/settlement-overview.webp) + +The Wormhole Liquidity Layer serves as the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems by enabling protocols to bundle call data containing arbitrary protocol actions, which can be executed atomically alongside each transfer. This feature allows developers to create fully chain-abstracted user experiences, including constructing natively cross-chain decentralized exchanges (DEXs), borrow-lend protocols, payment protocols, and other applications atop this layer. + +### Solvers and Liquidity Fragmentation + +Traditional intent-based protocols require solvers to distribute their capital across each supported chain in the network. This liquidity fragmentation leads to capital inefficiency and requires complex rebalancing to manage asymmetric flows between chains. As the number of chains increases, solvers face scalability challenges, which can result in market concentration, reducing competition and potentially impacting price discovery in intent execution. + +Using a hub-and-spoke model, the Wormhole Liquidity Layer solves these challenges by consolidating solver liquidity on a single chain, Solana. This model eliminates the need for complex cross-chain rebalancing and simplifies solvers' infrastructure requirements. Solvers only need to consider the finality risk of the originating source chain transaction and the payload size when bidding on transfers. By concentrating liquidity on Solana, the protocol can handle large transfer volumes with a smaller capital base, enhancing capital efficiency and lowering barriers to entry for solvers. This approach promotes competition, improves overall market efficiency, and ultimately benefits users with better prices while still preserving the speed of transactions. + +### Enable Unified Liquidity + +The novel hub-and-spoke liquidity architecture relies on interoperable token standards that enable cross-chain token fungibility, such as Circle's Cross-Chain Transfer Protocol (CCTP) and Wormhole's Native Token Transfers (NTT). These protocols allow assets to move seamlessly between chains, making unified liquidity possible. On the liquidity hub (Solana), solvers concentrate their liquidity in NTT or CCTP-supported assets, such as USDC. These assets act as the shuttle between chains but may not necessarily be the user's original or final asset. + +After the Solana auction concludes, the appropriate instructions are called on the CCTP or NTT contract, initiating the transfer from Solana to the destination chain by burning/locking the asset on Solana and sequentially minting on the destination chain. Solvers rebalance their inventory on Solana using these interoperable token standards as well. Once the originating source chain transaction reaches finality and arrives to Solana, the solver can redeem the NTT or CCTP message, minting the inventory for use once again. + +By leveraging interoperable token standards like NTT, this model of liquidity facilitation for cross-chain intents can arbitrarily scale to any chain or ecosystem while preserving fully unified liquidity—eliminating the need for solver "buy-in" for new chain expansion. Additionally, this means new chains, even without proven traction, can access the same amount of liquidity for cross-chain intent fulfillment from day one of mainnet launch as they would if they were long-standing ecosystems with clear evidence of adoption — commonly overlooked by solvers who must aggressively prioritize high flow chains to due high opportunity costs. This includes new ecosystems without Centralized Exchange (CEX) enabled withdrawals. + +### Protocol Flow: How It Works + +1. **Initiation** - users or protocols initiate a transfer via an interface or directly on-chain. They choose between a standard transfer (waiting for finality on the sending chain) or a fast transfer (triggering the auction process). For fast transfers, users or the protocol specify a maximum fee and an auction start deadline + + !!! Note + If an auction doesn't start within the set deadline, a standard transfer will proceed directly from the source to the destination chain. + +2. **Auction** - solvers monitor the Wormhole network for these fast transfer requests and initiate an auction on Solana by offering to fulfill the transfer at or below the user's maximum fee. To start the auction, the solver must transfer the requested funds plus a small security deposit to the Matching Engine contract +3. **Competition** - once initiated, other solvers can participate by submitting lower bids in a simple English auction, aiming to provide users with the best rate. If a new solver submits a better offer, the previous solver's funds and security deposit are returned, with the latest offer taking precedence atomically. This competition ensures that users receive the best possible transfer rate +4. **Fulfillment** - after the auction concludes, the winning solver must complete the transfer within a predefined grace period to earn their fee and reclaim their security deposit. Failure to do so may result in the security deposit being slashed, with the slashed amount compensating the user for delays. This mechanism incentivizes prompt execution. Upon successful completion, the Fast Transfer hub sends the USDC to the user's destination wallet, and the solver receives their security deposit and transfer fee +5. **Settlement** - once the source chain transaction reaches finality, the winning solver can use the finalized Wormhole message to settle the auction with the matching engine and rebalance. This allows the solver to retrieve the original transfer amount into their wallet + +## Mayan Swift + +Mayan Swift is a flexible cross-chain intent protocol that embeds a competitive on-chain price auction to determine the best possible execution for the expressed user intent. + +### On-Chain Competitive Price Discovery Mechanism + +Traditional intent-based protocols essentially function as cross-chain limit orders. If the order is profitable, solvers will compete to fulfill it, leading to MEV-like competition focused on speed. While functional, this methodology presents two clear inefficiencies and drawbacks. + +First, they lack a competitive price discovery mechanism as limit order prices are typically determined through centralized off-chain systems. Second, in this MEV-like market structure, only a single solver can win, while the others lose out on transaction fees. This dynamic of deadweight loss results in solvers prioritizing high-margin orders, ultimately resulting in elevated fees for end-users without commensurate benefits. + +Mayan Swift addresses these limitations by implementing competitive on-chain English auctions on Solana as an embedded price discovery mechanism, fundamentally shifting solver competition from speed-based to price-based execution. Through this architecture, the solver offering the best possible price secures the right to fulfill the order within pre-specified deadline parameters. + +![Mayan Swift - Intent-centric design](/docs/images/learn/transfers/settlement/mayan-swift.webp) + +### Protocol Flow: How It Works + +1. **Initiation** - the user creates an order by signing a transaction that locks one of the primary assets (USDC or ETH) into the Mayan smart contract, specifying the desired outcome. + + !!!note + If the input asset is not a primary asset, it is converted into a primary asset within the same transaction before the order is submitted. + + Each order includes properties such as destination chain, destination wallet address, output token address, minimum output amount, gas drop amount, deadline, and 32 bytes of random hex to prevent collisions. A Keccak-256 hash is then calculated to identify the order + +2. **Auction** - solvers observe on-chain data or subscribe to the Mayan explorer web socket (solvers using the Mayan explorer verify the order's integrity by checking the data against the on-chain hash). Once the new order is verified, an on-chain auction on Solana is initiated by passing the order ID and the bid amount, which cannot be lower than the minimum amount. Other solvers can increase the bid by submitting a higher amount before the auction ends +3. **Fulfillment** - the auction ends three seconds after the initial bid. Once the auction ends, the winning solver can execute an instruction that passes their wallet address on the destination chain. This triggers a Wormhole message containing the order ID and the winner's wallet address. Wormhole Guardians then sign this message, allowing the winning solver to fulfill the order on the destination chain by submitting proof of their win and the promised amount to the Mayan contract before the deadline. The Mayan contract deducts a protocol fee (currently 3 basis points) and a referral fee (if applicable), transferring the remaining amount to the user's destination wallet. It also triggers a Wormhole message as proof of fulfillment +4. **Settlement** - after the Wormhole Guardians sign the fulfillment message, the winning solver can submit this message on the source chain to unlock the user's funds and transfer them to their own wallet. Upon fulfillment, the solver has the option to delay triggering a Wormhole message immediately. Instead, they can batch the proofs and, once the batch reaches a certain threshold, issue a batched proof to unlock all orders simultaneously, saving on gas fees + +## Mayan MCTP + +Mayan MCTP is a cross-chain intents protocol that leverages Circle's CCTP (Cross-Chain Transfer Protocol) mechanism and Wormhole messaging to enable secure, fee-managed asset transfers across chains. + +![Mayan MCTP diagram](/docs/images/learn/transfers/settlement/mayan-mctp.webp) + +### Protocol Flow: How It Works + +1. **Initiation** - the user creates an order by signing a transaction that locks one USDC into the Mayan smart contract, specifying the desired outcome. + + !!!note + If the input asset is not USDC, it is converted into a primary asset within the same transaction before the order is submitted. + + The contract constructs a `BridgeWithFeeMsg` structure, which includes parameters such as the action type, payload type, nonce, destination address, gas drop, redeem fee, and an optional custom payload hash + +2. **Intent submission** - the contract calls the CCTP messenger to deposit the tokens for bridging. A unique nonce is generated, and a corresponding fee-lock record is created in the contract's storage. This record includes the locked fee, gas drop parameters, and destination details. The constructed message is hashed and published through Wormhole. The protocol fee is deducted during this step, and the Wormhole message is broadcast with the specified consistency level +3. **Fulfillment** - on the destination chain, the protocol receives a CCTP message with corresponding signatures and verifies the payload using Wormhole's verification mechanism. Once validated, the redeemed tokens are transferred to the intended recipient, deducting the redeem fee as per protocol rules + +The protocol provides mechanisms for unlocking the fee once the bridging process is completed. This can occur immediately upon fulfillment or be batched for efficiency. In the fee unlock flow, the contract verifies the unlock message via Wormhole and then releases the locked fee to the designated unlocker address. + +## Where to Go Next + +- To learn more about available EVM functions, see the [Build on the Wormhole Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide +- To learn how ot integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial \ No newline at end of file diff --git a/learn/transfers/settlement/index.md b/learn/transfers/settlement/index.md new file mode 100644 index 000000000..5bd100a01 --- /dev/null +++ b/learn/transfers/settlement/index.md @@ -0,0 +1,30 @@ +--- +title: Wormhole Settlement +description: Learn about Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. +--- + +# Wormhole Settlement + +## Get Started + +This section covers Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. + +
+ +- :octicons-question-16:{ .lg .middle } **Overview** + + --- + + Discover Wormhole Settlement, enabling fast, intent-based asset transfers across Ethereum, Solana, Sui, and more for institutions and builders. + + [:custom-arrow: Learn more about Wormhole Settlement](/docs/learn/transfers/settlement/overview/) + +- :octicons-question-16:{ .lg .middle } **Protocol Architectures** + + --- + + Explore Wormhole Settlement's native swap protocols—Liquidity Layer, Mayan Swift, and MCTP — for scalable, efficient cross-chain asset transfers. + + [:custom-arrow: Discover protocol architectures](/docs/learn/transfers/settlement/architecture/) + +
\ No newline at end of file diff --git a/learn/transfers/settlement/overview.md b/learn/transfers/settlement/overview.md new file mode 100644 index 000000000..feaf3c614 --- /dev/null +++ b/learn/transfers/settlement/overview.md @@ -0,0 +1,43 @@ +--- +title: Wormhole Settlement Overview +description: Discover Wormhole Settlement, enabling fast, intent-based asset transfers across Ethereum, Solana, Sui, and more for institutions and builders. +--- + +# Wormhole Settlement Overview + +## Introduction + +Wormhole Settlement is a fast, institutional-scale digital asset settlement — a new way to transfer assets across chains. + +With Wormhole Settlement, an intent-based asset transfer for individual users and institutions, you can swap, bridge, and build across multiple chains. You can implement cross-chain functionality within your dApps extremely simply and without compromising user experience, widening the horizons of your product offerings and the number and type of users you can cater to. + +The Settlement supports Ethereum, Ton, Optimism, Arbitrum, Base, Avalanche, Unichain, Polygon, Solana, and Sui, with many more on the horizon. It is powered by Wormhole Messaging, Wormhole Native Token Transfer (NTT), and Circle's CCTP and built in collaboration with the intent experts at Mayan Finance. + +Settlement represents Wormhole's first step towards optimizing the bridging experience and building a product that users and institutions use daily. Use it to send assets between chains, rebalance institutional inventories on-chain cheaply and quickly, or allow your application to be accessible by any user no matter what assets they hold or what chain they call home. + +## Key Features + +- **Integrator flexibility** - apps leveraging the SDK can select any one of three potential routes surfaced, each with its tradeoffs concerning time vs cost; they may extend this to users as well +- **Scalable liquidity** - taking into account the sometimes idiosyncratic yet sharp inflows into the Solana ecosystem, the hub-spoke model of the Wormhole Liquidity Layer and the flexible design of Swift are designed for capital efficiency +- **Arbitrary payload support** - integrators can bundle `callData` containing arbitrary protocol actions to enable seamless one-click user experiences, such as swap plus stake + +## Integrator Paths + +### SDK Integrators + +Wormhole provides an SDK that enables apps to abstract away the complexity of cross-chain token swaps. The SDK handles route discovery, fee estimation, and transaction construction. Apps can embed this feature in their backend or create an interface for users to bridge into their respective ecosystems quickly. + +### NTT Integrators + +NTT partners, current and future, can leverage Wormhole Settlement for near-instant NTT transfers from any chain, including Ethereum mainnet and its L2s. This eliminates waiting for slow source chain confirmation times (sometimes 15 minutes or more). If interested, please [fill out this interest form](https://wormhole.com/contact){target=\_blank}. + +### Chain Integrators + +Due to the hub-spoke model of liquidity, new chains without proven traction can access the same level of liquidity for cross-chain intent fulfillment from day one of mainnet launch as established ecosystems with clear evidence of adoption. + +!!!tip + Looking to integrate Wormhole Settlement? If you're ready, check out how to [integrate Wormhole Settlement Routes using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank}. + +## Related Resources + +- To learn more about the architecture of Wormhole-native swap protocols, see the [Settlement Protocol Architectures](/docs/learn/transfers/settlement/architecture/){target=\_blank} page \ No newline at end of file diff --git a/llms.txt b/llms.txt index a9afed4fa..95f022d46 100644 --- a/llms.txt +++ b/llms.txt @@ -60,6 +60,9 @@ Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deplo Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/index Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/index +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/solver Doc-Page: https://wormhole.com/docs/infrastructure/index Doc-Page: https://wormhole.com/docs/infrastructure/relayers/index Doc-Page: https://wormhole.com/docs/infrastructure/relayers/run-relayer @@ -87,6 +90,9 @@ Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/deplo Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/index Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/security +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/architecture +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/index +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/overview Doc-Page: https://wormhole.com/docs/learn/transfers/token-bridge Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/index Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/react-dapp @@ -12530,6 +12536,381 @@ Program log: Instruction: ReleaseInboundUnlock ``` --- END CONTENT --- +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/index +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement +description: Start building with Wormhole Settlement; integrate with the Liquidity Layer and set up Solvers to enable seamless cross-chain asset transfers. +--- + +# Wormhole Settlement + +## Get Started + +This section provides resources to build with Wormhole Settlement, including integrating the Liquidity Layer into your application and running a Solver for efficient cross-chain asset transfers. + +
+ +- :octicons-code-16:{ .lg .middle } **Build on the Liquidity Layer** + + --- + + Integrate seamlessly with Wormhole's Liquidity Layer, learn key EVM contract functions for fast and secure cross-chain transfers. + + [:custom-arrow: Build on the Liquidity layer](/docs/build/transfers/settlement/liquidity-layer/) + +- :octicons-code-16:{ .lg .middle } **Run a Settlement Solver** + + --- + + Set up, configure, and run a Wormhole Settlement Solver on Solana's Matching Engine to fulfill cross-chain transfers efficiently and securely. + + [:custom-arrow: Run a Solver](/docs/build/transfers/settlement/solver/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement Liquidity Layer +description: Learn how to build on the Wormhole Liquidity Layer, the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems. +--- + +# Build on the Wormhole Liquidity Layer + +## Introduction + +The Wormhole Liquidity Layer is the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems. It allows these protocols to bundle call data containing arbitrary actions that can be executed atomically alongside each transfer. This feature enables developers to create fully chain-abstracted user experiences, including constructing natively cross-chain decentralized exchanges (DEXs), borrow-lend protocols, payment protocols, and other applications atop this layer. The following section describes the key smart contract components for teams seeking to build atop Wormhole Settlement. + +## EVM Functions + +The EVM Token Router is a simple interface against which to integrate. For an integrator, the contracts have two main entry points: `placeMarketOrder` and `placeFastMarketOrder`. + +### Fast Market Order + +The `placeFastMarketOrder` function allows the caller to elect for a _faster-than-finality_ transfer of USDC (with an arbitrary message payload) to the destination chain by setting the `maxFee` and `deadline` parameters. Using this interface does not guarantee that the caller's transfer will be delivered faster than finality; however, any willing market participants can compete for the specified `maxFee` by participating in an auction on the Solana `MatchingEngine` + +```solidity title="`placeFastMarketOrder` Interface" +function placeFastMarketOrder( + uint128 amountIn, + uint16 targetChain, + bytes32 redeemer, + bytes calldata redeemerMessage, + uint128 maxFee, + uint32 deadline +) external payable returns (uint64 sequence, uint64 fastSequence); +``` + +??? interface "Parameters `placeFastMarketOrder()`" + + `amountIn` ++"uint128"++ + + The amount to transfer. + + --- + + `targetChain` ++"uint16"++ + + Target chain ID. + + --- + + `redeemer` ++"bytes32"++ + + Redeemer contract address. + + --- + + `redeemerMessage` ++"bytes"++ + + An arbitrary payload for the redeemer. + + --- + + `maxFee` ++"uint128"++ + + The maximum fee the user wants to pay to execute a fast transfer. + + --- + + `deadline` ++"uint32"++ + + The deadline for the fast transfer auction to start. Note: This timestamp should be for the `MatchingEngine` chain (such as Solana) to avoid any clock drift issues between different blockchains. Integrators can set this value to `0` if they don't want to use a deadline. + +The `placeFastMarketOrder` function returns a sequence number for the Wormhole Fill message. This function requires the caller to provide a `msg.value` equal to the amount returned by the `messageFee()` function on the `IWormhole.sol` interface. + +### Market Order + +The `placeMarketOrder` function is a _wait-for-full-finality_ USDC transfer with an arbitrary message payload. The Swap Layer, built on top of the Wormhole Settlement, uses this function if the auction on the matching engine for `placeFastMarketOrder` doesn't start within a specific deadline. + +```solidity title="`placeMarketOrder` Interface" +function placeMarketOrder( + uint128 amountIn, + uint16 targetChain, + bytes32 redeemer, + bytes calldata redeemerMessage, +) external payable returns (uint64 sequence, uint64 protocolSequence); +``` + +??? interface "Parameters `placeMarketOrder()`" + + `amountIn` ++"uint128"++ + + The amount to transfer. + + --- + + `targetChain` ++"uint16"++ + + Target chain ID. + + --- + + `redeemer` ++"bytes32"++ + + Redeemer contract address. + + --- + + `redeemerMessage` ++"bytes"++ + + An arbitrary payload for the redeemer. + +The `placeMarketOrder` function returns a sequence number for the Wormhole Fill message. This function requires the caller to provide a `msg.value` equal to the amount returned by the `messageFee()` function on the `IWormhole.sol` interface. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/solver +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement Solver +description: Set up, configure, and run a Wormhole Settlement Solver on Solana's Matching Engine to fulfill cross-chain transfers efficiently and securely. +--- + +# Run a Wormhole Settlement Solver + +## Introduction + +This page provides instructions on how to set up, configure, and run a Solver for Wormhole Settlement using the [example solver](https://github.com/wormholelabs-xyz/example-liquidity-layer/tree/update-solver-example/solver){target=\_blank}. + +A Solver is an off-chain agent responsible for: + +- Listening to cross-chain transfer requests sent over Wormhole +- Bidding in auctions (on Solana) to fulfill each request +- Facilitating the actual cross-chain transfer by locking/burning assets on Solana and minting/unlocking them on the destination chain +- Rebalancing once the origin chain transaction finalizes and is redeemed back on Solana + +For information on how the protocol functions and its core features, please visit the [Wormhole Settlement](/docs/learn/transfers/settlement/overview/){target=\_blank} page. + +## Background + +The Solana Matching Engine's permissionless English auction is a central component of Wormhole Settlement protocol architecture. The Matching Engine contract allows any third-party solver to interact with the matching engine to place bids or improve existing ones. The contract includes four key instructions: + +1. `initialize_auction` - creates a new auction account on-chain and sets basic parameters like the auction's token mint, the amount required, and the bidding period details +2. `bid` - allows a solver to place or update a bid on the active auction +3. `finalize_auction` - following the conclusion of the auction, this instruction completes the fast transfer by sending funds to the recipient on the target chain. This instruction may call the Circle CCTP contract or release an NTT contract in the future, depending on the shuttle asset in question. Failure to execute this message within a predefined grace period may result in a penalty for the winning bidder. +4. `cancel_auction` - cancels an open auction when the auction is no longer valid or was created by mistake. The program returns all locked funds to their respective owners + +These instructions work together to carry out the auction as follows: + +- The solver transfers the bid amount to the program escrow account, which ensures they have liquidity +- With each successful call of `bid`, the program updates the auction to the new highest bidder, and the prior bid is atomically sent back to the originating solver +- The originating solver can repurpose the returned funds and use them to improve their bid +- Following the auction, the winning solver has to call an instruction on the matching engine to execute the intent + +When placing a bid, whether initial or improved, the solver must deposit the required funds plus a security deposit into the matching engine contract. In this permissionless auction, the requirement of this principal amount plus the security deposit ensures a solver's credible commitment to fulfill the transfer. Malicious actors could place hollow bids without this safeguard, undermining the auction's credibility and hindering true price discovery. + +If the winning solver fails to call the `finalize_auction` instruction, other competing solvers may permissionlessly 'slash' the solver by executing the instruction on their behalf and collecting a portion of the original security deposit as a reward. The remaining portion is routed to the user as compensation for the unanticipated delay. This mechanism properly incentivizes timely execution through solver redundancy and competition. + +## Testnet Example Solver + +You can clone the Wormhole [`example-liquidity-layer`](https://github.com/wormholelabs-xyz/example-liquidity-layer){target=\_blank} repository to use the included [`solver`](https://github.com/wormholelabs-xyz/example-liquidity-layer/tree/main/solver){target=\_blank} directory as an example solver to fulfill fast orders by interacting with the Matching Engine on Solana. + +!!!warning + This example is not optimized for performance, has only been tested on Solana devnet, and is not intended for production use. Any assumptions made in this example may not translate to mainnet. + +### Prerequisites + +In order to build and install dependencies locally in this repo, you will need: + +- node v20.18.1 +- npmv - get started by installing `nvm` using this [installation guide](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating){target=\_blank} + +Navigate into the `solver` directory, then run the command below to set up your environment and install the node dependencies and Matching Engine package: + +```sh +make dependencies +``` + +### Set up Config + +The following is an example of a `config.json` file for Solana devnet. The keys here are required for both the publisher and example solver processes. + +```json title="config.json" +{ + "environment": "Testnet", + "zmqChannels": { + "fastVaa": "tcp://localhost:6001", + "finalizedVaa": "tcp://localhost:6002" + }, + "publisher": { + "log": { + "level": "info" + }, + "vaaSpy": { + "host": "localhost:7073", + "enableObservationCleanup": true, + "observationSeenThresholdMs": 1500000, + "observationCleanupIntervalMs": 500, + "observationsToRemovePerInterval": 5, + "delayedThresholdMs": 60000 + } + }, + "solver": { + "log": { + "level": "info", + "filename": "logs/solver.log" + }, + "connection": { + "rpc": "", + "maxTransactionsPerSecond": 5, + "commitment": "processed", + "addressLookupTable": "YourAddressLookupTab1eHere11111111111111111", + "matchingEngine": "mPydpGUWxzERTNpyvTKdvS7v8kvw5sgwfiP8WQFrXVS", + "mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", + "knownAtaOwners": [ + "Payer11111111111111111111111111111111111111", + "Payer11111111111111111111111111111111111112", + "Payer11111111111111111111111111111111111113" + ] + } + }, + "routerEndpoints": [ + { + "chain": "Sepolia", + "endpoint": "0xE57D917bf955FedE2888AAbD056202a6497F1882", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "Avalanche", + "endpoint": "0x8Cd7D7C980cd72eBD16737dC3fa04469dcFcf07A", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "OptimismSepolia", + "endpoint": "0x6BAa7397c18abe6221b4f6C3Ac91C88a9faE00D8", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "ArbitrumSepolia", + "endpoint": "0xe0418C44F06B0b0D7D1706E01706316DBB0B210E", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "BaseSepolia", + "endpoint": "0x824Ea687CD1CC2f2446235D33Ae764CbCd08e18C", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "Polygon", + "endpoint": "0xa098368AaaDc0FdF3e309cda710D7A5f8BDEeCD9", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + } + ] +} +``` + +The rollback risks and offer edges configured in the sample config are arbitrary placeholders. You should use historical data and your risk tolerance, to determine appropriate values for your project. + +### Listen to Activity + +The example solver listens to attested Wormhole messages (VAAs) published on the Wormhole Guardian gossip network. To listen to this gossip network and run the VAA publisher, run the command below. Docker compose is used to listen to the Pyth Beacon and start the [`publishActivity`](https://github.com/wormholelabs-xyz/example-liquidity-layer/blob/update-solver-example/solver/app/publishActivity.ts){target=\_blank} process. + +```sh +NETWORK=testnet CONFIG=path/to/config.json make run-publisher +``` + +You should see output resembling: + +
+ Start logging with info level. + 2025-01-21 16:38:28.145 [publisher] info: Environment: Testnet + 2025-01-21 16:38:36.631 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33635, vaaTime=1737499116 + 2025-01-21 16:38:51.044 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33637, vaaTime=1737499130 + 2025-01-21 16:40:24.890 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33639, vaaTime=1737499224 +
+ +To set up the Pyth Beacon (which is run using make `run-publisher`), you may need to increase the UDP buffer size for the OS: + +=== "Linux" + + ```sh + sudo sysctl -w net.core.rmem_max=2097152 + sudo sysctl -w net.core.rmem_default=2097152 + ``` + +=== "MacOS" + + ```sh + sudo sysctl -w net.inet.udp.recvspace=2097152 + ``` + +### Running the Example Solver + +Using the same config for your publisher, run the example solver with the command below. + +```sh +CONFIG=path/to/config.json make run-solver +``` + +It is recommended you write log output to a file so errors can be tracked. The example config above specifies an example log filename. + +This process reads the following environment variables: + +```sh +SOLANA_PRIVATE_KEY_1= +SOLANA_PRIVATE_KEY_2= +SOLANA_PRIVATE_KEY_3= +SOLANA_PRIVATE_KEY_4= +SOLANA_PRIVATE_KEY_5= +``` + +At least one of these environment variables must be defined as a keypair encoded in base64 format. These payers must have SOL to send transactions on Solana devnet. If they need funds, they can request them from the [Solana devnet faucet](https://faucet.solana.com/){target=\_blank}. + +The example solver assumes that these payers own USDC Associated Token Accounts(ATAs), which will be used to fulfill fast transfers. These ATAs must be funded with Solana Devnet USDC. If your ATAs need funds, request some at the [Circle testnet faucet](https://faucet.circle.com/){target=\_blank}. + +Wallets and their corresponding ATA will be disabled if there are insufficient funds to pay for transactions or fulfill fast transfers. These constraints can be modified using the `updatePayerMinimumLamports` and `updateTokenMinimumBalance` methods. + +An address lookup table is required to execute some transactions. Use the command below to create one. + +```sh +CONFIG=path/to/config.json make create-lut +``` + +`SOLANA_PRIVATE_KEY_1` must be defined for this script to work. + +The example solver has the following toggles depending on which orders you want to fulfill: + +- `enableCctpOrderPipeline()` +- `enableLocalOrderPipeline()` +- `enablePlaceInitialOffer()` +- `enableImproveOffer()` + +See the comments in [runExampleSolver](https://github.com/wormholelabs-xyz/example-liquidity-layer/blob/update-solver-example/solver/app/runExampleSolver.ts){target=\_blank} for more information. + +This example solver does NOT do the following: + +- Discriminate between the CCTP source networks. You must add logic to determine whether you want to constrain fulfilling orders from specific networks. This solver will try to fulfill all orders as long as `enableCctpOrderPipeline()` is called +- Discriminate among fulfillment sizes. No logic determines how small or large fast order transfer sizes should be. This solver will try to fulfill anything as long as your balance can handle it +- Add auctions to auction history. We recommend that after settling a complete auction (one that you have won), you write the auction pubkey to a database and have a separate process to add auction history entries to reclaim rent from these auction accounts. The auction history time delay is two hours after the VAA timestamp. This example does not prescribe any specific database, so add whichever you want +--- END CONTENT --- + Doc-Content: https://wormhole.com/docs/infrastructure/index --- BEGIN CONTENT --- --- @@ -14807,6 +15188,193 @@ The registry component of the NTT system is crucial for maintaining a trusted li This governance model ensures that the system remains secure while being adaptable to new requirements in any environment where it is deployed. --- END CONTENT --- +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/architecture +--- BEGIN CONTENT --- +--- +title: Settlement Protocol Architectures +description: Explore Wormhole Settlement's native swap protocols—Liquidity Layer, Mayan Swift, and MCTP—for scalable, efficient cross-chain asset transfers. +--- + +# Settlement Protocol Architectures + +## Introduction + +This page describes the high-level mechanics of the underlying native swap protocols in the Wormhole SDK. While built on Wormhole messaging, each protocol uses a novel architecture with unique price discovery, scalability, and latency tradeoffs. These designs enable redundancy to handle highly asymmetric flows and sharp volume changes. These sections will cover the following: + +- **Wormhole Liquidity Layer** - a cross-chain transfer protocol that utilizes Solana as the central orchestration layer for cross-chain intents, allowing solvers to deploy liquidity from a single Solana-based hub rather than distributing it across each supported chain +- **Mayan Swift** - a flexible cross-chain intent protocol that embeds a competitive on-chain price auction to determine the best possible execution for the expressed user intent +- **Mayan MCTP** - a cross-chain intents protocol that leverages Circle's CCTP (Cross-Chain Transfer Protocol) mechanism and Wormhole messaging to enable secure, fee-managed asset transfers across chains + +## Wormhole Liquidity Layer + +Wormhole Liquidity Layer is a cross-chain transfer protocol that enables faster-than-finality transfers across the Wormhole ecosystem through a novel, Solana-based hub-and-spoke architecture. The hub-and-spoke model leverages interoperable token standards like Circle's CCTP (and Wormhole's NTT), allowing the solver to natively mint and burn assets between chains for intent fulfillment. This architecture allows solvers to facilitate cross-chain transfers by fronting assets on the destination chain and assuming the finality risk of the originating source chain transaction. + +Solvers concentrate their liquidity entirely on Solana, where they participate in permissionless on-chain English auctions (open ascending-price auctions where bidders publicly raise bids until only one bidder remains) to fulfill each cross-chain transfer. Upon the conclusion of each auction, the winning solver initiates a transfer from Solana to the specified destination chain. The solver rebalances inventory once the originating source chain transaction reaches finality and arrives to Solana. + +![Wormhole Settlments Liquidity layer architecture diagram: source chain to hub to destination chain](/docs/images/learn/transfers/settlement/settlement-overview.webp) + +The Wormhole Liquidity Layer serves as the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems by enabling protocols to bundle call data containing arbitrary protocol actions, which can be executed atomically alongside each transfer. This feature allows developers to create fully chain-abstracted user experiences, including constructing natively cross-chain decentralized exchanges (DEXs), borrow-lend protocols, payment protocols, and other applications atop this layer. + +### Solvers and Liquidity Fragmentation + +Traditional intent-based protocols require solvers to distribute their capital across each supported chain in the network. This liquidity fragmentation leads to capital inefficiency and requires complex rebalancing to manage asymmetric flows between chains. As the number of chains increases, solvers face scalability challenges, which can result in market concentration, reducing competition and potentially impacting price discovery in intent execution. + +Using a hub-and-spoke model, the Wormhole Liquidity Layer solves these challenges by consolidating solver liquidity on a single chain, Solana. This model eliminates the need for complex cross-chain rebalancing and simplifies solvers' infrastructure requirements. Solvers only need to consider the finality risk of the originating source chain transaction and the payload size when bidding on transfers. By concentrating liquidity on Solana, the protocol can handle large transfer volumes with a smaller capital base, enhancing capital efficiency and lowering barriers to entry for solvers. This approach promotes competition, improves overall market efficiency, and ultimately benefits users with better prices while still preserving the speed of transactions. + +### Enable Unified Liquidity + +The novel hub-and-spoke liquidity architecture relies on interoperable token standards that enable cross-chain token fungibility, such as Circle's Cross-Chain Transfer Protocol (CCTP) and Wormhole's Native Token Transfers (NTT). These protocols allow assets to move seamlessly between chains, making unified liquidity possible. On the liquidity hub (Solana), solvers concentrate their liquidity in NTT or CCTP-supported assets, such as USDC. These assets act as the shuttle between chains but may not necessarily be the user's original or final asset. + +After the Solana auction concludes, the appropriate instructions are called on the CCTP or NTT contract, initiating the transfer from Solana to the destination chain by burning/locking the asset on Solana and sequentially minting on the destination chain. Solvers rebalance their inventory on Solana using these interoperable token standards as well. Once the originating source chain transaction reaches finality and arrives to Solana, the solver can redeem the NTT or CCTP message, minting the inventory for use once again. + +By leveraging interoperable token standards like NTT, this model of liquidity facilitation for cross-chain intents can arbitrarily scale to any chain or ecosystem while preserving fully unified liquidity—eliminating the need for solver "buy-in" for new chain expansion. Additionally, this means new chains, even without proven traction, can access the same amount of liquidity for cross-chain intent fulfillment from day one of mainnet launch as they would if they were long-standing ecosystems with clear evidence of adoption — commonly overlooked by solvers who must aggressively prioritize high flow chains to due high opportunity costs. This includes new ecosystems without Centralized Exchange (CEX) enabled withdrawals. + +### Protocol Flow: How It Works + +1. **Initiation** - users or protocols initiate a transfer via an interface or directly on-chain. They choose between a standard transfer (waiting for finality on the sending chain) or a fast transfer (triggering the auction process). For fast transfers, users or the protocol specify a maximum fee and an auction start deadline + + !!! Note + If an auction doesn't start within the set deadline, a standard transfer will proceed directly from the source to the destination chain. + +2. **Auction** - solvers monitor the Wormhole network for these fast transfer requests and initiate an auction on Solana by offering to fulfill the transfer at or below the user's maximum fee. To start the auction, the solver must transfer the requested funds plus a small security deposit to the Matching Engine contract +3. **Competition** - once initiated, other solvers can participate by submitting lower bids in a simple English auction, aiming to provide users with the best rate. If a new solver submits a better offer, the previous solver's funds and security deposit are returned, with the latest offer taking precedence atomically. This competition ensures that users receive the best possible transfer rate +4. **Fulfillment** - after the auction concludes, the winning solver must complete the transfer within a predefined grace period to earn their fee and reclaim their security deposit. Failure to do so may result in the security deposit being slashed, with the slashed amount compensating the user for delays. This mechanism incentivizes prompt execution. Upon successful completion, the Fast Transfer hub sends the USDC to the user's destination wallet, and the solver receives their security deposit and transfer fee +5. **Settlement** - once the source chain transaction reaches finality, the winning solver can use the finalized Wormhole message to settle the auction with the matching engine and rebalance. This allows the solver to retrieve the original transfer amount into their wallet + +## Mayan Swift + +Mayan Swift is a flexible cross-chain intent protocol that embeds a competitive on-chain price auction to determine the best possible execution for the expressed user intent. + +### On-Chain Competitive Price Discovery Mechanism + +Traditional intent-based protocols essentially function as cross-chain limit orders. If the order is profitable, solvers will compete to fulfill it, leading to MEV-like competition focused on speed. While functional, this methodology presents two clear inefficiencies and drawbacks. + +First, they lack a competitive price discovery mechanism as limit order prices are typically determined through centralized off-chain systems. Second, in this MEV-like market structure, only a single solver can win, while the others lose out on transaction fees. This dynamic of deadweight loss results in solvers prioritizing high-margin orders, ultimately resulting in elevated fees for end-users without commensurate benefits. + +Mayan Swift addresses these limitations by implementing competitive on-chain English auctions on Solana as an embedded price discovery mechanism, fundamentally shifting solver competition from speed-based to price-based execution. Through this architecture, the solver offering the best possible price secures the right to fulfill the order within pre-specified deadline parameters. + +![Mayan Swift - Intent-centric design](/docs/images/learn/transfers/settlement/mayan-swift.webp) + +### Protocol Flow: How It Works + +1. **Initiation** - the user creates an order by signing a transaction that locks one of the primary assets (USDC or ETH) into the Mayan smart contract, specifying the desired outcome. + + !!!note + If the input asset is not a primary asset, it is converted into a primary asset within the same transaction before the order is submitted. + + Each order includes properties such as destination chain, destination wallet address, output token address, minimum output amount, gas drop amount, deadline, and 32 bytes of random hex to prevent collisions. A Keccak-256 hash is then calculated to identify the order + +2. **Auction** - solvers observe on-chain data or subscribe to the Mayan explorer web socket (solvers using the Mayan explorer verify the order's integrity by checking the data against the on-chain hash). Once the new order is verified, an on-chain auction on Solana is initiated by passing the order ID and the bid amount, which cannot be lower than the minimum amount. Other solvers can increase the bid by submitting a higher amount before the auction ends +3. **Fulfillment** - the auction ends three seconds after the initial bid. Once the auction ends, the winning solver can execute an instruction that passes their wallet address on the destination chain. This triggers a Wormhole message containing the order ID and the winner's wallet address. Wormhole Guardians then sign this message, allowing the winning solver to fulfill the order on the destination chain by submitting proof of their win and the promised amount to the Mayan contract before the deadline. The Mayan contract deducts a protocol fee (currently 3 basis points) and a referral fee (if applicable), transferring the remaining amount to the user's destination wallet. It also triggers a Wormhole message as proof of fulfillment +4. **Settlement** - after the Wormhole Guardians sign the fulfillment message, the winning solver can submit this message on the source chain to unlock the user's funds and transfer them to their own wallet. Upon fulfillment, the solver has the option to delay triggering a Wormhole message immediately. Instead, they can batch the proofs and, once the batch reaches a certain threshold, issue a batched proof to unlock all orders simultaneously, saving on gas fees + +## Mayan MCTP + +Mayan MCTP is a cross-chain intents protocol that leverages Circle's CCTP (Cross-Chain Transfer Protocol) mechanism and Wormhole messaging to enable secure, fee-managed asset transfers across chains. + +![Mayan MCTP diagram](/docs/images/learn/transfers/settlement/mayan-mctp.webp) + +### Protocol Flow: How It Works + +1. **Initiation** - the user creates an order by signing a transaction that locks one USDC into the Mayan smart contract, specifying the desired outcome. + + !!!note + If the input asset is not USDC, it is converted into a primary asset within the same transaction before the order is submitted. + + The contract constructs a `BridgeWithFeeMsg` structure, which includes parameters such as the action type, payload type, nonce, destination address, gas drop, redeem fee, and an optional custom payload hash + +2. **Intent submission** - the contract calls the CCTP messenger to deposit the tokens for bridging. A unique nonce is generated, and a corresponding fee-lock record is created in the contract's storage. This record includes the locked fee, gas drop parameters, and destination details. The constructed message is hashed and published through Wormhole. The protocol fee is deducted during this step, and the Wormhole message is broadcast with the specified consistency level +3. **Fulfillment** - on the destination chain, the protocol receives a CCTP message with corresponding signatures and verifies the payload using Wormhole's verification mechanism. Once validated, the redeemed tokens are transferred to the intended recipient, deducting the redeem fee as per protocol rules + +The protocol provides mechanisms for unlocking the fee once the bridging process is completed. This can occur immediately upon fulfillment or be batched for efficiency. In the fee unlock flow, the contract verifies the unlock message via Wormhole and then releases the locked fee to the designated unlocker address. + +## Where to Go Next + +- To learn more about available EVM functions, see the [Build on the Wormhole Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide +- To learn how ot integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/index +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement +description: Learn about Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. +--- + +# Wormhole Settlement + +## Get Started + +This section covers Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. + +
+ +- :octicons-question-16:{ .lg .middle } **Overview** + + --- + + Discover Wormhole Settlement, enabling fast, intent-based asset transfers across Ethereum, Solana, Sui, and more for institutions and builders. + + [:custom-arrow: Learn more about Wormhole Settlement](/docs/learn/transfers/settlement/overview/) + +- :octicons-question-16:{ .lg .middle } **Protocol Architectures** + + --- + + Explore Wormhole Settlement's native swap protocols—Liquidity Layer, Mayan Swift, and MCTP — for scalable, efficient cross-chain asset transfers. + + [:custom-arrow: Discover protocol architectures](/docs/learn/transfers/settlement/architecture/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/overview +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement Overview +description: Discover Wormhole Settlement, enabling fast, intent-based asset transfers across Ethereum, Solana, Sui, and more for institutions and builders. +--- + +# Wormhole Settlement Overview + +## Introduction + +Wormhole Settlement is a fast, institutional-scale digital asset settlement — a new way to transfer assets across chains. + +With Wormhole Settlement, an intent-based asset transfer for individual users and institutions, you can swap, bridge, and build across multiple chains. You can implement cross-chain functionality within your dApps extremely simply and without compromising user experience, widening the horizons of your product offerings and the number and type of users you can cater to. + +The Settlement supports Ethereum, Ton, Optimism, Arbitrum, Base, Avalanche, Unichain, Polygon, Solana, and Sui, with many more on the horizon. It is powered by Wormhole Messaging, Wormhole Native Token Transfer (NTT), and Circle's CCTP and built in collaboration with the intent experts at Mayan Finance. + +Settlement represents Wormhole's first step towards optimizing the bridging experience and building a product that users and institutions use daily. Use it to send assets between chains, rebalance institutional inventories on-chain cheaply and quickly, or allow your application to be accessible by any user no matter what assets they hold or what chain they call home. + +## Key Features + +- **Integrator flexibility** - apps leveraging the SDK can select any one of three potential routes surfaced, each with its tradeoffs concerning time vs cost; they may extend this to users as well +- **Scalable liquidity** - taking into account the sometimes idiosyncratic yet sharp inflows into the Solana ecosystem, the hub-spoke model of the Wormhole Liquidity Layer and the flexible design of Swift are designed for capital efficiency +- **Arbitrary payload support** - integrators can bundle `callData` containing arbitrary protocol actions to enable seamless one-click user experiences, such as swap plus stake + +## Integrator Paths + +### SDK Integrators + +Wormhole provides an SDK that enables apps to abstract away the complexity of cross-chain token swaps. The SDK handles route discovery, fee estimation, and transaction construction. Apps can embed this feature in their backend or create an interface for users to bridge into their respective ecosystems quickly. + +### NTT Integrators + +NTT partners, current and future, can leverage Wormhole Settlement for near-instant NTT transfers from any chain, including Ethereum mainnet and its L2s. This eliminates waiting for slow source chain confirmation times (sometimes 15 minutes or more). If interested, please [fill out this interest form](https://wormhole.com/contact){target=\_blank}. + +### Chain Integrators + +Due to the hub-spoke model of liquidity, new chains without proven traction can access the same level of liquidity for cross-chain intent fulfillment from day one of mainnet launch as established ecosystems with clear evidence of adoption. + +!!!tip + Looking to integrate Wormhole Settlement? If you're ready, check out how to [integrate Wormhole Settlement Routes using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank}. + +## Related Resources + +- To learn more about the architecture of Wormhole-native swap protocols, see the [Settlement Protocol Architectures](/docs/learn/transfers/settlement/architecture/){target=\_blank} page +--- END CONTENT --- + Doc-Content: https://wormhole.com/docs/learn/transfers/token-bridge --- BEGIN CONTENT --- --- From 7d99922e3bc4aaf0f84af660f247bc512234264d Mon Sep 17 00:00:00 2001 From: Dawn Kelly <83190195+dawnkelly09@users.noreply.github.com> Date: Thu, 13 Mar 2025 01:08:19 -0400 Subject: [PATCH 03/40] Dawn/connect index makeover (#263) * adds connect index page to new IA * tweaks admonition usage on /docs/build/transfers/connect/overview/ * moves timeline into snippet, left aligned * feedback per review * llms * edits per feedback * improve intro * edits per feedback * applies review feedback * Apply suggestions from code review Co-authored-by: Erin Shaben --------- Co-authored-by: Erin Shaben --- .../transfers/connect/connect-timeline.json | 20 +++++ build/transfers/connect/index.md | 64 ++++++-------- build/transfers/connect/overview.md | 20 ++--- llms.txt | 83 +++++++------------ 4 files changed, 82 insertions(+), 105 deletions(-) create mode 100644 .snippets/text/build/transfers/connect/connect-timeline.json diff --git a/.snippets/text/build/transfers/connect/connect-timeline.json b/.snippets/text/build/transfers/connect/connect-timeline.json new file mode 100644 index 000000000..b42a8a78c --- /dev/null +++ b/.snippets/text/build/transfers/connect/connect-timeline.json @@ -0,0 +1,20 @@ +[ + { + "title": "[Integrate Connect](/docs/build/transfers/connect/overview/#integrate-connect)", + "content": "How-to install via npm package or use hosted CDN.", + "icon": ":fontawesome-solid-1:", + "sub_title": "" + }, + { + "title": "[Configure data](/docs/build/transfers/connect/configuration/configure-data/)", + "content": "How-to specify networks, RPCs, supported tokens, and more.", + "icon": ":fontawesome-solid-2:", + "key": "cyan" + + }, + { + "title": "[Customize styling](/docs/build/transfers/connect/configuration/configure-theme/)", + "content": "How-to style your widget with color schemes, fonts, and layout options.", + "icon": ":fontawesome-solid-3:" + } +] diff --git a/build/transfers/connect/index.md b/build/transfers/connect/index.md index 2b840acb8..1ab0ae541 100644 --- a/build/transfers/connect/index.md +++ b/build/transfers/connect/index.md @@ -5,71 +5,59 @@ description: Wormhole Connect is a React widget offering an easy-to-use interfac # Wormhole Connect -## Get Started +Wormhole Connect is a customizable widget that brings wrapped and native token cross-chain asset transfers into your dApp in as few as 3 lines of code. Connect is available as a React component or hosted version via CDN so you can easily configure any application to transfer tokens via Wormhole. -Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. +## Build with Connect -
+[timeline left(wormhole-docs/.snippets/text/build/transfers/connect/connect-timeline.json)] -- :octicons-code-square-16:{ .lg .middle } **Overview** +## See It In Action - --- - - Explore Wormhole Connect, the React widget that allows you to offer an easy-to-use UI for cross-chain asset transfers via Wormhole in a web application. - - [:custom-arrow: Get started](/docs/build/transfers/connect/overview/) - -- :octicons-code-16:{ .lg .middle } **Routes** - - --- - - Explore Wormhole Connect's routing capabilities for asset transfers, featuring Token Bridge, CCTP, NTT, and various blockchain-specific routes for optimal UX. +Wormhole Connect is deployed live in several production apps. Here are a few: - [:custom-arrow: Explore routes](/docs/build/transfers/connect/routes/) +- [Portal Bridge](https://portalbridge.com/){target=\_blank} +- [Jupiter](https://jup.ag/onboard/cctp){target=\_blank} +- [Pancake Swap](https://bridge.pancakeswap.finance/wormhole){target=\_blank} -- :octicons-globe-16:{ .lg .middle } **Features** +Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} page to learn how to combine Connect with other Wormhole products, including Native Token Transfer (NTT). - --- - Learn which features of Connect are available for your network of choice. +## Next Steps - [:custom-arrow: Discover supported features](/docs/build/transfers/connect/features/) +
-- :octicons-pencil-16:{ .lg .middle } **Configuration** +- :octicons-tools-16:{ .lg .middle} **Get Started Now** --- - Configure Wormhole Connect for React or HTML, set themes, define tokens, networks, and customize RPC endpoints for enhanced blockchain interactions. + Follow this series of how-to guides to integrate Connect into your React dApp and configure options to fit your user's needs. - [:custom-arrow: Configure for customization](/docs/build/transfers/connect/configuration/) + [:custom-arrow: Get started](/docs/build/transfers/connect/overview/) -- :octicons-question-16:{ .lg .middle } **Connect FAQs** +- :octicons-tools-16:{ .lg .middle} **Supported Features by Chain** --- - Find answers to common questions about Wormhole Connect, including supported assets, chains, and integration options. + Get a more detailed look at Wormhole Connect features with a breakdown of supported features by chain. + + [:custom-arrow: Supported Features](/docs/build/transfers/connect/features/) - [:custom-arrow: Read Connect FAQs](/docs/build/transfers/connect/faqs/) +- :octicons-tools-16:{ .lg .middle } **Cross-chain Swap with Connect** -
+ --- -## Additional Resources + This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/). -
+ [:custom-arrow: Get started](/docs/tutorials/by-product/connect/react-dapp/) -- :octicons-browser-16:{ .lg .middle } **Codeless Interface** +- :octicons-tools-16:{ .lg .middle } **Connect FAQs** --- - Check out the codeless interface for an easy approach to styling and customizing a Connect widget for your multichain application. + Common questions and detailed answers about using Wormhole Connect, including supported assets, chains, customization, and integration options. - [:custom-arrow: Quickly get started](https://connect-in-style.wormhole.com/){target=\_blank} + [:custom-arrow: Visit FAQs](/docs/build/transfers/connect/faqs/) -- :octicons-browser-16:{ .lg .middle } **A Live Example** - - --- +
- View an example of the Wormhole Connect widget live in a production application. - [:custom-arrow: See Connect in action](https://portalbridge.com/){target=\_blank} -
diff --git a/build/transfers/connect/overview.md b/build/transfers/connect/overview.md index 5005a639e..21d5d64ca 100644 --- a/build/transfers/connect/overview.md +++ b/build/transfers/connect/overview.md @@ -23,14 +23,6 @@ Wormhole Connect is easy to customize to suit your application's needs. You can For more details about the features of Wormhole Connect and a breakdown of supported features by chain, be sure to check [the features page](/docs/build/transfers/connect/features/){target=\_blank}. -## Production DApp Examples {: #production-dapp-examples } - -Wormhole Connect is deployed live in several production apps. Here are a few: - -- [Portal Bridge](https://portalbridge.com/){target=\_blank} -- [Jupiter](https://jup.ag/onboard/cctp){target=\_blank} -- [Pancake Swap](https://bridge.pancakeswap.finance/wormhole){target=\_blank} - ## Integrate Connect {: #integrate-connect } ### Import Directly into a React App {: #import-directly-into-a-react-app} @@ -51,10 +43,11 @@ Now you can import the React component: If you're not using React, you can still embed Connect on your website by using the hosted version. This uses pre-built packages (which include React) served from NPM by jsdelivr.net. -???+ code "v1.x" - ```ts - --8<-- 'code/build/transfers/connect/overview/hosted.js' - ``` +```ts title="v1.x" +--8<-- 'code/build/transfers/connect/overview/hosted.js' +``` + +For help migrating from Connect v0.x to v1.x, see the [v1 Migration](/docs/build/transfers/connect/upgrade/){target=\_blank} guide. ???- code "v0.x" Simply copy and paste the following into your HTML body, and replace the ```INSERT_WORMHOLE_CONNECT_VERSION``` in the links with the most recent production version of Wormhole Connect. You can check what the most recent version is on [NPM](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/latest){target=\_blank}. @@ -69,8 +62,7 @@ If you're not using React, you can still embed Connect on your website by using --8<-- 'code/build/transfers/connect/overview/cdn-with-version.html' ``` -!!! note - It is important to periodically update your Wormhole Connect instance to the latest version, as there are frequent functionality and security releases. +It is important to periodically update your Wormhole Connect instance to the latest version, as there are frequent functionality and security releases. ## Configuration {: #configuration} diff --git a/llms.txt b/llms.txt index 95f022d46..e935689e3 100644 --- a/llms.txt +++ b/llms.txt @@ -10331,72 +10331,57 @@ description: Wormhole Connect is a React widget offering an easy-to-use interfac # Wormhole Connect -## Get Started - -Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. - -
- -- :octicons-code-square-16:{ .lg .middle } **Overview** +Wormhole Connect is a customizable widget that brings wrapped and native token cross-chain asset transfers into your dApp in as few as 3 lines of code. Connect is available as a React component or hosted version via CDN so you can easily configure any application to transfer tokens via Wormhole. - --- - - Explore Wormhole Connect, the React widget that allows you to offer an easy-to-use UI for cross-chain asset transfers via Wormhole in a web application. +## Build with Connect - [:custom-arrow: Get started](/docs/build/transfers/connect/overview/) +[timeline left(wormhole-docs/.snippets/text/build/transfers/connect/connect-timeline.json)] -- :octicons-code-16:{ .lg .middle } **Routes** - - --- +## See It In Action {: #see-it-in-action } - Explore Wormhole Connect's routing capabilities for asset transfers, featuring Token Bridge, CCTP, NTT, and various blockchain-specific routes for optimal UX. +Wormhole Connect is deployed live in several production apps. Here are a few: - [:custom-arrow: Explore routes](/docs/build/transfers/connect/routes/) +- [Portal Bridge](https://portalbridge.com/){target=\_blank} +- [Jupiter](https://jup.ag/onboard/cctp){target=\_blank} +- [Pancake Swap](https://bridge.pancakeswap.finance/wormhole){target=\_blank} -- :octicons-globe-16:{ .lg .middle } **Features** +Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} page to learn how to combine Connect with other Wormhole products, including Native Token Transfer (NTT). - --- - Learn which features of Connect are available for your network of choice. +## Next Steps - [:custom-arrow: Discover supported features](/docs/build/transfers/connect/features/) +
-- :octicons-pencil-16:{ .lg .middle } **Configuration** +- :octicons-tools-16:{ .lg .middle} **Get Started Now** --- - Configure Wormhole Connect for React or HTML, set themes, define tokens, networks, and customize RPC endpoints for enhanced blockchain interactions. + Follow this series of how-to guides to integrate Connect into your React dApp and configure options to fit your user's needs. - [:custom-arrow: Configure for customization](/docs/build/transfers/connect/configuration/) + [:custom-arrow: Get started](/docs/build/transfers/connect/overview/) -- :octicons-question-16:{ .lg .middle } **Connect FAQs** +- :octicons-tools-16:{ .lg .middle} **Supported Features by Chain** --- - Find answers to common questions about Wormhole Connect, including supported assets, chains, and integration options. - - [:custom-arrow: Read Connect FAQs](/docs/build/transfers/connect/faqs/) - -
- -## Additional Resources - -
+ Get a more detailed look at Wormhole Connect features with a breakdown of supported features by chain. + + [:custom-arrow: Supported Features](/docs/build/transfers/connect/features/) -- :octicons-browser-16:{ .lg .middle } **Codeless Interface** +- :octicons-tools-16:{ .lg .middle } **Cross-chain Swap with Connect** --- - Check out the codeless interface for an easy approach to styling and customizing a Connect widget for your multichain application. + This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/) - [:custom-arrow: Quickly get started](https://connect-in-style.wormhole.com/){target=\_blank} + [:custom-arrow: Get started](/docs/tutorials/by-product/connect/react-dapp/) -- :octicons-browser-16:{ .lg .middle } **A Live Example** +- :octicons-tools-16:{ .lg .middle } **Connect FAQs** --- - View an example of the Wormhole Connect widget live in a production application. + Common questions and detailed answers about using Wormhole Connect, including supported assets, chains, customization, and integration options. - [:custom-arrow: See Connect in action](https://portalbridge.com/){target=\_blank} + [:custom-arrow: Visit FAQ's](/docs/build/transfers/connect/faqs/)
--- END CONTENT --- @@ -10428,14 +10413,6 @@ Wormhole Connect is easy to customize to suit your application's needs. You can For more details about the features of Wormhole Connect and a breakdown of supported features by chain, be sure to check [the features page](/docs/build/transfers/connect/features/){target=\_blank}. -## Production DApp Examples {: #production-dapp-examples } - -Wormhole Connect is deployed live in several production apps. Here are a few: - -- [Portal Bridge](https://portalbridge.com/){target=\_blank} -- [Jupiter](https://jup.ag/onboard/cctp){target=\_blank} -- [Pancake Swap](https://bridge.pancakeswap.finance/wormhole){target=\_blank} - ## Integrate Connect {: #integrate-connect } ### Import Directly into a React App {: #import-directly-into-a-react-app} @@ -10460,15 +10437,16 @@ function App() { If you're not using React, you can still embed Connect on your website by using the hosted version. This uses pre-built packages (which include React) served from NPM by jsdelivr.net. -???+ code "v1.x" - ```ts - import { wormholeConnectHosted } from '@wormhole-foundation/wormhole-connect'; +```ts title="v1.x" +import { wormholeConnectHosted } from '@wormhole-foundation/wormhole-connect'; // Existing DOM element where you want to mount Connect const container = document.getElementById('bridge-container'); wormholeConnectHosted(container); - ``` +``` + +For help migrating from Connect v0.x to v1.x, see the [v1 Migration](/docs/build/transfers/connect/upgrade/){target=\_blank} guide. ???- code "v0.x" Simply copy and paste the following into your HTML body, and replace the ```INSERT_WORMHOLE_CONNECT_VERSION``` in the links with the most recent production version of Wormhole Connect. You can check what the most recent version is on [NPM](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/latest){target=\_blank}. @@ -10505,8 +10483,7 @@ wormholeConnectHosted(container); /> ``` -!!! note - It is important to periodically update your Wormhole Connect instance to the latest version, as there are frequent functionality and security releases. +It is important to periodically update your Wormhole Connect instance to the latest version, as there are frequent functionality and security releases. ## Configuration {: #configuration} From 96b7119e73ab62aa1fa47a46a1acc50a9f3e0373 Mon Sep 17 00:00:00 2001 From: Ilaria <43253244+ilariae@users.noreply.github.com> Date: Thu, 13 Mar 2025 06:35:27 +0100 Subject: [PATCH 04/40] Bring token bridge build into new ia (#279) * adds token bridge build page in the new ai and fixes links * Update build/transfers/token-bridge.md Co-authored-by: Lucas Malizia <131050418+0xlukem@users.noreply.github.com> * Update build/transfers/token-bridge.md Co-authored-by: Lucas Malizia <131050418+0xlukem@users.noreply.github.com> --------- Co-authored-by: Ilaria Enache Co-authored-by: Lucas Malizia <131050418+0xlukem@users.noreply.github.com> --- build/transfers/.pages | 2 +- build/transfers/token-bridge.md | 217 ++++++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 build/transfers/token-bridge.md diff --git a/build/transfers/.pages b/build/transfers/.pages index 6800984b7..05ffc8a56 100644 --- a/build/transfers/.pages +++ b/build/transfers/.pages @@ -4,5 +4,5 @@ nav: - connect - native-token-transfers - settlement -# TODO: Token Bridge + - 'Token Bridge': 'token-bridge.md' - 'CCTP Bridge': 'cctp.md' diff --git a/build/transfers/token-bridge.md b/build/transfers/token-bridge.md new file mode 100644 index 000000000..743c8d915 --- /dev/null +++ b/build/transfers/token-bridge.md @@ -0,0 +1,217 @@ +--- +title: Get Started with Token Bridge +description: Learn how to integrate Wormhole's Token Bridge for seamless multichain token transfers with a lock-and-mint mechanism and cross-chain asset management. +--- + +# Token Bridge + +## Introduction + +Wormhole's Token Bridge enables seamless cross-chain token transfers using a lock-and-mint mechanism. The bridge locks tokens on the source chain and mints them as wrapped assets on the destination chain. Additionally, the Token Bridge supports [contract-controlled transfers (transfers with messages)](/docs/learn/infrastructure/vaas/#token-transfer-with-message){target=\_blank}, where arbitrary byte payloads can be attached to the token transfer, enabling more complex chain interactions. + +This page outlines the core contract methods needed to integrate Token Bridge functionality into your smart contracts. To understand the theoretical workings of the Token Bridge, refer to the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} page in the Learn section. + +## Prerequisites + +To interact with the Wormhole Token Bridge, you'll need the following: + +- [The address of the Token Bridge contract](/docs/build/reference/contract-addresses/#token-bridge){target=\_blank} on the chains you're working with +- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're targeting for token transfers + +## How to Interact with Token Bridge Contracts + +The primary functions of the Token Bridge contracts revolve around: + +- **Attesting a token** - registering a new token for cross-chain transfers +- **Transferring tokens** - locking and minting tokens across chains +- **Transferring tokens with a payload** - including additional data for contract-controlled transfers + +### Attest a token + +Suppose a token has never been transferred to the target chain before transferring it cross-chain. In that case, its metadata must be registered so the Token Bridge can recognize it and create a wrapped version if necessary. + +The attestation process doesn't require you to manually input token details like name, symbol, or decimals. Instead, the Token Bridge contract retrieves these values from the token contract itself when you call the `attestToken()` method. + +```solidity +function attestToken( + address tokenAddress, + uint32 nonce +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `tokenAddress` ++"address"++ + + The contract address of the token to be attested. + + --- + + `nonce` ++"uint32"++ + + An arbitrary value provided by the caller to ensure uniqueness. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the attestation transaction. + +When `attestToken()` is called, the contract emits a Verifiable Action Approval (VAA) containing the token's metadata, which the Guardians sign and publish. + +You must ensure the token is ERC-20 compliant. If it does not implement the standard functions, the attestation may fail or produce incomplete metadata. + +### Transfer Tokens + +Once a token is attested, a cross-chain token transfer can be initiated following the lock-and-mint mechanism. On the source chain, tokens are locked (or burned if they're already a wrapped asset), and a VAA is emitted. On the destination chain, that VAA is used to mint or release the corresponding amount of wrapped tokens. + +Call `transferTokens()` to lock/burn tokens and produce a VAA with transfer details. + +```solidity +function transferTokens( + address token, + uint256 amount, + uint16 recipientChain, + bytes32 recipient, + uint256 arbiterFee, + uint32 nonce +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `token` ++"address"++ + + The address of the token being transferred. + + --- + + `amount` ++"uint256"++ + The amount of tokens to be transferred. + + --- + + `recipientChain` ++"uint16"++ + The Wormhole chain ID of the destination chain. + + --- + + `recipient` ++"bytes32"++ + The recipient's address on the destination chain. + + --- + + `arbiterFee` ++"uint256"++ + Optional fee to be paid to an arbiter for relaying the transfer. + + --- + + `nonce` ++"uint32"++ + A unique identifier for the transaction. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the transfer transaction. + +Once a transfer VAA is obtained from the Wormhole Guardian network, the final step is to redeem the tokens on the destination chain. Redemption verifies the VAA's authenticity and releases (or mints) tokens to the specified recipient. To redeem the tokens, call `completeTransfer()`. + +```solidity +function completeTransfer(bytes memory encodedVm) external; +``` + +??? interface "Parameters" + + `encodedVm` ++"bytes memory"++ + + The signed VAA containing the transfer details. + +!!!note + - The Token Bridge normalizes token amounts to 8 decimals when passing them between chains. Make sure your application accounts for potential decimal truncation + - The VAA ensures the integrity of the message. Only after the Guardians sign the VAA can it be redeemed on the destination chain + +### Transfer tokens with payload + +While a standard token transfer moves tokens between chains, a transfer with a payload allows you to embed arbitrary data in the VAA. This data can be used on the destination chain to execute additional logic—such as automatically depositing tokens into a DeFi protocol, initiating a swap on a DEX, or interacting with a custom smart contract. + +Call `transferTokensWithPayload()` instead of `transferTokens()` to include a custom payload (arbitrary bytes) with the token transfer. + +```solidity +function transferTokensWithPayload( + address token, + uint256 amount, + uint16 recipientChain, + bytes32 recipient, + uint32 nonce, + bytes memory payload +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `token` ++"address"++ + + The address of the token being transferred. + + --- + + `amount` ++"uint256"++ + The amount of tokens to be transferred. + + --- + + `recipientChain` ++"uint16"++ + The Wormhole chain ID of the destination chain. + + --- + + `recipient` ++"bytes32"++ + The recipient's address on the destination chain. + + --- + + `nonce` ++"uint32"++ + A unique identifier for the transaction. + + --- + + `payload` ++"bytes memory"++ + Arbitrary data payload attached to the transaction. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the transfer transaction. + +After initiating a transfer on the source chain, the Wormhole Guardian network observes and signs the resulting message, creating a Verifiable Action Approval (VAA). You'll need to fetch this VAA and then call `completeTransferWithPayload()`. + +Only the designated recipient contract can redeem tokens. This ensures that the intended contract securely handles the attached payload. On successful redemption, the tokens are minted (if foreign) or released (if native) to the recipient address on the destination chain. For payload transfers, the designated contract can execute the payload's logic at this time. + +```solidity +function completeTransferWithPayload(bytes memory encodedVm) external returns (bytes memory); +``` + +??? interface "Parameters" + + `encodedVm` ++"bytes memory"++ + + The signed VAA containing the transfer details. + +??? interface "Returns" + + `bytes memory` + + The extracted payload data. + +## Source Code References + +For a deeper understanding of the Token Bridge implementation and to review the actual source code, please refer to the following links: + +- [Token Bridge contract](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol){target=\_blank} +- [Token Bridge interface](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/ITokenBridge.sol){target=\_blank} + +## Portal Bridge + +A practical implementation of the Wormhole Token Bridge can be seen in [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides an easy-to-use interface for transferring tokens across multiple blockchain networks. It leverages the Wormhole infrastructure to handle cross-chain asset transfers seamlessly, offering users a convenient way to bridge their assets while ensuring security and maintaining token integrity. \ No newline at end of file From 8da2ab9ef8628028f4dbc3d9f1a3f8d4469ea123 Mon Sep 17 00:00:00 2001 From: Ilaria <43253244+ilariae@users.noreply.github.com> Date: Tue, 18 Mar 2025 15:04:26 +0100 Subject: [PATCH 05/40] Ilariae/settlement faq (#278) * settlement faq * typo fix * Update build/transfers/settlement/faqs.md Co-authored-by: Lucas Malizia <131050418+0xlukem@users.noreply.github.com> * Update build/transfers/settlement/faqs.md Co-authored-by: Lucas Malizia <131050418+0xlukem@users.noreply.github.com> * quick fix * fix * Update build/transfers/settlement/.pages Co-authored-by: Erin Shaben * typo fix * Update build/transfers/settlement/.pages Co-authored-by: Lucas Malizia <131050418+0xlukem@users.noreply.github.com> * apply feedback and llms --------- Co-authored-by: Ilaria Enache Co-authored-by: Lucas Malizia <131050418+0xlukem@users.noreply.github.com> Co-authored-by: Ilaria Enache Co-authored-by: Erin Shaben --- build/transfers/settlement/.pages | 1 + build/transfers/settlement/faqs.md | 20 ++++++++++++++++++++ llms.txt | 25 +++++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 build/transfers/settlement/faqs.md diff --git a/build/transfers/settlement/.pages b/build/transfers/settlement/.pages index 0f4313897..f4b6a88b6 100644 --- a/build/transfers/settlement/.pages +++ b/build/transfers/settlement/.pages @@ -3,3 +3,4 @@ nav: - index.md - 'Build on the Wormhole Liquidity Layer': 'liquidity-layer.md' - 'Run a Wormhole Settlement Solver': 'solver.md' + - 'FAQs': 'faqs.md' diff --git a/build/transfers/settlement/faqs.md b/build/transfers/settlement/faqs.md new file mode 100644 index 000000000..ef13f6e1a --- /dev/null +++ b/build/transfers/settlement/faqs.md @@ -0,0 +1,20 @@ +--- +title: Wormhole Settlement FAQs +description: Frequently asked questions about Wormhole Settlement, including smart contract usage, auction fallback, and message execution. +--- + +# Wormhole Settlement FAQs + +## Can I use Wormhole Settlement from a smart contract? If so, how is a message signed and relayed? + +Yes, Wormhole Settlement can be used from a smart contract. The composing protocol's relayer relays the message. For example, Mayan Shuttle (formerly Swap Layer) has a relayer that redeems the VAA on the destination chain to mint USDC and execute the `callData` contained in the payload. + +## What happens if no solver participates in the auction? + +If an auction does not start within the specified deadline, a standard CCTP transfer will proceed directly from the source chain to the destination chain. This is why parameters like `deadline` exist in the token router interface, ensuring a fallback mechanism in case no solver participates. + +## What guarantees does Wormhole Settlement provide for message execution? + +After the user receives the token upfront, the execution of additional contract calls depends on the relayer of the composing protocol. For example, in Mayan Shuttle, the relayer will attempt the swap multiple times, but its success is subject to the parameters defined in the `callData` (e.g., slippage). + +If the slippage tolerance is set too low, the user may receive USDC on the destination chain instead of the intended swap outcome. However, the four basis points (bps) fee is non-refundable, as the service provided by Liquidity Layer (LL) solvers (ensuring front-finality) is separate from the composing protocol's services, such as swaps or deposits. \ No newline at end of file diff --git a/llms.txt b/llms.txt index e935689e3..8a8716a04 100644 --- a/llms.txt +++ b/llms.txt @@ -60,6 +60,7 @@ Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deplo Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/index Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/faqs Doc-Page: https://wormhole.com/docs/build/transfers/settlement/index Doc-Page: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer Doc-Page: https://wormhole.com/docs/build/transfers/settlement/solver @@ -12513,6 +12514,30 @@ Program log: Instruction: ReleaseInboundUnlock ``` --- END CONTENT --- +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/faqs +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement FAQs +description: Frequently asked questions about Wormhole Settlement, including smart contract usage, auction fallback, and message execution. +--- + +# Wormhole Settlement FAQs + +## Can I use Wormhole Settlement from a smart contract? If so, how is a message signed and relayed? + +Yes, Wormhole Settlement can be used from a smart contract. The composing protocol's relayer relays the message. For example, Mayan Shuttle (formerly Swap Layer) has a relayer that redeems the VAA on the destination chain to mint USDC and execute the `callData` contained in the payload. + +## What happens if no solver participates in the auction? + +If an auction does not start within the specified deadline, a standard CCTP transfer will proceed directly from the source chain to the destination chain. This is why parameters like `deadline` exist in the token router interface, ensuring a fallback mechanism in case no solver participates. + +## What guarantees does Wormhole Settlement provide for message execution? + +After the user receives the token upfront, the execution of additional contract calls depends on the relayer of the composing protocol. For example, in Mayan Shuttle, the relayer will attempt the swap multiple times, but its success is subject to the parameters defined in the `callData` (e.g., slippage). + +If the slippage tolerance is set too low, the user may receive USDC on the destination chain instead of the intended swap outcome. However, the four basis points (bps) fee is non-refundable, as the service provided by Liquidity Layer (LL) solvers (ensuring front-finality) is separate from the composing protocol's services, such as swaps or deposits. +--- END CONTENT --- + Doc-Content: https://wormhole.com/docs/build/transfers/settlement/index --- BEGIN CONTENT --- --- From 2d8893ac6bf7bb75d67d42c20a421eb85fad1a86 Mon Sep 17 00:00:00 2001 From: Dawn Kelly <83190195+dawnkelly09@users.noreply.github.com> Date: Tue, 18 Mar 2025 10:05:13 -0400 Subject: [PATCH 06/40] adds content: build/core messaging/index (#281) * adds build/core-messaging/index page * grammarly and llms * Apply suggestions from code review Co-authored-by: Erin Shaben * change cross-chain to multichain, update llms * combine timelines into one * corrects timeline syntax, updates llms --------- Co-authored-by: Erin Shaben --- .../core-messaging-timeline.json | 22 ++ build/core-messaging/index.md | 35 ++- llms.txt | 261 +++++++++++++++++- 3 files changed, 314 insertions(+), 4 deletions(-) create mode 100644 .snippets/text/build/core-messaging/core-messaging-timeline.json diff --git a/.snippets/text/build/core-messaging/core-messaging-timeline.json b/.snippets/text/build/core-messaging/core-messaging-timeline.json new file mode 100644 index 000000000..e583898c3 --- /dev/null +++ b/.snippets/text/build/core-messaging/core-messaging-timeline.json @@ -0,0 +1,22 @@ +[ + { + "title": "[Send Messages](/docs/build/core-messaging/core-contracts/#sending-messages)", + "content": "How-to send messages with Core Contracts.", + "icon": ":fontawesome-solid-1:" + }, + { + "title": "[Interact with Wormhole Relayer](/docs/build/core-messaging/wormhole-relayers/#receive-a-message)", + "content": "How-to use Wormhole Relayer in your messaging workflow.", + "icon": ":fontawesome-solid-2:" + }, + { + "title": "[Receive Messages](/docs/build/core-messaging/core-contracts/#receiving-messages)", + "content": "How-to verify and parse received messages.", + "icon": ":fontawesome-solid-3:" + }, + { + "title": "[Validate the Emitter](/docs/build/core-messaging/core-contracts/#validating-the-emitter)", + "content": "How-to verify messages came from a trusted sender.", + "icon": ":fontawesome-solid-4:" + } +] \ No newline at end of file diff --git a/build/core-messaging/index.md b/build/core-messaging/index.md index 354b94376..254753fdb 100644 --- a/build/core-messaging/index.md +++ b/build/core-messaging/index.md @@ -3,4 +3,37 @@ title: Core Messaging Layer Contracts description: Learn to use Wormhole’s foundational messaging contracts to build multichain apps with direct control over publishing, verifying, relaying, and more. --- -# Core Messaging \ No newline at end of file +# Core Messaging + +Wormhole-deployed relayers and Core Contracts are essential for sending and receiving multichain messages. Learning to work directly with these building blocks offers a deeper understanding of Wormhole and increased control and customization options. + +Follow the links below for how-to guides about using Core Contracts and Wormhole-deployed relayers to send, receive, validate, and track multichain messages. + +## Simplified Message Flow + + +Wormhole-deployed relayer support is limited to EVM environments. For a complete list of supported EVM environment blockchains, see the [Supported Networks](/docs/build/start-building/supported-networks/){target=\_blank} page. + +[timeline(wormhole-docs/.snippets/text/build/core-messaging/core-messaging-timeline.json)] + +## Next Steps + +
+ +- :octicons-tools-16:{ .lg .middle} **Get Started with Core Contracts** + + --- + + Follow this series of how-to guides about interacting with Core Contracts to send, receive, and validate messages. + + [:custom-arrow: Get started](/docs/build/core-messaging/core-contracts/#prerequisites) + +- :octicons-tools-16:{ .lg .middle } **Get Started with Relayers** + + --- + + Follow this series of how-to guides about using Wormhole-deployed relayers to send, receive, and track the progress of messages. + + [:custom-arrow: Get started](/docs/build/core-messaging/wormhole-relayers/#get-started-with-the-wormhole-relayer) + +
diff --git a/llms.txt b/llms.txt index 8a8716a04..923a9580b 100644 --- a/llms.txt +++ b/llms.txt @@ -64,6 +64,7 @@ Doc-Page: https://wormhole.com/docs/build/transfers/settlement/faqs Doc-Page: https://wormhole.com/docs/build/transfers/settlement/index Doc-Page: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer Doc-Page: https://wormhole.com/docs/build/transfers/settlement/solver +Doc-Page: https://wormhole.com/docs/build/transfers/token-bridge Doc-Page: https://wormhole.com/docs/infrastructure/index Doc-Page: https://wormhole.com/docs/infrastructure/relayers/index Doc-Page: https://wormhole.com/docs/infrastructure/relayers/run-relayer @@ -555,6 +556,39 @@ description: Learn to use Wormhole’s foundational messaging contracts to build --- # Core Messaging + +Wormhole-deployed relayers and Core Contracts are essential for sending and receiving multichain messages. Learning to work directly with these building blocks offers a deeper understanding of Wormhole and increased control and customization options. + +Follow the links below for how-to guides about using Core Contracts and Wormhole-deployed relayers to send, receive, validate, and track multichain messages. + +## Simplified Message Flow + + +Wormhole-deployed relayer support is limited to EVM environments. For a complete list of supported EVM environment blockchains, see the [Supported Networks](/docs/build/start-building/supported-networks/){target=\_blank} page. + +[timeline(wormhole-docs/.snippets/text/build/core-messaging/core-messaging-timeline.json)] + +## Next Steps + +
+ +- :octicons-tools-16:{ .lg .middle} **Get Started with Core Contracts** + + --- + + Follow this series of how-to guides about interacting with Core Contracts to send, receive, and validate messages. + + [:custom-arrow: Get started](/docs/build/core-messaging/core-contracts/#prerequisites) + +- :octicons-tools-16:{ .lg .middle } **Get Started with Relayers** + + --- + + Follow this series of how-to guides about using Wormhole-deployed relayers to send, receive, and track the progress of messages. + + [:custom-arrow: Get started](/docs/build/core-messaging/wormhole-relayers/#get-started-with-the-wormhole-relayer) + +
--- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/core-messaging/wormhole-relayers @@ -10338,7 +10372,7 @@ Wormhole Connect is a customizable widget that brings wrapped and native token c [timeline left(wormhole-docs/.snippets/text/build/transfers/connect/connect-timeline.json)] -## See It In Action {: #see-it-in-action } +## See It In Action Wormhole Connect is deployed live in several production apps. Here are a few: @@ -10372,7 +10406,7 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag --- - This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/) + This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/). [:custom-arrow: Get started](/docs/tutorials/by-product/connect/react-dapp/) @@ -10382,7 +10416,7 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag Common questions and detailed answers about using Wormhole Connect, including supported assets, chains, customization, and integration options. - [:custom-arrow: Visit FAQ's](/docs/build/transfers/connect/faqs/) + [:custom-arrow: Visit FAQs](/docs/build/transfers/connect/faqs/)
--- END CONTENT --- @@ -12913,6 +12947,227 @@ This example solver does NOT do the following: - Add auctions to auction history. We recommend that after settling a complete auction (one that you have won), you write the auction pubkey to a database and have a separate process to add auction history entries to reclaim rent from these auction accounts. The auction history time delay is two hours after the VAA timestamp. This example does not prescribe any specific database, so add whichever you want --- END CONTENT --- +Doc-Content: https://wormhole.com/docs/build/transfers/token-bridge +--- BEGIN CONTENT --- +--- +title: Get Started with Token Bridge +description: Learn how to integrate Wormhole's Token Bridge for seamless multichain token transfers with a lock-and-mint mechanism and cross-chain asset management. +--- + +# Token Bridge + +## Introduction + +Wormhole's Token Bridge enables seamless cross-chain token transfers using a lock-and-mint mechanism. The bridge locks tokens on the source chain and mints them as wrapped assets on the destination chain. Additionally, the Token Bridge supports [contract-controlled transfers (transfers with messages)](/docs/learn/infrastructure/vaas/#token-transfer-with-message){target=\_blank}, where arbitrary byte payloads can be attached to the token transfer, enabling more complex chain interactions. + +This page outlines the core contract methods needed to integrate Token Bridge functionality into your smart contracts. To understand the theoretical workings of the Token Bridge, refer to the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} page in the Learn section. + +## Prerequisites + +To interact with the Wormhole Token Bridge, you'll need the following: + +- [The address of the Token Bridge contract](/docs/build/reference/contract-addresses/#token-bridge){target=\_blank} on the chains you're working with +- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're targeting for token transfers + +## How to Interact with Token Bridge Contracts + +The primary functions of the Token Bridge contracts revolve around: + +- **Attesting a token** - registering a new token for cross-chain transfers +- **Transferring tokens** - locking and minting tokens across chains +- **Transferring tokens with a payload** - including additional data for contract-controlled transfers + +### Attest a token + +Suppose a token has never been transferred to the target chain before transferring it cross-chain. In that case, its metadata must be registered so the Token Bridge can recognize it and create a wrapped version if necessary. + +The attestation process doesn't require you to manually input token details like name, symbol, or decimals. Instead, the Token Bridge contract retrieves these values from the token contract itself when you call the `attestToken()` method. + +```solidity +function attestToken( + address tokenAddress, + uint32 nonce +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `tokenAddress` ++"address"++ + + The contract address of the token to be attested. + + --- + + `nonce` ++"uint32"++ + + An arbitrary value provided by the caller to ensure uniqueness. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the attestation transaction. + +When `attestToken()` is called, the contract emits a Verifiable Action Approval (VAA) containing the token's metadata, which the Guardians sign and publish. + +You must ensure the token is ERC-20 compliant. If it does not implement the standard functions, the attestation may fail or produce incomplete metadata. + +### Transfer Tokens + +Once a token is attested, a cross-chain token transfer can be initiated following the lock-and-mint mechanism. On the source chain, tokens are locked (or burned if they're already a wrapped asset), and a VAA is emitted. On the destination chain, that VAA is used to mint or release the corresponding amount of wrapped tokens. + +Call `transferTokens()` to lock/burn tokens and produce a VAA with transfer details. + +```solidity +function transferTokens( + address token, + uint256 amount, + uint16 recipientChain, + bytes32 recipient, + uint256 arbiterFee, + uint32 nonce +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `token` ++"address"++ + + The address of the token being transferred. + + --- + + `amount` ++"uint256"++ + The amount of tokens to be transferred. + + --- + + `recipientChain` ++"uint16"++ + The Wormhole chain ID of the destination chain. + + --- + + `recipient` ++"bytes32"++ + The recipient's address on the destination chain. + + --- + + `arbiterFee` ++"uint256"++ + Optional fee to be paid to an arbiter for relaying the transfer. + + --- + + `nonce` ++"uint32"++ + A unique identifier for the transaction. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the transfer transaction. + +Once a transfer VAA is obtained from the Wormhole Guardian network, the final step is to redeem the tokens on the destination chain. Redemption verifies the VAA's authenticity and releases (or mints) tokens to the specified recipient. To redeem the tokens, call `completeTransfer()`. + +```solidity +function completeTransfer(bytes memory encodedVm) external; +``` + +??? interface "Parameters" + + `encodedVm` ++"bytes memory"++ + + The signed VAA containing the transfer details. + +!!!note + - The Token Bridge normalizes token amounts to 8 decimals when passing them between chains. Make sure your application accounts for potential decimal truncation + - The VAA ensures the integrity of the message. Only after the Guardians sign the VAA can it be redeemed on the destination chain + +### Transfer tokens with payload + +While a standard token transfer moves tokens between chains, a transfer with a payload allows you to embed arbitrary data in the VAA. This data can be used on the destination chain to execute additional logic—such as automatically depositing tokens into a DeFi protocol, initiating a swap on a DEX, or interacting with a custom smart contract. + +Call `transferTokensWithPayload()` instead of `transferTokens()` to include a custom payload (arbitrary bytes) with the token transfer. + +```solidity +function transferTokensWithPayload( + address token, + uint256 amount, + uint16 recipientChain, + bytes32 recipient, + uint32 nonce, + bytes memory payload +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `token` ++"address"++ + + The address of the token being transferred. + + --- + + `amount` ++"uint256"++ + The amount of tokens to be transferred. + + --- + + `recipientChain` ++"uint16"++ + The Wormhole chain ID of the destination chain. + + --- + + `recipient` ++"bytes32"++ + The recipient's address on the destination chain. + + --- + + `nonce` ++"uint32"++ + A unique identifier for the transaction. + + --- + + `payload` ++"bytes memory"++ + Arbitrary data payload attached to the transaction. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the transfer transaction. + +After initiating a transfer on the source chain, the Wormhole Guardian network observes and signs the resulting message, creating a Verifiable Action Approval (VAA). You'll need to fetch this VAA and then call `completeTransferWithPayload()`. + +Only the designated recipient contract can redeem tokens. This ensures that the intended contract securely handles the attached payload. On successful redemption, the tokens are minted (if foreign) or released (if native) to the recipient address on the destination chain. For payload transfers, the designated contract can execute the payload's logic at this time. + +```solidity +function completeTransferWithPayload(bytes memory encodedVm) external returns (bytes memory); +``` + +??? interface "Parameters" + + `encodedVm` ++"bytes memory"++ + + The signed VAA containing the transfer details. + +??? interface "Returns" + + `bytes memory` + + The extracted payload data. + +## Source Code References + +For a deeper understanding of the Token Bridge implementation and to review the actual source code, please refer to the following links: + +- [Token Bridge contract](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol){target=\_blank} +- [Token Bridge interface](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/ITokenBridge.sol){target=\_blank} + +## Portal Bridge + +A practical implementation of the Wormhole Token Bridge can be seen in [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides an easy-to-use interface for transferring tokens across multiple blockchain networks. It leverages the Wormhole infrastructure to handle cross-chain asset transfers seamlessly, offering users a convenient way to bridge their assets while ensuring security and maintaining token integrity. +--- END CONTENT --- + Doc-Content: https://wormhole.com/docs/infrastructure/index --- BEGIN CONTENT --- --- From dae1fe6cd1ec4c311f19dc9dbc90b058c20541e6 Mon Sep 17 00:00:00 2001 From: Erin Shaben Date: Tue, 18 Mar 2025 10:15:37 -0400 Subject: [PATCH 07/40] merge the latest from main into new-product-ia (#295) Co-authored-by: Ilaria Enache --- .github/workflows/check-llms.yml | 1 + .github/workflows/check-mkdocs-build.yml | 2 +- .../build/reference/chain-ids/chain-ids.md | 4 +- .../consistency-levels/consistency-levels.md | 2 +- .../contract-addresses/core-contracts.md | 4 +- .../reference/contract-addresses/read-only.md | 2 +- .../reference/contract-addresses/relayer.md | 2 +- .../contract-addresses/token-bridge.md | 4 +- .../testnet-faucets/testnet-faucets.md | 2 +- .snippets/text/supported-networks.md | 9 +- build/core-messaging/wormhole-relayers.md | 3 + build/multigov/.pages | 6 +- .../{deployment.md => deploy-to-evm.md} | 9 +- build/multigov/deploy-to-solana.md | 185 ++ build/multigov/index.md | 26 +- build/multigov/{upgrade.md => upgrade-evm.md} | 8 +- build/multigov/upgrade-solana.md | 67 + build/reference/index.md | 6 +- build/start-building/.pages | 3 +- build/start-building/products.md | 55 + build/start-building/use-cases.md | 278 +++ .../deployment-process/.pages | 1 + .../deployment-process/evm-launchpad.md | 179 ++ .../deployment-process/index.md | 8 + .../evm-launchpad/ntt-launchpad-1.webp | Bin 0 -> 130096 bytes .../evm-launchpad/ntt-launchpad-10.webp | Bin 0 -> 129910 bytes .../evm-launchpad/ntt-launchpad-11.webp | Bin 0 -> 147510 bytes .../evm-launchpad/ntt-launchpad-12.webp | Bin 0 -> 71580 bytes .../evm-launchpad/ntt-launchpad-13.webp | Bin 0 -> 63578 bytes .../evm-launchpad/ntt-launchpad-14.webp | Bin 0 -> 24666 bytes .../evm-launchpad/ntt-launchpad-15.webp | Bin 0 -> 53708 bytes .../evm-launchpad/ntt-launchpad-2.webp | Bin 0 -> 189710 bytes .../evm-launchpad/ntt-launchpad-3.webp | Bin 0 -> 99032 bytes .../evm-launchpad/ntt-launchpad-4.webp | Bin 0 -> 104526 bytes .../evm-launchpad/ntt-launchpad-5.webp | Bin 0 -> 61628 bytes .../evm-launchpad/ntt-launchpad-6.webp | Bin 0 -> 92514 bytes .../evm-launchpad/ntt-launchpad-7.webp | Bin 0 -> 189352 bytes .../evm-launchpad/ntt-launchpad-8.webp | Bin 0 -> 139722 bytes .../evm-launchpad/ntt-launchpad-9.webp | Bin 0 -> 70270 bytes .../architecture-1.webp} | Bin .../architecture-2.webp} | Bin .../architecture-3.webp} | Bin infrastructure/relayers/index.md | 2 +- infrastructure/spy/index.md | 4 +- learn/governance/architecture.md | 93 +- learn/governance/index.md | 2 +- learn/transfers/index.md | 8 + learn/transfers/settlement/.pages | 2 +- learn/transfers/settlement/architecture.md | 10 +- llms.txt | 1696 ++++++++++++++--- scripts/generate_llms.py | 138 +- tutorials/by-product/.pages | 1 + tutorials/by-product/settlements/.index.md | 20 + tutorials/by-product/settlements/.pages | 5 + .../settlements/.settlement-routes.md | 156 ++ variables.yml | 5 +- 56 files changed, 2603 insertions(+), 405 deletions(-) rename build/multigov/{deployment.md => deploy-to-evm.md} (94%) create mode 100644 build/multigov/deploy-to-solana.md rename build/multigov/{upgrade.md => upgrade-evm.md} (88%) create mode 100644 build/multigov/upgrade-solana.md create mode 100644 build/start-building/products.md create mode 100644 build/start-building/use-cases.md create mode 100644 build/transfers/native-token-transfers/deployment-process/evm-launchpad.md create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-10.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-11.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-12.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-13.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-14.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-15.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-2.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-3.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-4.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-7.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-8.webp create mode 100644 images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-9.webp rename images/learn/transfers/settlement/{settlement-overview.webp => architecture/architecture-1.webp} (100%) rename images/learn/transfers/settlement/{mayan-swift.webp => architecture/architecture-2.webp} (100%) rename images/learn/transfers/settlement/{mayan-mctp.webp => architecture/architecture-3.webp} (100%) create mode 100644 tutorials/by-product/settlements/.index.md create mode 100644 tutorials/by-product/settlements/.pages create mode 100644 tutorials/by-product/settlements/.settlement-routes.md diff --git a/.github/workflows/check-llms.yml b/.github/workflows/check-llms.yml index 6d5dc7fb6..8744cd40f 100644 --- a/.github/workflows/check-llms.yml +++ b/.github/workflows/check-llms.yml @@ -21,6 +21,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip + pip install pyyaml requests - name: Get SHA256 hash of the PR's llms.txt file id: pr_llms_hash diff --git a/.github/workflows/check-mkdocs-build.yml b/.github/workflows/check-mkdocs-build.yml index b6a437588..20a5557b6 100644 --- a/.github/workflows/check-mkdocs-build.yml +++ b/.github/workflows/check-mkdocs-build.yml @@ -7,7 +7,7 @@ on: jobs: build-docs-site: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v5 diff --git a/.snippets/text/build/reference/chain-ids/chain-ids.md b/.snippets/text/build/reference/chain-ids/chain-ids.md index fa23b63fe..02a96ddb2 100644 --- a/.snippets/text/build/reference/chain-ids/chain-ids.md +++ b/.snippets/text/build/reference/chain-ids/chain-ids.md @@ -3,10 +3,10 @@ === "Mainnet" -
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Hyperliquid50000998
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Monad48
Moonbeam161284
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Rootstock3330
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
+
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Monad48
Moonbeam161284
Movement49
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
=== "Testnet" -
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Hyperliquid50000
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Rootstock3331
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
+
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
Movement49250
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
\ No newline at end of file diff --git a/.snippets/text/build/reference/consistency-levels/consistency-levels.md b/.snippets/text/build/reference/consistency-levels/consistency-levels.md index 19f1ac417..533ede24f 100644 --- a/.snippets/text/build/reference/consistency-levels/consistency-levels.md +++ b/.snippets/text/build/reference/consistency-levels/consistency-levels.md @@ -1,4 +1,4 @@ -
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 1095sDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 1066sDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 1026s
Blast200201finalized~ 1026s
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 1026s
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 1026s
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 903s
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 1025s
World Chain0~ 1026s
X Layer200201finalized~ 903s
XPLA0~ 5s
+
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 19minDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 18minDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 18min
Berachain200finalized~ 4s
Blast200201finalized~ 18min
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Ink0~ 9min
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 18min
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
Movement0~ 4s
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 18min
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 16min
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 18min
World Chain0~ 18min
X Layer200201finalized~ 16min
XPLA0~ 5s
diff --git a/.snippets/text/build/reference/contract-addresses/core-contracts.md b/.snippets/text/build/reference/contract-addresses/core-contracts.md index 5dbff3fb6..13c751b7b 100644 --- a/.snippets/text/build/reference/contract-addresses/core-contracts.md +++ b/.snippets/text/build/reference/contract-addresses/core-contracts.md @@ -3,11 +3,11 @@ === "Mainnet" -
Chain NameContract Address
Ethereum0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Solanaworm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
Acala0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Algorand842125965
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum0xa5f208e072434bC67592E4C49C1B991BA79BCA46
Avalanche0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c
Base0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Berachain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Blast0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
BNB Smart Chain0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Celo0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Fantom0x126783A6Cb203a3E35344528B26ca3a0489a1485
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Injectiveinj17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9l2q74d
Kaia0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7
Karura0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Mantle0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Moonbeam0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3
NEARcontract.wormhole_crypto.near
Neutronneutron16rerygcpahqcxx5t8vjla46ym8ccn7xz7rtc6ju5ujcd36cmc7zs9zrunh
Oasis0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
Optimism0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722
Polygon0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7
PythnetH3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Scroll0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Seisei1gjrrme22cyha4ht2xapn3f08zzw6z3d4uxx6fyy9zd5dyr3yxgzqqncdqn
SNAXchain0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4
Sui0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c
Terraterra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5
Terra 2.0terra12mrnzvhx3rpej6843uge2yyfppfyd3u9c3uq223q8sl48huz9juqffcnhp
Unichain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
World Chain0xcbcEe4e081464A15d8Ad5f58BB493954421eB506
X Layer0x194B123c5E96B9b2E49763619985790Dc241CAC0
XPLAxpla1jn8qmdda5m6f6fqu9qv46rt7ajhklg40ukpqchkejcvy8x7w26cqxamv3w
+
Chain NameContract Address
Ethereum0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Solanaworm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
Acala0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Algorand842125965
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum0xa5f208e072434bC67592E4C49C1B991BA79BCA46
Avalanche0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c
Base0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Berachain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Blast0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
BNB Smart Chain0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Celo0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Fantom0x126783A6Cb203a3E35344528B26ca3a0489a1485
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Injectiveinj17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9l2q74d
Ink0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Kaia0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7
Karura0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Mantle0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Moonbeam0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3
NEARcontract.wormhole_crypto.near
Neutronneutron16rerygcpahqcxx5t8vjla46ym8ccn7xz7rtc6ju5ujcd36cmc7zs9zrunh
Oasis0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
Optimism0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722
Polygon0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7
PythnetH3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU
Scroll0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Seisei1gjrrme22cyha4ht2xapn3f08zzw6z3d4uxx6fyy9zd5dyr3yxgzqqncdqn
SNAXchain0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4
Sui0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c
Terraterra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5
Terra 2.0terra12mrnzvhx3rpej6843uge2yyfppfyd3u9c3uq223q8sl48huz9juqffcnhp
Unichain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
World Chain0xcbcEe4e081464A15d8Ad5f58BB493954421eB506
X Layer0x194B123c5E96B9b2E49763619985790Dc241CAC0
XPLAxpla1jn8qmdda5m6f6fqu9qv46rt7ajhklg40ukpqchkejcvy8x7w26cqxamv3w
=== "Testnet" -
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
+
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
Movement0xa7b37796439f725373fe4835793cd2eed7a1db639bbb220c72be8904ec5e2a7a
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
=== "Devnet" diff --git a/.snippets/text/build/reference/contract-addresses/read-only.md b/.snippets/text/build/reference/contract-addresses/read-only.md index fa96f6902..2474edada 100644 --- a/.snippets/text/build/reference/contract-addresses/read-only.md +++ b/.snippets/text/build/reference/contract-addresses/read-only.md @@ -1,3 +1,3 @@ === "Mainnet" -
Chain NameContract Address
Corn0xa683c66045ad16abb1bCE5ad46A64d95f9A25785
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Sonic0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Telos0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
\ No newline at end of file +
Chain NameContract Address
Corn0xa683c66045ad16abb1bCE5ad46A64d95f9A25785
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Goat0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
LightLink0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Sonic0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Telos0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
\ No newline at end of file diff --git a/.snippets/text/build/reference/contract-addresses/relayer.md b/.snippets/text/build/reference/contract-addresses/relayer.md index 5a4d2e7c8..b2aed7018 100644 --- a/.snippets/text/build/reference/contract-addresses/relayer.md +++ b/.snippets/text/build/reference/contract-addresses/relayer.md @@ -7,7 +7,7 @@ === "Testnet" -
Chain NameContract Address
Ethereum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Arbitrum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Avalanche0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB
Base Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Berachain0x362fca37E45fe1096b42021b543f462D49a5C8df
BNB Smart Chain0x80aC94316391752A193C1c47E27D382b507c93F3
Celo0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84
Fantom0x9563a59c15842a6f322b10f69d1dd88b41f2e97b
Ink0x362fca37E45fe1096b42021b543f462D49a5C8df
Monad0x362fca37E45fe1096b42021b543f462D49a5C8df
Moonbeam0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0
Optimism Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Seievm0x362fca37E45fe1096b42021b543f462D49a5C8df
Unichain0x362fca37E45fe1096b42021b543f462D49a5C8df
+
Chain NameContract Address
Ethereum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Arbitrum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Avalanche0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB
Base Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Berachain0x362fca37E45fe1096b42021b543f462D49a5C8df
BNB Smart Chain0x80aC94316391752A193C1c47E27D382b507c93F3
Celo0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84
Fantom0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Ink0x362fca37E45fe1096b42021b543f462D49a5C8df
Monad0x362fca37E45fe1096b42021b543f462D49a5C8df
Moonbeam0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0
Optimism Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Seievm0x362fca37E45fe1096b42021b543f462D49a5C8df
Unichain0x362fca37E45fe1096b42021b543f462D49a5C8df
=== "Devnet" diff --git a/.snippets/text/build/reference/contract-addresses/token-bridge.md b/.snippets/text/build/reference/contract-addresses/token-bridge.md index 8541295d0..efe2b1dc4 100644 --- a/.snippets/text/build/reference/contract-addresses/token-bridge.md +++ b/.snippets/text/build/reference/contract-addresses/token-bridge.md @@ -3,11 +3,11 @@ === "Mainnet" -
Chain NameContract Address
Ethereum0x3ee18B2214AFF97000D974cf647E7C347E8fa585
SolanawormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
Acala0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Algorand842126029
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum0x0b2402144Bb366A632D14B83F244D2e0e21bD39c
Avalanche0x0e082F06FF657D94310cB8cE8B0D9a04541d8052
Base0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627
Berachain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Blast0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
BNB Smart Chain0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7
Celo0x796Dff6D74F3E27060B71255Fe517BFb23C93eed
Fantom0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
Injectiveinj1ghd753shjuwexxywmgs4xz7x2q732vcnxxynfn
Kaia0x5b08ac39EAED75c0439FC750d9FE7E1F9dD0193F
Karura0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Mantle0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Moonbeam0xb1731c586ca89a23809861c6103f0b96b3f57d92
NEARcontract.portalbridge.near
Oasis0x5848C791e09901b40A9Ef749f2a6735b418d7564
Optimism0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b
Polygon0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE
Scroll0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Seisei1smzlm9t79kur392nu9egl8p8je9j92q4gzguewj56a05kyxxra0qy0nuf3
SNAXchain0x8B94bfE456B48a6025b92E11Be393BAa86e68410
Sui0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9
Terraterra10nmmwe8r3g99a9newtqa7a75xfgs2e8z87r2sf
Terra 2.0terra153366q50k7t8nn7gec00hg66crnhkdggpgdtaxltaq6xrutkkz3s992fw9
Unichain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
World Chain0xc309275443519adca74c9136b02A38eF96E3a1f6
X Layer0x5537857664B0f9eFe38C9f320F75fEf23234D904
XPLAxpla137w0wfch2dfmz7jl2ap8pcmswasj8kg06ay4dtjzw7tzkn77ufxqfw7acv
+
Chain NameContract Address
Ethereum0x3ee18B2214AFF97000D974cf647E7C347E8fa585
SolanawormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
Acala0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Algorand842126029
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum0x0b2402144Bb366A632D14B83F244D2e0e21bD39c
Avalanche0x0e082F06FF657D94310cB8cE8B0D9a04541d8052
Base0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627
Berachain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Blast0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
BNB Smart Chain0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7
Celo0x796Dff6D74F3E27060B71255Fe517BFb23C93eed
Fantom0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
Injectiveinj1ghd753shjuwexxywmgs4xz7x2q732vcnxxynfn
Ink0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Kaia0x5b08ac39EAED75c0439FC750d9FE7E1F9dD0193F
Karura0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Mantle0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Moonbeam0xb1731c586ca89a23809861c6103f0b96b3f57d92
NEARcontract.portalbridge.near
Oasis0x5848C791e09901b40A9Ef749f2a6735b418d7564
Optimism0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b
Polygon0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE
Scroll0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Seisei1smzlm9t79kur392nu9egl8p8je9j92q4gzguewj56a05kyxxra0qy0nuf3
SNAXchain0x8B94bfE456B48a6025b92E11Be393BAa86e68410
Sui0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9
Terraterra10nmmwe8r3g99a9newtqa7a75xfgs2e8z87r2sf
Terra 2.0terra153366q50k7t8nn7gec00hg66crnhkdggpgdtaxltaq6xrutkkz3s992fw9
Unichain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
World Chain0xc309275443519adca74c9136b02A38eF96E3a1f6
X Layer0x5537857664B0f9eFe38C9f320F75fEf23234D904
XPLAxpla137w0wfch2dfmz7jl2ap8pcmswasj8kg06ay4dtjzw7tzkn77ufxqfw7acv
=== "Testnet" -
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
+
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
Movement0xda075f9cb681e291c17e65562bdd6d4196c7d2f86da1aa3917f2809ff8edb03d
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
=== "Devnet" diff --git a/.snippets/text/build/start-building/testnet-faucets/testnet-faucets.md b/.snippets/text/build/start-building/testnet-faucets/testnet-faucets.md index f993db5b4..16df2992a 100644 --- a/.snippets/text/build/start-building/testnet-faucets/testnet-faucets.md +++ b/.snippets/text/build/start-building/testnet-faucets/testnet-faucets.md @@ -5,7 +5,7 @@ ### EVM -
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
HyperliquidEVMHYPEHyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
RootstockEVMRBTCOfficial Rootstock Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
+
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
### SVM diff --git a/.snippets/text/supported-networks.md b/.snippets/text/supported-networks.md index 3beb0a8b4..4065c288a 100644 --- a/.snippets/text/supported-networks.md +++ b/.snippets/text/supported-networks.md @@ -39,7 +39,7 @@ :material-file-document:
Developer Docs
:octicons-package-16: Block ExplorerHyperEVMEVM:x::white_check_mark: :material-web: Website
- :material-file-document: Developer Docs
InkEVM:x::white_check_mark: + :material-file-document: Developer Docs
InkEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerKaiaEVM:white_check_mark::white_check_mark: @@ -70,10 +70,7 @@ :octicons-package-16: Block ExplorerPolygonEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerRootstockEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerScrollEVM:white_check_mark::white_check_mark: + :octicons-package-16: Block ExplorerScrollEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerSeievmEVM:x::white_check_mark:SNAXchainEVM:white_check_mark::white_check_mark: @@ -137,7 +134,7 @@
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+ :octicons-package-16: Block ExplorerMovementMove VM:x::white_check_mark: ### NEAR VM diff --git a/build/core-messaging/wormhole-relayers.md b/build/core-messaging/wormhole-relayers.md index 552139133..1d6131ff9 100644 --- a/build/core-messaging/wormhole-relayers.md +++ b/build/core-messaging/wormhole-relayers.md @@ -54,6 +54,9 @@ To send a message to a contract on another EVM chain, you can call the `sendPayl --8<-- 'code/build/core-messaging/wormhole-relayers/sendPayloadToEvm.sol' ``` +!!! tip + To reduce transaction confirmation time, you can lower the consistency level using the [`sendToEvm`](https://github.com/wormhole-foundation/wormhole/blob/{{repositories.wormhole.version}}/sdk/js/src/relayer/relayer/send.ts#L33){target=\_blank} method. + The `sendPayloadToEvm` method is marked `payable` to receive fee payment for the transaction. The value to attach to the invocation is determined by calling the `quoteEVMDeliveryPrice`, which provides an estimate of the cost of gas on the target chain. ```solidity diff --git a/build/multigov/.pages b/build/multigov/.pages index dd1c96254..75c31b781 100644 --- a/build/multigov/.pages +++ b/build/multigov/.pages @@ -1,6 +1,8 @@ title: Multichain Governance (MultiGov) nav: - index.md - - 'Deployment': 'deployment.md' - - 'Upgrade Contracts': 'upgrade.md' + - 'Deploy to EVM': 'deploy-to-evm.md' + - 'Deploy to Solana': 'deploy-to-solana.md' + - 'Upgrade Contracts on EVM': 'upgrade-evm.md' + - 'Upgrade Contracts on Solana': 'upgrade-solana.md' - 'Technical FAQs': 'faq.md' diff --git a/build/multigov/deployment.md b/build/multigov/deploy-to-evm.md similarity index 94% rename from build/multigov/deployment.md rename to build/multigov/deploy-to-evm.md index 1d60502c6..181008c05 100644 --- a/build/multigov/deployment.md +++ b/build/multigov/deploy-to-evm.md @@ -1,9 +1,9 @@ --- -title: MultiGov Deployment -description: Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. +title: MultiGov Deployment to EVM +description: Set up and deploy MultiGov to EVM locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. --- -# Deployment +# Deploy MultiGov on EVM This guide provodes instructions to set up and deploy the MultiGov governance system locally. Before diving into the technical deployment, ensure that MultiGov is the right fit for your project’s governance needs by following the steps for the [integration process](/docs/build/multigov/){target=\_blank}. @@ -17,7 +17,7 @@ To interact with MultiGov, you'll need the following: - Install [Git](https://git-scm.com/downloads){target=\_blank} - Clone the repository: ```bash - git clone [MultiGov Repository URL] + git clone https://github.com/wormhole-foundation/multigov cd evm # for evm testing/deploying ``` @@ -34,6 +34,7 @@ For developers looking to set up a local MultiGov environment: ```bash cp .env.example .env ``` + Edit `.env` with your specific [configuration](/docs/build/multigov/deployment/#configuration){target=\_blank} 3. Compile contracts: diff --git a/build/multigov/deploy-to-solana.md b/build/multigov/deploy-to-solana.md new file mode 100644 index 000000000..f7bc8114d --- /dev/null +++ b/build/multigov/deploy-to-solana.md @@ -0,0 +1,185 @@ +--- +title: MultiGov Deployment to Solana +description: Learn how to deploy the MultiGov Staking Program on Solana, including setup, funding, deployment, and configuration steps. +--- + +# Deploy MultiGov on Solana + +This guide provides instructions on how to set up and deploy the **MultiGov Staking Program** on Solana. Before proceeding with the deployment, ensure that MultiGov aligns with your project's governance needs by reviewing the system [architecture](/docs/learn/governance/architecture/){target=\_blank}. + +Once your project setup is complete, follow this guide to configure, compile, and deploy the necessary Solana programs and supporting accounts. This deployment enables decentralized governance participation on Solana as a spoke chain within the MultiGov system. + +## Prerequisites + +To deploy MultiGov on Solana, ensure you have the following installed: + + - Install [Git](https://git-scm.com/downloads){target=\_blank} + - Install [Node.js](https://nodejs.org/){target=\_blank} **`v20.10.0`** + - Install [Solana CLI](https://docs.anza.xyz/cli/install/){target=\_blank} **`v1.18.20`** + - Install [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`v0.30.1`** + - Install [Rust](https://www.rust-lang.org/tools/install){target=\_blank} **`v1.80.1`** + - Install [Docker](https://www.docker.com/get-started/){target=\_blank} + - Clone the repository: + ```bash + git clone https://github.com/wormhole-foundation/multigov.git + cd multigov/solana/ + ``` + +## Build the Project + +To create a verifiable build of the MultiGov Staking Program, run the following command: + +```bash +./scripts/build_verifiable_staking_program.sh +``` + +Once the build is complete, the compiled artifacts will be available in the `target` folder. + +## Set Up the Deployer Account + +For a successful deployment, you need a funded deployer account on Solana. This account will store the program and execute deployment transactions. + +In this section, you will create a new keypair, check the account balance, and ensure it has enough SOL tokens to cover deployment costs. If needed, you can fund the account using different methods before deploying. + +### Generate a New Keypair + +To create a new keypair and save it to a file, run the following command: + +```bash +solana-keygen new --outfile ./app/keypairs/deployer.json +``` + +### Check the Deployer Account Address + +To retrieve the public address of the newly created keypair, run the following command: + +```bash +solana address -k ./app/keypairs/deployer.json +``` + +### Check the Deployer Account Balance + +To verify the current balance of the deployer account, run the following command: + +```bash +solana balance -k ./app/keypairs/deployer.json +``` + +!!! important + When deploying the MultiGov Staking Program, the deployer account must have enough SOL to cover deployment costs and transaction fees. + + - 7.60219224 SOL for deployment costs + - 0.00542 SOL for transaction fees + +### Fund the Deployer Account + +If the account does not have enough SOL, use one of the following methods to add funds. + + - **Transfer SOL from another account** - if you already have SOL in another account, transfer it using a wallet (Phantom, Solflare, etc.) or in the terminal + + ```bash + solana transfer --from /path/to/funder.json + ``` + + - **Request an airdrop (devnet only)** - if deploying to devnet, you can request free SOL + + ```bash + solana airdrop 2 -k ./app/keypairs/deployer.json + ``` + + - **Use a Solana faucet (devnet only)** - you can use online faucets to receive 10 free SOL + + - [Solana Faucet](https://faucet.solana.com/){target=\_blank} + +## Deploy the MultiGov Staking Program + +With the deployer account set up and funded, you can deploy the MultiGov Staking Program to the Solana blockchain. This step involves deploying the program, verifying the deployment, and ensuring the necessary storage and metadata are correctly configured. Once the IDL is initialized, the program will be ready for further setup and interaction. + +### Deploy the Program + +Deploy the MultiGov Staking Program using **Anchor**: + +```bash +anchor deploy --provider.cluster https://api.devnet.solana.com --provider.wallet ./app/keypairs/deployer.json +``` + +### Verify the Deployment + +After deployment, check if the program is successfully deployed by running the following command: + +```bash +solana program show INSERT_PROGRAM_ID +``` + +### Extend Program Storage + +If the deployed program requires additional storage space for updates or functionality, extend the program storage using the following command: + +```bash +solana program extend INSERT_PROGRAM_ID 800000 +``` + +### Initialize the IDL + +To associate an IDL file with the deployed program, run the following command: + +```bash +anchor idl init --provider.cluster https://api.devnet.solana.com --filepath ./target/idl/staking.json INSERT_PROGRAM_ID +``` + +## Configure the Staking Program + +The final step after deploying the MultiGov Staking Program is configuring it for proper operation. This includes running a series of deployment scripts to initialize key components and set important governance parameters. These steps ensure that staking, governance, and cross-chain communication function as expected. + +### Run Deployment Scripts + +After deploying the program and initializing the IDL, execute the following scripts **in order** to set up the staking environment and necessary accounts. + +1. Initialize the MultiGov Staking Program with default settings: + + ```bash + npx ts-node app/deploy/01_init_staking.ts + ``` + +2. Create an Account Lookup Table (ALT) to optimize transaction processing: + + ```bash + npx ts-node app/deploy/02_create_account_lookup_table.ts + ``` + +3. Set up airlock accounts: + + ```bash + npx ts-node app/deploy/03_create_airlock.ts + ``` + +4. Deploy a metadata collector: + + ```bash + npx ts-node app/deploy/04_create_spoke_metadata_collector.ts + ``` + +5. Configure vote weight window lengths: + + ```bash + npx ts-node app/deploy/05_initializeVoteWeightWindowLengths.ts + ``` + +6. Deploy the message executor for handling governance messages: + + ```bash + npx ts-node app/deploy/06_create_message_executor.ts + ``` + +### Set MultiGov Staking Program Key Parameters + +When deploying MultiGov on Solana, several key parameters need to be set. Here are the most important configuration points: + + - `maxCheckpointsAccountLimit` ++"u64"++ - the maximum number of checkpoints an account can have. For example, `654998` is used in production, while `15` might be used for testing + - `hubChainId` `u16` - the chain ID of the hub network where proposals are primarily managed. For example, `10002` for Sepolia testnet + - `hubProposalMetadata` ++"[u8; 20]"++ - an array of bytes representing the address of the Hub Proposal Metadata contract on Ethereum. This is used to identify proposals from the hub + - `voteWeightWindowLength` ++"u64"++ - specifies the length of the checkpoint window in seconds in which the minimum voting weight is taken. The window ends at the vote start for a proposal and begins at the vote start minus the vote weight window. The vote weight window helps solve problems such as manipulating votes in a chain + - `votingTokenMint` ++"Pubkey"++ - the mint address of the token used for voting + - `governanceAuthority` ++"Pubkey"++ - the account's public key with the authority to govern the staking system. The `governanceAuthority` should not be the default Pubkey, as this would indicate an uninitialized or incorrectly configured setup + - `vestingAdmin` ++"Pubkey"++ - the account's public key for managing vesting operations. The `vestingAdmin` should not be the default Pubkey, as this would indicate an uninitialized or incorrectly configured setup + - `hubDispatcher` ++"Pubkey"++ - the Solana public key derived from an Ethereum address on the hub chain that dispatches messages to the spoke chains. This is crucial for ensuring that only authorized messages from the hub are executed on the spoke diff --git a/build/multigov/index.md b/build/multigov/index.md index e10de2542..783f082af 100644 --- a/build/multigov/index.md +++ b/build/multigov/index.md @@ -18,21 +18,37 @@ Take the following steps to get started with a MultiGov integration:
-- :octicons-rocket-16:{ .lg .middle } **Deployment** +- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM** --- - Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. + Set up and deploy MultiGov on EVM with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. - [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deployment/) + [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deploy-to-evm/) -- :octicons-file-code-16:{ .lg .middle } **Upgrade Contracts** +- :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** + + --- + + Set up and deploy the MultiGov Staking Program on Solana with step-by-step instructions for configuring, funding, deploying, and initializing the program. + + [:custom-arrow: Discover how to deploy MultiGov on Solana](/docs/build/multigov/deploy-to-solana/) + +- :octicons-file-code-16:{ .lg .middle } **Upgrade MultiGov on EVM** --- Learn the process and key considerations for upgrading MultiGov contracts, ensuring system integrity and careful planning across cross-chain components. - [:custom-arrow: Discover how to upgrade MultiGov](/docs/build/multigov/upgrade/) + [:custom-arrow: Discover how to upgrade MultiGov on EVM Chains](/docs/build/multigov/upgrade-evm/) + +- :octicons-file-code-16:{ .lg .middle } **Upgrade MultiGov on Solana** + + --- + + Learn how to upgrade the MultiGov Staking Program on Solana, including updating the program binary, IDL, and more. + + [:custom-arrow: Discover how to upgrade MultiGov on Solana](/docs/build/multigov/upgrade-solana/) - :octicons-question-16:{ .lg .middle } **Technical FAQs** diff --git a/build/multigov/upgrade.md b/build/multigov/upgrade-evm.md similarity index 88% rename from build/multigov/upgrade.md rename to build/multigov/upgrade-evm.md index 56870a312..29c4788da 100644 --- a/build/multigov/upgrade.md +++ b/build/multigov/upgrade-evm.md @@ -1,11 +1,11 @@ --- -title: Upgrading MultiGov -description: Learn the process and key considerations for upgrading MultiGov, ensuring system integrity and careful planning across cross-chain components. +title: Upgrading MultiGov on EVM +description: Learn the process and key considerations for upgrading MultiGov on EVM, ensuring system integrity and careful planning across cross-chain components. --- -# Upgrade MultiGov Contracts +# Upgrade MultiGov Contracts on EVM -MultiGov is designed to be flexible but stable. Upgrades should be rare and carefully considered due to the system's complexity and cross-chain nature. When upgrades are necessary, they must be meticulously planned and executed to ensure system integrity and continuity. +MultiGov is designed to be flexible but stable. Due to the system's complexity and cross-chain nature, upgrades should be rare and carefully considered. When upgrades are necessary, they must be meticulously planned and executed to ensure system integrity and continuity. ## Key Considerations for Upgrades diff --git a/build/multigov/upgrade-solana.md b/build/multigov/upgrade-solana.md new file mode 100644 index 000000000..e4873468b --- /dev/null +++ b/build/multigov/upgrade-solana.md @@ -0,0 +1,67 @@ +--- +title: Upgrading MultiGov on Solana +description: Learn the process and key considerations for upgrading MultiGov on Solana, ensuring system integrity and careful planning across cross-chain components. +--- + +# Upgrade MultiGov Contracts on Solana + +The MultiGov Staking Program on Solana is designed to be upgradeable while maintaining stability. Upgrades introduce improvements, bug fixes, and new features but must be carefully planned and executed to prevent disruptions. + +This guide covers the key considerations and step-by-step process for upgrading the MultiGov Staking Program, including updating the program binary, Interface Description Language (IDL), and `HubProposalMetadata` while ensuring cross-chain compatibility. + +## Key Considerations for Upgrades + +- **Program upgradeability** - you can upgrade the MultiGov Staking Program on Solana using the `anchor upgrade` command + - You need the program's new bytecode (`.so` file) and an updated IDL file to reflect any changes in the program's interface to complete an upgrade + - The program's authority (deployer) must execute the upgrade + +- **`HubProposalMetadata`** - can be updated without redeploying the entire program. You can do this by invoking the `updateHubProposalMetadata` instruction + - You must carefully validate updates to `HubProposalMetadata` to ensure compatibility with the existing system + +- **Cross-chain compatibility** - ensure any changes to the Solana program do not break compatibility with the Ethereum-based `HubGovernor` + - Test upgrades thoroughly on devnet before deploying to mainnet + +## Upgrade the MultiGov Program + +Follow these steps to upgrade the MultiGov Staking Program on Solana. + +1. **Prepare the new program binary** - build the updated program using the provided script + + ```bash + ./scripts/build_verifiable_staking_program.sh + ``` + + The new program binary will be located at: + + ```bash + target/deploy/staking.so + ``` + +2. **Upgrade the program** - use the anchor upgrade command to deploy the new program binary + + ```bash + anchor upgrade --program-id INSERT_PROGRAM_ID --provider.cluster INSERT_CLUSTER_URL INSERT_PATH_TO_PROGRAM_BINARY + ``` + + Your completed anchor upgrade command should resemble the following: + ```bash + anchor upgrade --program-id DgCSKsLDXXufYeEkvf21YSX5DMnFK89xans5WdSsUbeY --provider.cluster https://api.devnet.solana.com ./target/deploy/staking.so + ``` + +3. **Update the IDL** - after upgrading the program, update the IDL to reflect any changes in the program's interface + + ```bash + anchor idl upgrade INSERT_PROGRAM_ID --filepath INSERT_PATH_TO_IDL_FILE + ``` + + Your completed IDL upgrade command should resemble the following: + ```bash + anchor idl upgrade --provider.cluster https://api.devnet.solana.com --filepath ./target/idl/staking.json DgCSKsLDXXufYeEkvf21YSX5DMnFK89xans5WdSsUbeY + ``` + +4. **Update `HubProposalMetadata`** - if `HubProposalMetadata` requires an update, run the following script to invoke the `updateHubProposalMetadata` instruction and apply the changes + + ```bash + npx ts-node app/deploy/07_update_HubProposalMetadata.ts + ``` + diff --git a/build/reference/index.md b/build/reference/index.md index 4f42e31b0..8c50f92e7 100644 --- a/build/reference/index.md +++ b/build/reference/index.md @@ -19,7 +19,7 @@ In this section, you'll find reference information that is essential for develop [:custom-arrow: View list of chain IDs](/docs/build/reference/chain-ids/) -- :material-timer-sand:{ .lg .middle } **Consistency Levels** +- :octicons-clock-16:{ .lg .middle } **Consistency Levels** --- @@ -43,11 +43,11 @@ In this section, you'll find reference information that is essential for develop [:custom-arrow: View list of contract addresses](/docs/build/reference/contract-addresses/) -- :material-code-braces:{ .lg .middle } **Wormhole Formatted Addresses** +- :octicons-checkbox-16:{ .lg .middle } **Wormhole Formatted Addresses** --- - Learn how Wormhole formats addresses into a 32-byte hex format for cross-chain compatibility. + Learn how Wormhole formats addresses into a 32-byte hex format for cross-chain compatibility. This includes converting addresses between their native formats and the Wormhole format across multiple blockchains. diff --git a/build/start-building/.pages b/build/start-building/.pages index c0b3e18af..970b3c6a5 100644 --- a/build/start-building/.pages +++ b/build/start-building/.pages @@ -1,7 +1,8 @@ title: Start Building nav: - index.md -# TODO: Products + - 'Product Comparison': 'products.md' + - 'Use Cases': 'use-cases.md' - 'Supported Networks': 'supported-networks.md' - 'Testnet Faucets': 'testnet-faucets.md' - 'Explorer': 'https://wormholescan.io/' diff --git a/build/start-building/products.md b/build/start-building/products.md new file mode 100644 index 000000000..5ead4ce07 --- /dev/null +++ b/build/start-building/products.md @@ -0,0 +1,55 @@ +--- +title: Compare Wormhole's Cross-Chain Solutions +description: Compare Wormhole’s cross-chain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. +--- + +# Products + +Wormhole provides a comprehensive suite of cross-chain solutions, enabling seamless asset transfers, data retrieval, and governance across blockchain ecosystems. + +Wormhole provides multiple options for asset transfers: Connect for a plug-and-play bridging UI, Native Token Transfers (NTT) for moving native assets without wrapped representations, and Token Bridge for a secure lock-and-mint mechanism. + +Beyond transfers, Wormhole extends interoperability with tools for cross-chain data access, decentralized governance, and an intent-based protocol through Wormhole Settlement. + +## Transfer Products + +Wormhole offers different solutions for cross-chain asset transfer, each designed for various use cases and integration requirements. + +- [**Connect**](/docs/build/transfers/connect/overview/){target=\_blank} - a pre-built bridging UI for cross-chain token transfers, requiring minimal setup. Best for projects seeking an easy-to-integrate UI for bridging without modifying contracts +- [**Native Token Transfers (NTT)**](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} - a mechanism to transfer native tokens cross-chain seamlessly without conversion to wrapped asset. Best for projects that require maintaining token fungibility and native chain functionality across multiple networks +- [**Token Bridge**](/docs/learn/transfers/token-bridge/){target=\_blank} - a bridging solution that uses a lock and mint mechanism. Best for projects that need cross-chain liquidity using wrapped assets and the ability to send messages +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - a next-generation suite of intent protocols enabling fast multichain transfers, optimizing liquidity flows and interoperability without relying on traditional bridging methods. Best for institutional-scale volume and chain abstraction for application developers + +
+ +::spantable:: + +| | Criteria | Connect | NTT | Token Bridge | +|--------------------------------|---------------------------------------|--------------------|--------------------|----------------------| +| Supported Transfer Types @span | Token Transfers | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| | Token Transfers with Message Payloads | :x: | :x: | :white_check_mark: | +| Supported Assets @span | Wrapped Assets | :white_check_mark: | :x: | :white_check_mark: | +| | Native Assets | :white_check_mark: | :white_check_mark: | :x: | +| | ERC-721s (NFTs) | :white_check_mark: | :x: | :white_check_mark: | +| Features @span | Out-of-the-Box UI | :white_check_mark: | :x: | :x: | +| | Event-Based Actions | :x: | :white_check_mark: | :white_check_mark: | +| Integration Details @span | | | | | +| Requirements @span | Contract Deployment | :x: | :white_check_mark: | :x: | +| | User-Owned Contracts | :x: | :white_check_mark: | :x: | +| Ecosystem Support | Integrates with Other Products | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Ease of Integration | Implementation Complexity | :green_circle: :white_circle: :white_circle:
Low | :green_circle: :green_circle: :white_circle:
Moderate | :green_circle: :green_circle: :white_circle:
Moderate | +| Technology @span | Supported Languages | JavaScript, TypeScript | Solidity (Ethereum), Rust (Solana) | Solidity (Ethereum), Rust (Solana), TypeScript | + +::end-spantable:: + +
+ +Beyond asset transfers, Wormhole provides additional tools for cross-chain data and governance. + +## Real-time Data + +[**Queries**](/docs/build/queries/overview/){target=\_blank} is a data retrieval service to fetch on-chain data from multiple networks. Best for applications that need multichain analytics, reporting, and data aggregation. + +## Multichain Governance + +[**MultiGov**](/docs/learn/governance/overview/){target=\_blank} is a unified governance framework that manages multichain protocol governance through a single mechanism. Best for projects managing multichain governance and protocol updates. \ No newline at end of file diff --git a/build/start-building/use-cases.md b/build/start-building/use-cases.md new file mode 100644 index 000000000..865dd96d0 --- /dev/null +++ b/build/start-building/use-cases.md @@ -0,0 +1,278 @@ +--- +title: Use Cases +description: Explore Wormhole's use cases, from cross-chain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. +--- + +# Wormhole Use Cases + +
+
+ +## Cross-Chain Swaps and Liquidity Aggregation + +Enable seamless swaps between chains with real-time liquidity routing. + +
+
+ +🛠 **Wormhole products used:** + +- [**Wormhole Connect**](/docs/build/transfers/connect/overview/){target=\_blank} – handles user-friendly asset transfers +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – moves native assets across chains +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time prices for optimal trade execution + +🔗 **Used in:** Decentralized exchanges (DEXs) and liquidity aggregators
🏗️ **Used by:** [StellaSwap](https://app.stellaswap.com/exchange/swap){target=\_blank} + +
+
+ + +
+
+ +## Borrowing and Lending Across Chains + +Let users borrow assets on one chain using collateral from another. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – moves loan requests and liquidations across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers collateral as native assets +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches interest rates and asset prices in real-time + +🔗 **Used in:** Lending protocols and yield platforms
🏗️ **Used by:** [Folks Finance](https://wormhole.com/case-studies/folks-finance){target=\_blank} + +
+
+ + +
+
+ +## Real-Time Price Feeds and Trading Strategies + +Fetch price feeds across multiple chains for DeFi applications. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches price feeds from oracles and trading platforms +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – sends signals to execute trades + +🔗 **Used in:** Trading bots, arbitrage platforms, and oracles
🏗️ **Used by:** [Infinex](https://wormhole.com/case-studies/infinex){target=\_blank} + +
+
+ + +
+
+ +## Asset Movement Between Bitcoin and Other Chains + +Enable direct BTC transfers without wrapped assets. + +
+
+ +🛠 **Wormhole products used:** + +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers BTC across chains + +🔗 **Used in:** Bitcoin DeFi and lightning network integrations
🏗️ **Used by:** [Synonym](https://wormhole.com/case-studies/synonym){target=\_blank} + +
+
+ +
+
+ +## Decentralized Social Platforms + +Enable seamless communication and asset transfer across decentralized social networks. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – facilitates decentralized interactions +- [**Token Bridge**](/docs/build/transfers/token-bridge/){target=\_blank} – enables cross-chain tokenized rewards + +🔗 **Used in:** Web3 social networks and content monetization
🏗️ **Used by:** [Chingari](https://chingari.io/){target=\_blank} + +
+
+ + +
+
+ +## Memecoin Launchpads + +Launch and distribute memecoins across multiple chains, enabling cross-chain fundraising and liquidity access. + +
+
+ +🛠 **Wormhole products used:** + +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – enables native asset transfers for seamless fundraising +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – facilitates cross-chain token distribution and claim processes + +🔗 **Used in:** Token launchpads, IDOs, and meme token ecosystems + +
+
+ + +
+
+ +## Cross-Chain Perpetuals + +Enable leveraged perpetual trading across chains with seamless collateral and liquidity management. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time asset prices and manages position state across chains +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - for quick cross-chain token execution, providing efficient and seamless user experiences + +🔗 **Used in:** Perpetual DEXs, trading platforms and cross-chain derivatives + +
+
+ + +
+
+ +## Gas Abstraction + +Allow users to pay gas fees with any token across different networks, removing friction in multichain interactions. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – routes gas fee payments across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – facilitates native token conversion for gas payments + +🔗 **Used in:** Wallets, dApps, and multichain user experience improvements + +
+
+ + +
+
+ +## Bridging Intent Library + +Provide developers with a library of bridging intents and automation functions, enabling plug-and-play interoperability logic. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – enables predefined cross-chain actions and triggers. +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - provides a framework for executing user-defined bridging intents + +🔗 **Used in:** Bridging protocols, DeFi automation, and smart contract libraries + +
+
+ + +
+
+ +## Multichain Prediction Markets + +Allow users to place bets, manage positions, and receive payouts seamlessly across different networks. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time market data, tracks collateral, and manages odds across chains +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} – automates token execution for efficient and seamless cross-chain prediction market interactions + +🔗 **Used in:** Decentralized betting, prediction markets, and cross-chain gaming + +
+
+ + +
+
+ +## Cross-Chain Payment Widgets + +Allow merchants and platforms to accept payments in any token, auto-converting them into a desired asset. + +
+
+ +🛠 **Wormhole products used:** + +- [**Wormhole Connect**](/docs/build/transfers/connect/overview/){target=\_blank} – facilitates seamless payments in various tokens +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – ensures direct, native asset transfers + +🔗 **Used in:** E-commerce, Web3 payments, and subscription models + +
+
+ + +
+
+ +## Oracle Networks + +Fetch and verify cross-chain data, enabling reliable, decentralized Oracle services for multichain applications. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches data from multiple chains and Oracle providers +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – ensures tamper-proof data relay across networks + +🔗 **Used in:** Price feeds, DeFi protocols, and smart contract automation
🏗️ **Used by:** [Pyth](https://wormhole.com/case-studies/pyth){target=\_blank} + +
+
+ + +
+
+ +## Cross-Chain Staking + +Enable users to stake assets on one chain while earning rewards or securing networks on another. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – moves staking rewards and governance signals across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers staked assets natively between networks + +🔗 **Used in:** Liquid staking, cross-chain governance, and PoS networks
🏗️ **Used by:** [Lido](https://lido.fi/){target=\_blank} + +
+
\ No newline at end of file diff --git a/build/transfers/native-token-transfers/deployment-process/.pages b/build/transfers/native-token-transfers/deployment-process/.pages index 1a3678bf3..f3efbd38f 100644 --- a/build/transfers/native-token-transfers/deployment-process/.pages +++ b/build/transfers/native-token-transfers/deployment-process/.pages @@ -3,6 +3,7 @@ nav: - index.md - 'Installation': 'installation.md' - 'Deploy to EVM': 'deploy-to-evm.md' + - 'Deploy to EVM via Launchpad': 'evm-launchpad.md' - 'Deploy to Solana': 'deploy-to-solana.md' - 'Post Deployment': 'post-deployment.md' - 'Troubleshooting': 'troubleshooting.md' \ No newline at end of file diff --git a/build/transfers/native-token-transfers/deployment-process/evm-launchpad.md b/build/transfers/native-token-transfers/deployment-process/evm-launchpad.md new file mode 100644 index 000000000..7a5886ac4 --- /dev/null +++ b/build/transfers/native-token-transfers/deployment-process/evm-launchpad.md @@ -0,0 +1,179 @@ +--- +title: Deploy Native Token Transfers with Launchpad +description: Deploy a new token or extend an existing one across multiple chains with the NTT Launchpad. Manage transfers, supply, and settings—all from a single platform. +--- + +# Deploy Native Token Transfers with Launchpad + +## Introduction + +The [Native Token Transfers (NTT) Launchpad](https://ntt.wormhole.com/){target=\_blank} is a Wormhole-managed UI application that provides a step-by-step interface for deploying NTT across multiple blockchains. + +Instead of manually deploying contracts on each chain, configuring relayers, and managing cross-chain communication, you can quickly launch or expand tokens with just a few clicks. + +The Launchpad automates deployment, reducing complexity and saving time. + +This guide covers: + + - Launching a new cross-chain token + - Expanding an existing token for NTT + - Managing tokens via the dashboard and settings + +## Prerequisites + + - An EVM-compatible wallet (e.g., [MetaMask](https://metamask.io/){target=\_blank}, [Phantom](https://phantom.com/){target=\_blank}, etc.) + - Minimum ETH (or equivalent) for gas fees per deployment + +## Supported Blockchains + +The NTT Launchpad currently supports deployments on the following mainnet chains: + + - Ethereum + - Optimism Mainnet + - Arbitrum One + - Base + +## Choose Your Path + +Once ready, choose an option to proceed: + + - [**Launch a Cross-Chain Token**](#launch-a-cross-chain-token) - deploy a brand-new token that is NTT-ready from day one, enabling seamless transfers across multiple blockchains + - [**Expand Your Existing Token**](#expand-your-existing-token) - if you already have a token deployed on different chains, integrate it with NTT to enable NTT without modifying its original contract + +## Launch a Cross-Chain Token + +Deploy a new NTT-compatible token that can be transferred across multiple chains. This process sets up your token on a home network and deploys it to additional blockchains. Follow the below steps to get started: + +1. Open the [NTT Launchpad](https://ntt.wormhole.com/){target=\_blank}, connect your wallet, and click **Get Started** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp) + +2. Select **Launch a Cross-Chain Token** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-2.webp) + +3. Set the token details: + 1. Select the **home network** from the dropdown menu + 2. Enter the **name** for the token + 3. Enter the **symbol** of the token + 4. Provide the **initial supply** + 5. To the token details, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-3.webp) + +4. Select the deployment chains: + 1. The home network where your token will be deployed will be populated (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 3. To continue, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-4.webp) + +5. To deploy on the first chain (Optimism), click on **Deploy**; if prompted, switch your wallet to the correct network and confirm the transaction + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp) + +6. Once deployed, you can view the transaction in a block explorer and add the token to your wallet + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp) + +7. Repeat the previous step to deploy the token on the second chain (Base). The supply of tokens on Base will be zero since the tokens were all minted on Optimism in the previous step + +8. Once both deployments are completed, proceed to the [**Dashboard**](#explore-the-launchpad-dashboard) to manage your token. + +## Expand Your Existing Token + +Expand an existing token to support NTT across multiple chains. This process integrates your deployed token with NTT without modifying its original contract. Follow the steps below to get started: + +1. Open the [NTT Launchpad](https://ntt.wormhole.com/){target=\_blank}, connect your wallet, and click **Get Started** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp) + +2. Select **Expand Your Existing Token** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-7.webp) + +3. Enter the token details: + 1. Choose the home network where your token is already deployed (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 3. To continue, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-8.webp) + +4. Select the chains to deploy your token to: + 1. The home network where your token is already deployed will be populated (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 1. Click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-9.webp) + +5. To deploy on the first chain (Optimism), click on **Deploy**; if prompted, switch your wallet to the correct network and confirm the transaction + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp) + +6. Once deployed, you can view the transaction in a block explorer and add the token to your wallet + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp) + +7. Repeat the previous step to deploy the token on the second chain (Base). The supply of tokens on Base will be zero since the tokens were all minted on Optimism in the previous step + +8. Now that your token has been deployed on multiple chains click [**Dashboard**](#explore-the-launchpad-dashboard) to review its details + +## Explore the Launchpad Dashboard + +To access the **Dashboard** from the [Launchpad home page](https://ntt.wormhole.com/){target=\_blank}, click on **Manage Deployment**. Here, you can view deployment status, monitor supply across chains, and configure transfer settings. + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-10.webp) + +The dashboard provides a high-level view of your token across all deployed chains, including: + + - Token addresses for each chain + - Supply distribution visualization + - List of deployed chains, including inbound and outbound transfer limits, which can be modified in [**Settings**](#settings) + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-11.webp) + +## Settings + +The **Settings** page allows you to configure security parameters, role management, and transfer limits for your deployed token. You can switch between chains to manage these settings independently for each deployment. + +### Chain Management + +Use the drop-down menu at the top to select the chain you want to configure. The available options correspond to the chains where your token has already been deployed. Once selected, the page displays token details specific to that chain. + +From this section, you can also: + + - **Pause the token** – temporarily turn off transfers on the selected chain + - **Deploy to a new chain** – expand your token by deploying it to an additional chain + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-12.webp) + +### Role Management + +This section displays key [roles](/docs/build/transfers/native-token-transfers/configuration/access-control/){target=\_blank} involved in token governance. You can view and modify these roles by selecting a new address and confirming the update. + + - **Manager’s Owner** – the owner through the `NTTOwner` proxy + - **Pauser** – the address authorized to pause transfers + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-13.webp) + +### Security Threshold + +Determine and update how transceivers interact with the token. [Transceivers](/docs/build/transfers/native-token-transfers/managers-transceivers/#transceivers){target=\_blank} route NTT transfers between blockchains, ensuring tokens are correctly sent and received across networks. + +A higher transceiver threshold increases security by requiring more approvals before processing a transfer, but it may also slow down transactions. A lower threshold allows faster transfers but reduces redundancy in message verification. + + - **Registered Transceivers** – displays the number of registered transceivers and their addresses + - **Transceivers Threshold** – a configurable value that must be less than or equal to the number of transceivers + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-14.webp) + +### Peer Chains Limits + +Define the transfer restrictions for each connected network. You can adjust: + + - **Sending Limits** – the maximum amount of tokens that can be sent from the home chain + - **Receiving Limits** – the maximum amount of tokens that can be received for each of the supported peer chains + +Enter a new value to adjust limits and click **Update**. The changes will take effect immediately. + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-15.webp) \ No newline at end of file diff --git a/build/transfers/native-token-transfers/deployment-process/index.md b/build/transfers/native-token-transfers/deployment-process/index.md index 11a37fb1f..899b0b535 100644 --- a/build/transfers/native-token-transfers/deployment-process/index.md +++ b/build/transfers/native-token-transfers/deployment-process/index.md @@ -27,6 +27,14 @@ This section provides information on installing Wormhole's Native Token Transfer [:custom-arrow: Deploy token and NTT contracts](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/) +- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM Chains via Launchpad** + + --- + + Deploy a new token or extend an existing one across multiple chains with the NTT Launchpad. Manage transfers, supply, and settings—all from a single platform. + + [:custom-arrow: Deploy via Launchpad](/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/) + - :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** --- diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp new file mode 100644 index 0000000000000000000000000000000000000000..54a2e39ce28216d61564df5259e55c3d3851df40 GIT binary patch literal 130096 zcmZ6yQ;;qU%%IsgZQHi3)3$Bfwolu(ZQHhO+qV1NZ@0E)=AWwPB3H@XlT;;9k`xo8 z{00V67Zp-aQ{W`T{V!$=2g?DbUI)Vm1p)#hD{0Z}i@JS#)?Ega`1+ZiqEY2}kHyKM z|GxjCW6+xB9hqYUv(#ibT@OF}uJz+A^$7430%mR%9`>Gm{kw@hlfJAM?B}@^^cnRZ zJs!S-md$1ExZkFp`&NIA--BlSh<@^}`QP?#_nrXjKfsT1CA+J??x*^Hxoag#;z~D}5b) zkpPCDKET)y!34oKU;|M6F8fRHJNL1-ju6l{;gkIZ*_lM&b;>`YY4*)PAc>SsL^Y9g*a;V15OuaSS!FV~Oz zo9DOdm;W20kN-=LyoVov@Wr3L+pe$h8~1bd-S*;l132%S{JsOYf94J4rSv%hMt-Lr z;?6nV+aCN*0IU210OkJ@?0vV5iGRuK01N@%w+P?j9|$k!msf|-cQ^e z;L2~>&m8~?VE6{C$1V9y_yq#Ueucl?-w=KXF8l=j!u_y*Lw=&Z_1_3?^4|UCe7ipn zev-b%J`sMHzN&rzfb49CO+1^Stb2Q*x!!MF&I6p^zC?W4+aP&gHcp+=M~CJP3k(`fUbao)Ol1@}_?9KwF-5U?@0u$|n$eUHBg=^7fijsoul zMz%{yoNc{8+ysM@h_TWxh>1hNKqqgZx}+qNRB%JP7zw^#Mvo`Qpy-sOhp@QKF*`k1 zC4U0|A>3HYK^&r#zIL-!0zcY84uv)!UY-2QDr7s#yZ{+AD87Y_80 zs>Y82QG)CVIXTVGVrAzAS~C98QE?5D%lHF`3DBM*YImoi>r3HBYpEWZLb0H1w5+{= zq+B%XG=OX|H9q1<%JWDVUVv*|Y!rdcls)wq9H6wACvQlf`XKyoFFfv%HQxpLM|W*& zukM4oKL_mxypB-YEjBGw?@wdyi9=vrUUWc5yZ#l9`!z^D%f$+j^hcYLl)7G*dF+NW zHQvzO(eke-E6zKy0km?Usns_pp#HDh!@u2QYK(}9;5{u-g-O~#g2gNz9O&5sb__eV z30Fc3QKg=We5WHTm1y@jhSfoAm?qZrg3ToiZwdNBPgwDHQo$R*HN zT^RX$y;)WnFr}MkPvyE|ht!D~*ZFIH{n%30F6J`9k=k8Xj}sIHI?bfO!UQ8_^G7c0 zhA8PJ%&@%sDr`1e@1p%v>Bwabq&r2J>@~tGP{a6!Jr>uXJF;qizn)39`MXD0@!?%* z(o87&xjJx#XJT3Ws?$#B5yJv=D_Pe-z;J&=D=@(mTD2lWqF{7;ymu+nfdad-4)bdL z`nK*y0w<-Ujayk51_R~>DbZt}$N||t<$=i9fDGA0vv)*$Ugt7p(UGARkO8VXNy zr84^LC5uIg21?Z!Kj}N@_Myi$r+B%RBz6y6%wXQW?Y3SK5|i4X)G|#FlqIr z9HeA9;;Lb=pEwvmf0+)IuLQK4yvJ_*;~xV=oPp!5fDV&Q1r)r3JmD$4s{ugi=$0Ui zwN0VIX0|e-hp_};oIa)xQb(OApJpafe{NzB)il{|Zg3moeHdyl{l%xfwHPE_ZJu@u z{I8d!5G$LO&H9&|Cun4O%UO|=vtrV0$+3ZO8dY!X&rOB6OD7RnC$JB1uuw^@McbN= z&)X|ljd$O9k0OVBvT|;y{yApM^X!IVWu+xt-NP0M#5^)91_vW8KT^QKP1tVt?f6l^ z(QBPrJ+KV!khp!`b zlRh2W=7;ITtR#qLFlD9fL#`hcalMfF9Ct3eF7#%lC`jc9Q_-3sLbvhN183d;d)#$p zQ{_*}^mO{%bM3E|Ae%Cyatv1EG*ws;!s?GNn%BzU5cWcfZ3rq$6p&xxMR!5K2oI+Q z30v`LXxzY)u7#KwwfV7NHQN<$P*E&=+pSG*vf?8578*I}^T3+!*HHjt5@Z9h{)syG zzzGi>A$-ncD9}m7G3n*c6FLp;fDzl?!nTIrR;o-1Qo9^#uAE}8XSnoL(s8Do6^B)( z76UO!+PwtYey{@ifOVI<`K-@M>#w^3zQqe;Il3SBk=CB6a0qsRiM?uDw;Q(1W>B!l z&%jG(?_j1r=TY`^u( z?p&)~56D?F#}+rnMsJ1s!`C!zptz@s2xPs-65Yr}hyN^)xRI0Be!M-4QHL*;l%d!) zxe6st&o?sQOn3aPil!j{GLTGI>P1WoE~b6)WQJj6yL#VKT5s_CAegJ~KDS!*_YL9` z(C}Sqmo2%s*4i9Sh|H?=E+3voq4Pe1wzK5dwfThx6XC)52-- zL&MT(O!I3_i~%X#A%2fzu2_8U$~3=}H*kmRW{}*32J71fRIc?VOk}RVEwrjbh_jn| zWXv{0Av^A0YbJE?nrNhF>A6zwPMg1ZK^c+3gF`l;dQFDHOna%yLGF)!4A`1_vU%qN zK>!(2ZZWABcJqvQFn;M!sl^m1&9n?vm>=s0_M*pRC|kqW)3&)Xnabu&2~B{Nim>w6=DK9rm?b87T*HsLNH^?{`G=j{v&jBb9D4`HVC zGO3+}lTZ$%mhp)GJaH|(_6t`hN(E!+?9D*R*uBwY!P|doa0DnEKbs}OJ1)#JY3vFM zgxRT_@8Q$amGDVCd#YI-pOZE8LZ_=6Y!ew`n`N~7R4V5Xqxu7lpVq;3pZ`skME40M zYloMTpVZG4tNc_14vrn``~V(5={kRe_KWnOkHS(uC3sO4P!@9udR?d{4x3#k98YCm zy{%`(HAR0c*??v~o4KK7pi1>mcXg>XPWZvlop9u8_*NEXazxH(4y{|?Q=2k~-C!og z!GH*~7qoJ?>y?z@d2oVh5GCvcs$!?I?-2zWRuf@6gTWnE#p;=KIMXp{8}i&zcM=p| zFQaHga0DsUKX+kGM?4qUk*4CCWf3Vyms+AnlF)qRjK zG_C^o((F`Oz7c1m;66`X&`*Se9g*<#cXpU+qq^QyANsD$ExnF02O zm+wB4RecYP2P}Hi2je1Os0n4Hp!omXuFi^XJc}ORE@wCQwE4Zo*+n5(r+P~eQfDP! zQgB5Yj$4+IV0n70V&h_3$|sHtM1(AS*KwooBos=TZ!@3e*`)7Ol%%34KbAy*1OM8= zv>Pxv=Kpy%)L*cJd_>q|5>4wZ4}Wd;vlkUS7dyJa`MwGJ80Mt)f4n?Q0Sh4N%)iz2(>!USNj6K{zL#B`LZRp2jfeE80pd$B<8u9ZL3ZTG7vThfxp!!kg{pDdg`m2VFdpM8EGBi4k@ad|}OH(M4P^(r0~ zY30g|C?}u{b)k-YMvi3N+ULV68ZtFtG~Zd4aE8D9aymS6$`yjZ(H$ml_+2$GRWep_F0B zQ_9$y7{Y+n<|HgnyM%6Ph3+Gqljz|UXiKeL{`pBkhI3qVBBFsJ+{2^$@GX!dF7OS} zcFxq31b1_k`?#Kts^MSSnMrs?Wx?JPBI3glUxA9xB0efRtr%7Rmh~W<>f9_s_ zNUbyZG2^ycBS}6qt_Sw=b-|F)c$WTz!Q;flKl!)?Tl{l)Vfd2a&>ejAL)!X|zf8A$ z3G^@0>!WNn4Z-fM=gZ>BOR2*JKus&;$}k4KLQCmZPx)=uJwS@C6X5;U@5eF4GJ=}T z|0=zUzJ1?wKqwRwBBoHPo)X3y_?XNm@e5T}?krcV4j;M?i)Pw12fYI6-z<^UML_LK zqwwO^;O=NpfJG8DRhx%3?swh#>C>NK(zV4V95l~|*e$?ZG&mZFk0}!1_207YO}>>2 zoeZdt-FBs43IoQjx9+9R^ESwQq6o zN}X=9wGdcGuU^$8ncXTd>V&Qi#QYD_I1wLEb&fiY{6# zgf=mb6!O7T1);l_foK zb5?iTZ8t|xqRhP0$A8LmJB6$tXz{f`3ZZ;PgE6y=kh#iNR{30ne%^sK7YlMGeXH}x z?0PXPd>Dj`FfSkzAZ_H2(lV1$-ioEqTP5G;lTBlJBYc;>6oA*O5-*|gPKr#W72r(+ z4`%^6cuj2X>)sw>kxw!EITqfTlTqyQeVXu~u;I77PWm^ixO2YLeCcpzK7f?YDsO`- zNkd|zSh!yvS}k2bm@mI*bbMFCeX5B;lTw;QakgdNi>=gB@Ps9b$p zd$`vWO4%7WJKxjqatJ&^8^aXH2BZ?)d{Q<$VP&~hNvKj0e+H_x_=LD!0K}|aO;4`? zOo2W5#g(~Cw<5?`f|TYmhD(|p=3$&xG`ECP)6O9K;%@s$cH#01cR*6({TUIdTRSJG z|7ey)J5j__1J?Z3C}ZJwJJwpezojV5>-+GA7P+DN7^k2pyJZhW32N(8z2a3NX=!g7 zYJCVG?E;}q9Ir@L%se)y6W-3svrj|Gh;xx_h+0 zw_(MZPdh`=P9TAy+y$Q}JAHjz3Ds)>QChUP&RNdhE6S0SN6CgA=*C)SE6TE!D7_+R zaQQ#@cOfRn<;Lc_WjZ{ZPVg4fhZ9dfv2NuyLVaTbtCYMvP|{6mA)Jj;!oy`VO8Kv! z@T%rpJS4OAw3FAgz|uO3vcMh!pXU-sq{D$6^y_}^niZ}I*K{Vh zGk`LHD9Td#W_x;-h#dtK62>O^?4&$7FxGJlK4wWby}M-m)C`_FwK8z(IOg$rxFNA% zEcABtz#(~cm^KCkf0BLh0G1GBk;23G9_Lr*e1M7u>M3)@da^QqWs@eL0pu%AdwOpm zHQ!SYWJKHMLI2kbpcudd=*`24;9R{IwQD~O*!ibzk^*_MFA5i#Vbyjt8ieC&>Tp7t?Lcw!5i5E^ zEKVsv;b6$$Go_|dW6oqS23|E&bOXXJ%KqpVO==TA9|E7jHV16e2`+P`JC2rJ8zzt! zauyFV-ZFs@_gV2GztZoU+9pp5h}gd^RAj`amK(j*QJOAZJa0}bGLrEAke>DHr+xyn zOC9=J&rGto+3)wn9Mw!=+Kbdsg#LuYh(ZL=pq0ted)|L+3o_IU zBQYV?D;lZ>Cq(+NM4mGe{kOSR)d~9VkYjSZfwCQHe=1YJ-6F<#3Ywv18m(s8CR?fE z%M^~|>J9l7bI<#nqF9Lyp}^|n*vex>YFD8AyVE_PUyr~3-XULnh)zm=#drKH#{0JU zb@ht$h=mZ3J2`>+h*`uJa5Z9t5NCHxAOixOhx>-=Sk?WD zu3RB`v*PMkGGC!yRGxiQI$9Z&mT2&XMYZM@r-2Bu*RNr|%i1#95`^M~g#?_#D>3tv zKZ{SpA%!ri(OV-Ih#*-8D`o_Z^x9{!<{NkwXm>zX|40IRZ!}b@a76v5TEo6AH1LrZ z%kU`()Job{h~90NK28^=*DZ|4rvKGdABi~ezEs1I^nCq@|BpEE$0Zcv?De0*9(DN} zVqE(K3QGDp**?z!-B)`Swt5v$UsZ~lBZF{7L8KLwY|KcOY(h&tQ`e(~4 zBywAv&3*b%!Z8G^TW8EKR`%@-DAa3pP7DEzm*i-zXjRpljHZqcJs@4nt)LOC%t$uTFGDAyA;zpY^33}W zhPesHMPK6k!w0dFOw41q{>}C@WK#<@GkQ>#gh=r}Fbrc+Z(>=(sorrZ?tJ|;$Urot zt&S837&@RplR&PKXny#(zpHMpQ5HDjYY1Ijb%e?;#{E zIthULWlg-Z648L2{3ArY;axnX3{oJW-@u|%fxX+3P-BEVt@-9c;IU<06;u0ASrM>sNmt!U&JIelP#?KAneKQBt`Wag zl)5kA$RviCwk@a?k_Rvcz@lIsInO0;#c*4c6`EBU=Ow}Y9X`N2%0t>>Z*1=0cPVzS zF|c@IkrH9au0E+`%w&ag{?7_!Gj5v#Q63Soi0RXoRBqCH`}!DlvkM3t1QSy9AG$v{ zbZaQazNV#Y>L43=S&uC)nUy!)b33_Ka%G}EQzLuWvFt*;?O@$xBnp*$*B=;FLeFm) zOar9e5>X)D%e+J#2npvT$=>vN{4o>gri3xXe>R4(>eKaJrLQapi=`a_K=Q$UOCshM zw@pu%4hTfm2ctxY|Cwu!c4I{tfgeH>@^MRE!2{d;^ZhVYQy1LB%AFm&N#U9i6nZU5 zZDJ~hHB|+iTP-XSRMzFUsYI%gEA+dy02xr{lJW+Ds;-e)gJQ06rEypb)QQL-ll~jL zOq*~02bhF^iM?{$h#o)44xH}dYV$}yJz<$oBC%LB{%gs?t;I`c)dO404g#3fUj}60 z1g8ERzwO#ZXp!nCAN3m{UFlNp1ncMOI zg66{!FH1-#9F*p2p)TeoH@=oHKjH<)-AHx8V_q*!Vs=#?4pS|`&JO-*_A~*Y^;+|z zUqBvddGDP=yYS_hl-(gckUL$)F@E%A{ttnXan^yLgF&d1ezK8=9myuSAXhf7mucMVR5zS55L`P0+1GA9|&?7nd6tZB!( zP`+Bad_udoq_xz$rAAZzVln2N)(XarCzc+cZj#K@C4UcH)X1n8Rs* zCAA31kMmzmd;2mijNe3bkaUX#K_r&*7>4&6e@H;(BnCA`k!tzgs!p5P8=E^NVtICa ze;n010Lckm!ss+j2xpQ8bmspWyymn=LLA@@jKrDaaYrv@vCYQFyE)9iD!{RGgV|UpUO+(-=8(9k59i3q7upQl(xXSYZO0J z<5H=ET(D!XtZFWI@`Sk+hT0iroXttiI5CS-;Z*T0xrjb~4I>89z_Hr48QIWN!QN-L zCY$IeY)qm@EeJnlwc@0SNn`fsBF&QW(vJSylDO9Qwp=99!p)13cA5r@DS6#bCN7cs9|1o)QdB>4u&s4+st`K@ zhjF%v;2l~<$8ezxxvu9{9umJ$=siL2KidcOFY+6TcGSDNcD*;Q0uEMBeBH-N!0~K? zN$MXP+1MDPjOkYo<;;N~0NmoarcIy7gDI%5+<(lSX;wQ(;ozCeK^)!8ilzH`iHxYA zN#n|&GPyvw-yDw87BY-*<@gzHoDmB^9m6y!1(rwEA0_rF^8=j@qga%VwWb zylGyS3&YOqB&2Ce=3a$@*2&4hmt%B&RI)RxP0&VDrFY`qHKOh->T;gL?c&k3@XRMl zbK%!s!SOsTb4Vplnk%h(@1GH~ttjx{@3F+H3kW5$CAG%@W{hpaV+CBYY(hB{~G}k`hSkI>@@-V`y^ke;Zwz#1~ zBn#f7gElfb;@%M#QG*|n>BdthJm*XL9PfqSk*9xY#!g(@zYc>3^IiQ#_X@(EhAL50 ztv5&e-)zkR<$?Hn`Gq%LHiAYkR+iULUht^~#WM-B)qbNp<04y$i&y6?j4oa924bJ|CnHCC0PWJ)|8j3PQ2%eI6zs4(N7r2KR$)I z6P%mV_K9rO`0j_28Kxn6xG%)GL@}uqYDK<2Q(hRc{QJA1auDT>G9imm++Wz?b2}al zYC~O75GG7?))ScmQyPSL;LFXkag?9uyRg2=;wvm!0?|Q38f|}$Cp_o8bcu7%&18S+ z5M_Q_jU{`d)H}E^hSiStv70mT4RjJVK0K#v2iL+qan^dAZBEGfDFQ6+Jn;d@ugLgX z&mT#nSt9>GX}qE$JoD|pHRRIJz6>^o;Mz!%~&cr2S`{y(IJZ?}v0 zK?m557t$7XUCtCR+dH6v^&ii@Y*DcPPi$_d!NfQ%Z!{F1!Ny5)+>|Tkxcj_ z;WK$CU10iunZpDV15XucXZBdKNdMoMSKd((bfe@CoYcwx@6s}sO)Kunks3TL7Z<=! zAMxWQ&oVT|U|fq%+|A^RRo9hZ=2LcO31xt5zwVc59$~O!L14*N`)Kw|a zS|r`;nhuRl$sz$`ql!n*n7z;Qn5mxJ;)EhXowr?33e>7>D%sHZj_UpSxI$`{bexO=dtB(VF&M7bnE@i|jp!MJz0cEaPZ30csVR*`LSc!bL=W z6=Gn;-7ObS6#C}2V0zkyEj!p>JTcrU?0+1CPVGJWWXtHqVDBrX4CMW@4AL85U$Rba zynH6kHbpp~iFV=nU5#G&;6Zq1U?A>=h>FWm~B4E&tRs9((IA~YA5HT&B zf&Ga2#xPR|@k`6mFCX-&cxvQm%v=Nr?@I71`NJuO4MM@eBeN4kFcuu?k|P%B^BZY1 zf#oTIuY9aQ%MDdKzsN-M4h?Db@e9AaVwuLkRXemZdeir*+#Eu8Xn3*<=d6+MzuX5_ z1b7sD663`97?*CtrVc4;Y8bT^YrxZHY1)E=cXpli|Xr9J}*}@8$eO9g1jgd0-f?b zcR8GH+1MIFi73TDPOLVqOQKy&`wkb&{UY+%pt#I}xn}U9NM6LH4D0R+OT4FJlWd4$ z>n6F<NNk=uw>X9p;Zx(?Z zdaTp0$v_5#7UvsocyFBT55i_f6q0+KP5(qnB!V5KJ}Ri=neF&WQJovV9@_x-w8?By zhq?xgk4wplJWXrx4jWqS6%wJE>Y&|fI;o0t^*u_VzQ`m`4>DYw@Ly22Dbj)(9&(&V zblx!ETus0k&_T?WZ*P|4gn-h0N`TV9(SXbU4=>rGMk>>pZ{~m{Hs2Hx{15RIE4ki( zr+ha~jrg~tC2saT|S*-7APkV}g?w1gmo zNBiA`rnbx^&{?^0u(PmT``x&**Y2=6*BIa;>RvpNUYWMQQw4_)evv=P;Y6<*;`oVH zwNtjI&F2dLES;$>n1g?h;xdAxo2VxWyNU&stTNPZdi$p|n7`X1{TKI~4orijWf6k> zVb}J0Z_FIBjOV-t57X>;@L-4_AbIA%!2xriC3#U zz>1N5EUIDepKsUwJK*vZ70NjjFGrh|y@NWvRRC{)tzvU(Kzb@5=*{#f2t;6gCZ7D7 z?syZ1b&&C=>7Ih9XNl%lc6w;EWn$m__JC_1M~7dQ4)dNr?5ARL{&w{O{w}nRK?s6x)2k9Yll5U}W!qyj)(IP>t`9b8+^oqmCraZaO0y@IWYi7FOvPya zBK4)xh>>IUNDLinStAzbk%Rk}8g{C)Ded#O9_)3=u|frS3cj~`bm8u*O0kWkt`o9D z)?_4mp}@IN2@R*kYof(RhZ+4PsKbehDNqUy0i~tw&<~4gjW65iqLs+Wk`<)tSb&Htmktz!CQ(pV#thpenN<>-wiv)ky zD8K*yq=JyOB+-fla!I11wK z!ERR&#XK&zpAszc`QtmLEu%?bIxiE{*7QCizND#KamBx7&{q>Xs)r28qhp>G&7BZ= z)TJp)g?yBn{1d<;A{E$^6)5JJB-pkkK*szHm=Ffh>^9 zdw3g@0!D3c0$QH{L74Vp8N&dT@WOvp!cX+&mu6@cT{4uLXOBwtMuod|8q?dQYZ*gq z)J7V2W1I&3hr(1~fdH)F+}>8&a=@Qq$oh?_)q-hIz1cb{MoklinR2dDGofg*#ISQv z>JHv<95B~btuYJ*%BAbIS9&2?JEG9BXPE0Mfv))C422rEy4ZagMP~t-t7q?CA--)4 zrBh#tmIm3esAIOMcOJGs#en|neM*d}8`JyL_b#OkH{t78*2f7xj)F^(!Zxh<7){w{ z9Kx9SSamwH}0GA~t-@=(_Mt{J5ofGFy#BLpbUq--ZUJLNw2Njh#5xLwIS&7tY z1hZ;fW%W3orhE}8D-00cjcrhtw49kU9a4DHuOR{*@`#J9G;xr-k#1I-NI+=tnZX+T zbhQh;crzqq+Jl^9lgwLe3{pI*<-1l;!Rh~LP|?118ht~*B!NF8it&vRpr2G4aO*Jb zxbA1ELn3t@JRJ&k{L`>u3e*6Sb`C~bHsJ3%Vl!LT>(L!G7+DF{ydauC#nj41g&?KF zn#&>ceM&)ZtC9v7G!;A0kv|18yvrIr$lQ$s_I^VuB{LR`hF8oZ;NFo9^J?6mbT z=z@JD^N9~DF1I@Z57`F^B98oLTmVUE;P{bhT6opmNsQ zda5a+Vr&dYe3jc!q`Fr%NBWxEYs6y;6Q;5$3h_vuvw+HQK6i$NsC{y>gc(F9LsFs> z5_JC7eAO^fUQle7C1iMl##?APyTNrB(8J~*)-vK~Ui#I?826HhejPc9l2Rlx!pxn^Q_0yfcBWOZ|tn_KVMxyNLQTvA1iVMvlMof!Z!QfZ++^s zZG@{1M|#!4_Tv0EF#8ID`4Wz5A*CmkZ4wCyl%ela!#MNWr^=s39L&R)z{ia|y1Kqi$?%#iUGyQeszejebv8c5Z}mYT7_P86-VmLRvpUZ4EM~(FZw#c1?2_ zcA{-?fYW!Ecx~Z#rE>FlWl8CsS4-3}e>>%=a8$zGkQPmbrycNurplG~_q-{lYsZ6! zqv!mGhQm1V_%x|!^RVL$Rjdc0yw=+RUa1$Sih5~lUT%_{^byZfL!GK=L}bccx_!1> zW7qUY1F2xw_+6W9qQW}utq6AE%W_~)B^yO-naH5eG8DG>Jh*k{?7)N+i!-rfzIrb_ z6+dKq@oe_5*vfzK*95VnbGTNO{SZvyTIP6_>%_ytmdQJaSB?1D#YW)==)*v6cqUfr`F{>z#1xJzf*!2YEs}rfxHd53GD|?`S+zH zz1sL{{|eJE2d!5H4?Q4XpDDvl+}q1{4=1@Y){41S*X_XeBXmB|{RDjD%Z@~=sMv`E zYmqni)b)rD6EuSk$`NtpDhKypx}q&RVZKE@I-!-E)@hjsf2r+&wc=R6@jx>{iDM}# zmOq>cWxh)1(`~c=M)ZbvOZYy19Yr*JB$xR$hzZG1V>J@=VAW!hvk8vbp^hrkPjv#x z+!zSaezv?^yT#p21sKGV~z<46`<-9%bahJTo8vW?rgn}J+&mtpkX;bO#L%A zd_8!JVoMg-jrtcC3m^9KH6F(k>1w%kVP3R-zAcxn#>_w1M8Vr{ZFw)&ml6y7ILZ>BkCR7|RG)TS%Ff%N^el)}s43Rt4AD1{CROJ(}hFbfnB2=6-s#Fte zSoR;zI{E2RzZYWpMLtDrM9)hUvSvxP!0ui{q!525kclYWSG*JHIs;JCu+YbRIFz;4 zW2Wgpn$5-63S+LH-H-I)7qoH#(J9fTr*po?f4rWeNh#Z|{vfZ7&3)D$Od7(f_`6&&MTF3ev{B4v zzKidoF(e6p!)awl+fozdouTx<$ALZ?s_lFCP}$Y_Oz$g=_ztUqiHlGEwdL@fa4xJ` z7%Gn?O~AhEv~Cbnir|XbPdb_qpGAk#r584R3Eka;7!guwwKoM9qMepDNt9T=gmPi0 zFZvBV7)kuLbN56<`l<-Nxz8_YlvpIu5~;!RIgXp27N#D@=s~CR02d7dLLJ3JHp%he zldn4B*=v7em1CLMup8Zqw_>(c;A=^8%W7-YJ%w-vN8t!8krf%d*k7U7VrMl~dzZi( zo|-1NAwY&5w(I2mtC-4GFD)@sdpO-Ha)k(XzF@HTw~;F9#AkV}{Eih@!Rq$l{N?<9CIwD0 zaD?>->bA#6BAiH%6%Zy<#_1{|4WG8{At?3^-)exp8InJ^KTP#)ylK8(k^%^<2@h#B z&G27zrBy#_J(0*odN17w{cPX#TR`>)B!gxwmw;X@68)8R5EHcsH2Nni_wd^}FT(Cw zf|ryGK4??HMr=>~-H>|FZ%!pP%pi z&6z}N)QCS6_TqcKHWp_%x4&1j{%ZpXZ%Zb2HHRDLv?>kqzeod!1jp}?zz14ey>-$tZ7iUWn zL#J7zKYtsS#8%N;unn_!`g4YDFsmUwl@~2z3_ZU(hWsLadri>R`hRKp$WOSF(oIG; zelc6?OtLMRi#%dykUF^$JJ+F==Bxl8#Sd8E+>{5)Q=W|RBt?;ADH)|ni$p4^-)^*8 zhAXF723g4$0-?WLgGQI^C?2r9n*_s{_GNI{-h6ni`ql%koCw?94t+N=fcw(LT$aST z>9DJj=}`MUnVpY=&pJrX4r%Tai7-1a5N+R?(?3zrF?MZYkpR4ZMhWk)pMEYkf)3st zW+0u>5BuA70%eS6-B^_*Po^io;QCC^-i7jaQfs|%ts;-mOB@(fx3Cl9jJU-CIq89B|mFM}yCdRK?3zpj$vbkh2t9QFv`iQ$_v^_u)`z zd8fYGHrM%KXhArHzq)5CO6D(x}wFAf$fiZ7!IVfv2fN&u#{AQ3xc6v3g5vWGIr_Mj3$7i}% zRxx?iyKS9RLhL&ygjho_zNDPxc7>vWMv&U9vE~czk||H%O(DuRkSLK9l?3t6!`5Cs zf1qOP18T3bkRmI|%99>jOSl)kVd~ypMzri%0@Zw%su)a}$AQDXngqy}MpB>bR1<1} z=-NJ{c8dRItmFa4wt3w($JNreuqaVRpoX8?&+{$bdz^vlgEnNij)#bkoyS#S8i~yU zGRmWI07NYh20J0C99jn(CtUDORJh;9p<5F{^z+Zq=H&w7UuNuts7Q#s?}pDx3un2+ znWj>{ai>bn>UA%jWU{?$hdE=+(Kuz4Gcjz0hrqVpt2ekcg#PReWVc35Cymcp3_Wj; zwJ>pAMVvt1cX3J+wGVE}|Gl#2a^W`C*L8(9c* z`EsAo8&yjh{!yyft;1?Iq_w8A)a5Of^gZeNtpXJgh!wSi{sCsrU$i;?6BB)8DxBfD zN&jdE4PF>Iw;F~h8Zs?T@sb`gV~=K*NE{g{&t^7R$QMk+du_D$#NQbB88{YTdYG?$uk+5GUM=(TIIVI+Mc#QP!~3aS zBYWBE$CtW!?(d^eiZNq$e&uyW5DonCFWHaZEV>+3ma!O7-`kBo2>%+Kg`cH7gsNts zk75=?FhD^%K7WwDo|pk^!gQW)E=}aV=VL^A1jBW4P0R3jxo&2+Eb_^8GP6l(ALVOu z(XHKk`BXkUPT8cKTPtPtAWZ<;Ck8VLU`4HT5>Y}ft4;iPr^H0j_a(#`z4|KQ)bnPl zrJQ_;la{=@G**(C;#zjCuRwAzgTE*mhqA$aTm4n*d8cCSmWSpeVAXes9l+BVl7Kwq^0Np7>min98S_D`&DtCR)=NEnoT0iIk6c*1IxU&~K)Yc5wdOI{L^*EJg?<_*u4e zuDB}cDNUgHGfi+gi0+WBhL|kJW9#uwaI{@czE4N;%Z5`8IZ=(U_O`hp5th~B->c}DGiJ1x)tuB&`T_|i}C3(h{3<*h* zJ?;Aep?>2jZ*qz_l6pc-U( z?1X;{cp(C95bc^X!C$r|j>LQr7hFx&JCf|+&$kP7M#=c!M|io&u&_UqVh&SO_3rAK zAXB7q`;AlIY>2nkesGm-eD+g&;0UsN31O5Gu3*KALFotsgD_37$zd*IR<+zwp8_Q4 zdq@YFtH*IEaS;*+<_)(Z17aP8KeG!--3zb_R#ZE=7TiY-(dl@VPzb>Ana>p6t(DWj*w5qW=#7H$ce047RNiBjyk( z0F`|`=RB$Rge8nm7A~GGUgG%P;qT;_*5gyoA0i_sPgWB7A(n0Eph!HSoW6iRM%)%+ z`Nui&ImKPiB-f94WnDAIsTYBrrp-BJn6A8`T3%rOJ8QcOep0G2axNE(M2wu&x)M`q zizS}+3>!H+9dx*2wFIwY6yzUbVTKqz5{1zWXP>dE5`O|*b-L<+WIUL4QxwgS42+Ir ze$nmD;ViL=J~{x$Xp>qlTG{b`%7^H(ol0=u!yk^TF#0nd$78dg0`Qf*eA&KS$wQGF z={C&158x!Xl)W`9{RkjsppR2IXf`i|`29@66F|oK!xO&~+i7tE&INr7QtlF28n%S~dp_Y(ZO_XB^>sdh^NbJ8^Mx8iKzH=_VooK^(&Q3bI-i#hpllu+79c3p zS0|oi+HeA=N^=az(*=L?%c9f^>+aH-&LQ|YG)%hSk5c(*fEl_ayJ`Eisk0Bx;^jCtuYD0r3$ zS+(Z1&jyk%G*#iCHJ?|XC(s)~-k3u{Y3=`jstBu7)ilt{5FPW~CJ$A!lOxalX| zn5&IF@L?h*GMd0q{Q~mw>Gs+!<>rO)I?yb(<@X;Z8k!(79ql%04WVhGjM6!pUu5vR z&09Ce#DDN+=W2C|UmheRu_yhFFpABSh!A+gXl6DoB(gb!E;IG4kMr#L|9dW;*#`O( zf-;2MKA~&4hsMx58)WH_l*$qXcF>YQMtQj z-i4sr{yv*ec^+hjCv352T7k5mi&f;7&?+6@VY7d?+-=t;d8^tC@n`-tP=c6`>WI8t zs5xJ8C!iGJfFO;q)Ge7`Pc08nC}=3DJ#Lt%`@~V_Bz$(4Ve5JTU zs7~`^ME1tLe0j4N+IYWm?~F>}wlcfqVgJNLS65DhO(QXr&8&yX{b9VaC}%+r{D1vY z*gxP=6L^ilO#2`4!00!H%sETLJBj6vsfkl*XUXqoVJ4ScOU-^HGKOUV!75&-vpZj6 zZ&}^yL#XEcXZ+2WKLa`8+HMG`3Uf>IM?4qiO<+k8E$%0yh|C(rFWOru}ufpG!=lB_nMJc7j1~5@_g44&|3a zi3HWMtwGg3#M(Iptjf21lIGLW+H%O`%^!i%n*0zqzf%YRb)+?dNp1SDz{EIWFC{b- z>P0sd?{Jbk*|sA&OJBL9x>qS>FvSeSmt=9hfkL?e-ts7mdG3|wv2HJQH7tAAz4WW8 z(>8jZj&9bNh1c-z^z*m}mU7BaswqUIvKlot}1|vGfR}i6$nZ8TygLXPw z8;E^6^ZWVPB%eIAbxU!x%MM{wnTO0|h#|ExBM#J8aay6o#^=H1K#Vixn&e1;7_1`U|q$}06A&eJ=JnB6WgcLeOy}9v9$7kq|)<;xsTn2LD;rq7~X<4 z5qAZF=ynihXw}-XSdtX~3#fwUKGsU~Z{3y!miMAt2E;b6sSI{<3!_jDDo%^@-ouuz z=@Rwe)K@y)SKEOTxI4~LaKE~9of*6`5}PL`;pOj}2J%A1z$StV!>#1dx1TI-1Ypr* zq2N2fo)TW`G|9cXBsJfcqbE*O7EF{45*)coqXa%z|HnsgTQ}BadKiVz91wjR+c54d zS#HE8S53vWmOkJhMj_!45Al8K!n{BQf9l!_67<+N2l(c}stmt|ngMC{7g!pcqDG2L zY6;)VnxMXpy{{HMtHvTbPf*IQB(EZx&+Ol2ZFP$|M08jW}SE z;5|YGtg|J}haRL-;hH(ge~Rrnfr?c?K=?)#rC^+c=%=fv_?5LrNPsupT|>Gc7}g4r zmyLlbL_I0bCJdNv&q2>P!sW+sMHAK7TIS5AAqx?UVKPpaA`jclkzl?gqpyjiJ!iGv zN5?M$Wm=IZlTP&Hg@WidQU5VttSivcX>Ber*h_bsgcp&86}2}Si#fqZD1e%v-%C4K zK0iu<$Q3eekjU!iOkuoS6YnB($G6`-T$gOyoXy&trApm_*``bL{O^=xEuB28f!&3oz^1Wl_;21a62pOD>f1<}4%jpG|p zhkC7$tMe3df`K>urshWj@{OhDybwFOtc`fdgsSGF_$WE+Q|AGVQHb(oWHkC$fW9aS z3G878XJikjT7vOqNh6Y;oze&`w!YBP;dpXMWB(E^y`vn@=9vk7j{nL7`D%@MZcrXuF$V4>fjt2j(Eq57o=BJcLh2kk; zS4#9)m`czP(_~0$o5{o>pl@VY9@}ppRI#}u4*7eDDGC!+&8o0ivJ+_V;B9#S5!EwR zy!Z^VrK{=a=nylKmDglQC@0-|zJHF!(mho9@E{dc13ZT0dvHwD)QRtZ6?v0?3uWG{r~t#FtR`hc)g3K<$~>9D+f z`wX@@iKaUp&rp@DDAs$iC77$`ArKGMqZ>6Eeh>%59X~7^< zhr=UQSqI!nPJ$kIoK;9)F13Hp9^dyW8zbz7i3yI!V12iKPe!&G?HhttN)p66a|tNM zkQUY=>wVe$M;^Hw1n^GLIprMKi@(oq+%t+`$2iMOK*XC*`NvRt*K^VD-2$*xB-fGA ztRJO4Be8>(l0Mk2gEmnI4r5@QxX}Vz>H1I2{#y&qweQkMVD}1+z;V;QQdVwz#$PKV4|qgP`iaWSbQD#YAswVseUhi@E(guZ))KN|Uk!UHv>)z9)6QD>Bnp7Xa-8GTcIlX<%5 ze$>SchV%Pt6UG`%y`qpbndO#Hs$z+kiZ7R)4@$dc>6ZGM27NR}BFC*C)Q~TXpvIMh zFB};?1U3|zsuH;`;-(LllEoT{BACegXFB%2!H<`W@hpiXE=$x4HdOD%E?S!9rmz@g z<4K5<7;Grpu)?xB*t}m0tk0Q>uS`2=;P+e@Ry`iKvb(?taxU zJY`XWWa%Zy&+bC(|1!843TgFCL?o;uK>gVM3kCG8gJ!uk>UI3x2v0@~1%}67nwT5> zVMKt_G}!cw^R@pGcVjd;VSA7TsHNAoL^M70ZOe%_b_#$Z)raIC+=+M5-V;hx$>by8 zl0QpK5H5%keP9Vz#cX5!F9Vx7%0zAajoN>d>(NMsgfVel_VtB#+r};i>GP-mca+u) zfDBFjn9x9?+;kz3xjVVpXgG#>46yD@H&9#;!fsI@1oExd5uKEG(x3 z15u^G#xGQAhXNidts^CTzP|`fYLB4T+>rqXRuBbenPiq+kUyQe^8(X)E{HqZ z(_dGAL}Vmq1tnfI>a5mW545H$=<-@ISOlSXZWP|Ig;5eOog2JUYap|zW&UtNLnrrY zFu@)V@rXszE_S2;w7!n!Xkb=^ z2OaaH?OOvhtv?-%=xwx#*9Z5WZa$s6DCv+%Y6E4M^(zhu^GQPuOf1C(AclL32rdV< z4cX7zKr}Yb{$hPYu=tkJ0bWw1KXjyEKma_fCKHOiD2sfrOZ6?*^EDt=s7XvBxbQM2 zVdb&@>*}32AQrgM{?4e+-S0S*`ucg-%g;Qxz~^AJ+9$BE($0S0ltSs38buG3szrw^);^~+>z;jYXI zHBM9VeQi`sl@t@U6}IO{?0jY#d78W9TO^Rhs(59>!ijX$7GgwP6|k%w)6VXiY;@yG z7^(Gm>`Aag@&)OM51xF1$BuOA4AJHW!~P+GUzRn6uBHyh-=?!lS^^eE1k zYq$vw`_VtC+UL1U({6EWJ+TRFf0kpD!P3Cpx`L4-qc01O{npVVB#Yh-Nspy7@Z*dT zF0;YYiOC|JiQN~;FWo=gsZ_8g@2qG{v;Ts&x$mz&%32l;L>EdL$O#3(s)1C39gXav z*o8Z7x|FH3K`c-;!KLm<=O_Bu+1=-;BV%QZtiu++E=(zy13icOc$8F1ig5pQ=K}zv z3*lCOXZ@0?FHkJPxT^9ZPwE>UiTjTgg9|Sx=-vz{4hD1Ti~E?BTNHPuZIX}J9!&u2 zawvVd0D$>r zMoml9uOdjnfD=%!WjAOz8b3b;B+Ciqk6BsI&<87=!-ZWG=Rx7UR&RAz2E`ttKWK(J z!k6_>D19Hzh#bDlZEyJgg=}l*hRLep1e|L!Raa{buCbZN68j5o;Om}@6RWrnbZEOq zVEnU*97;q_XC}*xmqr2r<-V1F^QpmN@m;XJ%BUvmmCmV7hL=y9rTVSssv*lAl?_lS znEPgi^5Y^QR(n1wxpK=yx(&12@9hOIWvZ$*a|ol+5ZY0E%am++Sc>WZk4=SvB5PY+ z##g7miF3+MxEy*c8GLB#!;Dz~ow`FFUm_y7p>>#qv8#d7_Ihq?#YND3GkC!l|4eIK zWqPs{i~|Z;s+b@LN1f)0&erFUKBMy!a|hb0K)UtdfNb1CUV-iIWvuw1Bx4Ge2 zBn9qO#6uS?QLJx2hmh^_W?+NzET{PN_5S{ed6+Z>rp>T?w|tIpvrc>E#XMER+na1G zMBq|B$9ydOEL6t`Nb0rQwPL#Sn=?<~k!TS)S*jrfiTmH1#+_f_=_n|h{HCB5rutsn zK{SV+!G(Wx>Zxv{xp81084xH%)~LryWib2&ic7V=VMj`ie{n=Y?+fP}$V{s3_oA-2 zhlpimr~6O6Ie{V;hUQusT`_Q3L=#&$j`v27H0U_=Tg3l0T~(YHXM6e5VNV#9Y<$y&|SRjxLz~p-xniWd%DL!H2b}=m|J=p8U2#pa0_5W1> z`T2dJ;+$o@WvkdQ1Z@*dhSakX&^!C zwaN#+dkf3#xr3$u=~r~NoU)5@KrbCiLu-WYq1S}F0P;BD(P3XniMB1Sm^whngzY$n z^tZr;zl4Hv@F3zyk7{8sw`gVbzs==+oUR+=6S{Efv`k?)Wr6Aku7Ia)8E8LFQSZIt z#Di?1l8l5rK6LY0-N8gBFPaJ<^l|R0p68Vw)&fvD@q*w{*+42znU7UL8PBR0g37#U z2NHc%vp%nI&CPn=hpsiQzLozpkYU*~SQYtN>g+Q}cDbFvZXC~+J5eHU?TQxg(GYOV z(jtTFP*>PjWPR_Vocli(uVnYh$6hGA?mjQ=6P7zO21;gvw?GhfHHe_{r`u{<+WH0lY+w z2rCTb4|EjM6Yake4$z2Gz46*G!NTGzPZ%KtjBkypXPFB{F30gIjq*(X2Sg~oaPY*t z`K1LqqbFmFjD0&B@MvSh4>j4!5^IApvZ}mns;!WMse&!rnTV$lcBng=*PWo^0CK!T z7+7?RM*8tMCERd;gO``vTw0X(thQueY4h-q3*NKBP0HHI!4jbNNA%!=b8B{)oDw(8d1A`QJVYaIO~P6lN}yy8RGk8DK9YABo&*6r)hkJdNK_5`SL_% zAQH#`Z>XKe;GX>0ZXI6z&H+40tSFti|0xrz#=tyaApPM;<@CM~;@P{1$oWj9&hg9E z@5Mwnc!fa%?uF35IynxnqVJ0$$PoqVeq|NX?q{{L=vwQuFIX5=v@x^->P+9g{|biH zbKzRdTH%~}_SZ&?wr}1~w>!0NSjW7Zai=#&9Hu4$$Kq9t*SFx?H%c$lQ4Wo;Iu7;G zYeHhW*7WO;ZGjaB<#a4qPJE6gN=1-jPapiF^F2#Q6TI=^)v<}cpMxXabfeA-Vx9J} zYHxdK`Eck`1v3v%1&n8e5_N^UK06?%`FIR|2WyAt5EWNiSb4|JEVlITBDLoYS;8xu zV4d?0Y99soP$DAt-I z+*_nU40@S1cD>6Sog6egle^a+g&;YHwnZ5HLrz-Ntb&*6Rr?`p$fS{K@~7vQ>U#Mb z%N0#qxxUEGy#N<6e4;K)8-vkOViEGA6WMQXJ}^OE9f)%EOsQJa35-?Lj(?GnPzwCx zR_P%hybo9YP%lb+Y#L+Q8laO6~>rZ z{=doJ+%aF_>)g=$qb)JeH`pZ|t+clukiwYKXY6=26h6k&ehzrveoaA85y9V{PO(}{wg!xK7 zvenp!scDpzSNG#l^2%t%Z{T)YiuPtUIKV3>cgg)|T(ken@tsiidOQax^y2Ih|M)VxT?O97KKyCbAvgq};(RDn!)>^|v@zW1xWa7S;O(`I2&I ze+{ytQ7)mVgtL+m19H>mUL#z?mr%I0QIu$)ihOwXJoVE}G#-zh7l*&R1G8f|StqC2 zq48(IFvL@@5(!a>U}fx42*Ocj(wl{dT~c0Ksk~)tmPV-sT`=gY!0kL5cac=|Tsw3( zcndlTK(JjAFX}FzD-(yN!pNV&I-x$QjI{g%g?%BMzBF;!$F5C2S}v2RZyZULF_j`R zILJS>`KMGNVo+0#rx(q0p)Q`OmkZ!>(WC-1wo{fe1mOsxrKU0l1`L^9F>93Ug8E}y z#~;4U={eIJ)}Xs=KqrjLH+1DJG01HvGNBBMk=v-w3p1tgg}~{>=)E*NMBlh~ZG2O* zNLJkUWmeR$LjgzYj%OSkllW02;IV`xj+|KjZ!;JwQ>!p6eQXDkJw6ztsTPyuhc`m#e~6;+B4+>Q`W5!@*pn|| z{M4!TL~~oFOcwxn<9eoCH@~$~Uc@ro2{mFvsq40|S`)FJGNs)Wv*Qo9eN&wfZwP;t zCN}m(s@ATn>AETDkMXQ}X^jgSsc1_`R4%ViSS)z}k))rjzLgj#kRgvf2Unw{cxY+&M>%flt3?DB>rLc4JiWtJQZ7Pwt%FR3Zz~qZ+pGgaF zraiSvIst29iouN@o;FC39oOR(m~Khe=D?pw}wtlL#z zB)nY0Jti*c`0HW=qwl{z^XgQJhXN(b$i9@=wWQ0NW+6 z<-vOZwV1Vl;q|M0lzbFXLH>eW{`$Tme14oqEnDIzTfW|`A6oPIe_%HP7knmy)|zDR ztHZ0yA-N(5#A&1$JS`hU?nIxFy_>R)q|s3Di(rjQFNU9QvII@<>1EhIfhNx2w5T5+HgeK|@_2k)8=5=ebB( z-=x-dDhYZm@y0U>U5JOQHtZKT|D<}BSoUu(@GT#F8P(U_qov2`CcI_?&gQN0ek# zvT%dBZ*bCT3rmYdLH2t|w|Ro~6+$pah{}?>pL;|w1QVBGg1ZfCW7iO7rVeI%d)fd` z*vmFf8vF!eh1V>INS3|vpP5JceBpQB4!YWa4}>Jg9TvsEY^vD%eufMdfn}X@*lX*K4=5D>kJ$avg9D1 z7ZGFT6{fj|*)0o%gB*|CZ*(Ld2T?H5z9Tb+4AXtiW=ckiZMQh)lSWj*9^3R^%oyf) zkR)nJ?IJOy%EEAYaU%P>Suv{-fmQ_ws$$}9B*b9ABIrJbjH%0>aOxb&LaBC!E7B_D zcfZ?Q{HMl$@rLZHQr^YWvMN5<%45~cDl~yhBA%_qNnMNqgsCOLev43Si`iy1YGAM$ zI82atD#|CZCd1XGt;NtYraV94I`{YyjRTWfuD83z+{&M%_h+ES{XG~1BhrSIWV=gm zE|UgmOqs~YLIIg79Vdmj z?>5_LQevFirj-)#13mCW*i_A*_m`8Nc}jh zJ3L_2GbTCGrlP=Njdj`|wK;eqJ;l{!W#w-@G?&L_iRPd7^UZ{d0ZD>Z14Q9y$iKWd z_LYYMP1IHC@i&paZ{TOjsES2XQLT}+YQpG!x!Sa4iDdOF804P2)q7WnWlAG*EvAJr zH2G$gC|zz~uACSX1Fkf*}hmGoMcP)(>EyjkQSuZ2pgRy?KN7wC+ z&Pf_2(|ndEu2;Y@KwHX{2<;x!!NA!u9V)sScCQ}G=|J1X7b9u9wwLh#y5Sw|X=ueRe)mV1nf!4|!=rtqh_fwo?ixc;@X$jZs|Xkyk~ zRV07NdAkuvSnN62_kqqpp0qWJwigNo=z0^fphsj<<`Y4gsNS+0;4#x~2|>p(2x(o? zyL0OesCR;+Rv*4V!vB$ldWYjcXm)fb6(9)BA^%VGiOr4r+f6LR-Clhi&be14^7u`w zjHM&;K?t-lX;UJAAG8g?*j;gnfZkfdd64>~uRN|rk%v)`@lBh z3!ki~Rs=*9@_m;th9YZ7C?Ahfo}H1iXOr& zRyxL;PLRCnDm7O;vKG-A838zM7gR|6>FtX5*6#M49LEUjlFiTWqb$RoC3h-*8DKh- zl@=>gVYgWa52wBq-Z~F?j={qX3joLcm^g=}-1AOi_?}jhIJQ+Fsde6F#nTDT`=FKh zTNYGlBkU^vHdX+qT*6QIaEVwGCSzk$a^*{8UmUI8@4zkKCl|3H`T99h(0aj+KbSJ<5O zzmiAPr>>-Ak)QC0v+2KBiImwC4md$YEYId=_dt_JcQbo~6A^z!`0ho1z|GN`q}@$gaePtu&iIl@OcqMju8{vdnI z{j3D*k$Bj(N_K*MHLfYpLm6LWi4hb2My*%!&th7e#Fj6p-Z64(HP@1F2Z6!v_$E+l zpu@l5byfcb*+*B*X4xX*r9a2<9u_W7XdNO^ojYFj2ni@H6(g+fK!Q(PW^E{YkaMUa zu$fJ5^LUn)B<#GXqZ1X+n!qUYp-*2JvQO36E@RyQ(=-XUpp5Mpe^4;J(=eeH=6Gtj zzzvZGR%o5TGkwk>SiU?@L_o=MuUa7v#@+~~#9(keHIJxbdEZ?cZ1bND_hD=09YFCx z-z&9NL;inLx>iH|-9kF7Sf(2fx*Du@r~ZVU zEYmhk_aw3t4Sq*8U{wy_)R_N;11AF-`lbW`c{bYsC5X!&&vuHqFG+emUhtw3O5*Ocm>S;V(JXWVF4(Sj|JYZs zQQR||{y9dvK()8~J$#Y;vxx_;!D_innhv5=)^m!Ip~p$-k&IZ@5qDkrB43FEt@?H9 z$;dR>wNUCf2@*oDG*j8D;F1?Aq01C7<4MRmyMF*7P*FeVB*n8>UgxC_M3{z@=$(pAkT-nie(odeM{~#2mEbf{1PrZ8nG2fa&HH5le*iJ+5 zy<8assr#QY3du!UhP4%pV|QUPsvo0aiL;8v>J#59cGh68k0nTzkSVz8FW{-k`nvZ@ zR$8RPfXc2Ncex_pE-NAwcm&k%rYpc;c&x(DEeXFWg$Kl!-sz01CRZzcvMJW;N1G`# zwC<(F!z9{BzH%$lY;Rc*mO9Wly4-qOM=1DGtZ5`D>~e3CVm;Y_DHgUjZH!n;zaI-RL&C^!qpI?>AUJR;B9lzTJlZ!j-o>-vD>pN#F&N*81WGL{p&@Dw|;^yRY$TlM&zBfXBPT~ zqRd1C@PJ^9@9r2;ivbDKybKL*#~)|&D^nAsLPy_NYX1uR9N8n0hlWe+Rw?4a7UrbM zwsg~w>C|~J+x<$4+zg+a^9yr?UkahYtxqFDph8Gk51e>>*j$%#!h15l;hBwKVx9G0 zPEe?`;wcVyJ$*uyY#U<)Y(L%f*)0(MHZA^#*$|L zAx-!1KFc_h!N|sv%(no(R@M0Mb00Gq^3avCw(n}a%7dwvd*;jHEA$4*ZvM{vO?cY9 z5mX`0XZ9i08ucay$x_*>??6N4AWhY;*;I0MqUst$3WWIoG|-kxVWJoZcZe8cF#B^2 zK9*ssg0AzTk+_n)@bb>~a)7p-IFGB^-3Fo(aWDofYWw2&k=91%HfpVIRb(9tfsVH2 zLR$MZe;w`4?D6QV0bkc)WCM9*iCH`y*-X47x506|eOoZQyal2}3+f+sNb2vA5cX*~pCc(Z4dB-18Y+yNBj!S( zF-m(dG-|>Fx#(xHU>XBsxpc@nB=d{pt6t3_UAY2wWA(B*v%h4ptgSO#X^5(VECd zNkifH6T$K>t*;U17d1_0fMXxbXzlRdsJBGDoOemXC@Z%!L1QW_{q>?qO+xG>N3okj zb$zU$jhC~@U6W^C42k@{pmgCJ`2qRH$9(-x?);@~cY?RV2~LR!7cK{*uKJZwVbIjK zEBV#ezq3l^r;qFN$N1GOb(N20f1_Nra9|}N1uo@GX&T5gXvY&s4_fO?maoI~EDbuh ziduxi0DEMy#k>~pwB3p!Of|c$l9%bpIitCOU`Zh0?TER7_w`BmFOKfQe0%5#CY`um zY>fsU=sGt3{c}c$CwC39W{@ye9?UjKS|64Yz1_Qb+gZ&$2@FVTLqBG(mB|5X%o#_D zu>wK!=&^mKfZkvDcl)IxZmpQuCm~JW(H2^Fc6HVOHPSdYBH@>Aku|{D7Dzj6#Vd1r z#u!O!{*jEA!Yc}6L>2>MVRL{7gAUr^gJhl_IP_!ucDH`@E7XeAUrcpI5Lu_&uL zt_4-RNx!OiO@!uTT2EXDz{O`FHghN##!RVnfWeC7I7J~#M`Eb()L zQcfJo$Vax39r(irYPWD7XU36R*kcy@@MYB{0XX(%et8Ziaq=&d0pTgsW`sEcTQ3d1 z;LfNM9hNP4;f40x2GJ`3b2X&VnxqnjjwRfuv$Y8d_*aQdAYDi_sUvk=-5F&P*|$Z1$J#Nq)VGFM45}w+i&X)=qBM*h>Qvl$ z3RME^L8W53x62N%jmo{2ILIxHfw0v-NeZF`&?BMp@a+zYzD@TRjGxO2+~bLV9?3Mo%Ey6RAzEXtB~7 zlq{4alx857RQ1aQ`yhu8a#v5@*hchtOGtt|MIdhp0F;s?Rng^WhIa6?I%lQFoZ5^JAb>8Bv;W=OGlO$D|b@S^iyws>p2 zx7)7u4O8VGWm>&~hE(I>r_K)ilnQ##Zy`RdkjE8%}{jb3`ak!4~?i1|H$=AfZ~k&y?20k?mwti7@}pO zd{yxn;n4L+96Z#IK2vfyD|I!y>G*NI)VBMmPPoWH)DueB1<4u>Cjt;{Z}fX@2=Pf= zpFfGddOn|>%JT}iGVk?W0ZU{MElQ~h1r30wc;+mgVQjGhpR=ccgar8c;=Ak86muC& zdj8!vg7s0aXxE`oVq*Jsq6V8MNRmo|68DY(5|%fQahM4WSD*jdVk$(Owja9$2`J3b zii-lI5?lfG*4~xXHIBiacRt@c>TeY~saGVaae$}c?ygMgu-xDP&cU38KyjdOWUipW z&(F6)Cg_(ryn%U*DUmX_4b2?Yd)kT}5w3nCP^z+fFV7c|iJc`5Ub6(j$FiM%o?6(I zQ-pHqRL4`mg3OaS=_~nP|65l}kAf*6u8*&~%{o-?a3>#GcpsNr@&Wo%ab_>}B=R?N zMNj#=&H1f#>|r@?VDM6jn%U6ctc=VQ zuhv`KRNBAX^EqyB|i=iPu*b*lqQTSpSN-Oc^_m=d6qoS5=hodjs1#Vs-VNcQy zT9@{Ma;K)zsi`J(o;hknMVfu-L~)hq6D_!>#vx`70JUJkC2t32n5k)*8Cl+_Cp3j_ zI)&Xb6pXiB%dUjV0}|CPtaW|91NmEY2- zYx+ojCpfm2KD6`$(S`wf1ued{!b-B{%Iz>^j%G&1&(g^F4Qi>Y&qZw7h(usR$TzHw z(*9>@NSuY|kLUZ;*7|+vob%7TAWD|x9BSC`CGI~I`OYl3-4#dB*>ks%H(Rl_LJuF z0G$xH0I(p;A*KwM@5xjsr?NmufSiJdfQh%%6$x&#uoU{x?%!3K+acTpw~P1XzaASgh2LoFMLRIevO3}TUNqI+Wv&BZm(-CR+mkXEA*09_KS{Df2P14_)nKdh8$(8 zibJ@j*P&__4l9ZGQV-0`XF=AD26irZ_Fv@lOl^Od6B@M6L|W8#dL;@iWFhpFv;S5XpDkYrT3I z=jC6(Yz(`9Ndknv$-e~7jYmmfJcbkNqd{B!k0?7YxIq}&&uC44k%e%N{u=2D+d6fP z0L%}Dk^6A*1lxPPnP{#E+cF8lTSyLhj}!*Q!Xk@x0r_~=oO~JV0767_=b=7bYZrYm ze*@6sAdB!07^2aC1NAZfNlQbly{-8*4XNlKXokjoKT_W7aOR{^GDOhl2BD`I3PFe> zEc~$1gsn*e+p-$y7kv6Oerpjo|K@iTu4lK;-4w+X1i z1iOH^EisJrO2Zwb^biM>xQs8fFz}#5L2A@SDTD*9?1)E0Vc{2ti{dP~E5fBa_wDI) z3dExd{R2pV!>KkBh>+|~{}0bGQnp>Xo_SjU-mszD3)4OK2QGM$3C(SvDPa`PFq-BT zgoBQv#zYdGZ}?@siMAQ)aiF*=VLofq;~9v6LHLtl;wp(n(>U>eHeAd@|C4y}{RL+*GoRwKGF<6RD4Ay1`KhouJ@`<{g z5TnJSZ+gHZ_eBmd>)^IXe>$0&PVPI1r&sPdBnEDxfIXMHx=~1pkPTC9$Pk%UmYCbU)0bRn^T?6} z2RJuqUm$W(LQ<7(&DagpXX{Ta0Kf&Ai+G_{jRkq8m7UK&VSP2upRIjksRvYC1lY|9 zl~%!6%q*~eGWlap)Yo4Cr^7*E@7;S%N@FZ2`h|TP6t;g=nb#t~wO@c=PqkeD`2}>9 zcJwT6gR`L5q`pU zX1=nH{z68+005hngW?y~rc5}@gOSlo+(LHE(Pc!5=75|-dXWPp2bZ*fAD8dSlVj9Q z%FHCVFLo1nodUrmjBK{$IpSN>CKGZIWVeE_y_NtV@Zj>3j_@IZOl38M4a@7c!*|tA zv1fLbN<8_RFrE4cF0D3|vJvim{YW}(QJ+6lh4`PB@3+a;NmE0e;p>6EskbVDHuNI5 za^RBEMD|DG z-GvhGs1VQU6r$ykGVnBV8Sstl@yr1Mu(xuVZggCi{`pS`n*ZUh zN*N*#-M0g7W~3Sdi!CG}wF>utzO3dA%9Fn7EzN7+&DHH$`g0VE&v}jC+3&peL+Kz0 zP_lF>(XsF_U2h29`i2Btss>^PtA?U41uP8)5J^3pCQ6H5}2c1~`bK zfV~%0-I=wJIhNj*N%R!%c{a~hs5kln_}&MaNW%f&vSkl+9<`7mLtg}=ZupD{i;SQF z*zk;y%m4tJQ`s5`W!O>2C*tROl9Uxo&JuW{ex6!_25bW9hEwPVs(OS*&*|~vi3v2q zohpxi6sw(nNSt%M47JHg2yTJ{-_D+nbV#mFJ0*cIyHViQoki7H@WZutEkUU-`CA^v z3_%%AI-fYhAd4c9h}_$846798D;;T4&6k000Lctut(qzZ#W#S(g}pT3pFSZ1Q|`YLh;zr4slIJgU@{ z=vnWRC=$XE;ECiXYQyW*FXR`rbR~lC&NgOJU!@ZbQwx^F_Qf4+qJfbBQG^x&)N7+Z z;j5_I?moRW9D{?G?x7I<3g$BLRlexpw-5(1M@Jc2-19Hc>$R@jH(;v&nvFOU>)R`FcudD1Yy%CXUakP;xu~hEyb`63(sg#CN z_HO#che7R{GWbhdc0vQ72T0$5sDu`0QV6gA>M)QD zKmZ9M`1sl%EGwuoT9j0yW;_06On%9q5z2Bu=&TaR6JmA9>*NhrYRx=mZ)qQ*WTsxk zomYiICDBW6wx|Yg6+;4r_85lgIQ$cUI%48@SULKO*zAyzN>rR8^7IViA6z=umV!=` znOqEWP@*NAJI)ogWxPS~>X9#-JoHqxMx7pYLq`zPTt&v3ytg{N8<(L^H#>n~*dsYH zT_~<^H0!IFBJtJ#fTx`xke={H*lnsb)&2H_EneNI1p8&GV#@oDyHjwuXpQ?;LN5%c}Sh2}B4g0nAAg!h5)xQEf@bqzD+Wi1P!)uMh1s;aAN202& z3HXqp6*eF$Up^vuhJ}(8CWgyZ$Shz>6zBFh`NZpfbXWxn4-;|UReAbDiM; zaTS@q+BF6TQM2p}Qt=9U;c1OKn|x}Lt#Mj&w2Z%m9q;{>iWt8m&T6089_sh`%1*dE zHJ>@1GhzGOp@m}8UkAI5HZfvoy8H(VM>^JA-IVdb0-)J42Z}#j`*z7r9UiXD$>*<> zF^a`Kw{O~YDEL~UbF$V}0w!>nOs3$Y%**^XD}#)7p12uk#RT4LmL_$GET!tI`(=|q zB`V*6xujX3hS3E5;u>j20KW3Es}~=5RKzjZVQrDS4YQ3EI14L`O>rNNQo}zd=#|6< z0=hIDxrd?KZN~K@vFGLI#7>!Yk;=f(+%yLg-_VZSYYP0`wNg`j4$&zTO&kNYwiy7( zI?>=>BuT^q5lmO~V~;iQHn?#|k%bW|QIY+EHXv*t~xrfsz%3AQ+ z)i(@Amr!r>$DYbK?>~kOu}$XcenkAXk2ha_vTg=gsVE1O3gVOW2eZ0ayxAOr#IOHk z`l*K|!p=2_szj7|KVX91XA2CX>-?0;WER7*fc5<^qAOYJKf`+p#&%CH^t=Tv$H+Y= zUI{A_j#ib)*136iXI_(Arv~oqVqRQ1kaUgAu-ia{;}*7gFtpSoWcZ$h0=mh{xP3$^ zK8wD9*5lyHLAKtrYCb7Y2B zGL8Dr6kpHMd#ZH|dEgCC+?a7xw0s-yth|Fmwr3X>XIjNr3o?;bU}jqfCeET!=gWwc zxq(CN{kE;lu)Zyx%o72K=b$qjzs%CLaobe4Ky+iRE&LMwsmcoc1p{z5$evPU>H(xE zMjlsKx5V-w+Bw|Jun(Wt?9axL27Q)5)ap5Lqdx6mu+)?Sh&VU}T&~#eb^+#WTgULc zc*G{LfWRvGj8Nd7+Y`a(7NHyjWaZMC345Hfg}6@NKN|x7US7PHq;C_3m&s7q6^I=1 zQoh{?tBTibS5Se1iZ%_HDZY95A?-Rb$+v%&YKV9PLbFhZce2~&c}*KVL2TT z|KvTn^Sc6`Uaz2`*>I}Z0eF)Kg6J)Su%ZL-9D?*_tAVixzc7KBq!l1;bdSrCR796K zhpIt=h@pOB%YquWYIjHT{-l?iy;K9>X8X>sa8K;mcPadrx&Sy3Q>y2#L#_5}jcnZ) zI?mxBjz?| zk~HFf6`b}W+kdv@>{)4x2Vabk1KT#vv7sYRz#nQ>TSL2jEozR(zJ^_7$lb)C7 z#GoI?UFP?qJy-qgNnvDWNb{TlR4=P>INms0o9WvU3><(I9*%*)q&5FkiWWoa@u&w1Y{Vk#y!w*g+uoXL z_!*5|{UY)|ay1mDHxQS=kJR?z2WYv~#wJkkQ9@8T5y1gFS~`cq{u@lxXk6qnOz&$g zj?h~*eR1CCA%_=O)IF-$!Et(kfBP#SpPlNPHA?slpbpqGLG(b4rmt&K9|M;x1fQ)a zq3C|+-{D&tb&BZOxtgGOxBz3xKnf6SpH~2b%1vzQH>Z-fFMV8=-HsAmM8MZ^RNyZO z*$S(hT6lkyXC&lJ{VA8CRbz@Pp2W@_{)bRs^4Fb@%uc>5{mzZ(H0&H@*N}q+2Tp~c zFU?#P-8MW?1)yjra)&)6n!&3g7i>}25FTh|*r`O9OBpf>_2FR7cc|1dQu|ffa2H6- z0{PeU9X(7I zJQW1MKf%(XT4$JMl-irSuSY2(K=f)C!9Y&I?avcAVw@T$b#-cHPP$(ALxw72QUgRl zkgv(VVF>BUX|A>H4X^mj2Fl+y)IKT@SQrwubBs=ZdldO#DYkPqvfP$rUpgm@w3#&W z8~5l3HQnxOOja870vaHjS5I-8%W4TnLhZ_{-hDweKV^o*7_fwQNZ5Al6i|a)spk1L6L=DUJKja7apH@YZ>?5JX)_Wl&wwG2-Y^hYzVkH&_8F-%-IFOz z^7Na@V_`Meb_aO)r@U}ZImOa$Zn3v)^<*xTrj@E{ndF=p5g{=Rckar)R3-Ic#vhg$ zdS{?+h3d=Mz~yBO*;&I>HACGkh7|PUosqKjD6c&JBxutl#tbwkITJdl8!s2ePnL3O zVDx_+6Uhu0i=?t4@0BmmDWhW~iguO`cqv45LMN0PBPRyis=KUYY=c^w#@>FPuA3pBZX);GGkX}3B* z1Ncwto%ESMNIk6m4>gSz(-z*f<>qi8^ z&K1H>(_{9(4MmzUt#9cecIZHZY%#ZBCRAGiaZh8bnFM0JwxnNF$@%KA;HVH(_{n}L zg8gI9O7FTF5rwpZavNfrv?ve|<$Sw|1N$af8-YjUG}y49-X5KI5bLJ@RKo9NZy9y# zC?ZjOb!rVp>DEiqlQ@R?Ejq;lj)bTJfiPM%+ggGQO~=`6*eR=W@{mVbhWA?z`O&ED zN5E$s+*>vd=4$yTS{kHAk?)_)T>0nLRmB@^E=Uz}gu_4xMgn%61vU=u`~x*ibR5|o%&ofqL{CTYLxAuQlKIAl&SlwrBOI1uPUOsQ7pgV&=dt|&4LC-=gi z%sg~JCJ3_@?GaES+25#KF5L*-xKaG2W^TeKP^5iIAOqa0Xz}WeHo3^)5Mn>bMco1L z&{PF|o+VI*q{E(@qFy~%8e3(^jo`Zd{mcn%dqSr$fLd+{{uJ?`>~TR<&#QEn zm_Hqj5=wJZ$Y*Q0S5QS(BKe`ioSkbjAD851(Z;ggb9qZ3!9;h+B=KK5bYOM>km@v}D6bg-z8JttNMf76e-g0dS?kI$&{1L&kj(KVW>PH-aiHZCT{ zF1QopnBB&MfF}yMd>bGL!q>t`pW3u4k>SV<Ufo3cBb-{;{X*cEQL2J$m8mWSl&)EF7-kZ2=+#|})6K%ai zOH5u9{BbXE2Yy#WqQ!>iCWfMq%;Y(S*hFlE-$`ya9tu?E0W;D578GF0g9mP{l6|oP zUddHyAJ1O-kbG1<4ac@27yE9J_{3u~3^BI|#5hu}?FGZbJ8;f2igEzD=8&Kk;=K;x zf#Z4o*9~h)MAAmG$z0!k)I5(;%gQAV$_{MK=*4Godxu;)YE5lBD7A9b@E2r}9mMjW z1Db7KM9jz+!%5Fn)4G7uL+(XaHhcTx!BDp{3Y2;XG)6UaLMCoo+8o=~c5qsIcjg)+ ze4XbY?xy555V7<|mH)3j_CCOPxXkV(N62r3{ zd0_}68XtKMGbniIC#|f2_+oT8AaaRcuV%*filDCu3OzNyhdZ`Lw;+x~ojvAMr700n zw3UO4-^xu)_%0Y9>`vcqAy;`PR!{NBmL!}>31#c6`(tPm>aRdM3e~@VHkcL*aQxZd zUGDXBxyE=wE$byV5%LxQ7elP)E72i^&r~J^s7t%LSZ)vD02+RnV7lD06d|3Rjx1A? z@%Y$5JJ4s#os-QQsMsPd(_7Vuwa%AV5t__B!c$KrtXo=u*=|qmkLRg%@nCwWgF`>r z98Jdi@xHUKe|PLr>$&(}Jt`M#=6@lW57GkM-h74S zo~qDM62rkEme}f8ofmdp`P^{C{;>VJ)ikA9zc<)W2|rj?CAo_MrbN%1OI$m6#Q>SG z^xOWgVNfw6Qs&b$P*9I=T;fd#9hBNSGy>B&8s1H}wfZiCCx^@kiKQq!1GMtRsFp&5u;Di?2dDys!_BIbS z@R}>ff1=+@HC-2hPNyA0cu3RmH7&%+fHTpXvFOXUcLUf>Gp;le`q?cDFk{wd-F>iC zLrYs+n_O1-AvC};*7Ulz_LtRbgMlu|L=V7V4Em4f4#xW{y{!X9PxljY1R~5KX$B0@ zDDH*v?{gN}Am!r@M_pQW+{E1F+5WD+t9EXMevO4$Yf%1r*pM`dB*Q({r-n1+jWV^n z$wQZn{|q5rFmC*-%Q!7cPI{=}5>?=sCoX`oGn0rw0Ju*qHKuYkUeg=6b(5p@Nc^T_ z;`FuxNg$JsZ;*41B6R5Jh#D#)tG(5~HrbawgwR$1?|F=}E;ryYs@e$TJ(&KMYOP3> zjVuw;HoV4OGsd}bK?0(LStO6TnggC^W^yRorgDJks7%riQ9UrPd|lPP3@V0d>lpuy zQquZ{M-@h9sB-<^D!`R14N=eed~W4exV4#BtGp6X<+E4mb(LZQ1J_cd*uo>EX>iLkHZW$mx)dL#p3~vB)%|r)5W>Q~oA4gJPLn~PN zGWfJGvrIjPJds+L|o3Gxns#?VEi?1rPGed zbCHAP&i2Q|Df@mpWM zs`?EZ8R$B&He*Fpu0Ov3+)UD~kdfiQz=WNm0}P${;A)LD?nZB`BH|NdaDkb2-qnx_ zT%j|nk)BD3hk=;h|3}RBPIF0YAu(z*1~0}YjiZ}MO7IJBQ86porX*ggtxL|TNEwq* zbSlw8nGBXy08fs-8hf0XDoBeh-H`!Gd=J${rS}+&0nun;RV~|$` z;Dl54tMMkUmvU`G2V5Z-oxL)fHdkuqnEq}u(9>^0L{vP!MhZTc%Py?NKsLC2 zC`EYG7fZxuYV+3PxXPGWtim>!DcgF*k$-x&99=KH1-h#VH;&d#9$hbLn!Y9=oMVAE@Y`x=+5} zb=w{~T-2;~OteKmu@u`x_rV__T5_@nHZ{U)yXhqwpCbM6L_sNB+}p%JeY&Z(uS_*RcXP2~q%VuM z(g$LzXEe`(r;l70%QwjHL2caBYl+`MilHB?E~?4JKrrYa0Go2uZO7?~0DB^Oc*nlv zuekSKJJ+BVznkh<#iq%RomS)6G6}s8=%7E@eFEZ|tjHhv{N}4MCqTpX-_WQ9K6P$z zO4ks&<~*VLL-iarXxTP(qLz~ds0|WMiV68-@+J1Qqn1_d+-w1aNUHf=glr+FN*+D|=f=eF)EQ)3(CnU#C&uXyu z)O0%V@Bh<2>2>!{b2i|RlLQE6AOVAm%fFI_^)?oSW@w`zkQO;%HLaOcS7rJ(?84|J zC0AO*r>j&eRc$)-ea1-#q6wfaCS2^MY|4AtczFY6NlQYnk&m5uFXJ|xz;+7p2+#;* zFDMZwCjC>9%QlCy$iI7FtZuQIK0y`k-W5)<#VUcp+?v5Coz-aLL(y zZV4LSO@cI_CTkg`*BgiAm*t87g(5|><=hkkhKhoZB?FV=ZQ_eNKN13YG-4ixnL-5p zjFtNrQCF#5*p--EOLwFdR*8@X)O(+(fX|F$n%S2bAM7uDBwYjhUhs8{WL~1XZhr!J zO<~kcIjm~6k*Nnw(>bXPQ-JVhr*2pzLup-36AOl;hdI!8+jVsf)+vGj{p+g+B!xBb z;X-|6+F@=m7vPA}9@uXsduR73Dxuq=<9jpJu6nhOCaNesf-9aAVpwj_?|C&@0Gp z=5jr7#6@Dj${ic25bywC?PWf`-t-nJnihqR5K;<-g0y*hH zjqYIJMisy9*$QAE^bW3g|JN*#eG3mG*V)-|J$P@YD`TeCV;C^Q^&hs+-Zm^xD*t4} zfeX}dN&CkMk3>UI_b!zPDeoIy8^wI~gf1?bheNya1Lb&B-3BlHyI`Q(vGaPio!sph zBKn%CHA>v*3qzQugx@V<;BOCm9qb3HF`z`jd>&E)?YW}@k=5hWz9vUjR|)KeVAzh6 z1TB90xyAAd{MQ}Yq}FHJ`)J$ooGgn+xGLze0ZtWi>p#ZnQ^_8c3v#&f4%vu`g{}Hx z?_GOBgi1SB_Qa7}R-F(>O;VHxr(;c1LV5HJ*b`8VNXf|TMgs&rb>P#^E(Wx)-ALAC z+3Jggc-w>Vn!Coqo92vSO(&7uT;u81ffqzk_r4E| z8Ri;yH(Y^n<&5K&6K{sBQQ-iaF=?sVU$!%gdYaCDplcY~(R^uJCPn4-scX4kJhL=( zlXK%<*N@cUaRXU{9*I&GI=IkQ{|oJBX>!_C%?~0nkCj!_B$(xuZo~j|Ru0PAyRV`n zSs|sgS9{-Ftjt)(KPjWZKQfLt%EmasrBz5DEseSa((!Y^Jx(?p!%ZiZ9ip3!f}r^+MU;bxy}=SEfw?J|uWHc!_tcj+M6bIO&>s zx^Qe7I|bTAe3>;_f%sQrD61l&+m}}V`udhc7tA9HEsTVUZU>YB8(^2De7mB6T4P+G zY310mQK}64Zi)+YL_h<8JAsW`D{hFt)J4~Kp)W($>rS(B0(pm&hXcQwKa0n?nNycd zUBVbjIvj$*ROZ0<(js+6PGy27CCRw;9gUU&0MnJAIYJjy!Dq6C))t14A3>(FBnive zGKBR8HNf!EWa5x1IR^lVuGFJPwO69f9nB2vg|4((5ak&&rpY;psfy)M1+^!1#+IER zXTp!7$D7U<7Z2< z$bj*`as0U%K9$i{+9;dN*&9~|N2csa()1w#1JF8vEw8VjEl-9Id4}MPr zwB=AhsqodJCIZL9rsMB?s8S$v-s^bnbEEl`#JIf$&M-e&7l{BZjIk_eL;g)sxkN@c zOAsxE0EGRQ3Jf1ak}wypm{0m}`;#1rpLV-#o^Xuj7Fd|c0htBPSd*I^)L=QY{6!W^ zVaP_5NZ8|D21-1?Hy9;~nbWC`zqKz^5#FNh*2)R&EPciNkOp3NRE`y+GMWzDkd1SL z5h~swdRcu6td2{UZcByX!_psHiK8niS7Sfp=*^t5XLRxJb5S_DV`OqE1qtU>!~>#@ z>84GSjIIfXch+Ruv7zBllD)}+2Oy7nw6$2hhm!lUd4Ky}><1%G`)h3fcU?_u>-w^{m-Zsh<6G_$Jsr^Byh(|4yN`HM`Ei1Q zyv$S*VHHCIT(&z_)COhp{?@EjS9&zvOY~^`?eQRZ;iJ^(B0isdu@O{LmB`ZovU=z74jNABaW_j4cLZ#A747^({JbC znV!rW4gW*tGnl6MQEs~tb@4p=0`)Ww?~bJP;6&EsXG8A5%=8(+ldY3F1{BNA(dot1e7_{Lr3_PNdkIdBSV~3-C@tw2x3?zrS3J&EUZx*0#WU z!u*hcBPS+91cD2-ro`?A;4Tmin=b>Z%x9#n3!0)OjoPYAtoGDEQ2~6cIlbL!H~I`r z>b;>P&iI-nL}G6wu)olto1B^g=TL)b9dC+}oH#TKq4f<3JJ@P5J)AGSG18lGGCLV? zFK_=GrNlg%eq;&1BfhlMAE!uLH5PnsU%_yhqy->v7j{iI-z=!Qx>$9M!ootB8f)jr z8>w;2#aG{_GGE1@;aa@UOyQLr!VT%7-p7=O+soKN+&T+K+WzA0M9H&e=%PLzxb(#I z>soqyE9LM;>v`6N`_%a~oOmwV*!R2QM;~L~T>*Q+Eq;Bd<%Lpz5Y>(3KOrSnOk-Oe zJ{nmVSa>#N#c?Hi;9*RP>1U7r4uAlTO;@?Ht|V_D-W(-v4J*M-yr>?qIP!z2_T8ao zj;EKu4zHi~v@rg2Z5`_y<=n7`!#CO`xqRr)CO7ppH5wlDJ{_B&U1GYzJp!GXfAp^{ zLBq5_$-^xTmDf`t^>=SLwaSL`TKv_EDE?XEa)Qk9~l%27mt^DTK z@e}`2jpHN(vKk4ui-*-w+G6V3*%H7sX-|?UVj>cpQ6|?wgYLuqT-r)`;NB%#!61QO zs^e~P*1>_iJQU))DlXftA1}*saNvW)(^_krryL)UZG+-Ng4SHwu2EDfyo<0ojb8mX zz)tM+Hsg0fz7f0c@Z$2dx&Pu!s|I9xu_!^vw17Znj=rHq&}OqlHURS&k(T^cWgde| zFVW`F-m{Sy=WpB#52)F(O^`KZyr`=3ksewhnRkAIJP{E7+7$yUaga|aGKv^_Qrm~T z_ak@6;Vr?8NB+ek4tGX(r!K}8ZsI3i@#2lcL}BiUT@?TWr81=cZx~po>O(qWU?Lm) z%CNt?9EpEUM%f{*uB-F&hSX>D={-bQb}??%$N3yx&@+a$l(<~bi})z}rx?ciN7o@w z`xev`S>X;32e=FMJw1|hv{GS4v7aL+Vz~}|G5?wgteA5RU7Cet!iPYL3&KEj3wfe6 zA|NtZIF)EC-L@(Uy1qiS9UeYxPf=zY-8S}wxw);^=CzyklQ}Cdlr<=xmE7gtQb&+@ z1Pu(m;PDzj6uJ3^e@@D~!I{+;PK&1`eE*MyXkyr6^&(>x zIhV{dJ7EmCWO{2F3n}AcnS_<r} zSdH9H;Zkt*icX8HwzY1~C)=qAYr4nk(j_L+EGT0bfq%ITUb96}%ULR)P8ZATO#}HfiVJaaW}B(ocaay^3M2?}a;nFF%x)NZ+<;&Y!2*h(?*1O&s{pNW5ZY>|5K$V0N)Fep@Duf6Dlh&GRP z%tNz}{4;xpuOp@Kv&whDKOYY2IBGl}aFioj?}V%Ft|h})m&cRuDT-M`Jpz^q7rm$~Al<4vv!aoT+%y|9i$9-X|5a7c7afG)+lV8*d7kILs)tf}Ng zuEPK2dL;IZQvsB^rVdymfo}7=u*JCxLWR8ikqPhLAbApp34u2Ki|BqO{PzgNcB=x_ zZi763x2yy8x2Kn*? zo++*BZ(T}^z$NVewg2*&v2Dc3r3m2FlVfY)46&}s4&#=`Y)dQEwu}5Z>DQPTi+A?Q z!UKw}O}&U8Y5G2`ScCxoSupI{07oMVZo~nCZ}cOpfBg<6D*%8tHh`no`q@+}9Veeb z{9&W{fr%!EVy(yzH8{#)0IMg(<8OMOV84#ewei*3e3{zvqJnHG+LFZp^u8FYei zi0(V({{2E#A~O2|ux?;=ym_*)&ewkmDrkH0Gpd`hjACbwZ4`S{>X%UNb@1`ypF@x(;+bA36lIYksT$Ii-V>BANM(Q z!**~H@5PvL-$BorZCC!4n3f;y*p&<}EESwkCCGxB{Czr0bgl_A4bh3D$A#u-Ht+nP z$kd$PU{-wNYfwd){zznB2hHrOH54A%9)>5KYpU4n(p5$aR~5;`oC!C1^2UD@RF;wX z+fQf6RBz<0T%`a~*49>%o%$eB&=l^r4BTF`fTo8Pvz*BH&5(9gaLy3Qh`KcSC;>|E zDf3PYRfkF=F_MZ}SN)2RQ|ajc#}g#_*TSa}nqK^3?Ie_tuQF$+CQ?daRyq$;rQMSG zAI*kVHE`^5W-BMH<8krgfPUP3vDC(Sy81B8r*vRSH+lhl+JS9*V@L0PmtJLJF-;1^b{cXr!sGwgc2zsb zr(Xz~mE-}FKY}4^zzKCQhC&6cZo=b5=cye-<0h9rBZ#Apa8%7*{tFnL^+xcO5~aK4 zEJ~}$x(dSYN%xU~;oPE|ZOHl7naZax18LuxZl9q5CuQ~65p4=FPzhiCUaw%axc@A56mU_rI6&ppWX& zK0V>SLh+3#?$uI*h)k~bcGUmlv!!Z9N!LT1q8Nyp7maPdfp5aF`drRM(Ru~o)qw{mm`cyuE362x zLVCF>0UaVqO8?QLoo)`IjHd~nf7gLhA34N>@#Fa(HS}mhJDDyO+JHbTj73YXSwOjyvA?e{-EvtBsH-^e1rJCz;CiRzOD_) zzfxdOw%m`}*gRNJofK4T%6FeWDgH(-vvq_A!u+{vM;`X)xsmKglo1W_GL|ZKIQ>%d z=|*|zR@*AY2pnKlCW`_aB{ROA?kc%n-sDLeTw68;M9yw=yMzL0-Vj02iBm5k$0>og zDW4T!aFOV$K)K`w%xrj`P|?VXVfhqyxEF9h>ECKafylI)>oNVIWZ_$o(76BNj0%@#`Jfltfww z%_N#4+K-OT^#`$QkAz5xq?-~l+745hsY2BN7VF;z4NEs2+x!?O{CG9jZ+sFb#7?@f zSuuRqRplt*ue){sYvSfNIK=b|V<;7187R1{ai}}AL}tnQ zRM7y?Z1JoMGElQfV1|!RjHG&}A9n);lWe&8&YyvE*vS>T{#Kb?kR4I#!OOh)>HdLj zo{}z&3hIWsop+Fg7AVC7YWL$u9q0uXFF};;bRTSU zt;N3eM94)NB5s~aTnMs0)M?5!b-JZfRTp+S1aqg!3cF6@`JMGyzz4N~x_12cMWZ%6 z>{BeX2iPnzo>7RI44c%V1g-6C9c>z3`Bm~X%FBvLIra&}#Frjrp1~f5pKV~fY3Ge5 zBZvc77j+sR*}SGtd2n^7!aG?a3?1HKTU^Cdu4Ve`DA+q~g)>v=fMNXI+e`9tZW%`U zWF;49Ux6nYZLF_r8s@`2c7&#MED{vC6Ji=%^NhX)vUUnDbuE%e%H<%c4rMU|OQtv) zJhPP({iPDB7uov*)$hDAG`%?aTBYT(_Wh<$ZakMrnc#a)Erwg-{DAWnb!B)@%RyiQdWNg-r!7NecU?YC#C$towO* z=un#Xh(Nz^|42(*^|Q)Cjj-$21%I(s`_vNYEtKG3T0j9C@AmErISd;zUJH8{B#Y7Z zuHp3+eJ=tq-w*bnm=iH6EPlSsnA6%Ulv~@4=e`n1Odl!ndw<#lq$TaHZvN zE&8R72RKbgRRL08I~UALr3wEgF=w*l0@|JT`?gkb_;FRvd%ZyfQPa6ZrknGh>GEy* z&U5qPI86TvSm=|i-L6<)P%kCiOK~9qCoxYg0frLBq}8J(>W(~t3xjkopQ=EroGz~| z%Cw$4@d%`{ZoaxlutG-&mL>HVoQcK=6Uw$;Za%_z2YOBiZqc;&gwYfFvYFCC%ac&~oZ0QCS`EZx0!LyqTDo5vD{o2ZuWomYj;fF|kM#V8Aw#=j=w zXr>+mAa~0+Qt3R}K2ftoH99{#e}24)l7!}>Bv!jrc*eUsz&hd3lyJG6`N|U^9}I;; z>Em0LxDi1DYfIBjc^9c+=HMQwOd3Ao*KPm+SB{0qxK_H3SSAG4TK48`mCOJwq0zEM ze&hWEu^C#9(Q6%AW6CJ0GLOy>eO#eq1H)^PR3b|>HoMFMC?Qh%YPxenoo-~h)t}~~ z77lC^a0Bgr)Ri<1vhr3q^TD?nsiyp9;#HDXr1YYUKjL9ZNfEu} z59@nP8An-%4mqpZ#NA-MXN^r1%DlG=s%%9r-SV-#d&Z6M#(A#009NBB0R= zzEB)k+;{-S3f_ba@RXH+)uXQn!ut|q=;uKSe@1)Skqse_Dqdsn%S^cKZ@v#K6ogM!Y>-g6d2c-BCZIQ<{Z_0y>sxg105$S$#@eY1M zia#|!NF65@D?lW=PsLn~G;&w&{z0xsg{HJ6`y{DgMf0;L|yr;6WN93$6z=}UKN z=L|#Npf|c+#P;RJ4TY0=3oXD&_hs~^dHNukL@%Awh+p0wpwD${Z~vxwYIyxTpPFUx zj7g&;Ggd-q553uin7OS8T5C0@qN%&w?~WqCobm_GsIQP5_x;03UxL=MyL*CgEA1CL z9R*LcBF&ECcMGLR7t&XOF3GGq1#KQ?)Zpx!DJ-nEOGLQfo~25DPo>|(NO00YtP2!t z)Y>U;6k0Uf9PVqsIRLo(pd^EBZRo4)skb4q!y zF|)3zWk%y&k}L6HUxtAClJ*SN+6CV3%vz;DF^t9HU>)moIm%S!LRO;@tB$&`K)*|Y$nEeaD5UQse;2{_>QOw9G1=W0syO$=&6->aw1@6IfrFim z@Gx&^xwHUGW=BD%gbruMqaslu(WP2{+K|E}pRP~bIjl;1ly-E~0=)x<&z;_x6>Fq9#(*HXNN~@YsogQrx zumTu@7hCaTjHWM;}-sH4{Dy^UR{YJ@()>LN#z zZN4wbP%G+|E>Ah&VSFqmnnLDkYw%|U_IKt50<9(9C`|-R`CxVXZoLrCZGT~4izpmj{N5r5U`bNdR^EJn= zRYcv;A>x#X>s^OJoVoK0H4s)n@HUxFvz-(!vjWh*@djrvp_wK6H$GvWvEzj&ZIVOtg6}!OT zdqtIx`GH_qh7+3qWIb{W@7myt?Idz9=3MR}-z%Z(_#8F|FJ%RWH^1|D)Pkf8u$;&C z;)=w1`xNqm!7G52$)HM6ddeO`UYr?CePQ0Ys%EumSE-Oj4K2w79pw{F5Hp#)M%=be zZK75CX+dUF(>*&yPIVp+0{Q`MY08(kQ_V_`R0PD4q*&ZB!vULax;Ua39m^MIV5s1F zUyLf6R`I&ws)G{z*OioZszz3M>(G*Msl#zKi68ydh|eGZ-7bLOF*>0-2Q956?&)nTl?Fq;lTXnJy56M zSaGDUYd%_El@%?;9&L^+W}XZwo9Tk!1e18PSymY;!I=*{ji>ZHLntkC0?2%(gWn_2 z_c~#6TLLO#MEE#wbX;&$cG6A`S}UfW##=(>`($}F2y7KN)W9c&EcA%PPl2h@;)PAY zM(MhHwkCFs?(dunl~*tGzy@}mTh!$)j$5kRO6^JC%>x6d;Ae}JezVc4&Ftt%-p)o+yL!y5#Q8T0#k^mqlS@8Ui)h%19#mZL5Oz2N#6_i@ zPE-vkp+|owB_Bee6yEUbLbizQA}y4o%Zl~Bn4m5RG+eF3d(V@T8WXYB#CkTRkQGe7 z>N6fZc@OHy?GPP2UP$ePbgAisa{ge!(WfDv^Z&LUW`r{U^@D`B68~_dFa+tLKYw+( zBj?%3c}#;$T#GmyLhk0IH{Q^P#z@PiSE@~SO5T{Rek}dhWYP}di!P$v%y!D2tjT4M zlN*&i6ORvcuhGy4BJJMru?f<;#mdk3A5%_Ex-Zk`nqm`J!y8*3LjXJFQTy<{b^^PM z>nHFC6{^?sUHF*&xX#HyA%PS_tvQ@flkWLuEj>9LIK0)>Wc-dgDkb$RHv%6%^*f8X9p-5N@v$V#W_{A`Ho)S> z%mp`S66)hDCz)1Gz9gPqZI#wz8;YahMBSvf%7kF!D23-OQ}*ztyPXJvzHmG5*krym z&jOB`kjjs_-MK>XVVL0+(PBG;G;B0T(FLxZb}DfMhl6*3d(tn=_N>#I@m!fzp29m^ zuO)BUPOZkG(05j~g`2H-EqeECc(MMKr;>e^Bx3J)@Y*;r)^&UH?+9sCtYsLBR1T^o zbiL~x06PH(@+0FB3ktCQ0`Zij`E`ClC?H@8nT4iYM5@aYVu2`I+dCWcmHG5Ay7Wok z`7$4=dpQ9`0~VO_2KZ$bhEC@`79wBsaBUt$fXR2r{m*T9jwu5pTJSiEUYS4=QjhWo zr~rPkX9dNWhi0QHTRfNqQm`r2t>OC*9$mU)PtxX3Vdeh{b9`aP?Cu|avGfsCAO5n0 z)2gtjFv4#W2u-rvz<#DD68x~C2FZ$1e(Udyl|Th?GUeM~ieG3t#RO*~-FvM&P?~3b zeK~YTOC*#34RVrC1Xd<*DT_4l@1d0c1vM)A14>&rWc)sVxU*1(##0cW$h@z+d98}! z-3{U_HCIf>8_t5TP6PjKdWhXJ9QKn1+L6tT4;xBM0xuyc!8aSny@2WNN<&M`YQUV2 zzIdb)9{wd$3naQ`=dCNy^K77MA$V=OOEjS#Qo^8EFK4Yn3U)48Dpg$MIE!;jyLR?d zJ{Gdh$~FcBN_PRSFa}K)rRw7q6d6)dbeRH|Oo*F&p5*#4z{aS$PA$FTjwfSZjVHb??(iwPCsqDn ze$T?`6np*u!z4UDz*vflT6uu?F%O>8ILSgOg zQV|A`Dm}=RT!&0u7!ShR{)}i-jWx)>nQ;o1PMKxw@gZ6K4OYA&ASyPeerii^t`)(U zGJpSUyWAS}*ctZcCHemIX5`r(Qrc>kI`gdPPm{sV3?WgmF04&nk=bB8hqJ?8d|Snu zFr=WtLi)aN5ts}00wP5Ejbq2)AA5>2~i$fm$rY;}--Ufij%7k%e4TC5@VA}IBiy%Xzh1hP1s zv%f3?a~man-XztMYQ{B$ylY-Ed<7mAL2j$R={D}6@60H{POey$v?~_^!W6$s8er1h z3nDDLM3aI*>A=aC+V-+#JXqL(8rQ8N1tbuc5@5xSEi&^b76B%`b%y3mArbrv@p@8V zp^^vu&PS7$6JnKqDq(^;?R0oIn|#Z_<>=P4B|}ShPr3}%)8QaIJP19vs#p|Q4qJ1z z^w+HhzI$A323)hV5d+>65M@<96rSyRR27RCN9vI%fZ0%Enj#eM2p(SI$Ob^baF(Rs&^g`K67NriEKPAGsF!V21Xgor71Ga481f zc>~IMd~~9u|8={Y1Hmr-%%x)YbAQaL%rT|!Fhf_whXeT^G_kSd5Uh@fhJ`mbP4MuD z#rsY(4|PMrrVmz9x^BZP9J7zT$6onVKo&I z1W#(Ztx$_|N6DI)&Rjcc#JnC5Z!8ss^`SH|JnFN5s~g4%k~CEqPTRhWa!wEAN5bG{ z^WHBnoBld1S2# zrJ~h$8>xaZv<*<6TqO0rHC-H?g~abC;NxUi-t;>FFZZLNqV`wwWWk2|$`l9w zDpje>{X6w!LFfj=gQc%&G!-K2G-oK7ulZT$LgUJGpk5Rh^-2^8noD5i26#`%PG&Au z{m&6$qCj%F%7tWfY6MUjFFRGzmkd)9 zy~8QJc4O7{0~XT5oujn2-H_ML;c&ITUbb&xW#rxe%WI-bI6gV0h=VHPmH+=W+EZ#aMd}moeKDqZ91;y_E*DRc@ZL45k+K_1S2hH=<&hc zLPno$1S^|kFx}iE6Sxm`T5j7?9I8OcYmtp-(!J|aUV;OO`JVzlJ>udCK0cN3n7P39 z83vGE*8*{;yB6o*PxzEJLKzSA0=&N8iW2M)@-p1Z8vT8{0>I=@I z#*)`ydWH{BRZS-w)0*92db@&vanaELLG;on`Mi~KyKhX5Cg1W8_&+NxW`UgP@dq^J z43LdiZC}I_x)$@)t6DuK?naQ%493htAN(&@ixvZ!6mK^BdP$wQlHbrsVdl#@8vyuC zkUnghsOr@>G81fZhquzJAVUX2b>RI~G5;}4;~T%^9@8WK6Xfgq1-g{*N7PvO1-Dm8 zT(qB*Emd4suK0u(5DO~ACRM!YqGYk-2LLB8HQ^CwzV4@90}#7hEKvZmzN1o3nw@~L zplVGikUFG5?f^kyDx(bep(*I9Gmu-!SnlkgWp(gLB&it- zqO_54n$CdkX#|-MkZd;yiK`Z4bOAheF*DE9suuxDh015|tCfMynFUf-m?2uWp>A^+ zoWHqSVbny@dPEO#^9Z`BFy3=8@LVgkjuXp)0w?GsUWSFW6-!xR5Q~WDSvB_-(nWOG zj}s3LL_^}Pjh&3Uj28QVpi|HZ+{D{K7V54}sa-DlVk%X^wMA-c2FRC6(U(@5rU)F; z!`SVT_N8=@>vlWCz)81;&OU{&S-_`CKizYvB4-(jd}ANtB+Jn{mio?L>4>JxVr9!U z$O~`s4RVb-wZ7}z#tOfrgAs2-ks1lBiRCT^m)>J*kHSN27PkTO31N)Qcfv2RQU7z#LHIvXyg!Z0Fdot6fjjm`O0qb%fhoMpC z9G5v!JM9$5f$hw~L6-M$yp-Mge9svuSB+cLi7;AZ83-M8dg?HJ#+t^tkTmyajV3=f z46B=QA>-G33dDcIZslDtChg}|Sh2XNzG5=4Atq2IGO1TE9$h+SmpWxy^f`}m3g+T9mNPz@gClarPuf!zR#N;!m##yG$Zy2SfY z+plyrDJq=FZz`v|W}Qqpa;n!;M77Sd=ZM}wd&hOfQP%>YVauM&9#&;s^dc~rt~K(} zA+cTd-BS|G81_!Zg}V|~kn;nS`R{BA&6@H@EbJH-8}UEip>!q+CKs@&($f*q!}vRH zjQFPl@x2_ooZEW?RXCfO@SDOZr$1u>;+IMY*y{KChlEN}G(3fyj>coaBQZu82+=NiRKKy&xGTpJj*jxAUq44Q(L_Fe)d$is@V|?k)ta?O-oE?)zFIXEV3MYii7BF>4g=WEEfuyZVK>AA>^T$+eyp$7tve z+jE*aGpJT*urUq14y=V5`H^uIZM9<8eK{N7$(x0Eivt=evi)Snbla{d>j#(@Sv(PL z5IB8iW-sQKfWJfR{7pb4=Zj1$a#fc}3jUB+wU+dHVqS798s~C7fB#bh^K@HwC6fg@ zT91MT$Vrd)uoVfD`xkQzIqX&rgn%pB z4ef_%W4gX9N^2KoOHZY6uLwXV5)45rV6ifSLvp)6TSZqh9a|fZ9_cmmUTe3R40ooP z34Iv{R%#U9R|s?wkFr>Rk?N6FzuF1mjk%d?p#pepi0KYnURLPp17P1BlwXDhMWiw3 zx+Mw~6{HlA$^!mU!MlkD79FkXmhBrAT)I)GzSx20gZS0G%b%)SWo%ptE`5&PC}OY>U5tR0d^hggu^#H9^xyS#PSml|c%Z9SEpSQh2 z%#eWPv&I*GIbLze_d=sMRk-DK!Ot_pk9im`)1F6tiu1*fk6iujvLk=dc6dg*GH!VX% zb3}Drh1sz1BLQ|T5=oF%`iE?{*bccOBX`p{4?v=-LhyseRHifa2v65#JaQate{`w! zYoskB-!NZTZCzp`4vG1}umP^PQ&3!N`-+p5Y?nvIjiKT=+Y{V&|6?|znp1aacM;g; z&(;NU6_)2@-sXGo!{!|9767`l2%x9GeK&kdzt-cyfG!!|RcVJ_e|+45ZI^cZK$8f= z5Hv0_&>rMEcvb7g^i&GnLAXUKJp}!AaNteiNkH<$P9$=c)0W5;kXa@A=W@D4gQCoy zf%I(l+IVUpNNwvzfu);V#JHBu6d-NTHPZ$OXj9jPHx41lGlHg=x)8iU#nD3zP@V3* z$0&PE%9Aprqaj{NfTvc+a%syPmKLNR*$i3p3(yO@(k~>YC|=7B+I7d(^z%YF@=!T6all z8?OP)%tll{ZN&vV{Z!KT!X`L>{n)x80@Yuy5w?@$Znfmu!otnZLgowoP!O7cysa=1 zz@K2}Oa00PvVDfBF_`s1QKJoLSdod{RXYyzY9cs00j0`r8PZjitmf!_rchgB7Qolzc0sFujHTG9B(+cNuABcsN5pTFx!>pKoe5Bpza6_vt=hO__EkQ$DddFCRmfOb zmUkPLbi9FGjsvsY?S`NVicHxCTkLtOKuq%RS|B_r67R98uD);tb79_c=)vpW{5Ooa z%h?~R>DRSVk>m}3ot@@vj#YakFZ)Wuq(y|}&Ez~2M5@HT|?<3JHhw$9%{4a{%{ko0nr zd9W{omciaPxzvPg_w z+*sXQ&NwJp51y(oM#@wsem`={Q!QG95=<_(e1GLYpsqg4quqO*fyx|&84N3k)IxMvu~(Lr4YF9pc2 zm;%iSfBU$v9ln~Bhoz@rjnWCs2TN##$10d{RFUsBFvBXb;8JSWJEbu#EfU;s;x&N9 zo&ra=mL_1*GI@Fubt!#p{|N6+yA4J~2Et&cElS?}nd)hEyieptD|y=OFU^Flx`X|$=~5!__;n6s$!bRQ-oeYkjr)~*Mz zx`Ocxm0=d|382_*V9LiYV0G^4|L>BEQud*kbtlCM;X^#D^_se?6yJ6a3uMxNmwlo+ zP8IZoA?E1@I)~*U@XFSN~TXzkrC7vd+_pYwA7kS0JS%K_K@I9NaNyGwMe2e-kB{+I7iPZAi5; z^eVPrv4RAmqdUNVjmtl=f+L6NVWF6}LlE<5E2ms3D#w-9M(NMag+Z%dDWjrCqR>9c zmG@j#F7J5bvq@Q7Og6s}J;T(^*xwI$Y^l!$N>r^TcD=drv0dLaM%6i19yf@VJy1P~q zGz5~y(w^!FAMiIeUfk_5#J^MlRa!(*WE)r;x0D-I#($SQej6Nc3pY@)N()H-4vN&e zSsim;Z}RseZA=hGBITKTa4s*a63l&#xRlg#-uFeKi9EBy*R~P^FRA6KmEODjrwO84 zx+Bz4xy_{C&5+}-(K4&*AV+^pN3&%ERjVdVjA9W84;A$7bY4%^#DZgdWEUNlWgUoh zO5-7+4P6o|wMmOs>x#j=M2w2MK)@|t;`5=TYC)%*dxBdYb&+)gj!vUZ8-lnpuO(mk z9~&6(k|h+OK>2+QRzGkSn|67t-WuZXf=YE}a_Y{?dJY%RwjgeBsnDrOs!aiiE`>82 z`}6n;fWs3lp;;&t5+T>I>ciztHC+H)oxh?<0^h5?jM-yC6gohNrlOkdSXI)9K@Ez) z!7EncQVFq?#k(Eaq5W~`2@XzqYE86IR0~Oay%vy*TX}Y5@rROq{@J1-ToN&tP9%z9 zBs91jfX=T9_0;Su4b@bq@{efkqc5?;v?Mlw~yRmy`q^R?YU{U13zCN*vM{&BPAO<+I7 zIv-yZ6K;B{mL;rh1Q3N!vTVm&=sU*{S%fwgvee$Sei*(vW6tigLv*<292S02+V2zA zEUk;C5|v>f0*?M|h9)dlh7?9c{BdLEz8z8f*r~gJ_;#ai^h(>|C9F0g24h)-N7C zRAx#j%O%W78rN8u7XXh?8v{K z_9#5(u?syaM?q@{0)nXTl0%!pQ?xON!os}&f`Mk))&OWWZP;ZVSSlwzhjN9Em-NBU zV)tGCj=*c_Ik*RSF3ZW*HKd$hV_dhbfOTCOn5>ef$ly{u=4$5+Xzn5qkM<-=k5oHh z;YB@WMp#PZXT0q7>J0N(&u$)Pg-CcqVRpAGEY6Y{BPbh)yuzRDtF)=ITUTZQTQtOy zZO~s-)YYNc;e4bDG4mOCD#&4BFJcwb8Ta^mP(bE@*}aWgnS;2NIjnu5>wXRcnxGRF zJHg{9v5Y0wVzUU9IpT$!TW})mKD!N68^##qCRn;UgvKGkVkv#+h!sC2-~(kq_drC- zfVv`}ev|rugplE(7f#09dz}Pd#6b*~BNrJG4Ce2dhX^l*@Kv>?MbMpQ14(Owssa>Z z3}HG6Z+G}Ryp_bu*cyR1G76u5*YU-&EFgbV=QjkLZKQF9*wKRs*Ova)H#j3PpJ^di zf`sq3N|YyH`Z5e@WQM_1ciY6|WqHS%gOotcx7+lA1ud688^-N1voykEbw0d+JGD$+ zytla5;fOw@FS9B;p2_MY&w25(^|&8euf@g?^r28q7B?Z>RgtB_Pdl$4 zbaIc8fnBsTrBLFEB-D@j zBSXc8y5IL4=i1C!BUb}kb&^5OqEkkSkI&eP_CcT0v?yzav>PRen4E{AfzyiSwG)?0 zCS&X2!-@1{WW?ASGt?{cVt?++w;+34B|2FNC64nrPJ@}rbmjJRec2&RrR2=%PI>@+ znjC~-W0$Wus)^hZs&&jRj?_n&*alId{4 zdy$g`Q+Y)6QrJ2&kk_RLiWF^0!?Nf%;%Z~A_m*t2+v`QPGGj`>?(#6EH~E-@0S;&w zDL~%aEpJ_TO8!UyuUGMSn&O_F&pT}d0+?|i;7Mts5XDa6(vYOijZAvdiEbBA;kj5m zub&*en=WNP`8Ktq_zjzG@4Aw| z*X$eMvtY-(cfN1=>@w8TOblETD1iLOc7j=_6*zl|+dZH37=>zsT|uJ*xOb_~{!z1z zf$=@SST!RP#~X?xwPgL(G#kq z`AGR!jz_s)=2~w)>+%=%dR)RUWR75FJe{0N)4oirY#S~3Clbp)P6UWFpPzR_M+34e z5h_<1oB{DO01YWjAG12qr`H^IT^|zzZ@ltHRsutHm-h|-+~P2DNnJQoy?`psRfO#v zi6)2R2Amv)z10-lvw1|kC`+FmphP^gK6Y;U^)(Wb(V~?I>ka25DZECV5Df`5s8Zc0 zay(`tTn;1gd4jwNv2s*2^5podtA4j2eR_Zxu=4f1!tAA?a!e^YYW6k6q1&#E69v5| zpSJdBHH@|wMb&j=30HSY!1wUsdJ^ri^TL;JeZxs2GNRm!2m$&D^dNVFp^Sj%zf69k z>+p04dJ2R_Hm4tvA1;M^ee%(rHTB17QV5=mhAS`4QKF~zdt3~jZdJRWB;>&*VI``- zMliB16`A^8EV0KEf4k?4W&w{we{cO%5)cEne#i2wcXD&iQ^U)>^K|4lskmVW5bubO%l@g2dFv*be#JPzNWpSvGE?kHoi?dsKWKSRvJK?*C}s2F7?iQ!P8i zuUBVB4#-2aL&`iiEY5{s4tF)}&PMze)v`FZi^;Vfy+V1WCr9*hps%!R4pqD4*=Alk zu}0NyzvrNIJxPgTrbHw05~S4ptf#6hd|kC0LG`4h_$ zVtpsjdVBId`^oIrQ%uV^n%z>Krl-Q$I*JAx=Fx2MU>*sjXC&h0piqY@LGt`KHOb8gk!mxCNYq{ z!;YbC#L2y3eAsxa6tZ^x10F=`?Y=!-FEN}W^Wd^YRzj^${Mw*q*)&LAvt(irsTYH^-mY(gOv|{iCpYTr>vT&OEqwHj*#NJFa?#YFB8T58=-M#%#Ei9ff;8iMaDO&V@k^U3u02Eqg^ z1L&R*k6fV5Xx?c;^_jwflw{dIY8jmdd|K@ZwR>>6Uc7h%hvz5=O{KimB! zyDl*Td#ZIj6ImC;?qWaBfe=g`>ec~veLmS-?<7FdJ00s1cmK>JA}$w({Va=v^`({s&9!nK7{_3uK0h5y)HU`a zXi|b>G+!k{r^g*aD|s3p%_C`|<7L>1-c*G*^-=(|dFp+Ii&3?T4{*8~S*pD0RS!lH z_SvV8#U6cP-lR^Ncd(~lb{8CI3o3o2)(me0gEs#B) z;fnc%0HrVDLf8Nf?9L~s%7ex%I}q_Qc5dT9j0q@BqyAIvqogJC`3E7J$bi5$T-fT( z8DEC71^k(}5E3;=%kF<`sXg@{jf$cZa*Aqk3=&rf%{TY4=PvTas$pYr?~Q-`OvUhp zjLC{oU?{UuVF5%u+`97B)aE=DCNfB+J;5}h31Dj@0F5 zjU2jU%V4Jwq&Q0@3&iZ%zLKN$6p)&*csf$ZnTIJHOXz_|zH_t(fFk`IX{!$}jggms z?3=ww3qXK({?XWoTn~XPRe2B^H)EcM|(*kTGWse2?)RUEWJ!=!9ugp$7B!j(F*VM}^f;^uc$?m$-JCuz=*jih}}90H)Z_Qep=P(H;k8aa~Sry$5zQ zK(s%boI8jHoz1FGpg6yuWVLd=0lQO;^qkW zt}~X`5YR5;|y1EMn-Oh_^-hNn zqL98d;_)mY`Vv~)AyOGPl|_lit&GBzbP>gGhj0}uTap_`cj3hKPmy>8a0Cj7_0}KzhMRlZa(Tu4fdepp2hv7+j~{^Znw;;SL5;pOc}6l z&C1>I0C(+}N#rcuc!{BpFWyN5<321{k@aR<1ShuRDsj7|O?a;jE=E}O39RGZKog!8 z4@gGQ`D1q73uO9O;dd8=wYoDm;!^G7In6!EUiG7fuL;G?&i%y^I~b8S#jg&E1MMnGa1Ln%*JV!%&8MZS(okhA&q-0)1vQ94 z^8S|#y|RGa0QL zB4%jbzD9ZYR$rH)i;4JQ-%+2XL)?Oa{@PY|$nLe03|l76>~cBnYM8AeYtz}1IR#o< z9oaHR){oG956Z%2V3awW=B3)gAc?`EUh6lhU<3xQ`BYPqEA$^XfEUeO3oxNC8J{An z&N3&c{;}}b&`A@ywou9^^qX5O_G%w?OHYaN4FQOJf{~Gx+{vKw_hfwD41cvuP=sF{ z@0o{9Nr5B4M$#=v7si(;V2Q+sd|TP3)3^-h!c;VJHZl{82P5CHgSt6(^)YK6bBke3 z)XQkVr9N&}@Z}2-N?Zi<3ws*D125i}NJMF;)ddEGi?i4`r+_J2T>L+X2vA@^&Bu_T^b3Hl>I7rNP{5kK~Ttf(^1_z zTHvHFozI(aBeGzzl1rAmnEw91PgUU!NkWzzN0oX-&?#NUVmW3Chlz}W=h7pFwG4}v zZ0a_6Byx2g`N~w-tF&mYOvGJ8-4-)|q-+6Hc;_z*RqzTupo5fmbi&f2D|cbgYvntm zI){yo=e9^DGs6#!Nz%(~8vvYI$xH=`dz;4QO(!-U72PYhB37FXQG;R08e_N>oKW=RYqjX5A=$KeycP+tWGI65u3GWUty&^G^== zX`?w68sX-G<$Jp>xT~%)8&#aRQ8L^n+O?$IGmyC~E47a#>QD?T6*&(vVAjmcZ4GU3+z5+F;CV7~ z>-!D`a(>4QhkHWrk+D4oXWp#J6XlY#6FksAYD1O9*KXgp{V;8sfc#I<8s9vri ztAN{<(a<`S_YrdxW^s6~7O`@ZKQkN}a|;soI!4;yPS0+Nu9{`_5y2fjzx_`xc?W9HP&a8=R8zl{3W6|msC*}$sb zfCSAtRv@Sjyivz!z?+ZwX!o8Mt!pwv_}+nrmS!zxh3m`zxZ$6l(0)TUFNVj>rdS%<&Qf|23e^K%Cnd=3OhJ%Y*5_PoF>$iS|7zK1BE9Fu zvSI9*mX5NYV#(Rmb-VvGEW=G;Up3e$rkSOtFF!yk_{&iu z6EVURI>Ob03 zNk6LKYoEo6%9opNOR|FLtB%)Ik=lw~fJxtcTQDNXV-fpc2kSQH`mR)T;eQC&Y`4Ha zOiuGL3$hTf5rvK7`rV$XFcKxYK6ebsQe|`^G};Iwj(A4OOw6w;)jco{bi;<-k1C@# zhavl<>%Z^j!co7$u$+>_)9n*cwDadzgm^!9%dwS#TC>H%v~fjoNCqWji};$X!%CS; z9?fekrr6Fcl(6r~I*2Zdm+!wMESJUxR%%XH$y7JDFC}X__U}An2d1J6B8*q&7Wq8E z+)LB$?G$>ELdWh3!*hEzb-(wwIQu(4K`;$*9<2xK83iCO#O3W3Zy2Q|`L9@MWL|Hy zLDq)eHY^$P5gt-RbOUgtp){{6X3|%sLB3M&Y^yn+_9a0D@3+Lj!km*6C&=IFyQ>%g zifE4;(ZdIa+p4!Ap9T$&3R^)gUW;4*Om-iH-9>*YBxV{m&9UGZ;#co?-o{CTZVM?; z0cLcNYIl`n#c$mm>>RWa@}V3lp9By%K_iWkHlKu!>gIA!*PS8wk)!U6H*z&`%!Jy; znXMNdp`jR75L+wmUFV^^fRa=XZ<;?VXy>5H%%pjE#vbC1M%N?^@)Rv1mxg*JN72`| znc&Gf^be1X*xeegUJciSOQ*DMFrzg90Qgf}10Qbj{$MxD0Y}n!gg%Li2D|k316D&3 zKbF*lYY0*NB}Y6zsuYa57ajf73BPP|Sp3gnjyedAO_;*viAlZZo&cy)ci_q|+eTGG z^@SEgmpgFqcZN?lG5ec~FhJbcYBCVfg?tb#$+m(%ns^q3p`*S--+BhT2WMti{wSHl z44@XmB-WKt_KeTbAnz$-UlE6bkGGc+P zxP3rvPL%AFD|QoX+;Xz1t67`C#gf#fy23;1rSXEPbdsTB7O7`3qVLq)Bxw8ZiS}X- z|MyLxLdE^rQ8XL$!BFk9OH=Wk-g>U-^<9Hjeb@R|>wCDA3JTaGf3xm0ltO!68VSAhj!xlGA0^q3TXlNUkPzfxc4 z{@}xmTP!TJzP80ZZL@;k(rl3{Zs{^Q%gUN^$AAB-rMq%K4n^XtdEexRrfR!8(oB`? zt9&L1*BN= zQ(Q`(DXgCQrl;DJm<%eewva{iENMEUwz=ca{7IJX@5o^}1UL8@D?`sz7)y|qz6`48 z72a~#LXiB0(M6)Y!~!_KakH!l%kRbNM2KP6)tlc-qmglI7Ub2^c@X>ce*b|1!;WiJ zIf@oiwy|_XgeI zr}8G4>4#y=RhvrEYhlCtrSoBEL2A?t9>WOn^qm5=ukCK<#+pV*-l{^*Ul`3)OWT@O z;F!ej7ShcLvz4JGEqOjl6Ib5cbvUpY2~7N03fsA)GX&6f)>*Z8g^%8RFYOlIC1Pyz zv2}~{5eHuYw2P{cO+TtlP&446CJ(RoX{Gcf&X+5rWM z6&*dHFSlm$-d~l+Rt(8pTPKem{*mVi?}jSID$j>?(qidD#z78^HNjP7S_2M_x!oj+ zgG?!X-?{=(LfD{mgI4r-yTQ^(#BcP;9nkcc;(Wv7Xb2||{}@WOtehKzvKdS0YwTsG4qB z+r6_k$VNcw(%}#r(_K6wc9+}fo;Us~{)sN=-*)1r1e{TNgb(VYyykSK$M^Z}^bH9#DmAZy9= zj7qz&Tdt8ij0WIR*)`9=D|CB4J`9bKGn>p62E5Rqp8sfrx(z-lUpph56v%`p&D&h zYx<{guRin;WwP9`=~9*k&aL>_r&AXy2&(-tbq8)0!8X~eau-+r;+YK8&hv{7&Ieup z7u}SxqjYQVIRRZ%F8^6BPrgJ9yt-)lhiY*ZV54v*?cGy1RD#u_*cne&MYaB!vQF-i znWCSwD%s&|$vQ@l^!-@m&f0v-Wx{_#;tCUV>K+;Pish z^4o@;-JhlLf;NhVl=zAGtEFX;DG$b*^=xQ@wS`AMNoLnqU)<@QV2lPzUc3Bd&eoQC zqc`Ib5h6?Tk3l0Mj1Kw>zJpi|MLJ#;EKT}XY+H^VopdBYJ+l52)lS>R!GaaF;A=1+ z?Lo)qQow}}TsXQE%;BX=n9S$} z3F=S0b^k?uqj`nZWb6_iRq*F?;J%TzxYeJwAn@~PQ|8T%q^&wQCKvL6@_KWoiijGO z=tIpXW${)f0Ts{B;pjmi(365dvvR9<6XR4Uh3u~5Lxdrn;>4BEtAJJAC`aM@WzsB- zX-XbD9`J^CebCFJLDx*k{R-7eWRp+j)mdM1D3DfT8}h*KIb9e1dLzR^T(r5Gy_5Yv zDPnh#di(G8fXIQlvO7N5C7jYiC?iVe=s3i@2n^N=R^VN2o zyPEF3bAN+AJ4vFY9y%2R*_WcmMUZZNRYzNQT8I7Elk?~PNK;4;I5FIz?jPzD5Qw&= zK-|mwz8xx+oOrRsi`LAwBOVx^T3O?WXY6@vb-#}MIG8Wp8%8fHW8TojiZMQ{(Pu3a zRFe3_ae>@663KCHk6^wQZ+}yZwTFnU-ggQ^rtkYt{T|ZMiM^@!<;EUB7w&8IC+Jbn zeC?+HqzP#eL=WY5mOdf}g0qCPRm|LayabW-R26CZcVNa=cj6B35Ka^nsQkeZt=uXg z^YNeir*%xhDx%eFOI&VeRGR9N9Fe5;?AZY}??fcJ*2*xt(2?p}Bx$_Q{)A9%tUa$> zhXJLuJXWeZT2+SEDtcT>CZrtq3%~cF)wD6xOhY2mRw^_8w&EC^^7^-$?e(awhOOpx zc&!w-p3-=V0rGF`*tlsSQc{9dX<|^dR*77Dw)+Da?_GZ?>3P2hh-<`PKNPQf6`gj3 zKkgy`KS0305f(^SEZ(Br{k-(%h-Use5e!8RH<3{^X4V+z8win;thX~oj6t&y9Teou;X)eEiov+A0ndL zIa{g=rg*sv`v~;!Hsmf$FNgOUknl~J^p|#_K%)&;DwdqBLH6-8FIHT|b^b6PR_iz1 zw)jU59(d%oHQ*g39SWOv*z~1<_uLdqq1GF;V7wtBChTu@eO$dHu5*(gFKFiUkEJV*~j2kj0 zAsMq^nKl2zDb{p)s8i`BeiS93UOiHKn}`a4Z^o&36tdp~^(Ft?5J3f9JNSOt*&bu# zdKir+fGiJrRRl#)3)?8Ba)IaeF)eJbu|HfHuk4E3ZLHOhX8k9&gdy8LHt%^fy=%VBkXKDPje44ufD2V%HUj5}C(885QG+|Sya2EiYP9kHQw7MSy zpWGg`z1Odyr_M*n%Bpg}!{olljOqXhKg{;18+MQp)rD}XGKnrj!3DVG^OWRvU!I}w_UD=CNA zSuk7f&)WT7^(&S$!!=879N=)tnrPO&dbQ+m`DVZgj*QZtNvCX-5ywU3iGIt;8TCoMrGCtsSLfl_ca)B>&2g9#`R%)cX!G|M)I;vM=Z`rl&6lX|~0O{$?8d#9S+bR)$>U0Dny#kd#$ zrK{=O@U;c>HXjGtC3(+57w)Cnb`qtGy)FXaA-K3a?bEwk4ih#?Gs~mQch^Z{SJGwA z9!;SKpu^LQy*me<68s`4#H1x=0+2rn><(H+T)vvdJ46-IwdJNkuOtOgI_2DO-~PTI zko$6ggRWeBdr+7=8g1c_2Rs=dwk7UWNEg#TKI^Q$ypkelAEE6#^{S%1C05ir$pNV-Q?mbp2SIg<%fq(RZ$arrK=+?H~1#e z7BFF02j>@8=rtn+LsT*34%(072OykM>B`DyW`SL9vGL*V%8%3y69Le~d$}3)ml|`S zr)VU9W3-FiF^Jngz^~J7?bXC7`(RTCw(@ybe(v(tIO$r`aOKWvR25QDF^Pq8^!o&y z;+!JAE{ttRKAQ=!i0u8_q7Bp*NS=7{IoD#7YwB^^lpB?K;o6onLfzxqgd~C6Ayl6@ zez(6=I!$>OvOa;t{^qGwx&{sxmSgu6)#$oTN4;SS!j!IDhuoN1NHGo`VTJoGzsL_=T(Q8M$B2YG`BMbgm{aPcoLO z8j2~QF=ON^5;DRur8uPhxhfPzYJqZbkVU>f<{58sYxxTd{tjeEV}b)Pbvp5Juv#cn zpk)%Gd|W$q)#rMGi(Cj-AFvV^6t~;#4AgNWKgv3zaZ7z$Vhm@2R&Xn(=zMrK&CNas zL}N%bD9#P>t_LaziAoX&xa;<3;xeAnP<7Uii(ZAO!}M`%ZQmwSslJwOCp{ELr?YKK z0{gOjVHN*L*Gk8mCzqGinRde6WMl}k##UyJ7Xji0Bu3Enmf0|;IoP-RhozYP&2kIF zKw~=16!$KltAPyYGHk@@kDAK2&^1AbXuBGr`V`LlEsJ!u^MBUC>EJj)K;?2?h<8gXxxUs2|Ya34j^6}WbG?e zTIWj}UtQxe&qFvo3=fAy4~0i?$j`M#-@*@W%Y$;Ea3Bzx_35VtvW4;>752w3x^d_$ zX^f=rbGcbt$z#$}x`d#_gB6CSNVAqv;PIBli%igDMW|w|yxzd>nkz-qr&l^aLs`XK zjEG~AROY*x-K;jkCc*M-FKf6sz6ML2hRLOPOsr2JqBcEPFfoIx1?}*eLcH%$?Ru~< z{X(AUu_D8-V-yq@FONlWkfZc80ow*HEvOF}a$C{tCg!IkklX21#NG{7L73&W6I6wl zkHlF;;4gPUlgkLmMgS<07a*lgcft_*GY@#10;CGNFf{bC0mdhDPz7S3Wd>{gdU`!a z)I!LJ;@B$@zr5D@eg-&9Vj%$ReHi7SAuv6h6o!TsLzbZnV$aFu&<;NgF}p=#I8EAK z&|BqB^u)VC?;-h+simew8uo4?u|VCFt{X_h!8|R*=qm53L@hzb*!~)~jJ?Nwqr8o3 zh#C}!8Ykjw`<&sE2FbwmLD#4&@@a`UswORHzHorU4}T{!lw0#S+jTFlAiDX$pxs72 zge%MQDh~~3uUPs;=!F*)^|JOz7c@}rR6On93Q!jTgQ{VFB_$-#iSb1rOo1qS@kyp) z(}H^J>s;J60f`}CbWAfpSlo$(W??`K4D+AKF#4>vR0G!<_tP~j($JBkmy@TKYf%PE zg>1bMdt+?6Bz0#Za}jF$xmq=}4Jb$Dvj0KuHX+ljJjs%*!n3zMB|EfhN#I(ccW6q6 zg$-FteK7m`L8N`m5MRqug#eDZY^(%->rYf+f*0#MqqjwP@glwq%|(_10g0F7OVM94GTY<2&jyO zfvkyvhWr`^kRYUM>saUn{2!AOW$-C>MJm63brF?i{|VDLe@1T2d4VZvlsjTR0Aa_N zcS|K)6@1@^za=xi6M%Q`qV~~Ly|u#)sn35gs!bIK$Ff2>eQC9L1+VCaN8bP4=cF7~ zB;Fzly(S^!`oqFr=kBOBsx}D>>tunei)y?7It8787pvsBe}2sX%wzVJp(X2b0+9@w zbg3v>W&lIC7q1jO4Tc+QVzAM^PJNyeP<6g`yO*oTc>6(=>X-qAu50cP}-ui)*3j9@0ZtiuJ?M6~vf)!XeWh25D;&Gwi*uzXpT*8~=QvcU! zs*U_D-u=85Zhx=%0%J@W;r!|y)2RJd6{alH?mA<`Y%_!6m`wi&S(X$Zd_`VaE^u`u z8Erc%lE8sc<%wvkRQ^sNa=;;rLNu_gTgvG^j*2HW%m@rYB3Sd#D0g$xiXJ@w^vdu} zqF)szqo;cH)Haeizx=xDHafHe@+@<{j8+naIe@_U4p#V7XpB$NYo7-DUWd zvbGu!I_kG5L26I8E%MQPl7yxV=48>f`=S>;QRS*pU5@uR>^RT6=OvSnQm~)3hlEI4 zv7(X(bE@26Qv2!t zKJp2&PF>&Fa*$1ffM)d-8MqVTU#&F$Sv+^JqQj;WCzp(eG6W0Ks&W z=d+a*#Yz;c8Q3u~$T@v7A7+V)9ui!m^a zqLac)hvL9Nz&r#4|9sn`C-HqdycAx|$@KlgiF<>EpKs51!w!YsM(06GAof5()aTs9 zIt**j1m)dGllcdFsEWsrIuQa5`tj72*sPEVxzs^YLNxZ1a~e_}Np zzZ_PV9Jov|d;DH8hr}2woTCAC02^+2k2Ars&8P!$Cas>lM_08b^3FJ8J~}neE{W-= z84tP3;*Xu$qzmesCv6P35L2AiRhN&AJ!cM)e!X8H{xybJPnr7CO7nR2lJ>f)Od5K^ zAt4db88{t4v7;y~jYoO1@58kE?h3rIcOJz9WMqGHMCN+5{zv&|=K+p7Z!v}us0Xx` zz&XC^_nM^`V6?7D!$tj^v-F z{ceT_9!!U|VV94UftmXfJ}H9fo99FLLJRn~7N)up&f_02*^uaGSdE6jpn7RPh_qGP ztX+Z^Bn!r9c0}>l9%!{Af#{1T&QQB=;>NEkQTVb4-V7KKOgxU!3=%x)20}r9DQQYqJx8$%SY~MYd%B`X%@JJs&RHlQs>8#Wz~`2BBi0iudz1(PYl$_ zee};fYDYmwjyE2OrU;P#!wEPV+mX*fnsaY{WPbH)oX?4)yk_oEXI-O=k5fUxa&k#L zLlV%ri`=oG?SLcsRg=$vGSF0{0o|y0PzHpdr-GsH^1GXEzRrYS5`;t8a%x2vSvtjc z`M>3LU}jra@RyA7kDMMe0$O~4f*a&(pfk>hQT5%Bo5aO6{}76IiKS?s5wIuZd2qTv7bUBfy5 z5C?`5Xf^kt91JGsg#rN`1v#^RB!OO4myp5X2V^pM z3ACzelL-E4q4WXZU9+Njp(kyYu?9WUJ=)@U^|Z{6scA zQFp&2sVoT`3i)~;VH%rCT?*Kz5FO+IH0B$6|SO7x#hGTdcN5SNm8By&xkc; z#0DM12kc$jk@^t`Zl54D7`7r;_PE)U&kxE|tmGY0Fb72zY|MulxOpKd@vQzl3m>R; zXV5`Gkw$H@ds6dUqvDc0zL<`E*zp2~x)I~_A5_}WwnExO6SWEmv#&*#ADJ=T*Dq!% z1G&y>RYM}DRwYmfIy=q85f*W0$YyyGq=rXD#m0m&A^(Qohd-h#1%&(oA@nk*th7W$ z+itGxK?!F{XRMTQ@Mb=Xr>gmBr{p8s9h6C5l3!fNr3jf_h+Or?8{u;B#=7X7`4i4% z1hjTmYb$4k4Ph|rcKn?IJ~0b}kBtWJ@5GZVB=Ca6M!)e1Bfy;HyJ*mNcany>=`WlG zVB7u>s6k7gGe9m4T-_)%y_@=~uZ^qJ=P==!@}m%? zb@Sg4uz8seUEXP-F?)&Xnz@2pYjaO^KkLnZbO}+EGrsn%kz}_9Vu|R({oOi#kAWjRq^B^f4#{a{Z;9); z+pckNDhw_TSZ$I`N!3M0JLUAIOQ_cTf&g7Aw8^kqD7k$kYcjJtVQRd;-#Ne!ntTn5 zJ2-5;y1VG3paIgRB_ynsmwC@w};#%Prxkm_U6CcqtiuO!U=8w%XH!@01QiS~x&- zS`7WoK+1NN{wAm?0l#`49y2a82;$zi5WqTw;1Pux`j@R@Sk&KdZS2Pw$P6#98ve7L zzWIO^4q?2zmkEYeQcSZ$ow19N~JmycUod*Sc*}fw}xw$z^H6u z{o+jInWbqKi)r5_P}|)%uR3-Ao-dOMll=1E8tQ5J_wSYte|wX1E?r;zNkdc@7TnZ5 zocId|V@@ew7X_2!nwFcX?GximTTx};ig|?te`~zuPfIrhTts9ND=l0|0<;(C44G|G zG!7%Q_IXjzKbmrQYqhlJRoAn#<*6d$M={6+C$Vop0nM4U8|=iQO~jLAD)YKUc#Z&y zJM?A%R!`&F7|GwMrA@-p$SvNiz;CLSg*W)Xo((O5#F`lmE8_C%gjnUOa!*$i=;(fW zY+b(L^eFX5h}nm%WDK6>jo~MSyPZvP>Y2}SLgT(AhYr?4Ss1E!wd)ky<{%y^`x9+Q zhxuhc_Pc%GcedTLvHtR(l$rPFx%#_sZMC|c(1Gb^j>m_Nw2PKk& zQCUJRJ4-$%2;k6CY+;3>%_6@HvD~gb!p04(YaSi47LKSYV=pz*amTLuoiMPSv%y9~ ziVv;%UuIvZQGR0HdmdjeV$Hb?yn)KBPik{zBakQ9>3o^Q)nTXjlgdv)qbig+%>Mfx(jjU<#*GlnT##gILZbu~ z2@+Ix*RL}K0Myp?Bdf&#dgjGk62zgBUDqE0H4SX03y8ReA;Ly1*0J5UuLLibrEd*I1i&Zr%%||8j<(mfHI zQ@wQX$#o}M6ca5My|yL`rcZ40BDZsH9SrP$f9K8>H@wy!ChB2UmwtA>g}e~j8Us<& z1gJG%zE&N9x}R8XrOafW9k7T1+4O;hB=c23F5!{F{MNHt3HmpY+7%2Kf!IZ0r@61i zO0IChF zGkzWLkUi$qfQ3EnS9nFJNY}hRu+q=qkSj&=Jjwt)Y^?Gt?hb`v8?*n(s9s-2nCv5L zC9H#ujK#4a(iVSOa*WS<)+Su&_4m-Q&T^Bg4UClA>yPLO9{DvU!gm6chOs##7Xb4? zDrxFty5T#>hn3QUh>8x=lR-w`=^-vV#>v61wn?3!p<>$JJ4{39K2l=P1!_yv2g?FP zeiu11%_SODhoab3V-6YzCC6l)3Tk8gW^}XvhXsfQe4ub-ibI4}24bABR`}poJ8Vd5 zIGdIr{&P8a$pyTJm4$vGvKqxqaqz8Na`jY^?KW4}HY4RH9 zl=c6t!#$<6WRL$lo~WTw+{ooeCa-s<+NZnEM^XAV#eu&i_^nb|5ZjpjHb+Rm6H)VF zsoDJ5%Sess#j35CUFnXwYd+HWV&3cU(7vuao1T5S~UVg+@(*<)?NPc(KcoZ3QV~6**w)CZeZvXOYVe8@Emym7?FLHZc(tW0vZYfHPj$2DkRD5~xS-k6F+JW$8g z?~W|fwum!yMRr>n#SaFwW=@8Q-4ApnU${Gc?-S2za!~MvNff1vHY8lGU^mCcP>wvD zvsahXiyfTnaKH?}@o6irsRX{kR)`K^j%Q#Y^tA6X9VH#$qjm#R4LJW>4nOlOOmje; z*@0n$!a%8Fij3U_P(iCVM*`Ywy!Nszbr8;bG91D!$*%T3x6Eu7YzV*^GrCx^GV0bi zNu63xr+!Tu%xhH$VGkOrHi7ud2M1Xo*gwXo9?8K#;Fy{}OSsM?efsS+;9Yomp|X>xlYsa+(<@!lY;1S8U2MhM`g6K)Sj?pk)Qac zV(NO+a*c#PUFU~RV8JvHGvP53+mQEqE1)Z^Zc#=_FF1GQ7<+_u+=HxAC8o$W_!M)eh&NR0fN#PwA^mGr1q;YJgH*Rw4U*JAKXD@ zPk}Y$&?#TWu#oP>&ca2}o1gAWAvcDj4#fLwr*|L@FkR+Y=Y#a%n9BH0`=CIDsx?BjaCrO|FXsGaz0U zUMN61`21PkJMiNRr%pdHW%53}IN65dY|&~JZeaJPPDImEzFG|b0-A~ym)XAilM z_f4t_aa{>BBLzvT`pamzf-_|s8Zz4@ldr14^18hDp zB*cG%Ff5*Wr>S(x*n0Qyf)KuBHuyk`hPYF+M4((oh2+!@9w)jTg?yIW-2{f`M6n_e zVARp>?Cf0|$%l!|v^Mf_$y@KBG>b$`aTOeIryk9QJn&^_2qGuO}qcSLhT z`*A$@DmlKrm>;+^m+3s9FDp~po7xlFX|3l(6Xb4XPB+jXmz5yfU%8W(CUaR*=9^{g z=^|HYa2Me_5hA<`w^xkL!~*8Yv{q2Iz~$&b3wr=I0yEGANNa(nX887*Yy9q5-Xr#b znF}|hJtdnM*W|x4eHPU&Nu3d##^U0AE_^^ZPf>9qg;^R*vPCoSk&q1lAxZ4fk89qS zJF`8BUfz>*gO{zy9*~bma}CNqQ`CxuNSXs4bQKvpUXsj|I3@n)0%cLl*suW2)GMyt9_~ z*>!8}Vek7)ohGhYXG_w?(U$`x2E0~XQyVGt#!Ke>S}mYbr8GTU=Eb*6sneoGEp{mGrh6us|5>@HBXIC?=9(&(xgX3%1|KGcQc>Z{GUA{=UPIui=GmQ#b!6xjO10-NV(<3 zV%)xiwc2?Kh57H)_?z2Eyw3UYeey478WlhwS)|}J6dqC;vkN6da%I$*9{9j5qZvgT zl3kj{tTq8PGI82zBh8wrh5nlf8VQ6GU7HIdp6}m$z2BMS!iN@1X}N&EJ9-89&Xub~ zk@SP>tz{AM@{yP=N85Xi9Z=nCD1f3A=nU@!{k1FBnZoF5P=1Twp{`f5msf*|j`H!` zEHavq!HcGvW zCC`hAvur zrOMofpPrAGYnyc`@&iG9ZTelG*-Ju-_7xdKWo2eN@Wmkvq#b{^rWmn3%7UU|g*_SS zCM?a#pY_JzWo$lV4c=kFCq@^mdSSkk#-l@9p+tm_tiV+h#QXkRWI!`5o_O!^{|iwf zOEY3rM}n>s2l>1D^IpjA(dSk@Wp^lX#aaB+1o=X7{@jkx#mZn8WWB9rl`eEj%e<>h zk;4~K{-_n&`R!^mMNpk(qd-g3>|o6wKPVoHp>&Mt=HZcorROXm)c%|PhUeuE>8ujZ zg(0@E*PvC+SU(jbyo2T?C|UXS0|2xCxj~AvkJQ+1-Hym=LP&GQofob7dj0)(@{hVl zBU1s?ShGYF#rVuiI0m)z_)|EB#sOO_(GEU|Dm={{8_c4a~;-UcL{$bfNk9viUlFP`0q7#Njr zsJz$Yv*K*DPg%;dL=CLxGf@LNf&G)Jd3+zs5I_Y#4$`vohmzpUrwnK#3Wt=wsM7ya z7TrE&_!>OiHUr<|V{gM$8b|@==gR{D3o>%fo|&?1Q>SgsN3$3FWHsw=^MCn$+x2lG zsiL1sDUPu2xd#I^Flg@_$F2Y*{^a-0uUs=RuNCaym6_pOItl3#lAFkQ){+i3dn%{_ z4pQs@5qAy4f3Tyy%Nwdazy^MMx?tlp=5DNL&5%`tQNE=9x@RAV5nJ;*O z);pk^{swF}C@AGETfysmt%{$A{n%}RRs!uMP$B8l4!rTWB~e_awDG!K1MkD>v-jR7 z_{#cFrRKr@ryaA(#Bbl(gFf}cT-dGqi14b1oZjI)S=;1O8XsTow`E%j2FyJ9viJ8e zm_xM}qZC$VrRdV4^s|rDAg~2143B{HRdQi@ANOtW1Wiq^7%Ru^k;U1o8>mxw`k;e) z)PpQ39TLdI%+ZkNl_z*}$$$7(JDQIuo&cKZfuUjW^^q}1MD5l5Lc}S$89=&9S(d^h zB|AbWh8B=4^1!vHd~GLa!4kOjZG}15ikr3yhHiSOsMYLX(jW3dUq@=hf6dF=_-{^5 zySPQf;T2JxXX_(V>ulB!UjuC85~vTQqAM+^sJf3uQl~^ON?HHXtEfR21Hwz=T8^9JbFT?K_Hd#7G`y z0h3kWi!T+l31aK%$L`DRrF!(OP>PVD2xA%@FeCobA~#H7v4p_Gt|HB0RIH$4J zu43x-nJ>ed6WKiobuzJa-#5}@`NAlH^ ztarMjvrP?YPdmDLnl_?(zQ9w$E07DqUqu{vmbJ=C6t&;jAiv|%Poh%~8=B$VvvWQI z`pUVwp*>`cAQ`kl;v?6MarD#3m$t@X`(H@qu)s5ls=0E>lHD%IOyLbY0Y4xO8P?*bH>rlCvQs9hK~ z9rOyZ$joh-M*Zp6wq?#JgB;yCxW6bPlM|FZJ?W8b}_=FbS|Pr+~F zic<(=KVV$hhZH_SM<1D$3j~;UQ-sL9WG8j07Pv^%xq%83PMtJx&RrcNV2Cx^v#HQR zIo;u(9#4i8&q8bj5fOE5sPnFnnw+N_f!ONp1n0uEyqOL){dAx(Y}v7wu=-^Y#ke`Q zjD~9|_Ql(IKAaM(7O`^BO;xewxUnsdv9LZ9KI6dbRdGu&i6=I#JJG^NEOUWqR?&_2 zCBr*jVR}%b3?e=;fu$hCr;ub`0reb!<@$rldw&S)c6=fdz0xqWqOIT&bZ~4vsVQ|M zfFfu{%U$fU-<8zh@v;PVQ$4}mqf@h`s(|QqZTbsou+Q#W_ri*uBnM@A zIjK)}870RiRMt|Vz@~#^uWlfqpgO6G-)`uZR4dXswHTr^**_Gw=DWVt|;Hs9K*0e5Z4_OdJWzyOdAluG zTAucviB#IuM%3se((ZwD8JlwSmPiQDC5E8oE|g-=H(GNh9IIxypfbTpRES`kBSR7X z@C%xf(Jdh8Fdo`E=t0U>^VZvPHS>;~g(&u;ias#Jz9yLOX>{%(yIUwVH~SCdf?B92x&5zglb+s6m#_^3x}D~_d=jk~th0q4nZF1gYt zYUD^-JYq*VzlQBUDvr8&AbGoNr6wU^+cS{fMZ<|fRO}|g(Qv!cn1=yH^rH=8d!wL; zv;1L;_pY^I{3OMg3BYHG(Q8PJkUC{-cP=;(`5^(-F*9tNg2$gKPwQ~AEFzj=-jps} zQ!$oxtaJI}!@r=Nbu@)4u$)us_2}IB2wuUl$9hirxr^b6Hp(yNwMHO~z=>roGIJp8 z3#9D-i7Mb&uc4;exo4-NMe6Tic)s&_m}TbF zd1X<_q#XlWybj?-;D;lFf3Acu4-iYeF~_BiIj!QFG|b!uqN-y2diwgVh<^Yxs>R+4 z`7syuVk7;PKvP@Y&28IuOO^)4_dEYS``~gF+wyIxTCR|oR6V?igfZ)J?@5@`Dj+sUOM*cuyCk0+v7f6J4t-b#Z$>=%R=BMjy|5OB>B(SzG0 zWd7^@;^VA+d@p`LsktPSHMv0LUsn=#Z?Ly0e-2(TDek7+d`D1)(QaSzFM6GL-BKkj zQwQ-wGy_kTVSp;}QppN_AJ)*C>nlCJHg1Cb0=bPj^L~;0c7Pt&+jZkHiXCRHm3RY4 zI^>>8KiLn(G6GsH+m*U+x)kZbstnM`qpQ=X=vP4uydwvUEAkxj%Ah$KxD%>2wG+ho z!EDNqSOg5ZFbdqwq|-VpSD)QtZyvflDT^>ajHN0?uV+*qlPYH9^rcb~k`E}T8NTB^lxlzhnFERrs7PD|Ov(l<-g z1_Zh*@M)nHe5txJSCOvFy~AX3eFcJc_M?k8&BvVqy(UNI*Grl*9ssCvVoHgM!Qp9B zH#ZO%Yp~Y?fxwN0-D@A@ev1b!Y_SN!P6aYK@^Ty4adpyJ^}+V;HNHuS$PN**SM7(e@WnyLc8+#Gty6 z*PJ0jPp=VjZ91&Uq{|zj0$aR_v z8bK1@SKj@*TR+~Vk{{`;|A`iDx2Q{RA4&Rg$Fy05n>9?3J?BZT(T#Dkd9t-34Jx|( zB(^n1!k2f?U$+91mP}ADQx5XL! zGQ$Pj<#OY`8_=7;UR_ZTCvs zL=@2cpEoPUGriN7Zqc=oQsS|=g>c0iS&HlcmPj0 z+8OIh#l>7vh)AI&aa@xbSJ%JwP>oTKf##b> z?DIY8=_D~=N?6G=e5}(3oO(nyr&)Y$TTFl*zfhDlJkqa$lePGH&-AGE5?h>#57et( z|0VoY25-cl{#?UZQZkmit*>Gu=8d3V&ie-aM=YHF z1Shj>T2xZI2hH7XQ?UiR7uOzyCjh#eT@n>Zm2F;Z zW|J8h)?VzLjY#KdT$vfT_CmZ@wx^6|pr&SxCHl10_@7k83GT$1fY}#ekS6ByQe?NW z!m1|vA*s6X|GbbAx>t#@=zdZLQVX6&ghDU1NWB{blggThNCNFJB;{4YG5XS4;=*4L zPbYcnD1tiZ69aVvY@zn>y3QL4A*O=h2rx1KH|YI_PH4icC)G8>&IRjeDyboOULEUY zkP7eE4K{j%c_x&|Q??O!CCCSU&yUP}w-G{ZS`HcLK)RRNZ z$gR#NuNAO~7JHv0j-35!Aqn%mHD?)v(Vh3FKE@}Jph?}%}6(%RY1S6VO`f$IW@ev2V_ zWKbjB zc>jLUEoO$1ygQ%)p-CeMye9r)GWCbh595!3P}h61ji?8m_#A5I}}BW{WVIaNJoP*h$Lzi?@2% z1x_5)LBrr72;3{cW^Fiw$R3yk*qUA$b_J0V;!SPGynp4+aD0R;@fs;IpLq-R96SUj&Nr-wr)i!eehbI76d z?L1!`n&SIZz9q+afuJ2oNpNd}5OeL{@3S~k73s9>-#gGI=25#D4q&drvhiYg_fA{x zN+$0X$UyWLn`rq22g!;Ogy28xW10}XYX1NyoB{+JpS(?VoOVbbmV(9kWH9c!MH;B~ zzy96%V3EoNDbn*7lRbJ7!g zW+(dRu-?;|BCq-y#Q{HIPbcr$oYHP?IPFt(Qy=SOsm-` z`>F&OjeAqA(529xNyy_EoXV z^Gp&dVw(C?i*0CZ@oSsfQih+&`e#J=%c}2m+M6AV0Mi$>?1oPovhs$Jbrmktuh3)x z;y?j%SHG2$Z4+9a+=m1?E2KadL;}@w>zf2ngh>>`R6%l56p0pF5vFjW%)M{Uil~)# zQqL419z~?OxrFxeFx0Fdvp;TV5;Z`BM9Ud9}M<^9foCbL7mkr`ix`jCc z{F4nQ0!B$igU35Y34L9>FqyWce8@f?x^r6vKY-N^6vD*!0Gp&*%d+uqhB-8Dd;s@W zsRqv;C^rGL@W7*QT^8@n!sj2LJ_pOFL?&FNrN#QB=^lFF`&9cmM`+|CO64hR34a@B zGc@j?1=a&?NAWTlcnZdyY;@USa%~0O|D8PwKdpUFgc$^)DwNQB?({demBYe`Jl1O`;{pB{J#<_^)Ski4JZl?%MM&t&i)d3Wt$G|dl%ts)1Wdo4lMKJ)taLmx7_G`y!lVr!X)&6-sf?5i~1lF?^=SpL%4v!9029w#iwX!&A>2nR^o zflet5^r74c^iSjLz1vaQN{OHXBWL@^eo6ILE=ft+Nvh(34x9f5Dog6E zB`bmYEx_dpWpU6SYlR`O!LL#@_?wE+D5HVGFfoK#^&dyrD0o z5_qbUAM9BUi-A7(qc7#Iq{z^X{KnuknHbe1 z8|pO}b5j?D30iuWNEe&FDPlP$!&`{jS1)8*Ir}RA0A?GUf!X#FzV*_LyiJ5ivm@FfF2C~-p9-$#kN72Gf80-X z?sfm;wY|%J5i^*Swnm@ZkZkduU4>*8mH43|m%(>jwO?Ea$XH13vYjv6z6B$huB#FW zS6D56a<`Dh!oHERMj%i96d-xP=Ou;@F~JY`2Gu`lSu4Mx&mTN@4Wk_rntX zCoAwC>4Q>LMWk9L*hF^ZaMJC}Mgf&ndfZK`|4YxwvXXHtRJ}gmv5VFf2=sHN7s2j+ z?$>3@r3Rc#?OO&gVW9^aNduRQ{@Re&#YEKam^QD$1;KBfx>WI#TW_!bJee@yP1KaK_m0yVYXIsOP|T$<+%?P%_7;+L=O zU3JXE7X4WNs=q=)3-Xz1-Yt5&&9*en_vu7=+v5*cBk62AtG7ku{O(z-ZKoUtcinG%Hd z$wsg{Z-W9n9&!?D;poXhZ1OqNMV=8`fOXuNZ%p1FU`{h>;B2L>9uA$aL}=+vH1Djn z3OGoe!@6c=&rtH_mAY?fo*JfGJT(6Cy`Jq2o8T1pUMwd#7O`bnMR*-XnZE|msU8$k z2*EhqB#z`la)0^5BRjgu#8@^{Hl0PLRt8YSrZigKF1*GYMcTQPW&Xc!NrKtCHcGkc z#Ov%syqzPWZzo&if^+Pw-*Q-j5+DHpJwU?0l#=I3SFwcl1wq;&$zI)@Gl~p?@US!~^5=EnDSpEbSlCzhfue(V*z{tAO-|mwQBWzUU|L;4Q5b^c?*Lme{lTmkf zzvcw=_@hfn%5#i8vM%-Tuzf7!hmvk&5Sq@NrOZwDnZA2YWYR8KU@WUQ)zkfL)-9Jo zZ0|I%-9Bw*fmu{55C7$UrGB;&a5bwtgFoE+araA`?Lz?^TU}$D$l{z$ymBggO5l%X zk@*-r36R!Hi&g=!bAtE&=SxwwfFhzX#b1SPp_c$0jMBd}g2;NAC|T1f52#W_*Yre5 zf+0>gK#E^)qVV!_cVhJ^S}qM@s%Ajmwb*n>XsK;h_r}?3Xyze{35Dx^4lP$bI!Chn zlnfWKrf$kehabnh@k-*b!Vsw6`3uFGGHYGoT>MOSx{F>YF}Rf_;yUW~1)|*?RE6c{ zA(O1oR!r7N;r&5Fe6Sw9?p$2K9+e|$7nBvI3fRXZf>)en>^P=N(tslyOZ>ecLgyEfk1AQLmD{ z)a^m0`if%R#zs$yCjP+kTJMk=qHFO#a>n4>j!f@IRA$yb2EVxW&A-htKhb?6kyStE zrL*5$CM1+tm4nqz`2hOnR;$-pDLz6etH=$QD%`2)VIWAL(1@( zR==f&X&1B!;Ayi;ql{3A$5s7UXEEr_^!`;>ilWR010O;+ctRdLVa23WNK@ ztea$J1GkBMYE)bv{3re{PCY;w9Y03#CPIi-VKe-_ZLx(}eT~q+NdNZ|`um$c3a|GQd7~tV+WS zH9(2GQ5v3Qx4i@Sd5;+4trCxJOSLF7`ZpELG5!Zu%Aanc-UKVcvR#%bP#5PePoFr0W0ONJ-$1Z=%s|G0yP|m6G_=cAi)+&0?u1aK6&W)8B{KZ6 zOS8qC1g<6{Ma}=nwUk1U`?DOHeN}3I>^*{Ct#$KzTe}-%$uZti_KDoEZyvTL&tNkJ zud#LKi@^9@W11u$j51JRcI~mgt5B>H(mLOC9+{#gGXBhyvU~2T1hmg22)k=_M*MA0 zTyJ=u1g_^82*!Eb%lF3G33|*aUyp439+L|QVxDQqen#&0l=gb7Lrq0Sr=ASd(w%4> zsmD!UbupL2Swb>wv!YNrXf2+CkZbfwP5M;WkL7Go#RfQI8bTy1K{>&--lg@WqbGHm zw`{<0sg4T#W`|5}a%HZIf^#jOOxgQtT<#=*(#XGpM5Y(H#x@$E3XAe!+yWJU?$9Ol z8g1e2?l^Bfo}D2uDb>Z_76rgJj$~h_W5w=ob2#;N&UfB-XDrTVseWdeHT!hcd<>OE z4Rh%^S`1++@hV%Tw-plc+Ftskd28EL>BP)lz>ciQ#4mLVA^)QPQN0|S2b_G*I@3=% zM>!yyuhS>#j<^$Tk5&KlZV`E?5GL2|(vYfJ>^14jTJsOV|5 z?u{{OPIt7vzVyE4R@OImzU${ei(;{5S{#*nBbrr8t)X>m8qy=SoRi^ZS$m3eCNFKDPoM8s#ty3FQ}!> zt!Z&j&gWcyK}6uL3r85@<<|vzo>P~sxkl5Z&UTq(*Ry_%S_qCzEyU`>~&wX6*%=oz;4?CZ<(1R6eH5x z22LYu?DgG$<4K}zXR^z@1xbo=Q`M(nn5b|n=|3Hx508XN`IH!Oz?W4Xx8W%mjvDk; z5g4k>zo8ZZ?Rq;NgJ3ykf?qI0@PiKB6~xcf)a1laUf$uj_Pm@hG;t54W$~eyHN?;C zEc}b>GUDi$QX|zlvI5-Cx9m5}CWx?!iOGvIekg4V$|p9A=-FX=wa~j)TsrCpCBm=f zzt{XIWnZmI2uu44b^RWTqon-2wu(EwFV1#hEq%!P9(}z~L}p~ZZ9yFBYp~~Q8loc9 z%=lumj+_NUJD3>6?4YK3)ww+C1;GiwmM9a5*6jBr=@1T+bgv^nD-&6Khm0Ya} zKNGjHE$Wu>R~uY{{Ok${42=4(InceI(maEookIT@e~Sv3IJff5^E2fREzGB5v(;8l zw)HBIB91E!<@rkql@8826V?LtdvuA;7(PHf8sR?`KmTT7z*-5an0p$1{!$n}jCaFb z_X=7#n2oU-O&g%tpBkHr9xl?cmD>840NLs>i=-Q;U7-L@*^n!nzMm$i31*{>UW^r6 zHWa$=3K#Md_7a3ySHp~!^%3254}8n4`LKOJ1~xE5ej4~l=uSmnaYjH!cRi@)05%6i|BTLxZ=R??40=XI zDV5yB?Lj|tZGpa?Ev3{^&I90Jc>js>=XgLBy}0uZQw5BbyI{5onE0iGBftQEKeXx6 zV9=wd5uGsiil5ppV$W?me+vu={2?iP9jhb{_N)a`CmD7jZ1m=?$LMa5ST`s>qt{UATETgs6} z>7w+K(b&rPlP1O!4u)jzF(>qqJcVF&WalK7m$WE&5rs4LbSnpo7i#G z9^3tWVM*ms15aC_6h&MDk|8vr%5wXDLx!=60>HG7ZN=|FH5*;`hS~07GWgNjf|E?k z2PEcoOf0e`f?w*bkpn!u$6!r#KpAXcBdQ1pr!iI5lp(rC3UG#BYc4^ws0EQ#S*5F*Cpm&B~%ISgxPypc7Pj;fW@i}n^& zB;4_gK@=XtDZ(eh2&kO&0o&=`jd+u`ZQY$MT2+@np7vSMZj`2*f=r3l&+Sj5M6B*= z0U8}py2(a-akIS`Z#JCwfb2TmwrT7%BHF|^(w!&~DG@VNk;`JLglEI$5#zp1z&Bqx zW3s^S6XEabp0m&C;T}5vrBP0vm~PhiPy69y;;GBNe5QGe5C>*v0WP~S!5I5hYqBee zs{Q`Gi+9($bFa6?&sicQ7coYRvIKAxPx=YDbsLFnOMdfvN^7YDY=KAKW$B!;7Y@}l_>^+SV~KPZKtDnpo8YjZXNMubAPP+TwF5^$>*OA+e8$| z3!&+Qs?0W@Lrg~mwG}kxl&UK}AAL|(PTHWN~});ms1{ErHS|>>Ql=WPsEYZ(FeBFH-_LB_gmv~#0l5P zY%jIs8L~S;5Uy$+g-by*M|(!mmF1m;Q9_ZQdpc=1vnL4Oi{*>sHD`I>4*Xu4+JKK<^50b2UEgUe+HY1CTjT%$%VNt zu%-Cb3>FRBpV|($1lk2F$BFoLD8)~IP)QYB4~|KccjSZJeRMCEl_g#+Jg5jBU0$4Q zSW>>rdWmM^n5KJ}>O5(L9ShuWJTPjk`NW7-YU z)0mC?DEtz=RLWSr@kW0CsOtXPdf4{DFsjY0psX39>ribOeUc#igGa>dYPU~0N~LC& zFWgJ;FR?;&X4LX%)cb#q* zJRb-Y?q}t@Q6kIbJNm7R597udq7-k?m&nHBs~k1&o3WdpC$qhS(sxWZ2?KBwMQ=a; zy^lK-A;aL!YN#)o8zKrUm`XTgJ?`Hn;#97pU5fO8V;cUF1nL?#KLyB>+8fc(QXX={ zptq1GIB&HzH&_AWhMZbNA_Vrw|Ak`toW6?Jswsz42KT$Hiqbwd_}ixPVTVqyr-1F^ z9?~1^{zkKVK=sF#^jFae`czTV4apXis1p+I=m|LRp3f<&H6ZXR5Iar~RY`W^v7TS2>(!!k_*>KZy=|XwiBupN|FaJ$ zPoe!O&9#Y<@u1MsST>lKitF4dE@3plMFT$k|EvHkpBD+sD5ZiUyuJe#n#rVY=$+Ju z6Pm6V!OQGwXA7R}!Fu@|v5&X}J*Y-SQFS6Xl)mHZ%y@Bk&8LX2cLA~2BBGa{z7-_0%tZLD97_79ax)JK^(e}>7tnmR```u+~ zTVgpL(f?F!6y})HZP8r}!0-L10b9@y9?4ZwCZjTZS$W z8&(x1C|%mB&K=P*F|^Z%{HcbNWxa7q6NSlt3)E0U-nrX9($gf0-msDp^EiTbq49Pv zun~Qef|whUa9SNl+mR*i&sSzO>5L=A$=*GBYRQj9ccfl!b8Zso2wFEdsk;u z&~LQ{M8WZ3+$?T`L>cI0=3u5!FTaq6#W({xMI_Lk$@FogNbc~Rl`nP`6M;TW#0Qva zHZf9K(l2KDOXV?&rzd&bRXD&}eUKhr+@gauO9ci^r_!7z2>}Z+(S0bKoqv}qUE79e zM&Eclq-bTjouH)##^wK8jnLdKyP@j3-L^I;-pa6_yPDEkh)afxjY|XWOII&2dH$0S z2{*(lE3X7L1M++V-HpFdZLu{fns6B$-{q@o+r|p#I2Fuk&ztm?2j6Eb)m0UGbx=fQ-Qf70zY`nnI^cV_?%t_l?4)9|-L=*KK1VvK zjO$?e?)++t?RJnWF&=dCAd@2PCfMmv^9TOG;l#G45ANuIUD1wfF)iRc*#OvDTV_>i zY#*!nmCtipXu94sWmdNka;X_t$Eso^;h%(5$?+MPvF{8qi{n^M7e)%Ykc(3EZ#> zdqVX!SPvsXQ)&KSP*O=ZNWPN{s>^#c=k%nb%Xz$+TR(X15iMuGp+X;B<^RC8F)Oru zUU;fJL^@XJ3XMdX5~K0CHUh9QUl^b-l@UV>^pR+vTcL>-PrW*^2lvTuaOpg<<=Aq0 z&s0?vXQat;bEh_nFW2<4aJJ^9FcEux`?TEb7{K)b6r38j&I2eIeH%cQlVIc~*s-tM zMZol`8GML{cZ{%O7RH1ku32{Sr)-%bp&G8>HvZ4t4f?s^Qji1sV*(@Cg1(Ta)>88(_@2{}tW1HsK&>O=YHc2n9WK3?tZ7Kyq z#ip2@vBK+^{>f~&!*Mxw^u*$K(h|3;ieH=?nHM@Iv3py?p`~Aj5UFL`t(U)VW6qkp z*eCqnM@2%d>v*Q?7?N!4WoT;@fM49YweNM9JIy3gA{hsAYUN0_)fXJ$G-ifB$y$Cg zW6XI~D!b|z_sAZ>uaoZQTps9ARo2qfQEJRBo6}QQ$fVQKp$zEuxq85v@vtyJo|ps) zHC*af&FFpKG+*riCdj=Hxof8N<_?J}m2jp|@)fh@T|F#*>Nt}B;~X8IY}V{jNHBn7 z-}zd@@P_(l&iHw_?y7pkw0eo0-OBt^z?60s=1-Gg z<=;Y8v}mQuP!X@&)*>bBFH|c}*Y*mc&*SH#bb-jI&G(;pZAd=Xw5((W1f|LIuGXex z&az@UI(tk^<>Z>fl$jT=58KN59KZda<|rx}i6jCr=R3o38{HYR+(aFa$P?6&g`$J{ zBXY=(2U+!B+30W}mNh7#itR-Hp}R*x!5pUi4`opwRZ*}AiDo>qeeod+=9!vU#ApIQ7a?Y44rwwuEwlp=MQw8jV*A8n%uEBn& z-s0HAAgV9pn&k%ZGZz1bFJ)-4QcF~rOh?skJKoh{a=A2B?6xBn3B==WDO%jd06U&8o z80+<|gSJpUd@m=zryunWH{Z$h+>zt8OOhpMdm|dI1vu3-aZ#!sv2_t#<%f_&MR54J z?_!;x`t$HqNG7WL5wy(YzU*VqzR)`(KE$kr1NH`S=5@u1C>_3kpPg6D3V-}r8XE!2 zOnR;>8+8(0gr`2oHVn_c1NFT6;sp##DLG@Sf_%S5&_-U4kLA3F*1^7!P-03dyzGu< zw*TsKyjFO9%vDFEgoaEvYK7w;X#DX4pfEVt;Z*qcox!?gHV$uXbw1$s``dYdvKBF# zkFOpD&0rp%8q+JFx}amsrdTa|IZ6ug8h!llBrz&q)|<1fr>TqanT-=t>dKlfBwqY3 z(ahE;p)?x7bKLJTGd3QTv_EeLvmmuVqqY3X1>UPAA8qEE0rN0|L9^F5LBzX$pk~4I z!F49(R_Jqx^KgYP7);A4K;1$JBr?ef_n!MxLV?0G5?)N>guk;7i^t>^I*0%{lcl2aug*yxo$4cetM z0er3$vr^nG`4jT%AAyvu>R6e}(C#Sh7-vs}bPk5jo!E`b0$c3ciy%n95=K^XzF1;= zA&7^tk9VXAm}lliR<+N0&94l+jLm$xu2^v5*1^U#u<)r?!^PLu>Pg3&~-^5_yzn?5P3JOODg& z3-XPRH}JoHBfrL_dZyyrQK*}mT{0CdtUZoxtbeywd`7GbtqcajoFjZ`^{OI$td(Tlg9Hhi#xL94Y_mT=>vERO)>TlBR_N&GZXbsqc7m_;o8DpI)fB5 z%$L0Gr8QXizgW{46AK;gDaaC=U4b(62pg?`NZ)0NzadU0uH_8er?JOcr4tkPo^N?^ z#$qNz!yX1uo9>c>uRU)TP7}o!**V3_YnYqq@CIfvd!@qRC>RJt`EwSzeH-XbS2CQC zy9MH64{@|;TrKL8wG_P7lO{TB<9%6G;KOE@)+dWJZT?wE)u4QW)BrW=>JP~y*tm>Ovx4lIKnow z`paAmM$UwcxGi`{OiY(NmHEynMM6i9HON1T=ZC|s+iS_2PV8QI3JF9rZGs7wL+%Y~ z)Z*qVW(PBpo0e3#&WI!;5}zHw+B8M{-q3hmV2-;FU@!eJ;qG(f!KCJq1W^eJHSICXXpj z`@s{TAFovq*Bfe0!-cHe)6CFup?}Rs7Cb4mhxwZJAlk5|oQ>i7W{-?O5|$T09j5iQ zwk`}jX?z--9khMOx~eDHg>%U^yj~3-5(;oic1#Vb%)4OQ}0jE<*@ge7SDG z9kIM)jej-vpz#4XXyz>9PcY-Mfn;*QKKMBYwo;qo8xAuioy%A=CboCPO@#0B*Z?ke=8-Gygb)MP_g>P8^}0C&oL7FEW&H6c5UBO6^lE zoT&HkTBK$A-{$Kzpu|9ELvZPqP~YxE7q@s;(Y$zey@LOL8p`Y1THO2r-&2~I{OV?$ zz5bPaN`|A1eX0@7UXD%nj?B353OG>AKG0g#tEE%Jbko#HW^lM^pxmxBEVX%xayUP_uHfKU-e^}4|=P?+H^b>tLRq|ISD4lVCB8JaF_TId6yPsX($v#_@W$H z%eE}qGOM#nl&wVNM3!oVDV(`sgkj1M^0A0&wj;9&?0g27bUVzj_2L5ua%0yf?)YUoOqL0)XMqpx(SY`-vO@fm6bmc z7bp3-P7zc@nGX@3(nsYXw(dNUIyyT^AQ1D_>qq5#w_W0{Zm5T>vi^IYvqFc;c%^g= z`di1&?1RUtf{ZjsS<+NblG*@^Q#AO(r5qGmi|^%zUrK8LCK=;)G9&_6^n#IUzg;Hy z-_^n>^Ta`3=gPjm9M-eq!o!O>4Ra@=cQWWJMc~3JvlKoU#)V7UO?h}&g-&}ROP;W1 zQ%r!SG2e?Slu=KG2YZs=#M6AUymZ*9%Ofu(!M#%@%e&ezRLJDH^$qXO;j(;ktFz-q ztC9EM5r;@+*%lMtrVV4;iQ!GIOf!JgfCWZtgM3p(mXb%sR*ss;b>m3>s}(K{^E<`x zD!@n2kjFuq3v{?_x(jU`c}Q9ENs|fm9pgANqIMnjWKf-!AEXnXfd?eAmkQxdx})-y zH%B`7d?0eVY0NJK^zL3KM!-3J&5xYUABw&W!gef0#9Yqj2i>TEq(VtFWCKYKG;8)) zj#Wj0xogw@;0;?|%Bsmi84O1P^F+QNh#H=(6yWg6$366{SJ&3sAkzRe$G$_P=;Q-^ z{7Bn*xD;{Ko208iAD_p>?qtjrVF2-3sQB9pD!Ez;<|Cj|<^D;e27t+a-0n^s>TtOk zN)rzB4+_G{aV)7F(>y6oQW1AnKWw$MLA!V`^aO?u!k{v=#TdcmnAjxxh>g9GG1W3F zt-(nm4-6RCX#-jLqRzS9B727Jy-Vs1J3BpaO_6XtGL$g`(2fCG_DQVex@YnqJPfww zz$a1Vs-vjVhn$PraV<{@I`z%~SghwpV3+9=2!qGweG4pS&{z|W1Riz&IF9(vP;G$C zl4FAtsv7`CUAShIQ>a_!Ft)kSIEq3nY;{&+3r)c;3?fI$_V!KTSNbTT8qw`gPQftZ zxLL`Y3F|Vs%>hFIr4#b6HRjFHrZ;g@T_7vLCS-~b5OeTPPYer#xQt}HN{LY_F4m7Y3vMgzkLeFU+LGGQB)x@6BZwA?A0?4<)>KF@b@c>> z)@xV}3N?^L5vZ(Ch&RMG*)VCWL4}wAAsNS2Rf%{A-0>BZ%9bx6dGJf0|4hC$UD54z z7vr(SdT+TOs$4;an0-?3om3{Z+?U>;;^i`w(tbr$~4Q-iQ9@dyd&KL8?#wEkL-(Xs89Vci7!S;-Fv5Pp~E z``fUrmy%l&)dfKSg!g(r`rTF{Ia2j{=cllGux{fb7$yIx{R~iW0oDX5)4J$1<5X2e zm8a_qF#3o@TSdlyrPwZ_4SfZ~_Nx@d(~FH?e1gWjurjbMUaWYGhg!M_+()X2R>1qw&UuisIzTSb zUyvZsFtNXc(dN=L0_nXVG|p?1Ckf^7ktOu_*Hhxn=+M+rlj8FN@$YFdD55%$pLLE@ zlGlx5BI&V)vu_krW~!S;L%$=v<^V<|@gOzjRflTAK%*h?gmwsaf=zB?z4I`bLQMe+ zXJ*;&)sO7kr~_(M^=dp9z3Yk97hE2(6{;%#?Jp9EPr+|htzIi7q~Xa)s1Xna90*v! zfvKu4q6yyVbxpyCY9v(oOk;x443VB19t2iDIl!V^a)KP+Qs}WhSNF{I%L(gw^i1K6aCoem-iWPxr2=@v0%#pLuF1}uSqGL3>8%6Z zE6PSh&|bPC@Cw6YE=`y!#&_VbBP%zhtLp$C(NII9_S=2l-q6P+ZO%b$)9Z1#f<_Ts z@_Z{MNhyE%^drQpK!P&B7(3_3_~K^peHCRumt6}2sAs=H{C}VlQeGg>Lf_L!g~&B^3c9 zzT7pW;hme{z>P4ScrmJKQA2koI50jrh97J3qKW@wwW>Kve|enFD}9$LSpSG6M8kK$ zn>bESc+0t9a?pt}`@MDcsBremYw>m^`N`} zsYNs$^lKEI-&7wbSXC=eALnjHY8@>eeIbs6g=hsz-Th8N3-QyNH$UTLp#;Yrr%7_4 z-(a7W7~Zblx=@oL>XD-_cd@~aKwMz6amP!$j++WbgvwO;oZ^ES5D;KkPSw!r)g3Uq zim zjlZ1+$DGf`6wT5-{~gY>giEZc0#P2)$^J(k#HX|^ zifEmzSO$tatyH3NGJQaIaI;Nfb7fa;H0V$T#cH9bC#GBa`swbTKlfDylE7^}AGahb zG8N1ugApUA^~}Oqs(%Z&VITJdxBt-W3bs+xpda?r|3LTjr_jx`v9eAZdm}lGP$Wv) zidmN)5LhVQ^v?RpHx*>d8=y{B zw!%gMY8)AgIII_zRDsf{q()DI&^cR;@Z?z9t*jP*f$I_NK-MMoa#>M-Sr3DgDLRiE zkE)IfNy~KAo#hEF#=9u2fIq({ohiG>2OsEf!G+h1?T~cBcc=70+K;lhj6ht0TkAee z|J&ea2b9HW=lP6d8wJ~|6{qksp$e0c`|k-db#J0sUxd{VS8H{UD-^;?c;?rPu<%vJ z;*?11es3CiBoT9K`_^}U0Yt*iokh%fS{k7gAfq(o+lU;=j&Yr@In@S!|2br!Gc^f13Zc|14Y*4Z@LJy&_<-}Ap05or1q5JhS$nPov$_)2N^bA{H zBP_m5>|`8(x#5RcaAE;Ui4@?>`zpn9^r%wE(^iktygel@+b+>ev4#8Mhrd&K-U^4( zGzTMk@nD6#u;mIWg{kagC72XPI#B9>FmCLe>%2X{6ihU3Wu59KreB2Q-@lQ$@YI?V zAdJfdzevNZGOq*~8DzsH`Cb8!DKkqF5gYlaW&8vInL^CqC)Ou+mybHOe<=_Eo0#G< z@N|@z$<5A*rTTfAHrtw5IQ(|FCZ3_gKs9T@kL*-Hm0sHJj^{_x-Q#Id=TpWTE;V14 zq7k+f`;Tg10`%AYc1F$Vlxzjy=Lt;9;O<5Z^U1a!S9s#9v%LGRHOOnU^g)IH&81Kx z=awP%nlD8TVls=bN&;>ktx56~SY}QY*f9~mp=BOmsgc!~HhADxUJP%&dS)WDF>R;y z9@!G1VKxP2LR*MzUDa!pB$owG_nqanAW!vA@LDA1uB7Xhboxs{M(&CJ{Gw3wrEs%~ zM&(2Mzu*)(%C6yY^5+PE?^-b2Yah`4?GL**&GDCMNchn)(9UEr4JwE%1Lk~^MiDyd z;!3ZRD|lj$?r9K({u&+1ForXZwPo(B@&YpKpyUApYRv9o@+%z2)tX$BOc9Tg5tx-F zRv29DxFuBx-0N8P18#{WLeA9pieBCDJ`TM!JEAv>TyOZ7Gx5W>J#~w^3*MaFHW@StI9W(B2vZM${P@ zrQ;-orD#a;v-cP+5#zK!pukdU;Pywoi={0jD=fsT%QG9ciD zBh47g3FXunMnNG5wjQZiO>F+ZecMN^ojWCRd0xCWQh4;9p-+a(D8Axg>#J(trRsyY zRP}Bs9;J>$$z604?oFYRT5uCaCc&aJw6#$v`u17D(*?Morvt!CC(6&bXT;Aejy-AD z^788lmp}r!B9mVV2m&Dnf`L_Lu;){KobPMY5`LRVni!$)@bAiTg-$(7_z?I*+W~sN z*Kj@eAm8Z_qD2U-P|A`~QhZ4m_~Jp!iI?5GyC|LQiZf0ldY^$?>yA}+kuJblLhf#bidkdF*v)z}A@z7s*`or5s93Tt~-Y1k-CnW)nB@O zB_T*i2qco6LGe_=Ec9cgNz>RMkL$kACQa{Mk$$Kg1#%=sQo8=vk%G%g@zfjlY{C|@ z{`_HH-*}XzHI%ogNip_Gd5*=9Q#Z^?CZ&{-|23V>HD3B6AiI1WIC{~xB~3qWZN%L2 zGqr2Cj}8VXee;Hm2(jxlaaKw6#t?1fpR?2;S?*78oZ>K)>P{T^iY`W3ur z-l@9msZ||hL`8*<@6_e)Ms2_)G;Hx_F*Q9KWX_3v1I%M2sZA4%;p_mcaCx)-#=tQ6 zZyaLF`T(Qp>fBD{mHtQvk44{V14iPRQ_4kdr+!=*adXK7F~@zvC0I{lFJz$)L%<$k z?l44<7^li$p*%;Q<6q&9Lp8x>&+OPR`%4o*!=p6!FFIPKTvyI2RB|^aT#b^(Tz26( zn2hB=+HOtPy^=}iHCi`;v=4Ki5ctm7NGkOPcNAz8=>z;n35Hrm?Y~AMEi1lJLPSlb z?UpasHjF>-U0R}%pSTExakRUsGUrjqP6ON}5CCZd@~(Z(jtt-o zv)~F5W3Pbpi8^I%q*&Q_xShV=2^z31+A9V(yj&llGeS(GbEM##Pdi%Xp309X!9^1JF}*Oks1i=k1CJbE5>-96!Mdi8HM}k7xCcltOZj z6VBiW)1e(F#L*c2syykFdEHCOtLED&?~=vIhd&nFxy(%UOd+1KNTwvO!_DU(`pDgT z7lfTc$1?KukOVR+=%@fpXS~g3EZ!e#YhJpx4c*=1+wYLPZ#$8Z^GSHZF{p%&>DUYh z`$!_10J+3FLxv}@NB0T|e5s><4VY(oFaRQ#Xf#jovO+s9hi2YxCw;TZs*L+;ksvg@ z)H$+HvPyB`M23&ON)H>dO0}X}o=vbl{zsvn?jkc+&}goHR|~03n>3Gwy?&96C7LWF<|JktK3bv!uaZ zHo41(c9OTQ*1ts|R{a(VEa01#C}(EQC%g|;0B-GxTZB(Lnc}Gm7Ze@HwkjJB&WEYO zn)m%v+9Eatm*ejy@Lb#IAQNJ_9(^NB~U2D=Yd%Kcp=tOBia zi__-cU2Fe0q@7YJnaj!gE&l#Vt3E!!*hxXYGxnl9|8z1tN;wOPBq!PWqF;H{o-XM> zx4@8uNWO_7fHbT}Kyoo>=u(O_8i>&Y^WcmaluR5H(`r1vt#6os7z&^fjsGyf$eN)b zEx>=TB z;K<-A4QOm&gci4hqL!Oj>|lA#2y#q$WmLr3>_pl)rW@ZPlP4XLWD6Jb z#wu2PVDmaGKc$xJ@>kR*7#u$Vp3q4M*5HGkFydYCchPEz9u@n`gO5kH<>3UdQY!)j?oIZO)WY<=62B)0@77B#dw91_%JiBo@_; zjB56#*w`P?V8DNzxlvc!^kl0~1d;jMwl7WIfBUine}A-@n{#%O5Yp7i#J&!RWFYgI zY;n-)xZ4Ny0u&=+Tz^zA|J#pypVGDwlN64XGeRzDszG4~YY=d(E$L1riLI#nx=XNu=E54h3~W>i@C%I%vSGJD z7I8TaTh-DnE4%@d9Z6f@j(cdKW>oLe~f5OhaxPklV>RFv z2>RSJT!fk$(ZTvKeQKC(-aED6{btp9gJvw7rw?BWTy7K#>`FOu-!bpB%}XV4aq(bB zL1&wpzC=kvKzF%_ZrmQso>AlB(|<;`6+^KzZ2M||p|d;={(q@twQc5}!*s*A8WQMA zR@9&3N~Qp5vB?=#Nk_$LoMX=jtOu;x_Hr?2A~)h}IPHJob} z)MCqvsXfEoOKFJk_P=5*na=064uHN_Qe6#zG}3h6?P|CJjv`9?sk9~L?|X&7>4Rda zBSvXA;~&I17Xg?lZ-%I!ysYl833pc>&j7>gwWab+bG?h|&VMq;r< z$fH;U-eC(prJZjc5G^_!)LP38p`Eb_XFK%*Mb%Fol~c(z+ihRa;Ek(C6~u!%bJ!pz z<;|%%oqyKh;w3kJgGCe$Mnuuhy(%++)QX*&A^|>+Dz3-HE03Nu;y^aD=d9(ifDNhW zSv_Mf6S{_q5E53s7x`gEGV_&Svlm$&*zcMdVl?TFEAX z9Wux0p%WC71|RZ7P%DNV-?S9sQ0T!wJ5@_&pAKsWt%Gp`HRK70>Eog14c^@sAqH(C zM}Z4H|L|%&=Jis6vHvT%N*i}q-F-`SsFMg{$i5h{BW3C4PjFH*%V+*M@D4WN#ozS8 z00O%A=%|2NPOHg!ZygPJq!JLH!-#We&$C7irt*7m)NN>9()z2};m|An?{i7RxZq#e zq)_TbJ&{)*F_9=X3Z?On&_fW*#X=dyN2q6hM*g(npw@7V3@xp8kmC+-D^YEt5QsJL zpsP&k_K}c!d|1B#qS*Jyt#$to^BTSIMhuzA=WOP8*0}2SawdhmJ{5sd3)jMM1`L=M zqG`{S#I8XvFoin?OoIe7C;nmsEs!DXe-2&p0$3@N4@X-S^U`{LCE9~oQ55y*k(a=U z6OewMg^Tdg1pvrGXBtDTKj93VqUv34EO6*u&AnSslZ-sZ5b&0SQJ3BUJ#)urfMI}d z5;H1ONRm`4Yyl)fQ&ls*e1P)i4hHGRG*jT2j4LGEJVX?~rw(dIG)o_qcCSp8DV%{v zuBJp!nF5z%cs>Rp2!8IbyaZesVadCU;2meiDR>GFz1x8)hLm#p@DpvP-1Y-cL3@2o zjY~J%G4M&G<~EqRr3x+s(nXgD1?{0c+mKMWfUS9X8j;3o?(mQD*?`f^ zkVi+pVq+C)I3cg!(m0Xjzi5fIu5E*CMHy(KnooxzA&Dvf`V>2Qf>fPDurNB)t+#F4 zwr$(CZQHhO+qT|q+qP}ob4OqOnPrrutJ10Jto5`dptI1G+Vf&wEe_R!oftp}JZt`$ z47R+H149o=l$HQJL-Bx^lq8Pu zKL~Z52^dB_-XHlOpfen>z0cH&tHh|rPTdTH%KqY`Hsx;*k}^Oij<(^6vk&N5gyV#F z&^BIGL{sCWyK`IE(e1<~$<;%oDEiCO;AM`r;<_2cy6vwmxx&97k0-I^LRM5|DZw85 zCBN_c=!nv4Zy6xnHgDxo_)v}pY5^wYZhO2~N7X@ba=t959Dqtgyo!taOr$Fv zPIZ7g=Ba!!+mN}j@0+RQl`gKSbIk&d;uPVJ(2gUHULyVcEg(zjKY}O20+Qn6Y2C{N z;Sok8{TZAH#a2^EQna5(tlZ}4C;Rib;`dq8X625=c~CCfZMPz^G5K<1Kuo8dJQjDD zxJRUPU6n7qOUlA=xr*{EogD7ESdorMbb}gRt3+3lHA}H9xVvn`jC7uqgy*7@*Z=BS zwXnaB0AWqUN6=l9qWiQ|#=Xe2`hnBUja_$A>(Og%DdYH&nOXMMFA|==1yVT*v#*1W z!tKOjRyPz*?f7M1?oYoReo0;rKrsO zWy{&nd>7TK1P@y9lvYF6Nk-zBXw#n4b&fYpu`ol0X!(jPzpLv~>7G#oHnYdV43lNl z3B6{4<|<^Q&oC~SMrBXGEek^VeT-Q$Q$fB7?48#xx>&A&zc~2tKy~HRh0#sB##+0i zaz%y^Wuu!uez+etDQc}3$|RBs0ZkW0z1|Y}W5JxW=|{T8`y*$tgS4s}2N07%kwnN; zA-pv7M%cUA<|vaeb{s)~kk8g(`ZN<1GDAr$J;fn>LNa?(aj;8{=<-@NS<2tcWd6QA zA3>8<$(Zd^lGZs2>M6Fi9Rb&mzV~mw0gBmJ2#Td%+H3{Tad2};oR?z9BH^BYu3U5$ z;w?r~3Z1UOQi@l+lDOfn!nmqzpU_)HszCpw9Q0b(CBXNL7| zz1cRQIud>T{z8@-Bm8W;2fx}a0!JAw45t1en?^Z9l6y=WLM3B$$EJVA0iGfQkqoJ6 zj!Qpr*OytQ=PtrHHtmaG@o)Ni0{3FXKG*(2nAi&lI8F( zr}Sv4fjXqArc&XGv`TSXvWpI8QEB}R7~mo8o*j^3KtA}ZOWfkK)`o)gAJq5B&=wj@ zBmAOzt^nbr(ednMfyn7Y6r^9-Kr<39b2QB?Y^*~48^ekRKGe_AtS)GV**&B!#KWU{ z-hy>SUtks0S=-HdMrH8#;%hL2glV&(V=T@r7Qi5q&0rBN-uutJaCX4E1_H}Df_UUp zy6QZp@^;6C$k$LTrty2v*3He#za9cbVmmCv&+yTZ@p@**bo^gGo}vy^ZV|cuhPggT zKDY2--HFlJHH?C92c3LL#sfgSqMUEtlZb}a!urL_WVs}HlekhrHhehL#`)^c6@oO0u9A?=AQe49ajUS zDEv)JPcdZ@mS=(c0qX9`QxTgW49X_~X6hN&35wh2*XC{Way*5}o>D8z zG3E1!W-pbzAz%r0AJF(ZUL6(ort#!L4#YXCU-D^k^_LQZWliCnor<(|kUY%1OUjaG zz0wQqS!GFJ=-=v1+9^k0onz!d0vOQAuPG5vy!UDWtO5)GysKl8vYn38$&;vz=0Yac zP>?sLos7N6psD~(hJNisA%=56%YW8&QV7fz>*A)o+;XXCd~bg+ERkxlj|`WJ-^XI1ltIJ*|x z(bOAmWvK%ZaJo)&gGWnd#(5w09w!O+(d5o{UHKn6_c%MxK#upjc`0 zT(b582D82NO$;4tv?b3%2`RYZ7*UBzMX2+z)<{ga(v*t?xf~MiE!Ulrr8x`ibAnWk z-Vf62>Pg86O-Hg)_k(0|kqe(~6z{_7WR>e(M~A%Vt}baY{0IwtuDWll@=mwr;B zyTfWe%T7gj{9Inly6jHp?ALDi-mdciL}vY_ynsI(PQ&)3B*qb<(qIES7ut-4(lGKG62j*ks*TyedNt zPn4&#krP;7_5w+?h2sE_4}H0mvZREXO(@>DX@PV^=$WT*@r|SemO0dp@ti#hz}tB> zDn0n=yJUgi<68#^E|A{2Px(tZe7Y?FRhl}t+emkmB!BUsIqnx?ERj^81D(vIw*CC0UjgKl*nYAsBPeFgIb5~}{WFhLZ|rd$ z_@bqfl4Uks=Nyv@9089V_A7PBbl%h>W!tfZe@u~Dg}G_Co=-(ghl5#Wos412yA z%(Q_k^%0PR@m-!uQ>=;I-zXZ<>(#KOqg08pb@wWcXOH2qEj}7T$RHK$AK7|=*MXV9 z78=>NDOTCn(@3!w5On?aV>Yi)xRG33y@@Z6ywq2sUmcz;SN#!t%Et#DawuxDNjwS> zpEHRr!q1b{5J+-W(~c*;J%HTo{E@zvlozGBxgf1om5q$G-|Mm%?~7)PMdpVqux0FZ zK+U>+czb|uhDigDa67yL!2cP*c$MomvQ;WX%HQai2^O&bl|;L1D%}+|GxM(HzxhUT z)kBt{X8~`3fvRq|!EA4)nuIMhVs*BZkF+*u&L4%-od`+_Nhet^OTY*pa`!G|{&G0o zvCr$i0LjomocoIxO(vL&gp$|dctW&gDmoLgGYcE;|DVYI{|SE0iY2rr z)>0!Cbz8@X(>Rm>qE;>Q;6!JaO9#YOT6~{Q;amjPUtt&GzV&Y?nY9O1>{*U_^x}({ z1y}3Og2!8uQsDdwJC}B#(byhXm?PUiDKo&JZ_-s=E+R3ve5y>26mcALSfvU{d<6IR zWXm9Wn`yd6K5#9dB z4(Z6W#tdn9_sYCVGh%ag{d@ObUx@PE3GSP(WddvBY(mXHemW_r*eL2Rb+R-CitI9O z!h*t5&|lX|A-x%L6)X0=Nr@crP6Kaosa1J}VTS-qrmZfFScVlDe-APqD|EWh8wQUWB?$d_ z{TW=#`&dui!2l`=3qUMDu#N$4nDCp4p|23yZ2o)A36^VH`~YnJFCH*1scM-?9rb&& z0?pQB4pM~2tRNQuNTRWQJDH(I{sbp1KGpZcMeIi(sdz8WBVcKov1*Is7{7->{F7{K zhu^m}^P`Foqf5T_8R&L9`o!#$@5%Im&k7u|tFLOEH(skc7=b^7P|A2Td_Ynl7sWJ- zsYpjdiY~{2;eUq)-tOVYni7`)I%%UCP7bGC`9AnU1ssdhWfBNYKwpwCM-DUV@$OJ@ z6Eei*fe8IK{BN?h=QYq$sYmI?)em`%G+5vJttUI$VSvXpw@f4c~wPH2M>r{47}o#R6b73)b7N3CXKAo6@g8q_D%?G){E`Esd>! z1Nv77N3^cE{*y_1fxh%AwH8XK#IE$5El6MSzoh_>p`6<nRTo__q~i$zl?B{={9fChmQ+U1KIq+Hcu z`3w^M55HnFD>T;xs8xEJMHQ&2NSj6NRtJ<(?#J<_3ebZUZK2Hxce4WBHyk;^LdN&M zTb{>t*x~3D5RD!+JJ?ta52CfW4=~wA>JQTM__w-|WUVK3^C z6Q@j0gN9J){-s09#5N6ztPbw!L%8tMAdh->`Oc-9$sxmoLX@j- zQvDP?FK8APT|)f!)xAqrw~nO_N!>u zUmt5|r70zYVvw;JK-qy!j7RqS*Lt`=JZNIS=6(@X|9NOXJO_DrDX)R+Fgdrye?nOe zzqPm~)JM8<*iC=yUzB#?Hk!t z!3vB1MCH-a((NR`Kmv4)FG(8hpBHh50fb9qHL>?~9>wc0b-(iSi#9R;G3iw4E&G?I z0_$a5(&gQW9SIx$NInG*=O>>qVJ%I?uBZARAjIwHPF;RXrs1OGx@Jc;p6Oc$9Y!2~ zf|Xw?)qok_(V&Myr+ry;&71B@$5|B%2@&funOP_QZu9z2#g~OL@B*1&<C)6%xJn*34v8-AS~8}ZBoJ$Y2+kkB_#PthgU_BEaM|<1 znrZ2c{YYq0Ng*lFhi0-mtAj44OtUK2d)Vv)kl!!Uc&Z>!Q1;RrZF^fy^_}>J#tQW= zPnSgFbZg6$x?ZBvFKHl}Mzb+cm+1)mh4bfMQ6ij>F^L2FkK0`I>B)QsbqVSoPMKO* zp{;o~2;VKRrnxvyR5OKYk$S#^8{@WAJtV8&-wYKsOaU;yX2W zX0R0&XHu7Q9M6aC3CT|W4NKBj?dI$oJRof{+B z55U@8k{{Y2NmNqb?L$e?7D|v@4gI!Vcqfl~t%jJD+9qV_*oMvW@1Lhu(CRii=Q4jW zy)7j^`mCsrxjRTw`7JCz((*01wA|_P>fShRt(4=NqK z@OJj0{y7+AL4od+gevnDR1F5u<(6 zeLGUNIAmDy)OMhxoC1cWSctyPIczxslGb)x6v4<9S3w7s0!BahxHlG;H1W?_Ykq zIAgfOUe@JKgcn9X&dxw$lcMI@T{@%CnVS15EqA{F8nE?{lC_MVajEfJA}@%V`-Ulg zJZT!0cL+-L58^Hy3*G{TkxzOQ5(RpE7VF`v+eKcc210icgQ5_sV^g(^v{oD;|Q#?-y)C&S^2F9?|usyHI%3%uz*V{_|VjFV7k7aT0I}nb$T= z93=Dg^H!a`yW^dHTbXM*pj+CY3e(wq@D@?^ox~h%3#Yts;W`%L4FgG+^h6Aq^+{mC zD+?;c+^Im(5}TttqZxiT{IK%D5pI2ldp00Kh{WONCnxWbzD^qVMAhiCL6O+j@?1EjgBrH^8UQ7qSN z{2>V%wQyGOHH)+$-uAgsZI1q1rL}r`G#a4KI~vcJ?5=D__H8MSO@x<3nci6X^vzkr zq7v60;LKPhD*tOu28lRUIK&*%G8B{HJc<~QPD+)! zqbQknvpELbU&$ou(>l5+mnO5`)GM2_}t~Hvk?d&Y|7c37INUgo!qq6}hEpjM`>%MbIBvZFfc5QqhPG)ws}xMUl@cvY$^ zuWB$}@R|VhYX--ZS6g52Xvf!fN~&DeNi0qDL;D6(U4OviYA)&nsG3khnivK-I+nOq zH5gkAKD7GEs&*Lr>d1CXOeEp#HBtFIn)zyZ>PG3xg$kl*dTo^r*7Cpf<8L)csrFqj@)iy#Xp+g>Qm^Gdg=jlPQ%vG<={%rb><= z(DWRU< zh!jff!c+p*e*<%1DP(`oa;4N`kWJzDy#~FmNLXqD0S7=qP3mJtHa?*g*VoA7l$SrE zl?_?x{g&E}6d`P$e%m0i-J;hb6-{Yc?iZRpz^Hc%0De`G-nG;qG)^i8p%%->|P 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�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 P6qURZig1Dd*0lct{1I_C literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-10.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-10.webp new file mode 100644 index 0000000000000000000000000000000000000000..8b8a03b8030e6b0e0e7e54b5925afc843a352fb5 GIT binary patch literal 129910 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%0Aw5x>}2M@gRWY>wzym*woXA>0jH* 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�~6`9G|WgXfvNJkL2jGA5S68R@a(Mr6H0 zy+NX8f5ZO=NXaJ%6wdXd1_G@vP8MHIIflXna)eQrmc&AK2S^dl$3m31#x-+Iib&KE<4>xC3&-kxyXOdB3t0;|MW9!X}iLd59aK33Y>#2ZE z5wn2UPNsXrl0FQ-iFJsW@OybB09@TG%e-V#L>P|Qb>@x*MSNe^bBB!5639pwGbL=F z5SAQ$%Dl1z*3owR?=%eOhoDufU3u-)`ETp=-1$RZnU)>d!gqtVc(m)`GDb40c;g>_ zU^|5om>|n+z8K}BI3XkaN*IkP2YzRq!CcoA+w|yZdg~{Xt;F`Tb#~rky@+lGW{c^P zh>sLP1`#6$z=~nL>Iwn)H)Al)Y5Y(Qcvz!3F*l*l#(=l{f&- zX?A+;vPky(u|C2KSCX&;uU0erpq51X{tng4ABaQ|9x*;^uLEUiMGD30yzKKGbcMeAzA! zeXIrKS5-j>5-B%u+HvB2Z-TIM5Y&2XXTduv?2QBB{vTC+5eTdfy|3ss{BSBA4_YLr z8^8AXrORewS=cu#itjK5B$8KEQ}v^}nFO-IRg(ZiE=M2n94z*}+eZbb^Gs?4igWOQ z3y}}U>P8R1bninwV3{JUx%+{*K=r1K^uc20GgFHR9U7ko8<%FxT>3i@p709MB4A*mq>X+Y=6Z072NqROlIo= z!=>a2-)E2o%~U&ger0|r3_(Wot$kJ!TDc(v0|k0#{CqiMP{pBcrzMWKvnNB$-tOh| ziZTQm#e}H*S}02m0OlEC0wr+`}-qGZdD$zdzp?xC}^U zfW;8Xsshwvij&WG2hcoW`4-c1L9PNcgl&c+PMn!2c^?u!xhD?~x#*=4VNxJFB~t=$ z({t5yxWJA$FWd9UANP0ppOS#zyTrbM&sk=@;epu97i(qgL~DhaPF3B`@V-6?eF7fm z0xv5J2}La*oT*1$Stwo$7W({xXx^db@}0p;gkdxENgx}rRx|L6cDK++*RQ#Jr8R52 zK~!EyHgUWMPpV?IsUxGHH$CDg3;hE%Qivilk!_qmRs!ia}d<92b|ve-m!Ps;bIIbXc{NSzyJ zfc50TR%2`s?!?D}wWcjEJ~%d^T8m~!dbYx!(lz-O>h_8V#bzQbm(tYQLpY6piBvn` zH)0hXrM3p-en->%CQrUfi4AU z`l^4rEk3&ElahbNc84=B%Re&(Bn|-0rUm`p9PV##cgtdc1(In(UfwCMXc;(OWp$T5 zZ?5BPDUiGt8w$;e7y-M$rUq*COU&(QKOREonH0h=kRFa_=JFH8vXeBt)@nb}%t`cY zM&tnPx#bp&?Qe-Fm!Ju}b1fgvG!$me&9$m>Sn&XCnrgO8V!odg`GULO<+|7IJ)SJ! zYT&mdV{)9sD5=r^8KRI}qGO*L7e%n$#Ut6bv9CG$q6Fd>+wuDu*fmB7c)<_VZQKJ~ zT3EBSs5zIq*_(aj@^v54^WkT$WE7ovwQis}~19!itKh4eqX$V(Z!e@^~1Az!}ne2QE2 zEEV9I-;Ky>Cl=a4`&76d5t8bWeNWqAjm+QUfY5E50D*O#k*?2Ty`6Np;rLK|`FXgH z0?-l6DTk^+0NUL*WhDrJVyshMVL^V`vKELcjRC{`dC^s)+KP44T@qaW-|>OGKDStQ z31qY3lGkds1AsGF;$>KcF)h*k^kud2`Mt4sJ7&GXSeO~YDs*2YNOY28Lp7y!=6=~B z$a4ZtR`-6sMj-0O2EN@1!{uySLe8hcsl2_nFIBxpD0t%4lho-k}8U; zj7?@yo1k{DC+m&r3nwE{(iZW5^lWI2ANKp{eH%X94+h{==YF^)i&w}6saOZ&Z)^J9 zQjErIPVg02oFWpDrZlW~5;%V#SAxKMALIJJ=N}SGPtELSxCwq`=Zw;_vzm-D?FyoO` zTXNjDNsF3kY3&`uky6=l$E|g5KRl|2HJppxA4Vz6_+5`_9EXY3Zi=zm&EYmSPn34W z@APi^%6riZ1Bw*yx-m%nS^+N0wz(VVs-{$IM@N`5AdKjmq~^gSE)ls<+R?w*fogI@ zHbfgAhF9n7so%>u-d-O7SnR&OtbdtuVn2S3M<5!BlNcX1J!?D8Q3#`JTAfyCDLPiB zsI**S?r$(dj7Qv`!TOrZntbi0%W7-L#R==2Z$H)R;>f~i%#<5s+I>^qer zt>NhJ6Qj?45NHv=pyyRWerX3$QE~IPRFGu_gNr@Ea$@X~4_AO7D`K)eMYjox=(u3o z{Bf0X^{YnH;JQnhsGVP{25)Gj{*O;m1;u}rY&}pU=I*w01+D!RoCkL|;B+n)DDp_n z_?T~!ZctaL64AJkk|95(P)4wahn(|~1yddv3(vd|iw-YM7@ zYq+TrbNk%K2ukFf$JbEEvH;`1pA6IOF0nmFc?m7lIfZnf%KKEfv3`o!QM{_tYtQk7 zy`#y%R;Lvr{Y1t>Lh)1*5;B#Xhwb5VWzCr1K*nl)H`]oP{D&xDuqb8c40BT0U> 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 literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-11.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-11.webp new file mode 100644 index 0000000000000000000000000000000000000000..b20b7cb45788c6f3616b26fa4014b1d5c6ce1834 GIT binary patch literal 147510 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%0AT#f&j>3X zTAXw>_ajIV@XD?)si%MIN2N*RhIc)^56ePc(=cPb6^rAD^zzDEc~blewFoN|Q-Sl9 zVL|8J3cMGK?NdI#(t+R{SG>0qUe`IoBJ{*mAL%J1DQTKUR+l`*gxI|ARgw&QvfpE_ z_V*6D!*Ld8?hOmFm4>xoVv>x#`C+|mhX-H3woHq?{5lZRIB<^X1(q!;z*Cw8jqT1j z3R=&{W`TgoJ*^1St|_D7971;DXlpXgaAF(&DEks9c^J5>QhZxNadAQWex+Hg>I!RB z+1$-ndt2}tio8lzi4doZr_4LTI;nAb-{xkN%99mi!3rzV;_qWdadM=5-x=j$2~fK) z&hIta<2+NGmr>s3D`Z#cjaS|DoDLSglYLFlH<4evDIo`J0r2~+BLEdJrzTY8tHw78 zVAh7F`53aI7I^B(8k_{ z;CP}=)y_N;?lq+AcP$wfxI;kysd4f9O%!1J2xtBv0ZPZ^sk={4$CltP(c=YF=+@6u z(@K9paqGcr!qwjD;hpN)V{#%VMlSyw#t$SN;K@mt@k~$_-;I;yX{8_*t{e6TwRuZ;n3U_@QC%O??Uam3F zK)J6ZLX|(({m-!8TYiaoTyiUDr$QcFFQxO zF$yj`t}zM@;vVUwm@%HZab#Wt+`2DBP{`(`oNkI!a+EWamV|V>gqIENS zf#CiFd{Bp`p{?MuolMOPRNkEa-!{#v7Fh*c)G=GcOfVA3>Qge9PLn>{ntuG7PmHBOv+$Ek$Ew zRy$rolB>%i{cZ@l^e_yiRD719Y#VK2kEGL3Y-}?2^25SxJ?0K>PX!C{_wx0;Ng_Y& z1+Uz}cwA9Nw7#Q(g&hmV+#|ifO}Q$npKkjnKikVVsAnC2tZb0^$t` zW5vX->kohxRHkmM`4RRGU2`&nER%8#&VD25FiBZ1t))V}OasTt;n zG~~!Q_n0U9OUYi`0)69PHDuO84x8cQ1BwMg+Nwo2Dtl^-<~x$Wd_m7+;ot2@Lo|JL zCE@`Fs5zrQTdP0^F4)9N%HwPkNX;skYZgyAoj1P%hQHr9irp&gT~e?YQ-ACus??gL zo7t{Cg_1{H_7dV)Bp2W|uix6zj_L7F2K3S}AT@KwovY8ZO2G7-f2*4uK2-*)9@d6v zVKFXy7N0~XItvPf$1%s@Y)t)W7Jp$@F^*;&E&7xlAolmk8}G%`y6n2P@>l=XjXfzE zLdd`4xIv08xbNFxkZi_0vF?wXE7#tSpwa}Zi8g8gpPa-Y^;9s1UJN9+_#7ZtvgKgg zdY#Sq;V9%e40ZoVm6x7|`WOB0^&#Djt|dvSc3IBYd;EZGSQYW4>;Dw&|1+Yt_r!tV z8{lU1+2(tarJg8d5f$gpMJjIlZPZ|b%a%Pd+6{`a`6b1Qq6WcFGl^XN(uAQ#{HSa& z{TxxRjXRc!x3$zFd#0Jk+ven}B9Q>`6#lIiUT~Tsq!}E=NN_pPG8hy?obiR8M6;-e zXgQapfr}{J56m)pY!<^VpG?x~<=0*1+-Y@wKd%|+dIxJ&nnIpSx3y zWoZU~`72T<&W$Oq@Jr(HYO(dFsm_)D*oxb0t)5-Mq6c(qfMLm=gk3$3&3BJoz&Z29 z3_fc89pa;Eh*5XDv=uPw>;KGSYl+Wm^dxw*z(lnYvj@x4-Wto5nnj>vYvQf1ec8<( zs|4)VgI2^kGbx1FhxB#Vf}C)K0_=f3)9qsqfOAzlB3XCq4QvU1C+uFp zm5=QH4ZQIHW4zm!R!(0>3XsbKQI7rESdRh=>)58XX;!Pjwqr0{hWZ+iNq{xOq8wgl z^E74yQZPUb-nE=5hO#!2pttm2$$Jt7v_@x(TF-a!p*1f-X&J_5<$Q?kEqPQ^YekPw;x9|jQddLLFa?`~fczIZ(;-Cw literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-14.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-14.webp new file mode 100644 index 0000000000000000000000000000000000000000..35957775b0f2ac2450ddbd8b657c1fda9515c5d2 GIT binary patch literal 24666 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 literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-15.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-15.webp new file mode 100644 index 0000000000000000000000000000000000000000..dd4b29ddfde0440f4fb117b15838d3e48cd2165c GIT binary patch literal 53708 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 literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-2.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-2.webp new file mode 100644 index 0000000000000000000000000000000000000000..2f2f9dd7d790300479710899aed605c3d30e15a0 GIT binary patch literal 189710 zcmV)HK)t_GNk&En% z?0@_ZsDJoR?Z4#z7JrugTlHz?OZE@^=ldUeANyarKLtO@dW3&R{;}(m>pT75{|Ep7 z|NjS{%Rkoo*Z=namH!*!@B8QdkM^JDeh7b(e>MBJ{r~#_|Ml&|=pXz8)ql=E*MC_2 zGyQx1%k@j<-@gBN{5JmS{pY|Gxix`*8j%#gE6YRG$U@zy8m} zPj!Ew{vZ0E;t%!@@&Doe^8cOxd-s$2ANEi1AK3lp{fqn${NMFIR)4Jjy#D+4Dfwsf zFXtbJf7?IRe|!6g{{Q@+j-GJ5_wO&MPq}|a{*(RB{Ezj2?%(SF$^9gL|M~yLKkeT* ze(U>N_?`YQ>>v2o@vr9}*?+))Q~t&NyZqP2*ZP0-Ub|k!{`35A>*w{)u%F{!%73YU zZvQ3ytNVZbKl4A1U+RB!|4aT;`_J~D{9io&q5m8Hi~P^|FYiD5f7bqke--{a{ZIQh z_|NY@+W+$Zq5GHl|NGPXN&fTwzu*7h-|7$DKkxtibmP+Fn0)t*t%|%`>L%s~k5g(9 zz`dBh5})CUmy9LM(jI{$bh&PmQTLpBv!EKGM^1JAswEgixo~ zb&SB%PQp*Ss8?P{^P#m>isV;p%3@q~t$JTIHckvCjX1O=F4yzuP5iqamqpSU)%UTl zL?N;r8$bH)8m$4tN(bnVy~64?6x6!!`suq3`i=B^N?yBqd$;Yp+0sZWLKrtvxt3p| zn_=@}^b4vn%1NVdc`(^9=5$&fs1EjS-L-rLJ`lEWyt})Ek36iX%#n4Xydc0f-R_#0 z&Ou4R(sNFNQMr*lIrKE4rD05xx1t(%RjinFCu1Y=SRCo)0HhhXH!%u34*k2j*#^mW zUFxET8_@1QVmC2%8S$iF-%^Ze^G)PJ6X~d$CEA&~edrZB5WgIY|Btt_)_?eb4g${< zzD&Ev6^3p?g%L=V*T5;uk3mmh5)}n|0QTUy7pHLUVjEY^p=aAHtJcpw8o2Nn>}rp4 z@5$(x(U+w`@YrshnM3uWutirCkS*2uLH>o?zPxc$xctHJFZJ|_P5=I&L2+%*aP?Rq z`$wPg+7{t6PxV_RttTXzr2gT$;fkt)E-`MSN_s6V?&u>xClt^@vJ6EXG&DyMMKnFLLs zx)7`5Yd?5)hVJ@FYa`d+X-vPRg2RY#)_ zNf^oPP28FV-HrScIB09KZ=c#lV0_X5;!wuF1JQH7%=qk@Qf=6V#N!NA>c#$P$x04X z!EzHYb}+d!AQ~$9ti*@wDBvDAkG7wJf?`Z%QLeE_2I8)`j z&gGhQt0hOO?tQ4-uCHI>H9RiFlhZS(rm>H9<%BiNj+?=`n)pk}ljQ2a6!5#sbn-yH z1ijA=$vpyZJ0%hsh;qGch=o#5J6^J{Jk#+^9RnaSCj&<6viB=CtErb;Q@L53*=SMhF{~sL;szhqape7bqtEGfIU&$Qt z#W;9DZHC)4HGV8>NVH-x|F7rIFk#HdPM&xKDhmN3e1)#h?_{E*ofUByvzhd|v=K{s zcJ>FZ6i&U^`o5d;$+-3AkpmJGa>GFhJ0=_I$H|ia_BWfEZ5?Sw0MK&@eHJhWOv40% z01H3-X%;d62T98WZVF3jXjrY{q`G^1$$lPml_ndMC)cDeFK9UbD4im&922kc@s!sC z3>`iG*iz(8Lg8Xggj>!QUJkLDa5rE3+45R0W-xQ|d~o#Ks|AZ~&IZgx4O zyjRv_C`vSjWD@$9_lHuc9MB3^{OqU7XPRu3Y)5V@sMZxre+rFL6=|sO&V0Y}SZvi= zbpEL%@$c8TUX(x3gV&;sumrESbJcJh1)7;`BsC#g-;#wQENt*68vaVG_Pm{p&$ZS? zJBt=IUgqI_A!d{#ikY#uAYR&S)e_sr7QR@H36-GtWIHW)M6qa-3Avt92IaX4IAlig zjvn?Jq~?2QKqI~L8-N%^#TU2QL7F#=<19(uEpowZ>#w+L`^RIC--8)8|NY`!HL3wWl;1;vx zZf^l>uc7-$>PUf#8LIPsG1hYYE?(81dly!GvIaMcQnq<6E2rUVs^l~8R91|8-De3U z)_OIf?gM6LiA!96J`P>M9F%~xb;Qg5S%}W-Jq*zPmx5$_uns8r_3y=wfflk6VVM6k zBYGuruza5D8?YrTJ64w`Em#t2XnZ@SgWy+d#_xaV{ zPeP>Rb7I@swIkr^;&r2$B7@iJw`Hr#czfImN2gDyuZ>ulcuI|9;^iSQ4)LZ`6aZGA zg*Ww>LL#>gCiO;0zYQDkhZ2n1oJu4^%FMIR9fJR`R0CYVBbnG@6ac$6Z3@DT1q!NX zEEv)xR?su|klKKb$@oO%j+O@m2K1o9i|GAxMU{^;@DStqQ^Wyjpk`1{i1o`g?=9fq zmGd&f_q(^7QTfidoP2qSMq5^>q0ay>?S%|d!7F^b+;_(MSOaKkW+pngHU17te?vr^ zGZ>OZb6O~uNc88PqW3+pWd#6sDcCrUr5yAwIVqtL0xCHTYqx$qlY8B!VBEOGy~M}; z<}dJ68i+K1s!U(sIIV&A(4zo4xuSO5@9tImTpy*6L;f! z{K#Rg77i?CyG2E%3tGu|Me2cK#lgS-~enuAiUqZ7S0Z-PlkNpW<8rxh_uB zWee1oT6%dH7!B#?DQ2iJ5%MueHL;_6^W8KZqzrIlWUhX7JgRsN2=Lj}5k!ZD8_ulw z!ZL@z8-yabW7#v);b4Yt-}Xndo69LR%yeEa2f6dLg+bY9#Jd;3!WV@L6fhSmolD-%04>`3oWl9(hs zUI;o;$sQ7dG|M`&;$EBUD@s3x@OEZuX*nOk!iJ_R)$X8c7C?Sl^!l=ZPN)QI4swLd zhz1h$0t!Ss-q*&>8q{wnn~}Z#Jx&P-3^-i-2$VGtI8$~LV(gE ztJf%LZo_*4oN7piL{am(rtv*t)=HN5?7=`hR&)&{iJ8MUBOA{&ERUHyV)CHWgJh&3 zLGd)_84V-HGM`bTPI@qKy+0Ru@Di%3)}mK6X%OPp<9$ZrMuo-NCoyR{N%CQNf5KuRfjwf<>pZ#!Mp&=LT$o#bkVZ(bprwXuyUGC=kfUA$kydYEsfD+%#>=Wtm(loK4DV1l3O7GA1xjLofrVIKt6c6&G-c z0&KEX!W9;LCZ;VKkbmPfdbTX)OsLA+Me`fedirU^NTJGGCq758*;^qEUupHyVt0mg zf^0T^@zOEUe7+}XjZzK+I8eS;i54)<6d7N?sSSYuxQBieVMdt+;+H)~GH2dtXdDsr zAsLnVwmo;fSioFSy*mw&PeuU!o3Tnlx+w&bxxcgJ{hiHGIp!~RNVjs4DP(W#M<7D| zkDMek@LSNyXr&EC$D62tv>#_Y7fjVeVp*E$%*h5OhVE8Ho4C3C-6hRe7pYr{((O9Xk<1V16 zW7@N|t8^0jeN0ko2~{alsBtE`aC>HXM)iTLK`qtv_XnS5I0F?zNX`q=U9g~m{8!vnh8S}1u`t>YF4cP%qbc!4-M-s}CPn|L4w&ZML|!uF^hYaC-cz(bmBR0;P`%sPw(#|NrF#eTJDTYo z1GzQcOH-~5gZ5tW*Bm-6w3CExQ-0&Z+t&O%6@UE=JjB^*hFm)FF4Q$ZAgf3yg0Q53 zI*+0Pq;Jhv_@(m<{59ULWH4bQKk@dXE)HAPy+9Ea3Mokid5knYlk%yl^si!JgRri` z%7e3_^D4noeec%*q$-&!uDsDVA~zxmEkB4qUJ1$kAVell*i$dE>Q`Y+58-4_DdR2J zGzvz2V-){pk>taRaiL99?2oV_##w>4c^Ef&*jE4tEvt1ZK9K)<`5V4T=TzB9dxL2^5;&WgD5H3lnP0^e6Kdy-|(aU7iDjH$Vs+xE`>ABYBhs(LI>8;oRLXuvjAP z^ulmgaH1$~A-q?@qx|myj&?3@r-4uJj3PN}Q^>yvjo%U)0!7erm1m7Jo9U9bh@Xv( zZOPi>dPg92ZQ)QJ&B|<9nOXVQ4#2k$z|Z*0nNQvop;({(gO72v$!v zTw)d*Musg}=btRE31K8HbK7Rx$z2S1Y7z;s zg1`NZ2f-xExt8+s*;Qc#y%&*fxF7HTqAr)FPn*?c83mBFDM^<1)jv|AMM({bqpS~e zfqn6w;Y~Z(9DsDb>w_qJ0NLda2*qAg(=mCR!$0VQw?JE6`=x1b>lX^t?r!T6<< z3+xM#X8znRgL=eNUr`R%&P`;)Ub{@Vc95YL*L`Ri?F_nFzLNMf0eTebn9egld z@F@XzcqOXsfU?g)%LwA@$=O4Em$N|1cj8f)7h!TAZ~~XUZKHHjx{Xsz@Qj2G((vz8 zNF(RtLA81-B!6^=kN@|W(YLKW>zP;xyooPqWKTD zvU~>HZtR)AeSmq5v@v#qTUQfq)Vb~m8+N&z%ye16yIoiU7IOk< zaV}F22b(}aT$dyV8M)xWH>ovU<4p5i8b{a4p4fkafy!Vy&!bszv(bimV-p@I8sX(O zUFtu_&Ca~+48`}F*W}xzzd2n_s6pEvTC0JT-O2Ow+?1cA}Sb;p0q=Yqhqa^y12>i>2Di?F~dJ=)*QrWI&Pu4D0Z2XMcOQw%9YSg9+X} z@s5XK0bBV$rF3n75wZ8~c-qY1dTR%mrwzMrRIoSx(Wiai7WwZ#yDw1xbv>Z4MXBF8 z_*Z^i4jv%SufVUV(P7#yXgOLvQ!#jB-SBOuE{ zcrfTEzuR?nAB9luyr?Be7tve4rU44I!TcPxs2gpPO-;5E!P}ZEQ_;SBT1*@RU?0qw zi*eyVqpDtfk=03u(v`&fXO+Nv3U?d(bzRs6)T47LSG+7OwYs}5*?|?E`zPqp{Y8RIO%G#D0q5POow4AaMXd* zS>jwj3mNYM(>(@64r|c1!_03%i6`<=7NZF8+b|2EJLgFjhLt_DmQw!lAB!2JJjwS3w3_M| zlcsqJe4LL2De|Gg%4{_-NGDy5n$4fkQH`shcZ(2_jdy+xIgNT!jKEzqqTdmsh8Y;qp}DN;32O;piH6(VO-xsl#_`Hhy^hp|3G6T`3)XJ+P|@ zcb-sGLHnB_WU>CysO@$#g=2x?_ecOF)kaz&fTnXL)ffTmt^@VlWT00_9sp@Q215tW`sPcCZoU#TiK8;wr}py9#}C!7mR;sNJC@ab?Z24;s&Rt= z3<$JUh@^z1*8gRqT%)_keZw%xsVUf3D|ah>77h=39IkXO@{dOt)1#CH`K$Px;}CUw zVIP&Cj22P9=jN*!9iylTOD$(N919R3D;Uj`zyd;H`G{ar5XiDf)n)Q$IJGN%aCwSG z{oESCMgk`ZN)X3BNjJQlzo^Tcrtcnd|7LEmcA02Q87%ZHw{Gc()ysQVt;Mj_w6p$$ zFHUV{&UifWnC&n2G!vZaatd>@l3eK&{PL;;euM&tl8msGH3CA=mPahW00=;2**`HV z01aroa`Oy*Zl@iQ&`K6VNz!94~d+(I6QGmUH16t(yjiay)8KFS| zil7nM-dRI6%3g%J#;rGt2(ehpMPm9M3#P1$TYTyON&cnew{&>i%5WZ-W8;YJK9Bae zWXf`H9jk#yg3_DlCOAOgVwtjfP67}NxRrgHGU=>fCHZuHj@sD?N1f~wx&QYT2*Zp)F1;vS6BcgYa_tu zc&qYCJkx7($`UW9AN{7}W-mXz1fFXx-ROznFk2-F+7!iBRt_!4&Y3LzYX|%xrt4lO zE_b!uDaCy42~Y59v(9%82HE)1q2fY*Fgl26eZ{_Rkt`dfD4$85UC-X>M*hID3TJUE8uV$s%p0Ckrp?A=#Jn^(=EVdAkP%&tQ}m zeye0|>L?nCp`GT9=yO0vT2G)K;W$VVU@H71JKJ3e!*VL7t^kcLfPWVxA4hLGe=-iA zcrH+q|JA#5ghpG8Z~vQlMC2b~^Lgbz{%zpH6P58j$kdZYeNv@&#I9QK-aJqB#rYv` z`9MH%=Rka5g3)QBp9@MT8}HFNi_lSr_EA%Jt%t%ex%mhqvHatr2en_4S(_c5^}VBm zWdQ)!Z@sA zZ;e($sSu@l;J-Fnw~G@69hKbskrFQd36oWu`Lnu_HI$iCxmmdxJipn=uh8Dwd1PZvKy>5`_btTqB`EN6+;R?0}Le zxatS>kTrs2utYSn0%V(2ikNGStpI@?JN&v>lNlp_6EK8w@Cyn7n(ZkG=<`#QyXpcx zQ^V{mF(FmQATh|G06HJLPCRBt(tC3ID>pT}T74(WxlNP)8L(+*LSGH{3!T_BDzDKx zbx3z~iypEh?IpQc7)j~PIl<3m%aiLY(ax@DW~c1GV{OJU+j>+k^5em0=j2 zM>EbOD&IkT5?nIJ?`Tpzv76b?SI}Nu*o3WfM*X{o;9^ui63J$7zNlZ~qEj~EPa2(i zzzh#bm;vYMKEv`gqitFj{1GZ(5pG513Ur(kbbXFl6fFogjrya5w6D&$Kzn+ho;rrZ z3LpRgM@~or7_P%av>-;HM47SB>oNn!vxu)Fjf5ICqO`)T)2Dj)a|ULO}7-hw3mksD+D2_N~Bvou|H2Mcc$;R zuoO9+a7qH{T;(3AZ$p0h8KgD{8DhXFNkZL$kqre0&~9MW)75+u1v6rD;dWvH{?-_H zP*vcO&8yS@Jatmi`NoSdMO#<`?>)N=q`&dZ^4mr@s`F?qYIS6}+~m&=B9zmx)z}be z6P!8ZluKj{w*6n3G%T;LN(pi-g9SqEcZ@pGoO>HV4+&ellc0#OK? zgj=J&kuUfHNZz~c{ljPPm`JKhJsL|acN<7?rVAU_zsdWe7@RkqRnBL$%A2ABl{WMg zhPa|GwnBGfVN6RkOX<T)@$O*=FP{)!J<4`UNqvd;hrp&}^lsP#kCh+3XmgU( zV59Yw&!8BG$J{VKI%Wz&7OpNUT-n zC-iq^2+T`mL9jQkkEd`#z@|HT8_l|7Y|eB-q(c$`16-Ze2$ot+Rkj&CVG^c&pE0Im znuslG`@H4_DKy@bOQw7K}9$^Yguk#5e=VQl?ohOq-mGB9a3M?)&1h&!GP^<`DF zfeM5SB0&HEZTgXC%V>Wzr|whZ_JO3hjuR5^zAAr#8HFEFus}8C*Tj=jqW}aOK@Ri` z#V=4#SCk5h%kKK4K%ii1%#As~X^8fSSV17l!q{_xiZ^g8;ddlW%&IqMxdkh*avT{! z8ZqoLt8`ANCsHKWd3y_o=hJ9D9c*8ByN8`k#Ilm+$TxO`k+`$|=EF9N8U6u6dp|5J z0rI_2-1WDLGkXV0Rev}AuS^4l0r|K~@W#yAVI12zf1yjMb-B`jEkXH_p*sRJWFn6( zf#&q89;;pLimgs7R6%B2?X847TCt`q=4aCks|niKq3`D@nwhXzj?T44kWJAT1At`qaU zc+3Lf@kS$K{G}hHa~&Z zf@Z*ahH9tdh@FKL6kSm24^yVnDOwJRQ0i}J?W<+jp6|}-^I2fVqN=^%F2q4t ztN9Qeyaj1w$Qv#xzY8nzT>fJOi~2&(n!wybL?)1Y1*^3k%&TQ2-7LD`)hPx1QXhpK zhMB%&f%8TTRKk6?gB>cDDbUjSpI(mWbc@!wpGN3GA$Osi8`)ebI1z_P5>f-sHvH2F zkC`|Y&9w9Y1trV!ISGs{|KGrlg{=(fYVyiWdpHUD!Gq_k3++uXxNWXwi+#^V>fxuveUSiaw)3}@>3_yrroJNrTf^11@Qe;VaPoVd zdj$jRK!l@A))1i<9}a3OxjDvQ*qd)da$cE7oXSkXm605RfSTa7)!`#fSmYGe1_>6<0RU!E__w|+7G?|fiVQ`N*JY_*gQ(5+^`_o3b=De@f zV{7TiN~_yOJVpBxC@FG1DJ$YO*$zfn?zdKuEFN0iHv1-Kh#{8Z1J|nRoczTZRNR*b0YaZoU zRnNm;B=wLX8^D21`b|oTJ#e~A;X*(bwY#eKy zVVCm3hFKK)pgi}i-%P-70Y_VT>y% zs>mr2A~SY(+ryL9bu^@ROkVRY+eNw`HKFvew~VI2Hv6zwkO^pUI4KQ_nZR;T><%Vf z$h4j*DqCw_2ez#2^AM||A4v8Gl&wYGY@o>XFY6rE@Ad^5uQp#l?VEPmpHKCA&Dcxh zA>unBiI4}BBzZ*WGVoUDBJ-H8XcYglNqeLs!wiFh)tMK~j=>mn3xEa;cmaJ~GslAe zis#9f`A*s~^DWmlzqfWKG}8rjIrA29r&C{3@7fyf*dx0(y%hKyDdd;AFVwt;L4Wy!h&y%;rPPbYo}ww}G}QwqOJo z#9N~uH6oBgBfK~{S@;yD_49|92ix{0Y(Rs_7}9@+U=$u{vhRod$QO0Yh)2BWaQ(yC zEo%t8nw7WsN)gO{P1NCk0#rMQANRAMQX%&4#<24$2lsVgQP@#|SUa~{4&w4T_3aLP zrI&eayLMKRFHD%2w!T!NMdRR&)M9e-ci-If$Mc$Ie{J1wev~CZHP#3w#-%SH6X}gT zRYKH1oN~$%-D@eR-)u)g+z5-qmcMl*)qx@%`dCs4Gbo+sD~`0lMietf-?R3RGB?X_ zermFpa0nJ12xPzel!peO4P&lFLQ({8Xt)Nh1eJP7f_o;d-u@;dmdOpr8WV;PBqE=( z?zqo8i*)0KTzqFEJfJXa;#EQgJlDMyxZ0`Lx-@eupO1rG?hWqGCC(x@rwucew?ynb z#byLLlw~4}Wf>#9?Xu~y6UjZ6)p2HV65RR?kr5xeBdRe&>(?J{jLUUE31VD<M$;CvS>T*!Tn z44yRJlKK`5gy8>jTPlDCMY(z&)7KynOJKS?y1V33McbIiY1ZPc4?f?b5Hc)Juf61; zs^U_wqd4smo_}&1T>6NO&XzOi^%7J{q8!tnwv)l0`FOl(?1-f90P4uh&mpyxlzhy`%8BK{;Lk-q41)Zv~2YtZjN zam^~8!-FS{DgX<~0bpd7ZpJYaR1?B_H<6(4zVZgnr_tNplZlr}_<-A2;* z_v>ZwSN(m^hj&ES3?_8pFp3dx6hbz|3G#w@1H+n=DdC9Ge{40fIRbQZ20=x)sifnh z9GmFtmiZhMJimcKyQ(-a3v6%iHCewr3Uu*RCwHy4v)d@cy)qRXoE%8roT&BAko?3lwPFBK)>t)Sp|C{Z&O31~feAaAwps=@@ z96h-styvMK24tMX~Ru{rlsZ^m3clO zb=U|$0TN=4NOU6X8cQp1?Se8=Ex4k&EaUwrj7V|tGJ-jrdYB?==R%6&tzHL#yoB8$if^7cX8+ngZ%j9~1 zS!)fzFa}dlFhMlH2R*VyX(n38<`pV%!T<+WMpmT8ehyB1`dlq#}OHz03i7;LTk0qhHgt_Ykv@sA7`^vbVn_b-Ez!NPtRB1;ej(kUkM#Ie^W{` zXDJ=rRBVdJ&$wL$OrrONQ27ODsQUvGY`|2HG?*BE)S&oePvOw7wSWS zbDM|=ik2O4Nc=(ZWS3Pi%4;k9zh%Scv4fB&+!KkF=~`Z9?NBYjEQWku14RG;0003l z$k6z#MGpW0S7dPg@B|+?+>q!q5@7Jon=~C-njsn5=F|UIZHAH_>G1}`+->z;OA%?L ze|;SYaMw?Zv8nCeEWv&9j7Ohb4khih`eM!7>kKOD%uRb`V-MsMUQcJ&m6zELVv^f}8}zd>W6Vk)Ky*k- zxtR&rn)Rp3Mo$?!u_)s`umr!Ee%LUe11Nw12!IhBi?IM3zyJUM8#Y2jRNJHKhV(~m zJvtv7C7-y}+j97i_oR2mdLm+~;R#nO3Z3^jguFhRJx37$A?`yNhBV3)Ro-~lC7Iz? zn)y%QM(q-*9;{b@i#W3;eGy0a->xx4&F7kE1SrbZdLoo2D9`=QHNc>FmqjtRU zMPGU^n>DiE@?RAQMAe`vstUXl&NhH}6yXP*a5bSELriNil(pb`AjH=Yk*3$D%$>y_ z{VGxmaeFYp3)f^Te_Jq`V{_m!>1#=%#Y=cFW~Vy|PvL0oG?C~djHql|9>x?~SQWcL zo~yM|WjtWexJrh~VYi&m-5+E)0|kMwGA<69++EU$ayMiL^p23_E@xUDBn&S3!-S?L z%Zf9S+N9*kG=c=W(R@^GY;XiVa1t*@An0000009}?v`>0I{1*UJiPj|&K4+EaPx4LdN z#+VHEB;pQ7VA~Ujt#A!@?1zcLvqACd9txjyB1^I4XsT&-&)uyZE=N4UC&lVXX)Py> zWBm%|Z9bpit|uv?EWQ4Ok0`8Ag%u-$T9+tF5A&fPrIm&h z`;7{3r{45s2{Rh3(Io>vtN<@eX(2MpRib}@*3&R~hsQ0#z8iKHi){Guj&o5cPo+U6 z-fb3$jt>8`wcsO&Q%!}gI};giv@RY4l}RN@z}!f+`~&nu2$C43KMpo=P;L>mTN`#Q zl2j(F#vd@HzHDNJK4`XNA-ek6tEpEXU?bw9zmgYF*-|i;m2h~%6gyIP4`m(x2>)(1vy?kI;0W3V(L@dsRWQ@}sv7j1mVi;ql!=H2Wd z00000QuMu>;l9;*MER=U+;UoIe)E@J8Ru{s)4mWP=bEJ4H9wfCVx8!2KTHg-DxM*Q zd47oy?MHq+toEXFL#J!9QIg#0)}3;=PTZZBh1^0hL~g6OTrA_f9`PES^F zX}0%-!Fm{WRwkczu1ImGnH2hyd+FEahNJhSd7JPjag(~sxy)XvW1DX@VSSFq$e~~FJ6=O)n9pXMK zeLIdFCj$h;g8r5mp;KD$r62%iz{lDSQJfEw8g>To2`MY5Uh(e4X}P?Z=wp+PM<3R) z(=lhDd8!)rQ(Wo*Vo0dURzof_RIi6=Fuv&MVNycygkR%&HSO{uCxTcp3Rhh~0+*%i zFaQN6#Z57bkb9|iQjJ~a#>s6Qv5euzqv$E9Y@QKcAS$8epzFSR18#>vrV=9*yd115 zyayX4d1Ay-RzyutrZ5#|WziOAqu$)pkdPmSK`5D8`u+9ovN4b2af8BL`wY#Zh@;n`tGUB+Xf^}OplFHY`y zXzI#_M7QaCWpa1$3FtroOx7VsaXsQ-h+&n^3m^ah04$mYYl4T5{S)4-7O;|l4uj?n!hwN(Ge7_# zS>4uj5CE-~2t(%&EqZ+rFcglqMOvMsKv_I#w0>AZ05%w&Is#!0Xia7XKFZ<{(+CAM zFe;oLC;$|*4P7wij;cwQB7gu8B2mChK|}$F0sla482OXNoFUi9XT=6o1R4!y=afvR ze96bS0@K|{qzsb~Fn9`vYuPEFhSdfeE6U-BAH_9xjgvDcW?U#l5)u#q3G4#jVZZV%A0ptJxMvQ#P<4vMtO{n&RC+KPkSXM=1 z3pfJ8EDc@MD+OP;DPR#sf*eL-Clt4EcrTB(Jg~K12PVpP&4KS*8~^|UgMjU|9dkaV z-^J#&p_l*w00MXb04KdT1_CKIB*x!cIm6A^GkRU1b~y&;mBN?dK;#3wxEM4}Nzr{Y z>5A-eU_2@OU9zA94kQ_5bM6PNmvj+y29D;eZ~%7Oa(;EP^uPcB5R~@1>xzzr@CpCeE?*xBmwkb#UJxQRyAnC#?^OYvJ z)Ct?<-QUXi2Q&PS1CLQhL{o87ZqcEB+207Gy{n*VIyN1ysSIF~hmj!D#ufPrV+1#v zzUb*)#8HPoOY&SFTrjCVo%L!g;VjIs^A}UlBv2arQ1Ly*fg>OIr00003K(i(hElz}b`X=hgIKTh^0000000000000001Bz+%TjdE^ zMb33(EMKfIuU++53H7jnz+NKFwPUQ{&efJ93X@>O0K|qR;>G(3xc0Z#cnMYFEJYdQz&`T^lB(>`D(pPyqh>784+#jPFpU~F#>JHQWw2Zm{eSLBo<#0!`8Pl*ES;%}ls7rRd1m6Z*^ zy(Yre*c>rQo{bQqyEG+NkuqTbRKt*QH=wA3u`e1D7YSg1XqRNJ(r)GlP3b0zFjlpM z&I|XW$j74lgYNVH2e`vNCA=!)O@|Xdnqslo!Q699v7XP>prQE>D(GMN1NYA82-a2= zNtTRJz#e$bRk**E-UfS5J8P?*?dh>?n)uxZtMxgW%5y>nhscL$R1>B70OTD&gTgVT zn_y5ArzO(;R|nTD2(oD+$@Lf+PqY3DRttGncS#D(HyB{oU<{-~5_p;5ktxEkh4~i9 zTBYhEg%I7XE4mY^o(Rhyp)|>W%MZb5k(>7EEWMK^LuZi#*c>fi?M1H(F@tij|F)My zclUHsSL9$fD$uNJAG2>tF(H}Z#jP*8lxtc`ZA@hm;Yyz{Tw6t!){(ajJYSMkm^fVB zt^=$3GV*MP7al28CD=F&wj6`&1Qz{a-XqaLYhbqdXayMZxTd1)fmHZ3tPHjW$GFV)350_5(M#yMFxwEDV@ zMzJI%L?yTE7`WA|qe2N&#^3$=&34SLh0HRwm#G6O%t$HUoQ;GL-?#`tXP_`}I}(08 zczbGpl};Yy=Z)dxgVf6vIAzVTin@>M-l7-kj&jFXoS0MlyUDR+vt&{b8yG}-?8fnw zZ8NUcrBJ!Hy}Z?eB(1!%p!-5Tux@rWU|O_JM5ydb!tEx=aD4*%ecCjStwbiwr-DkE zY1Y+|80%zpYcccd_;4n#Uuv4{&Y5H>&eZ_{e=6BjWm2wHK^ipzui=1oE1v?>l{?Ut ztiV1&s5c}~-pD7+2t94O7$mm9$Nc7ZWR3#R-)E`GtN<3eG&^I%1=aPg|LtCa7pI(Y90H%drm!s#;R>}`rWNxz7W1$mZQnrL-{fyQ?CVK7YJhC>@Eni%5z#X zT4;UdX5M`JT`;3A;b;d7zT|xLElm#6wij0~h_A1`%sMjovB``Gzgm@Jym3-qFDygi zj6OH*;_R++Oyov%>L82R!&=6;i}fwm6O61uhm$sgwG>R&c|8QSRrK37x(9>-p2=Zqm{f-#2|H9` z4mD{8wwo*+iXe1+ThzJq7f9UKOI6x1j@q;iEuCT{`h|Y-Tyq&e5qwF}>#oSt^>oaf zhkQ42L5@HaI)0+DlEjMrkF*gTO~;UKXUejsk%fk;gfIwv^Z|2tOGl#KPib!lY&(q$hMQ;(WHLMA8ViHaBjqdOSDkry*! zU&|ifNSSs2uACF7gr7@vM)aDvl(?DUaQG($@+d$p=rWynXyGplHw$35Y=61CwNqLq zO0jE3D&qxN21p}i+C&i_fP4timT8$yxj=4QINSyvNQn!lc5oIcKhzU*y!hvny#Tu> zr7w3v2D*p&Yp(?(j#A{%1soFHBpLVxDYO7leDL`Y5)OHK?TEE^wvlz zV+M5dF2ax*grOBf!LD$$Prj>W8gZYv7f_t|n+Lr2g8qq!g;9rkz`J@BE$7v{*A1(#|`+Ic4ol-SlOWV=y;E zrkPs|E7{39C$BJ=-t~-tH;90{ObpE_kf{kW0rU!@ojL~PQsv~`v~huWx^l7EATGF| z@}d}{_Pd<+^Xw03L?C`cG)*&7V-?_TXl-XbPa(!5GD_&y^aYe@4~M!YkvM(urWC4~ z3XHb}Ro@@`PHrmP1NZC|1xv7E68?|DnhYK1u1uUaJ!-@r`7*f-tt#_DHX^hlHyfrB zWO1;WI23<$C|3_ZG@og_3YtDEJ3mx%{iL{_dpnJakgcX6rvYCp%(88ySzhn4 zOW>AuSjM-g37fxxZJo`VvJizKM`O|8Bv16-*-~@05r6xpG>7L3?1q7#f-p;eih4VV zqAct&nVrki-mQVK9`JsLZjgDgkir6F)^Xz?=eiJd1W4d&^Q?YcZJQH1r)P&KU~0L} zn-uEkQ3CIPCyopXA>i|AZ*1e)w~S-~a&NE88m1taSzRg(Ac2nItHq3h(rKb@u6tz1 zNwK{GmW#C;SLz*izEV?K5vEeKPyC}#xV)?M?5fu7;%OWC`2LHnKNoG~*c)}R@Jk+< z$CfqdP3T~W_%x7pJ;p4~2|{MX+cT`M)*mz#`94j<(AU1tdAkVB(@ zT(@{u49iXci5mdXa0BHcl!Zbqb6 zgqiZND*Yu+^BJnRY*4w-l&*9LmH$Fx#!AWH5oWe;>_A%7p#2|oEp;^S_^+P1@B8hD zD{M?Bi}Wba*rj$0p{F32#lLloe%eRVI(zf;|CI*A*SfZ-gOhF@$YsQ02A+;L zowI13W_uo##T$(G%NPj&7a6%+?^%V+4{fpuGcUg6Tc!xuG5kjOL>e=sJqVP1kvF>j z+f0%XnnXO8&yOLV(q8>QSys!3I=mm7_@gMO>U>=-CFSY#@mBe1X=@KOjC^-^c5l5y zCB0+6;1ALzv#`R59mf%O3&ICsxa7MHM?AhVM+e>#wW1$ifq-ji|+okZWjK>@a?5L)N@hVczxo|j`4U#{Y zIUW&qI0jK2s5)Rt83G@GtQ8Zm6zws~yO&~0LUXs0AHgre38*6$oGh;+`%&IBaGyMe0@7p@b9xl zLb`Ig0*%X7Sg3gdb3SpHT;FdQ3v|9Hw+$Zkbi*4xY+z@DvCP1~n6><17R4Tb4L1xR z98lzM!PRi2YGzg|{9a<|1Z*pq)j`n|LB7^69UvkHm9KjdVop`P*1$!V7wSu$#aJLa zCMcz3Ox^PzPO&)aA=_@}^enoyC%%FC2@Fv$g%*Zf+YhYd>s~wW-vxlkh(R7p%!Icr;{@LZ?zdPzwD8 zLtA+$Xrxz{CDt?ydwUA&pY*;Rl>qa^Y_h{8c+VA)a)hu1Tvd?xwQ;3tE7{1rrq|9h zTn}A|1nHcDXLgtj`4AE7WXn2qN1JlKv$+^s*vEu9B82DwJsHmoCq_`<0U(Z*4}o8t z#>i@LD#G&oeS3%!4^*fElt;857mi4576N{|pePE!Z)i!1eP5@Vr34iepAMGH!=}!< zNq-+Yib5{}HggBg$T#t2#QJFE-DOjZ3MkXQs2!tS8ElV@q!KA4^enYRhCNi)U?LC^B zBEtvZZ)a>_tSqFR(wT51M@6 z+PaH>wrD9oob|-3l6n+jL9Zan4Rz z3+x*(IOqdKBM(XFCF{(Fq0A_0f7nd_~irk7SKv)SPbB3uVxGFf%mj z(bFKh6e!^B>W>w{T=YQ2iu$3`ElI=OikKxedSjbPP3nzev#+4|FLp%DJ6uK9a56YK z$}!6zUX4s$R$8(X{s$;lw0B0j73IX@f@lg`g$KkVgDpAx&MxJVt>2~ZkYSkZ8m93b zQ#KnD{y7n9%5fGw)DIe)ItEr>Np%>#&kZK;X+@1GF`n+VlS4u60kff|)Q>6|?Zq>D zibOry15`u-cxn&ipv8}NWm;11#>QrE(ep*7XgYx#WXv@qRBQ0Ig(&eCF%$uuKt4nDcXoo z_JU~a#C3^2`wo5_81xlG*ulpf!rX}IA@51u9;Q~^vyPPh?{**7e_WfYCD`+@2PZ%E zDd-&}%|z7INl3y{cHYbVdTv)EPW7g{t!9C=U@A$&0G}0LsD+@~#FZ%;FRB`zf^X zT#zOZUnJN*q^-_S!8Zw@Ye}B$zf-672bn$e0$BHY()`;}e#E4X_Y)+gmf*k-1(J1c-cH$?CRIgk?l&$Ge#D|ei` z2v9^D7{oYWg^TW1P>~>^CKpJ%ZYb@-Nc(A6R7zu9G4$4WB9z%qCwL3C5P#xt>1Qj% zj=*hC=h#ds!mx?n7-?S4^9FVm?+VLn#V#DIm(mpASd7A{M*rAkqCZzq)TfoH@2;#L z|2O_Cri$IpaM@tL7j^^M1Ry!2uO{V>zFZIq@D^z-DihlJ9(CDPaJs4U)eEju8tC8@ zg33s%%3#&c&BuJX{FKOv1I$6Zhp5|#1N8j?`RSUQ5ym#f&j)}>**ID_jd>&YY~hg4 zFjtSOQ25ES5Ft=NJ-f`Ai@=Cj$2yr$+5R4J0rj*|<86Fp{{Kf&dG`By_1B3I4xW zdCO|wXgpAdIJ*=sVlH{G^5?{WevXPs0kce1JU)8X+P}wRcU~w<*@$^iFN!1t5D6%R zJB#h?AA3-Zu#m8zg4j0z9h*TcGO#4SP5(V|yUo0GM}G0%m*DXRxGjK4wJ*7&?yqo@nLjl`Gl}k;%)ZY!g8a&@mLcUWec3G z&Ouf~F}22#$FjaaXH}HkH(@WgiL)B86XfxQPT z03Fms@2@*-xD`^%`U%kMA=WJjTD6s!@D9Q2#qm#JPT9_=rzhQ%SU9=cs&`7>1F4>1 zAn;bhFnd19i*ws|G*A}<%poYGiwY@kdIOkap0(3nr5vVVoJ*nKf+9l z?mQH;dviGPV-_PJDSsZ6FNb1Sr7gkFAn?8eAbPNN0;2hBC0!pGh2fYRC}=JWrfroE z)zh*4DZsq)M$h+X)9iU?pNoqOd+mKf`=cyP{YHj1lZ?9e%%fzTyY}P$^o{gB&Jj8O zi;!~DgP*z?*PEY7Aj6O%e^b1v;>~=fyls>RCK!eM-?!L|ef&xiPs8hE4i$XtG=bA~ zi9s2HPNv%ADAkn_o5qHeFu?!iulU4|`Q_W*Wwhk^Z>DsuDzxy={9Gj{z!o`RpArcB zbk#Z;4BvwJU+p-`n(uh|-YyVo}vNs$3 zp?o=ct&l<7s#N0z&YN8jx0$sxb$9#9n^`@4IpH9N!=V^2jPub+p&?MfJp81Ksr!_k zz_MpllAtl$3e;h%H+eQXv z<;44@znIIK-KpnH$RtRYD{liaD`^%WztBW+pmOS0EYCK|BsNjqJo2xWCwGR-ka)C7 zw-JOprLVMDFTcD|T3SG{ds^3%HvPI3CF_{gB=T;acZ`1h62GV9ty=E^+Fhsw>L*8P z4+E7qUaZ7=7t8k(t@uf0>5EYoguJoaIq0d71s9dKsPCY90-^F4En(I`>ziIQJgF16 zDbrwPCTY>Iu)=E0fxLk~iP?VyYKDiUV+|g-v$m|2*SN@p4vHeO6h5Ho1dvFz;;`KO zW5en(TyJ#z=gIc;vT8%h;o33iy}4wxY5p*)Ch-Kr9?O`|&RVWkttEtkj6jr5o$}bI zVb&hs-2QQEmG14ns}r+}?-P%PWd$1Yk|x_p<%Qe+mh2gnO1@DIIwUmJI?YM1-JrQ| z;mBF#w+S@5?!t<((em9kR`++ar!H5yxUt9zmV*VoBKcKDQ&8H+U(-3vd~Q*mt<@En z)yC>zypFufGLlj*)#DA4z$p`3W|;d*Z^A}+|H(ZJmTKN1-xzLWcn^(vptd)CKm<{x z*K$U)Tj$IFHlDSiUg-gQiJXxvV2Xx<1(KMgj9{52%1PKY4p&Vkvz4FIG|L`&5KsCD zOYOpK##@V$6qZROlg1w=9f>FLw_a}|Zk!6ocbwQ=7jyKSiixZ5I5-* zbOvakCNI`xVO5{>Ly?GnxqAvruOImn6Ys;eYNopns!xnXGJI17Ve}%%zlu0h_AS4~ zZJ}|LBM}(O{>(=sG>+}!SNZ|-xZ{;<*2K~)sVb)xZb6QoP!CHr)NzlN_W|N4B4q-B zxJxUK5xspi``}lbr4Yhd66XD!bf_%;|4Gi9ifch4j=aOP);G{HU64mDNvszqm$MfH zmyYZPu64dUK*!0T0t;fb^g;w>qNiwiP|UD3-(PROPf~?MF1BwDW2f`gIb1w=q*Ht< z8cO?~+LlA{HPZM(DJ!Ou~FgZ9jYLybI6X^Wg;rCGiU(i;31f!D;a=pm6}5eP5E z@IQ=A>z}pquK=^0fPjlpqecV*@fE}c$}ts|GU_OtLfRKi(eU!CjGoQ_;>w{e{)9%R zN*weQjt(R3&AWsbsye4OpdB#cs3*cEkWzp$5z{B|=PPoHhc`i?aSVM$X^MW31{b-7*z$f}c~ z%pszp;Y29Kbishw$rP@YdN$`h6XWsPC5qkQ#LRi?NLgC>TjC8Y0gAT#*45K%REw(l zn!LViK_U)SX}MFj10>$$d)I+*`x=OgM48i_YuiX{?EH$(%0k0hjj{)$t2|)@?^)&H zMyC5gCR!ykg0H-)vGB+a`FCE7F3D3dm(`JM*AHb+<75lZDz>P^?IWQh8#PA^B_PA# z8Qo(eB>FvTfJ_vwus$MSXy$vO3^Ds8D(EfCTX85%FVvPQkm#Ld3v%BE_l}vmY2w00 z(RlE-gw45rJm9;-5aX~nT;j?W1}X$6JLVW zB%q7R%}W|kYHa(^iq&{T+(?U^0DAG2h=T?2-@BdjrfP?51)0wbX2iqCt<>p2=ugFJ zEN2T442MxEF~=P|)lOpt$k<^$&+9{IGIT;Kw>pQ7Z*+ezkIWpR;F4CN5SB>#605AFgL6Sg%GsdhGs^5=-?8% zQi~4ORS#n*U+TE>9__E2xD zp2>&{iPQ+#+vYOnVA1!F@fl2f5MO~QareDa>CcEK6 zSbDWpzW5kY30B+n^M&n!4Qk#>*LtdHP5sKlCIK}~j zXQVo6S6>d4kz`H&?l;{RLB5>qHrQ5G$2p7Vr8805hqx(=^?T?a>^9)hP8-)XhnI^* zH(Tbk$QOp1hwVGF*FwWQ;*~+g35AfYS7aTh;_^JS#EYU3ve~gEC(fQKs)}zWH9@*z zQLQW({l;BaS4Ee!1(cGDke;y!_$&?97Mbt5ld<@J*Lvfjnt>jjv6NscL4PK_O`Y|C zH7&{8DGH;roESI1fPgQ3N0IO1;f9R^h{KcXI6{ov^GB%W5ay<ygm1{!pUwjP-FL=SwVDB3gz|DNI%}xE-2Bxnv5ztXzjmxP`vK?7-OYDVf zx6;j55~!kZv3*L5K9ZG|o|u%@7N_aS_ZZymHxX{1}Zfb?Ms6~jKZgO6lScno43M?F0^T#$bMma7ms)BAey%rFav5aoLoh( zH;R+proe`WVGMlXe2$2?NGToy2%Q3pYpZjm<&Kd;nb_fbsj~Wpkik00!*b2ldK*uP zow6iwi`tlORGs<4Y}!1fp!WBDtHI54=IsE09wNqWiDdw1>C+7%AU?T(oF5pqu?w`wM&(Lu*AX;83_|icB z+yy6!6Nb<;R^OGHV1mCpoKq9*(Y0|wHDj{2|JK%@b@ zGq%W>1xQG43r7-GCANUrjC$N0?cjx#3w-?3QSzqh`AdFO*eDz;kdc@$ld!z1RfnFc zw;|4&ynHrWkUrI&f`q|>9zk+Bw05If#C1JOfL2$zK_uUQm1)I0K-YU@1}Imh8yY7w zo|ZQzT#~Mt*aLIrDd@a|2W*}UJiZJF#m#i#V?0%y_*+P45(Grkxqkx)xa^vtd6pbHs0@eTic*Sm~@ zf)%YwV(%6RO(|b^?rkxFIzz58u_+_lV_NJmN|n3EeXM|%p_tJwd!|$g+mScBZU3+3 zv4lJ44G=@1mDt=|keoQ5W8FFq!NYv={d|(iUUP0;bMz<%YfT_S=$axt!%wl=x_$Ca z*Ly99YN|4&G+HAFG6LvF!ZkeeEKdCll_HLy{_riv?6&KBsWG^)SJQ9cPD1yXSTyBQ z%VpX=6+XJgll?Sm{cS6(eK$eiOkt@xRs_9pYM9n{wd@*MVX=ZmBR)v%hE2XkSBW~* zQn#gEa;WpZPsN4~$56WH(jq*0Obg_wh9Q(Os{z?=8Aq0>ynLrYF*Sf*`D_w9dg4G zfkTsrK~%=0V8OEP$R~jI|7=AhghVGe&heBSUKcv4!j;rKDB`u(bPdBF4w*9? zwGyBylRf6V3v-4c=wlM3zzrA!$7|pgI7#`eJWCiVvy+;yQ=h6z4Zx_!o7{CIXjx{u z@Eqa>)EK?7is8fYJM4$cU}3_)Ik7g@?@Wb#uq}RcXw^N8WCoobfe702L7WTcYf)ty zbHb$TFKaaTehIneAK~uUxo@IYksFF1K7oFe3)yWladbFGT!<74FxGK5tmK1x6`_eM z0Wb?<$skGX1Zie{=MaiD`1bm_EOESO>rji??fhx&SBnUc{xFzf z-X}`MiOPu71jel`T&#ni=#C8(Z1T>!ri0ZSrx5>XOzVta*p~$(93C+wJ|5E_1;IGtDWYm1d`*52}{$$rW9N5!k-+ z^`k-RJLBTqpO1ZRFuR38hSOQa24&XMKI&ySwR;1(`J;8>X?zCA%C^QQjsL!>eqoX!j;5W?TY(p-(h)9;hB|%=`T8b9`sgt`2SFLYuzM#_irLqK-X$P zp__0%Nq6Uikf+W8ubT&VQ<+6&kI^uhswICLq`kq)2cGWCL9@lsv36EGb8T&SLrW-8DO z(DN;Ua!VPAFqCFbc7g=JX5+e9gYrwUym2Z+akrLk5rh+;=R`8@-ZXYoTp>u$+<;)) z1*HjBngI*r{dbNq{F~iUC3~_UmqkE0?HkOiJ1Ra>Dl={JN2OhtnR4O{i?yJ7?q%a( za9e`aB(-jYyxz}o-?BCWjjUmdF7})4#W=BCRI&B*U#V4Hpfk(ePQ0nvnVcGJ=F6;O z;UT;`)_F&FG#p7D%}OC(xh|STNgKiGyOnH-Sb`05dcnOCo1lKl^L%lT_oGFF%L0hc zN**6>N@OKpntG7&P6jEjdWQ*}W=S^^$3j*C$p!eDT1(Ci5&-h=C5r7k5e7iF+6pAv z-O`nN<14&JWcvOt<6w7GUkRWPpr462<8=$jH@fS+4N@vFSL2Wp{~WQ+!2b=mOajQU zws74&O+924eBBQqQK{ZPQe7>Ua@LdZu*0AhkZ~x^=@Iy-U{gMc8cx!s^`up`c~uK= zkjmXMmThLc{l3@H7&h6y^cUh(AsHe*_qp@iRWnNT7Zd|+u;CPB=vT^4NX;jSnSC%Sn^>t zjj-Z7mgvhHnI#}1ggk+2I|N)Z&8tT%{DmEvu+DrvG?_gYREtWREl1*Nnk4wM8`6D`NqtFdpV!_sF*FlpkvG^9e}5 zd685sZP?U9m{yCvD!bbawDojN={Xi{eBFOzY^vQ1@#mj0vHjDo+@@yHZkoqum`Ox+ zN9WZ)*~*_5QYZ1(w`tT*xoi(irPd*lX1y11CRxgiIJ6!;jOAGeNjw|~WtM~8z6WTJ z+x#-}tFO|0JyxA07AwLQ_g-@*tef>xRx7=fx&O7U`n;GWl)n{&(q*&9VPzgb{GSX! z42SAYEAIjWmhWs^K@D`WVHUaV$65!7oGX_xE+aBlkZ?G>r(=VAewz&P4mc+|EbXyY zcml~&DyUc-*_MtYQip&`dSg>x?MKZ8;*j){#QUXj8;6-SG6S+hD41asWcpYy;R$1H z{8bo}7{n%`^B~lsa9?&n>@wjKPgGMBea_k}gVt=!hPB-uYUz?yK$|r)?xU6NHBaC? zO&rSaN(hUd0M&u(( zJqYPN1qbXZvG!m@lKQ~$wFFJw_Gi2|Z-JzkXuf;k_}+!seNpuyFsw4~HyuKZe&f)z zwoPULCHmkQTLTDR1@}l>J(9~Czl8rsfvIYjW@}vTVvA5)2T-57oA}6ABNWUcdmAv2 zRrWnkhD^Co!4RZUe#Cw_Lj*dcTArf?2ZJ+xvQZ**oe}VAOubGwz>%gGU^iNxz(}Ss zW0YI)EZ`fV?`aop>+-Ee^&B&(p0y-381=#HKHc@C(qBmPM4xO?s~lCQ)4z! z;5(#Smc{yS(|@xPVxP%U>8RRuyNeFT=egr?60yx^mJQ#MQR?Ka*l%8pIDD4JvOlK}f-G??rs$v;z3iyF&+7MO4VDViQo!2pPGAcM>;l zsmvF}v&IjYvB@_hjo-BEPwgws{u!|>s8OSg)7R|_alNaQ%_u)^f8IqywF}Ywx1tGD zL*`+(;K-Cwo7MA<(1ucTu}KcixIhPxHKsX>1MQF>M5mtp=piQ z{If)e#C89Ie{fq>Tk@P-RdowYJLAFOgu*ow!Z@3{K#ylwvqD26I zX5!(R^q?DhPZ#lVSR?XTC&S+zaC>VCU-X9wJk43;X~WZK?qfB_R& zXHShgVaTEP3wO#DK*Z6H@>W#oaaRa{w+hKltl`b|tyv z1eY8B1wDg`)3c2wZoF z;ww|R8^NPhZ?zOtPb~I^>{x?YHgWF##@IvzItt&z0x0wC90b5toiFhe7q%*b%&A9S zC^rp-B%&8>BI+GJ&baRe?Q*S*^K)n6RrBh9S~q3~h3=<~?exG!Q%X4BUM~m0C;8<{ zWJprqUO~+>x5uja6T}@}Q)rh(M*GP9Wd2MFvN>GIq-#imb>^ts)pz||f$_R%`pRl9 zv{0!3VR`Kq`}w2i7CXN8gY>`D2)-YRtJ1%Hm_iL841mm9?K6V z#ZQarW-{(rI0g!0i6k{93s>?ze$PSBWVr{(k^77v)tim^^h|R(N_OjRI1!#>)81H! zD+=@2JY=N}00tqYz<|Z#{RkAoX9Zf-tX0&hdi0$}-{Q zZ(2cJbg)RE`pClL{uet?`HRMiFrty56Hcz#>CnFm8pvg(TTPsU0VbT0KKfbH{A=Ah z`@{tL0f=xNpQ;Kr4?X z+$DKy@>1?AhdKR#s!gI%F1=}^7N6i;tjsnco#T|%6|`7oMJr0fUPg}jxG5!xUU4M) zd_?I)Vjc+sr;Ga53a|Z=wgF~64n)g>>=KDJf49|Mu+9=sK}4vn?ljWtpRz~Zvedk< zO1{)|r#Bz*+%Y#$I}#J=#2oR9ULg16oS0D7s5nadGf7N>&F{1w8H=QlBc#U|WT_)U zU`gQV)o14z2(xc9*{i36!CyL}wT7M<+a?LsP&*BcNkDPIP0e*zD)}>v@nCAT#*qv(K7olU+*&IS=QJ; zW0tE`dhWBOpC2V89~bX~s%dNyr9gaxi2tkOg#1Yv~?~z_E#T02~NS{0YQ~ zhn|Yp4M}P2q_&C^#RA1lN8%?dVaS)9MoT65ss_C-^ljqVMJp``@YOxH0 ziWviieS)-oDZ@N%)(AjIK_a#q22(7ldDe73)Oo`CqSPo>uyrSmT)M>+CO^XzRv#Ln zH?UjEm}sVq9}~Jjgs5f1c?yg~YCV%?)r(0k+$cLQ1=YqgT|R5s`89H?aaK*7q<0`W zz@k_i8*~AOrXGM`CPu& z;csZ&A#3B)v_5u8w(FLXQz$g#y|Q520%jLY^{v_>uel8E1{t-CX*+Ba4KUvWTAhZ5 z2b*qNncsiOM)D~C{HQIJsj7{qDm(J+D>^(My490-*AJ()-QpB0MY8t$JAUfllIzKtO z(GywB_MctZz7A_JbwC3)%9ukg~g0CN22*O1lnZ<~!H{YX&T;d#lib zk5As?<4I);V3b*oB?}I%=QZLkt-YFDp1rp*M$!}}cjP|P&$WZurub~?Su*TaBa)9$hdZXYxKHw3I_-fi}Jx!V0p)w?X&0b3N6X!9UHR&VB19kbvu1L%<$-z|7dVa66!kheM2~!2-ux7P}$`rR# zzG2KE7$ZQ6koR3$kVAB3?RJLKbNp{yX~2cs{tvr~z|O|@J6DLCj%G;Wv69R~Sb?~a zTCa`1z^+SKsvyq8UefQGoYop!g#jme5=;~Fij6TYb{B$!7>X4fbH;?EO8{xL4SxmY zpVG;f68-BzoC9*ChN=q+4#CWSS6&`LUs51)^0D8XaPr-uVC<0=sL1f5lUN4& znPV&7;2!RV&0bzgFduwjTultIzicv^LWKiKKjL1v*l2@09ysVP@(IC{19EgA3iS)* z{Rl_gZK7>^_zcjs>f{!smSiRF$iOgqU_PV`fB7_?n!asH2wm;6}Z}Ik=C)8+;3UivFyLo_vq=Vvzg?p z`3jK=^J>OXmk*@&MrB92UjR5>(@p~c+NtYtQoZ)R7~oINSRD~+sM4^0X8)byT2Zm1 zU=0R)T~ojN7w*%blz*vPshx(OMp_5Ji91fx)YUmW0`vyh%CO)^@8Mt%AoeRq@S5Yu z2U~0WY$r#Ng#D}qFTcqtJ>k^lzy<6&T;86lQLdgl#G}wzv4})g6HL&w{CyRkbO^SB zU<%F+--L&7KG`XphP(?2w?#%4e5I5$!L2>fkduL3_)ds(8FHnK#_ZMq4qU0?1NMj) zXl*6bo#(|gUqCV9Q;$D8-^P0h8tU&j#uiC9%*lE>RPf^(a?kk&zh0!tNwSzk(&I2| zxcPVNs;c~UrE@T`-`{6O8CBBeUm3|wFz2Tl@l-KwNk7kv=s4wKnoXKfN2sve(zXlW zJVCK$!pvECI2^1S@CW}PgFUCkl6J4{qKN-rCx3%A@TmUZY-U{kt8AuK*-;}#S{eF# zcP|iHr3JA$YPO$Fvm3?vr}z>XWYMS|LC-RicZSmnM>;8yhg~hA5C^RFmG5Qt==6^X ze}~%~H`lxeh3ywKumC3lu^yeGIzJ`B;DjPC;CdE(ffM$FW}cwIzFTpePGK&cvqaeT zF3d_%&o8hljE{P~%PvHl z|1ko?eUKXDUVQD(ua#ea!gB~#S5mZU^=2oziTN_qsHreTXXq{Hw54RFJ!MkMEUJ)$G3@~g^%WYSzDj)b_g zuI+(;?KzZ{C}nZl;yg`y?$2mOP(2=>Df~@d`LM-VTi=nC zvhS2R&eVKtgmQ5jxtktk7}`VBByC(&PAW75<@2vCrS?k}03;#^LV2t6tWqcgMCetj zx1DLZj+^3r74dnuz}mmggXUo&xL_;gVTG6!F`U-Rio|~nlMk{Sdcdc=HHvr=i2%gI z(uk;+OkS$0E5^S;q2GrK>_K;cATJtUqBB0ofiH`+oF^9-f+c`C>ZJC6eOR-h3%5!Q zy~43%XWO89#eu13E5FB8H9hQZFLRr)-5zkkWf+Qj`raRq5+p*r%?%83T%2i_&&-p1 zR%7mE(mQRc>Nu`KXw}j$HGs-7UqeEP^s+;-1KAiQKxQ-jTchxUuNUaw;i@}=%qs6{ zDXHBO|A`C?rLZ9l;G87BU5%j%$ebq41N3WH$HfWY0{imE>gSNo1Qe@Ce>4Ra-}rUd zZCm)EWFg9Kp$~a=d?%@L7^GBVCoSu%A%NAugv#J2KaJ0(R*7y-+ zwMzqJGSz|K0mGWzS*2iou@hb}$y4pTrMb=i5L=L*oVExq)7cLmJon@~s} zxb=(rq2pO)=5WNLn}l>I6Gw0#I1^GzG=O#W<*-~Ho9`DxFIz;AB(!*hRhAe69N+8j z3FbW*zAjMLGajw*>bD`a@TzJLP}|%V+AjUK1N1eVAfZp&T(4X3hvLFfX*-`V`IjsW+)i z5^c_}J3=PkbDJJ#BOMxq3cg8;q3qp`;>aJ=J>Lf;+<3-z?&1rvdU|BJcj+&0YisU? zEy7}j%3^uXYG|7O|1fqoroEC&?RUz$d98R*3S-i%?PaorbRBLL#&L5x_*g-Ou0$YG zkmAZi3%)hxN+9c5xJ>MAfWC@m^@-L)6!Le!rYL^cI7n5+%?KWzQXCsftC31r&b~0Y z*-)HhKLgbxYUMTlH}VbN7U?eQX}CTnUb!MMuGp&D{|@FY(RFzdKDnwr;R5vdDY+ZP zsbs3uT5pQd(II9Z41XBF<68la$KXsR!!6D_I;x%yj^VoVBlnC`6>D%R9z>6!h3MI) zuM~%3me?H0u&Ec>ha&r_DPp+Mj+7zCCCRPn6{-m`|j#p_#Sk5}iCFt|=oNshWn z)6V1N#uI&Q?~#^y0fRFh_Djj*Lv6ibCQ3)QsI8R8PamJXSicvnsXMR@dSW0VY79*b z>CKct57as+64666y0P}<2#(oxoyuVFWInU^V*JlSDI~{9we3D#jC>EkC@`EG8+uBF z({_OMpHy^(ML=%W_lvaDPJ8A!7q(kg@`VvGcQ(Y90dR z($$*$ImJEWvS_R-_6IvxGvs8WwYu|gzEX7ZwllLe?BGJ%N2z9m;;(j*vTBHV!U!#& zLDNjQ=5CN0>c;gpKg1g7v090z-4PSQ(em9Hg*;hk$JJ?LI_U82s5XMkHNPtvLeN@5 zpJ7S9Bjb0=syx$vGG7MRe>%@1D89QwOmD)o4q(txiMSf?;?QP_hpdEyMu39kL=Dgw2f=!9DsM4(gqlYckW4P zO}1o_Jn?sMp_i%qQmbfw0FKN&oEH|bFh0I-zpLDWbr`vk#Z1Aad&Dk3mGkG2hz#rD zbGf6HSFF{7A(=46!fu>i9cFDP{}R}0vei*zfL=ik{YF0rT9YP0d(F^$WS~7DJHcL` zRAZs#+!6RcY^Iw#nxI76Pl9LBiy<4Hjhf^-O8MuJ^cu;f7zFSus>D-c?O9~Das-4) zFbjB2V(6Af`py}E*#AO3XU<1e>p55nGc^nr$6n}ZYd{7f@ft-v0SH4JFgw=9fHnko zG(-a;@2TtKBy=Lk9$zc=(qVPS%cE=?!KmN||Brhvv6%XJ6w<6mbWj_$1IW4MKU$ZB zgzo|xnnSxwcAXyl7n~3;!YpyvK|XT06znQ_7_9x64rCF~w#&g?$*qyVHJx~O<^Ust zyNusqHl84D>MML9z}mSXZBp7^lu7D5@{rDeD#-lyDRJ^sQ!sbA-Z?nnaWk1 zDC}M_%`sWR%Z%_gLCS^6nZfMbT5NTlsyjHB6rC?Fj_ME771+GySR zjxM5JGt~2kOJbk;1`*b|H6KvGWj3ricZk66*OxbJ=#W)95}T+qKe5-o7U4E`j|jg{ z(Qn<1e%0U%EK7c0IYLS|7Omi*8PR#4-KWta$b`4%n=aeDk*PO|ieY${FaX+h&#EfW zpH3ikHdP0^vE@1|pxnm1Sysj43=oiNYJ->=U7nK zJ9=(sv>`mifqULUQP1a<8c{&Gf3Xaf5ck+xxjzC~`s>53H$ zb+%U21Uu!`sXZYAaW)9>pqhHyj) z#yqF&-^2&mPR%4g!6J$IZ4n}=ZDacIBM2kGz++{Jq%G9+06jp$zq>5JxLN=|u?rkc zV1rAj@>4+)L+D{WzDPIDK-`&GvZ`TH#!n%}e_&&E=^arWEc8&lNa^Wd(@g@s!>%}t z%$O1u!DGdM(#)xm_xf0_ZM1^fxWF@A91!*{Mx6$K@m}F0rTReYGz8&$uH0jdU2YPP z*b=fcD!}Ws=EI`{_6pWs?p<4)k8MF`V`wbAFu_Nn?siP!94hTpD%}@3qSFNoMu?Tf zSjnWlY~#xE{NJy3d&ja4Q1-)D;fj>TTAH!Si(LDFHJhL|SxWt@+29;?ad-UdW@@*$ zNsXJo+_Ilo_BhZ7)zl|BMYrsZJmkT3Y{ixgjMZv6O4~$WN-V1%AG`8-F3w{t|5!Nn7h-etP-+n6+)I*rovtDWT*ZbVJ=wiu~H^3$I zmLBTWN4l6pbq!vG%6t>xa)+z0x97>$GTQO)5PJDN(sQO64YhNsRQlc23l3XyddImf zfeB9%by^ZdD#CSljyu#ssp@>UWNoe58rTY=tJM5|A3?+_ppUtSB-E|@TVxUVnN*hY z?93urm~iP8l=W05VOjh%{*YAm5BL9HSzSy`LShiW!m@4`=IhExs1@gZzxBDiCvb}( zRkD^K?X+;B7&^83!kRPPQqYkl2um}OCeQ6uY& zVbM!$OHk~SH+$iE<|xd>E@uO(;oeJ)Xjdl8B_n9ErR7jnw0&mF^)mT@=7vc41iS5A zPTYU}@ByS;(G*?XM0wdRgv6=rz?_(VS*)t8426uVk`fGlP!rGed$zgmYkucQN?^vw zj!6TzPTF@5+@}e|Tiy_S9E?-sr(iSM8GB?V3O7S-<5pkBH$;OzZ?8dS(*Pabb|}&C zy?-_%rm%#2uzEg2xr)ueW^J42AZ+!|x%Cxgz`!S+!;w@atF#|Ih1^j=NVUri$p5wE zkhC%6j>AKkPMVp}Cdw+Fd#Bn}1V-`eM==P??bhWx+4;<)t4#~(^O)YjW6s=xaarbi z$kg6QrdgJO!oS3`Lm<~(Sm`#EVHxE6xpFzk>#L%4G{9jTC)a{VhG#T zr%SuyN-3eZ)1(oO0a-64JVmoJrJ}$yChx`E!LA*RA<0!1Qgb9judHLGF(;>Aff4uk^ z90O!u6#&j9gd{}pLv)>BR#7Hy)e_OWt!_o*RV(DO;m`P>GM8@5a)Z-ZsyhJ`ULn-~ z4MoN~4SZyu8Gs2Q-Xa zML<*)aVQ+N6#lG89)LrRxjKww;4h+rGLbumwYIev&`a$ z{)9WB$`r_OHcNnN4=&nQGNMMr6kneH33qezO=MuLN5KIrGWP(*Pw?1c40}sV9oQoC zSYn!?tu=ce@i23i9tF;E3c&zg_u>ml(p?iZiMI8(Cb#h9-$jpnTLQlJ3q#WqWyp<1 zdC>qs4W7oea+{0F)O?53FK|uX5pVK?`z;lhrkm}$ABr$HqPEFUY{x(8>h5baQJn45 zlsJPa)sRdtaOEMPN3@DC7+OMU!7Didhx5(l=Br_c6MOe1z4Ew)kgbav4DaE=i66Qw z`KGO&89GyvIfrsWdb4GSJ^;vzNsSdfZv-zlGruO&Y}Ubn#6n7FV<)^g_!W3sW1h=%=%`^0!Gznkq+L@I%yA+s z2EjrqyiO0y#hq2>)vTNyf9(9{^Rmbu1qB)tFk6E)z8YrU3r~nY&)20r&ULh(m{g;5 z7d7aP0LFl(FWWM(rtj+@4p7eQiT)<$K~}r0)iCDVKB83&E<_1 zhR;r2wQ{Vgjxg+0eD_Gy73EgUpdAlV6W#hBBLN`(-o>r9@%i&~smN+w9IuP#!~(M3 zJGfQGZUVbfwV8&o}=u-$YYm}PWjQ$F$-X9+e(Qs0ZZy1Fa(gA8h7wHG4X-gtdpf4A zYNbrB0CkgXHF7rghq!bzNN&>O@R)^#-_tIy1&aiLB-8tp!)*zGRmQwl94?+=;r{Y# z8E~N+7w(J#5m4Nx=|@2Wt{G8I+qW3U_loe5Feab+mY{mRY^^C>vh3y)TTZO(vdeO| z0|^y2)5<$Q@UMwWqAYxl=1>-P+uI4s4QC^^8njR|Ud5TtmKI~NP>Fb-mdYk~)>avW zoaPLc`ICe()jM&Sl68~YIFwTsD7f}h$Ju>{#d6}O|l#q`GT@t0TwhJ)3vRu^jniCIQq{l zJOO-aiXqnDII6o!@XQhCXV2b$nUgiDi8eF*p$@fxD;dgy2(+=%c`AGxcfQ?5$b)G` zaj+siDH6UFx`#Xu^`VEfON+z!AT4vPA?W>R#}$=` z)FW1#6h0zC$Kh6E<%T_b4bp|vR}fu^#X=)XsPL(U@8r5rB-Wj zJprl5P^pqpM4n%V*Ch#hVTZuCl$@|;NDv3x!$Z-;-(b3ysGsq`!R7DPxN5qPUisWg zln&X~$zpGAiRVCXi&<4HM>X$C1;Stp?M70|tqhJ+kxJa4qjzd|6w z_Tgg~hOfIUMZ1Pd*rl!8JX2mNE4IAnV>`01Q`^b9O$W|z3s%p}L{RBToyj~#hGpQ} z0R`hl0*hx5cewT=%l~4W0bsDn#ZT&~I!w?E(ou-D#+as^#4nI_y+J32W(ox|iEZ?Y zGacTj6wYdKgp(oqVkF~(zw#ciuKzCxgZkaZSOexk)e0^K>rEdeD zG1fhEL~nxF6)|*AE?+uxCu{7F6AEd?{^}=}+E!^FG$QR0)AB9j26Li!D~r}N5Y}5JTZ7WySMFU16eYs0T3>m&HAlN|)$Fi+)vUNp z{_`}_N`zd!)uHVpO%}?~+DC2b^?@iBRYzqHb?yYoADX;~g8N0^4P`Q?O2QBb`^D}> z#v0qC;GZV>Xuq9=%)G#=DVyxfi<1DZuZi8P$9|C5P2rDInlNv}~G?GgH>&+#VaRBFvRYl`X{w`Y}Wmhbj>5m%m5y_Z3*&=mrAF zeC`h9<_tY{&_}$U5**f(I|iQw=fY}2?@GZiAwMv;?l62rjJ;0Bhk@PvXd-3wO)))*8kwt{Ma`m zn1SNQS?>mhL_8I)RJ>S9EYNYQ}zAU-*5|je$tsjD>9i4fTRct)A1jLZNcmQ`I`(~j52+k!= zmKQ449)ms#AH}o&US^ZgF+y1YRAlEV&L3cqmoYv?2!Qu|IB?H}@qTs@4z6eJhn_3K zxsS8G%mna3?JjebDBdrYf|tEYquJE~N$+(pE?%gXRNw8lyNe9M)wMl)Y4|7WcI5dx zEgN nn`5s+~Dub$b#$mCc;!q0GkxT_u`#E5OK?lU*DXilHRl;8%DkYN)#zuVSkc z%d1Y^42&Pw!ppRa_JvJc{Zr6G2_g!oLm(d(Nr&V-Z1P`9*y9`!wZC~wr#9?Px2YDe z$hrJ7%f+QwHt-PTfRHVCg=3B@72n5|>DcF>3oHM3`otiG{>j5Y`a&KpYHU@6%3kE{ zChf^KaVl;Agjgs8IAAYA@9dAv%|A|7Q_#Fzhh}gB3Q)D}k9y}0$k-xyI?YJ`@ONL! zC-71|GE(W;-WScE(ZN-aKp2C!D|=BIz!;#mV~LufgD%eI2M8?7J>o0ID(-5;GL8n3 zcFKixvD`uxDyU)tNeMx*^6Yp&lgs2}Mu1L+3e7>Evh}azE?|;iHS$vqoJm`7>n0K2 zA{!te*2{UXHjVV+>)oMSv0R39jc}5M0i-V=6>(nXbiQl3`C<;0ZCJztEj_?ETZ;V| zv=ME}UKnNHNc77LNc}sQG|Jp7hU?aQpqFL4OVHMDZIE%RN&nT7$)97S5aboCHJ0Ll zeNRBeUu-Zd(Y3!y()?fW05pXPh(WGYQA#{Wsw#PaWePod2hbTc6hm9lqYQd#t|;CR zQ8c2+sxVxe-i<3Z`O&F}olXI{iMsLFRX7Q*eBedh7SJJ2!F?1 z47m zSgkC4Z5+FjC`cgv!gRlQK@0Achly{z!GHNb1hdJt5QIu&wWMmuJ2~IYb@?u-ZobBv zt^B!tq`G~BCZm>3+Q5O$84SJMw4e>A#+pIAFmeFmeKX_X^#9i_My=)@g1)=4=H8OznCESl;;5N2D#y4gg++afCAId?IieNGmddO zyO1b$jK0qyM#{B|Dq#IEqM`9TKL9Oq8hHHs`*l*R_waT+WMyJ63S+binm!v`zyHFs zm+h{eLcX0aqMVA?1#>s2MdpRg-@=ORbpc#Vp7-gjqpX`h;A zhnF&9t3p2v$leqn$)C;6+=pfdTpmzbi{3Qk{6RyCuJt-V+fC&qV9nF#z_m8fe%|wo zAD44S=AkzeXs#+9YKmavAtE3e*94Gga~hY863d2l*~A#i0d!IB-?IEl zjweS+K-v{LzkB1js4|h?yR~tLB*xdq8!t@Cf8o&TA^y>!hguey=!qd6K7@_YF zBZ4+`5I2@S${UW3OKLT%E ztU^*CJX2yk8Me*C2`DE#W|*GM3El@gC3?$6DQjP?LNS5;A4LX=_CqZEGX^9`08F21 z9Z~*UyIFf3rIhGX@4QnIu4Q{l zSJ0oBx4kCq5|cHYCm-2fL`$_nl<7FO^M4(Ed0GI)M4aJ-aHDQK!(UhLlfSQvXiKg( zTD+Wr>8Iqu-BWlRxvP*9YD)$x9`3c+z!x0*+wqi&xe#zt?Lh2Jo4#GK&z^gM&|f8? z90yVM!e{T$eVs?*E59BaA1B1o4_^@Gb?gqHG&t!=o#7C<56L-%tPQ*i(a;~yLkZgg zsUIZaFd(`&2qci~r4%wNe4jZZy%uPx*}l8li=nm&hPL9xtTAw|c8t4NgP^QpTv6NK zt++dB921|Zp9yRK9SB~M-Tf&T@{^QR0H55w>P z$zM5kv{9UfN{V(Bj5q37sHKPaYT{IU&{d|{W%PY1+jpk%>yifeP}DVp zZIC(jq94}glk#@1Q#{_LY~~uSAJXfYyW{}!)~<#@u{bCeshSK(nPoc)R!YylAzN5N zlu|E}!qaSK7q>J!*cseL+RPV_XtV&Q2{;&R&<}<>t)2;XyeOkJT1czz1*`YKD4i{V zTSK6J^^A)v@~7ogj72)mf{uj)7>#JNH!Z*Q47p%@5rkdOaCI1m*qZKqZF$dSgj~2I zJ(G>iGaN>)`?pRubCq8|tqk!8LU2q+2uJblh(!~~T(mGbNhC9umEab ze_ir5rt}5~UstewxC=87RFg%0XX^w8Eqtn@w{owodAHA>xI#dH^mG*R44zD&xvyw= z7fMP?WN-!PwIzs-@TR&Cwg4R^RLE5`(6L4u9P)V*!FQf!mxGW@WuEz0L&GGHpy^o3 ztza-e144d+d*o9@S{6|TmBml{&L4Nh=-L^>GmMi!hq@vxAxlo&5gCJ+gn>usYAR`j z&eV}n(PdAOrT_1)!RM33`9Z9vYX`4~qry!hK~Xk0wF|mb9r6 zzF^0eYmJ_2(cPhDV@%zf?X6j^b(=0sik>6DdHf?36;JMmGc)zlL!~Gi)Iw-Z8JFT9 zJhtaaEGF}<(RIJ6C!V8sV&~?x&VCp^P%rfD8t}!{Jg0k}Zpgb3PC8%qlPQ)|kP>39 zut+yWz7fhN8Dg)m>rct{w^$fq3h&OGe$%;FDhD)D>R4z4ojAj?Uo--ZY8za-O{W_F zXB!XlC^APDufZFHal9~xdio2SB)?TgLq?$8PXmJZO`Jt~8s5s^V9zgNdVpL+6+rPq zYP!+2FXd%FX7J3LO`mJXll48ZBEfONW|@K$Wz{rK8=OHG8=WV3MUi zzyzzku;p(A=VZLdoX3UtDd&nY%zIR#^7_w7!EbQ(7Y&^aOpaO&sB8cuH&<>y|ad#o^KbR$GxB4l`ko@S*=cMn_P_3=^WyKqMed@-PNMM zWAFyL@|!SDll%}t6!G|U_xH`zx8Ez#*O+f~4?q1UoXcDwl5!fS9TZ z(J80boWJ2Y?lR7npce9AIDaF*AZy%!u|a-?0U9=B$Rx{&(bF|Y%5uoK-U2jTbI|3z zTuobtU~xv}45#S7OBm7OD#+5={ly|&lBwy*&R9!p&|R}gW`0wNYsvD@KU@bj zN>&Cog*n?rWP!VkrQUaaH5j`&`Z0Y`q;{^Me60BPG{pcX&*p2R<+<&!NYNn&YK%3y zO&+Bu9)qMlt+MtA&4MrPRd7E} zDztw;uTGLYekGESfeTh_Y+zg(rG!0hoUH)y>SND3aT^DjSv9e!>zxD9 za%<-+siGubq_TwV*ytkN3@a!kXQkj6nY9eG@rI3`7e$hO{v76c&2|etjDL}Ycp{~0 zhL@`*7VVB`?<9@TVZ(;tO<{cy|03(jugP5zX6t37jZgU7FGQGirBkvj0eE`Q1*nu+ zBN+ZMA)L>E)&UD)4h{vlOIx%%4Ibh`lzUK_kOOQ zbTV-gnc{GY(RC4}1q8l`D!>>l3~}(oKwZZ%OUp|Kh2fJ5oNQ;h^lQn>qoUQ}PvAnt zi+{1kj9Xg`SZZsVH{tvd3g)sDt@ty!&{Eh803S&pA&Buo?40dslXq8O%W)jDL%;f1 zr(J%*5j(=X_i~CTYQm+yPcmSzE9Wd+1ev&tREhqbJD}`Uewt;jo-VL*@+%U%!yGM7t~D)@YMm zj=SATVBezU+zC_XY*!c>?=lxq=eKti870nkUvn|U8G9+>1R%?vfF|Bp1$eG&XJhUve4~Bnu_d5dyYq{i=cA$N4s4l4Nw>7Y$pofMU`_RP>%>} z2eR$sAp0p4LW0%Lx|h05Ysurgbmd#({KZGm!PL^LJ9}aj1(~rrOQ|Pg&mvL9cBY;R zjRcIhb_uouzBUYubL#il?jRh6Ze^3D6+T;>hG&=I-FOwHnqr@`5@sQv`(*#M8X+E6 zy(KK%V@iFU1^FhX{sRCs#0PC1xUHgh3`vxxV+R+&Vk6KMBj5j)Uuka0$QAJ*Mu=Dw zh%o*t?YQ>otRhOq4ZBIuoh*}K|K3nqAm>;JqV+O1jMmzCV%tm)!^7nRuQS`d8^RF3o#)LoGPNl9A&gc`vIh|D6=`gG zmLIklpYG!G_I|(SnnC`~>a&1i*chz03K)_)a~adwGhRbiptqVe@@CVb+IQF0m8k;} z4Zxm)1yNw$G`zz^D>f>5&S(GkD_{An*Bq)C57!MJyfrp4^0W*DDUSka(dKuL%3hnmw7wizWg&rai6}IrpbP4C6 zh$r3>)LO*d<@kXBQry|YQ~P`@guOT(T^Igjvar>$Kr3us%fMv5rq>HZYEO zB(~-ff-Q@>m|^F{1-^b}afTJIz`BpRY}-M;mo4s_vC{wG+?FU54q5db3$~sQO!_ zT*Z6as1Vhkf7Z!eC(A5k9Qc(0I51nSZDiXH`fS9{EN@+$uEQ~rikNsKJ_i;~@CaHD zGLGecw86kShqPccDbgbtGn68QX^7jWnjxG92WvoAK21Su_cwepv5qc4-iOPiYGxg^F>`g56irlGoYriGgpVXWPGI9q1r5ZuFbA<$np^m>HCt`mG|;6`u(!gc z1{7aXqQ;O+Ku5TKE;r)uM7GS$sa?Hn{R$LqG^pJ7d62)6F*JOwGnGDnOrzO`#;-B9 zD>rQD<{V*!e7q5vT+tP%`3#ArD;0{e7&%vS@zDam^ zUEYIrDxVe-(rYI;L=apeKIW;Xn{msoS-4DY^JG12fqliJNN)~DmXSp17|%mPA*x^N zVGbW0q_-Yh=kJLeUl^QmC3qK7Z*?I53!%FlouF=X)1V8P_4;o$I006W>68~;M)_5s zi|tC4rm0ldh1?2A>HS~DHtr6zd>FKuxkj2K0&AW|DDP zSA^#Mr;@$}=vZrOjai~dEWUg*b>N>LBUj?1T3@-MxAz;L;I?+T?^1`{Lr|vvhiP_k8h-6@-hD0b(=a!-B%urZdxTrX7UD zcZUnW<2mrRks<%pHYoz_`|$_!8BM3vh+gGDcMHgU8Eys@e~Q$O_f7u< z?=ZwShL6DA@W-30;hV(APja%rP7wrno9Aa=cMrLo9E?i5M9%)bm%!t%KFP@1CDqJ- z^UDpj&OU+qxQ&uu<(LHn*ie`CWaKu%n>G^bfVbi9rqr}&uRV`AzCrse+MQt9(qd%i zIg%ob7Q=NpXakww94fsH-yt_{oo<+`deVP%|2@tkyDcYZn&~VM`9Xn<>btw_zS}aP zVsROEOY`nNRKrNQb)64iVO_sgL|I=XrN>qnQ1`{GWNRwAbJY`BzOu7z^BVD z|9;R-Y18`&e60J9%?a$T!22qjf1SHqcEFgFz-)7bMeb!gI#bVPY(XdqpS^iGG`d4< z!E~n|Y`K#^xsIcH?xlvGri}L$#bUuFx{1zr4_&c1!9)#9SORwYv<|+%7(BiZNJTGj zqnZsq&RWqIlW%0A@qEF!8yik;kxj7}qq;mbwc#MxE?8sMVK??q_Jom0tL$?FtZ1CU zc5Sa1IPtLUhgtM3D+y|1XER_3e_*Nob4G4#HwBit4fAkPWq`1+wS)cJ*f9U1P10Q& z`qwVZNU9wDjw0=oSwF}L7Y0=d+u)ieX8ie^ZcxwNGL&trMV(H-EcKhD324sD)m+sh zsx?h)8l8cAsz5;)P2bPfQ}A0nBiq3Ck>t@TkS0pU9&j}6_BiM(Wf}L?kZ4-dY~_8l zr=;Hv)@1t76PA-z;m*oC0-dLIMJy$K(%}xL5o`}tgpz;WzxzW6RWq#ao}rCU$(k1K zRRnlbvqLt9WdS*kD0u7^j2yBAE|gsVADxC4)UFYUdkKO>6R*?@r#vg6Dc6tH6xd|- z4@bhWPK#eiG`uW?xM1^gMCY@4z>Or+KqTf_gDJ&71z%Mh?Ho2_16B>P5bd2b>JEI{ zr?8>2wD0oCIF>_Fi8Qq1rVUBrV)GG3$|YjfTihIX_f#}4nWY2wI(89rCU}RBCeUE= zZ0Xu3W$gcRyE=o9e^J6SIr+DBln_fGRoXJApE1f&=%^g-5tYh#nT#I(a#w-XCGfhA zF=cpaizGq8gRPTzP?ft0f+i&lR(r3|I38VtTA}94}^q%`F+$mtj~#+%hFdvvQC%HahKlITW zsFtyRFw4c|#!jt+iiy)&t33|!xqtuS=f-pYX!)@||HRyp$6^LLu}|o114~%2ZdA5) zdKpfmt@4xe?k>#8(nI2Mp`-OaN0r(THC{|2E>vhl*m8KxzLVGPSZAJ{NlzcVEZB)D zGquC7qh!`i~VPt!ljUgwY!Ac^**E@m#?#DVT4@p>+s4(w$w za%ur7kW;>dRn19K@Zbx=F*NI@9y!pdIryLfT>$X{`D`VmSQ0fyQXvB=2V}hZ3iHgb z>LC3+r8%r(Y^5OITpM2zJb4>-}3ft`4V-cDYpbII0z>#bVwK z!wjt!M;ME930SpTFzrG?OcN3GJsYNdQSla_+*1Z=pbKqXl$Sq0J5>kRg{yZYw_=6 zEcql&W^if!YT7J2ar%ktz2k0ktX#F!`{nbB*{j5FR?UemIW=cW5zK>UHk6I|-c${l zI#32yFo+7vrOl!s`J@N#o{wv=GI`wHS=}$%0FZQq$Q$8QO00K(2ByQns@Cu=Sn{Q# zZ9pM`XloqZ0gldPVXCIy`@8;nWlU>{<3AwqZPGC4MUpnz z(7cEI`f2~1vPK(&3{=48J7u21nVvS5fVQHL4Z_pyVmnuvQl_eUwS(7TNy>t*`6@9-*p2*i30ri-0O_Oxj zfJsLJjFFrF>=M;26@*(Sa_67kVqmGnmgRx;^9dU-ZYyyDprn0)LwR7eQ*h>Q>{m*j zTgF7Y)5gu!HLwG^Hyz?x%WwRp6j;tgeV{nVv|Sx!p6OK0VOBuIk`@q~j0fA@+msr> zq>HjFPkuy`GqTkZc$$;lT};mNxqri*E2^-BI@dO>hXsIGDc)ta8F-6Yx9eWaj{M6? zj0^t#BgshQN$Rg`W=+>O%i`tCChTn9ByrnPO)EAN^pf4i=va9R3|DB_GG_+${q@g3 zIT|~C06w&zJU7MGO4Fbl`p&Ui(slQ1f5#R24u4P1S1x3a-_@PHgKG!o|BeAadL7bP z2cwtWnGj#T@1A#8K@cPn4b|U07-y#9ivO!aK&iq}7WJF>5ZZ!u)lgKd?b*@*JvVCg zuvNda#xkX8;5JNKwxT{IuV{04`bTRcryI`5w7R;PJbq#U?=B@R3rouRL9R7uYXyxg zBkd&OJy`5K`OPj6nLf4jf|LeOC?pz6RSQHXsE1>$Wx#dvNqY41ymqp-thEMvxJ z>O+O0K)QF3@mm3yJ`vE>F+q5zcC(oaUB#wnad|2Wr=8AB`X|?&27jsgQs+eKFe7%| z$q_jMJkye}(1mb<$OE+&0)#$Z{AhisId3e(_xE-kT)WM-GPL=Ed&f2(7JTbYEbwKK z-FRM+%n!wMiC)cj>*+Z`zyzr>L-*sq8Sf%u))U(f<2R*V>t=;}eNn%8l$9t_K*w2otL*v5IbWeV;^R+; zllD-Wlj@u8^E_+-jM&9CU>y9{{%R?`AS@iJbcB$aHtLc$ex^Y;4l$l`#dnPS#-xYz z`+^uT4oJ)M3*5Be73UlCY7Abjl4KnW+s$_)dZBXg+S|f(quev4Mx4Rs5C=Qa>&cqr zzOvDe9QHhH;(nB?udTr0@Ia+dMgZaZoNOPUlGN1gQXy$@GOfb9O)oz!m2|7Zh%IJQ zgRy+);b`3A+(UYFIri~S=8U9O3y5<@7Rs~r;np@4#UjYt!GdG*%~iSl78qP(Fwi+1 z7CQd>R8PLg?C7OeF4@neQYbT=LI$m?LtlX)2G!TME%Jb)9J3yAsC=d3Uf9PXXQg~N zaIjGWG6vF(EL(xS`WY?#feQ(D(mJjOi5O?q2$|1CxuF{N9xD{8P6dX6F|QzMGIV6V z8kwn)y&a8q1Ox%hb5pbn*|#RturW}d+NCm(v<7IzTwI&&&ffx0Xt8#+h~VR4R9qSe zaE7$ZEjI;x+Vejb@$g|>6{kzteZDF z;)XI(nLVg5qPUaWJ2%dCKdOFN38`fJup(wUiT-{7DDxFjg+ zhtrLMrwI+z!rm(Jyt)iN9}jnwhn)B#9ftOg=-DXSZ*~wN6PKB#9^FOB zv6TPQN^ucY!Udh`s9K5FbNo-X49^N`!tdZZ#v=7)eWlxp{KDVP z=3yZjNydS{vM{t(;p}C{=m;^ZszB6U^Om*P$dbjG5TeI0LAyib)X$$*SnPJ! z3Hxv+2cyi;DBGK2NHb$VXztL#6?V$Y5r$V9Uo!@$Od*f>tvmi)C0zdXv{r@F6YW~I zZ-U5`p#?a99wI47nGH~oPHHMyF!Ip0sacLGy>cG&YnyM%udYWVpF_2Nk7Pze7SU|q zwROTe>1}!~=L2DlLHVVveH}oKIDpV*YiTEi{YIQ#B;hXwyCkpxsi#zMwzLuLD zItfN(TT$mL^yBL)AyW9(O{`9yBDK>XrTY7AfSmex;jNrZ&@?~cvDT#^{Un2#Mv0M+ zjxkT1nA}$Fg-rV%!}>ZRA9lKF^0e>tPD}9{FpQ*H`(iPj(mLqz<}o0K3=iE(gvn&G_h~41eE6_Cg!dm;OOH-tC{Gap~!;X^MbJv4v!)@6CaMS*lxhnS# z%d->vRR-`@^2hlp7SGU5X#O|Y^xYvuBCPv@IG{%VR?3r+t;TaarlTsC)v zNy^$gHmcqPijOGkc9mVaRVzz+s+HKufYeOWs2|T&Z3%Vx)fr)F217%jABw-$pH0Ob zwwFZ%k70LFguLb@8_Wbh1l+fe7f#j&hHNwIs)bZo!U_+Ny7p4|?np5^4J0BdHp6rN zqm#J%E?vt4*MtGZmjM7q%;klrK4)%PNVLMQm!A|eRq9T2#}QWr%zf?=k52IBDcN@T z8E(%8fHay}WxiBF?)d3W8ad_yN3~VG;l^J;|3)JL0RV+WUGoV=e5W&3f+ZMVBrFz& zAR)6Mt`jK<8*Czv3-#dwoMJny(cJO9#>BeFT~ckQJ!Q{ZM!`gOm{n#y4AKVhX%JWU zBppAZC#NX$hcZX01(K1p?MQ+P`V?)deHHM2fR5-HvO~{iRvO^Z`eEr?9L%c4FpUV4*gNxb}Vj{=M&lD%Oy zS>g)1wumL7`AuvfAbsod*|oC8#kYM!`mB^R4h%3#NqzmxdXkG-83f?wE>-?zjq2}521+n4F4)UM8z_xD?@0UUX7SDf9|y1Remku+&Fb%-1Cm;+Dg@KoDNNx zG%*k=2a%P3vIA%cq`Fd#k#273#npJoBV5d?b)uZ`kx!(qFY?AA8Ox}ClpB-Jh(Y5_ z_brhPjl#&kNzwzZ+Al5-x3{|y1IW_2X~gb^Zy<`19~s&SStPK$H%x&?FcXw(TQqfp z>b+G7-}h1GHPO`g3Pv){%gnSE-(HS0(Vc^3SN_8=-L)sn=i0YUcanH2+rbnUUBl33 z6x9G;6U$`$X!yYfV`>nMi-bH*e&$1t?VQu|HVVtzE^ovaY;uak#skd-f#8A2AbuVe zNK=2Os-KaW6XLS}FQ&C}5!w~uE>1mw%ezABk7FRc7YroY?UTFcJ)_0!hPGsKa-xhO z>8P1Tiq8xMjI`W&|M6tbFHxCJgv~v)k3yrU*|%nI{OY&*4A}iVb0Cx8?_FMQ=S7#B z-S9CswRF31F>hwt zoSZ15@$v1XXh3&6{vLVGutJr((aypI5p-m z@-omqY_OtKR}|F8UFYWSCV>yw*o3MAl_1-BGNgaCSsD=8`DhV!M^)rdk-&YJ5ikb` z{fgvtROkv-9pK&}cR*8S&jp{C**MuM2CxMmo&^P+1;vN0M8sUqGNh6^XLe8fAdNsz z%0WIN8WM|mzw;p)vCd=jMRxO7h!+2<3Y5HlDE+AodXn9|f`E;2Lb5L88aIIG%ozb9 z5>__~1Y29?N%CATf(PaI;}la_EkAAs^064hT4dr-q7x|9&jXJH0AX>jfWa>@a9U!k zXZO40z(xlJl9=U-2h>>GW)>ifM784Fko|N+o^gQdM)1g z8v`8wm(4Mk$lV9axVzNj@uVBKKM^$hKxY4t5e_R*R(q#vl|TUTgIs+WK-xU0on&5i zO>Kt_xeag(p3lQnerY|xC_>6)$En@RIoOwS;-RbRFdZ|aM7}b)4?5Y*jFsQ8Yoy$d zTHs`$(1)}WhH+r+%uLbf27LG2Q0!ctZ8zl2<+d71ZSQ+;v*y_n+D`ft=iwFxfTXL6 z02%Yr2OMk%;{T@Z%stG*(eL$*Kp>;Ds^v5&;SbOU_03#?;Fjzk?BvF7<*X5 zH;+{LTP4`&&q2uXx$shL!+E$aVZWgociJwA42r$5Y`5XB-8DIpNU;emf0-Og@%mZ{ z%!AaBl?vfyR}@7$pyNjX<6}CCpu;2B4M8NPK11}&VH96t?g+F#Hj2eeJb0&FxV70# zHZmRSlDsjoeC16PXxo^#gNiDHy^>;vc`UthQvx42X?s?U&D1MLu+g<;e5;Q6(M`RL zuguX@*8p0ozX+Vh_R$+rr;^VA)KEIqGw9i|t$XnRJe)%WkfSbhY0caNo4B*i*`)7H z$lmY8+jch1KHGBCT{T6>BMN{#gH( zx0|0+XbJK39MHX=2O%kM^u`U&gEVrBv2}ID;p2T0P8AAqQI7}7ensbQsRcfX+c#~l ztYzko=BKf&)Uks%MMS$}oY=94>C?gK{Kf}X za}U*|l#ytloXh|S8)M|?E_2&#Yc4Ug*2WgTC;T6~^pwfg16A#rj0pahAb#S$GS=`6 zH*+?T5XSDo2z>>fG>@avIu)2rmG;T#vA3@Ft0k;sRcynPvJE62B5>^wCyA)?4oL^~ zYLz3It^_$?9!g;WFkX8@mZocOwCfhBAHG9AyPykG4@%P>jAP~AK@)Lb5xflwg!Q#K zu26&NOk`ci=-hKV=-UO;%88OO@$4yn5cQNHeJkbvy_CR}mWsHrDiM9^g8gE@!2aS$ ztz)8H7c+$TFF%*@e_am`m3h}DSXB01vxUsYH)59!*@^Yw%Xo;SM?3cVA?w&Ph@SIL zw{%{h=I>t5+N|?I%*)0K2Lyz`fs^=e+RfIv`kK(go8H zjmwpaQJ&tI`3A80_lx6@&Kr{esc3ZIgZF*HI0APGLOqzY%pHuK%<;5(;1;f7;mMTu z{4i?Djmk8Ppd6NZ0b*x zM&hmPG8U`V`01vA$d>shhf-Bk5WN#2ce(49cd8;c&IcP_S!ybJwEfZ@rJU&wiVQCO zAF}PtR=C|I*@wC|$U*Ahf6tyBUB;^iJ|7<+*kDWVZB`juMBQ|@a%;S?|BzRYlnx>7 zLtt7^&@brUd6OuR1So(mN;bBzty8+DL^Nz1V?eTYOyX^>oq0YbY6OA3C)`g6c1vQ_6S2yG|GYHiaGrCvLjl4u z(XOK=l;qOWRqVV*voJ2oaj-jVCFPolU_#f95LVGZks3Erj%c?8XG0RSh;=GYcZno4 zqgwo9`_%6BqGmU2>7BDX^TxFYXwF(?R<_jMvWeov6jYA* zf~ZLy*5DdauZRrE=P=WPhZfJ_8OZd+t{&>{GJYvvS7G zRs}99Msx`XJ7$AxG(~+0Q>=(XHFUr-^>)q3V|xj^yB%$HV#xpTaQPopUnmBay7#cE zU>IW*);1`d|K_GYE2oq8<3Jcp0HHGHAlhWQRG+ZHYuO}<@8@+|aE22{fGWUQ&}ryM z&9ln~?*GBY+bY)7{=0+m@^=1ISl=hh#o~{)$+;602A54gSj4BG;v0011I@c49@V;o zK&OD#0P8iSJ?Q?qjYq|UhWWj5Sp*~jU%ckP#n$cXFML676G8bZUi6(AXRs4SRotP= z9vnb_H`UM0_=jx;OqtIL1T}m#JTn^ZJt^Dwsp1J2OvLf=A{YN;Y<($Gsj*6hgg{8q zd~4|SgIE<}9xhJuR;&AEc!-U2<{>c5PFG*Hg3-Qf4<6)mAAIeMawso1Nn>m86Lq!- z|2Pg8Ewkr9v0v(T(~<>7gR(HRSCJ$yp6#Z>_x`ax!HMScl_dn|fAm0U7>FkXMG%eu zP}c9Z(A{)$(&^y)o03i-Ew%7VR*9!YRz;{W&eC7}hnZ&LyTgZP{bYCAj--lZZItIC z(Brp4CRn!_Dn4Ffy_(8xHi1iN=}?grCE3+8c_y$UYAMX&fv_JB#fqVW=SqYW%lLjY zGVuUIK)k;l4g4U#idc@HD}OnCz`^FKSo883b%;i@!V)ogv8l`~N%Ix^N)GU0PJPZO zwm069@6+Mg^VMLv3;UXDW!GLy#XapPfiy!U75jY)TKz->CRT?P>Qm8s$`M$oxh=Df z0F&+S2g4_^QaY#{W=W<-1T&{}2X9wG?APVbnsw|70$J4 z-Ai<+X=tfT7gPoN&+}xN4XOL9O0}#Buk1(x^FwW%zgK9EE6|S~ z6@1XmfrBU)BdsfP56>mVyg>_1fO;d-{oC=Tr*S4vX9dK{*G*(<=EB3r7>R?5OOg8p zZ7`BGq^RaU28N_s64|5NW-Jg8XjtroWxAgm2?BZp+{I9Pc;@s9SVx zdalD*bp;!>cJaYtdr($kFA?ozmlL!18V>eWRBQ{}sycE*n21i-B$()uwa@J!3X@+K zHOwOZFEN_}y?d<9Nrw zBXKt;F67bi)I%~(44A-@SeT7Ac*3@d2F|G8!ZR^>t?hUhv%59~g#VjMrrFfvbEZMe zty47~f6yzBO9&fZg}LM+G&_m)QKD#cE5@^*Nky-zXhyhkPenCvPK)Nad(yru zG~7Y`EdJiHz)HDWM!)v>un9OvNVr_{D_J$O4+xn`VkRs%e8PY41S{Z%kCYc=K*n#E zlH95*O8}KcZ+mSHk5pg}Ef|;YqNdwY=T-&DhpT&6)nuejTtiR2ICIAV&hgg17MV(E zk{5h~pWNa6RHyge{cQc6T-1OkJ_MxtQd+JclO}Uy}f^u2cT$F@8~^^t9~Rz~~fNuwkO{W($#5^`1w~w(6AA9*X{D zKmM_HwfTB2GG8DR)mbPlOd08P~m=QAny)D<;DVG*uTq*D!4v;R$)CRmZn0AgMcalCC<`*KNaLio*L_{p#SQVA=;M3R3TTu%3cyLo?Aw^t$hn`y zPu^cU_?%nURPTSAJ0f|3D=SKcu4@Ch%d8$Gq>sX8ocT>CDAore5}EtJ?Y#os7PV{| zmUzD5&uXf(53&Ut5vSR-KbI-#6(VF6R;3^PWCF((N;bP0Y@$8$6H0tJ_qMOQo-e`8 z=$`h?U6lOUc7N`zeMP*}AWQiI*No)WP5Srg8EMl510(P#q+CO7d-gPJ$PmUD%T}No zMM-p^Tksx}Gds=-!1hAb3Fca7*N%P+{Y>dCTQDG%kB?MGAe7TCWJeD>S71z)2Y(n7 zJe$Yi28PKkmgPGND(*pX#@7=6hAV$u>ZI_KY^b!-C1pgPepDn^OjiIHXpAsW=HE#! z7)Q(ywz9Z#bCy|&(?7BhJh*fBb~XU)3Y|IlL{8)R1U8gFAgrBp_jzdN-L$&}Flj)&k!g9#P zA;6R_n3mufJ+Aqn=5a2T4N)MXga(x(Id9Xe6Wjk5IVEP6@)xuNeL+7q5?&H+bR8tER(NUJ?Q z&~sDqC`T>l9;Cq08luxm(Bwr@V~8rn>AE!&%%bCCGepF0zZUmeQ?wK5qPYNo;}CtJ1Thz!)!yln-O1&zPof1`buk zXLLvy+U?!qtAweLDpD9gJK^=^tp-p2C4_W0Op>fIlO4L1N!?1F*DDX-5J+gAy6ypB z#KZGzRMyfQ$j`HrDmCV$k&Qa=%MSy~rHc5!CANFf;NiGe4ptVvcrOcN*#oX@;fM^W zLWmZud8O^_F&1IApo+((QLxb%j!zWuUz)DHb~vpvqv&cAedj(>P&*IBhq(b9XSqnR zWYm!*=zgI);@$nGGOQZs69*7t2_OcU5nrB#QNiY0td>9J^M|$de1ljqaSTc$VX*~D zN%%nlB3{@^ZVbRs3D?o`#QxxN1~qrjyGUw_uWM6f+e!K9q%x|v&>-L5_QL=Z3R=io z$(9yV-ZRVoRV+V{bU^de$3xAk!j8~)_k|(~I~~v~A5$J3(Xwl91oag>iIg?_U=JYp zL_L_(tmT+>ZRMl{AqZ))$Ip_3R?*S^taW%$a%Hb{)?|QA;<0_PM$?TFEytZ547m?I zP}Kcurj8e5!slf?Y6aC)r}o{IXV>WSm7jQnl_s3>7(cDcT)D9T<}ZePMEt_uO~^iQ z#k($%wra8BvgimmIZ#p>(_8JioWT9i??a*%vu5indpuQ!W;o-pS&eIH-V)KS{TA!e z6}K1RftpW~Rx&qUj%A9-pp)ogKF|fP>(C|_K5QNO+St4#@N}8TNb3FMr!6z6UH zV}>&HfVOEdh1Y`=IopB`s~SqSyQ@5O%(BE20p|+qkGa}t#PuG2-yI8;WmU7E)REy4 zOe;lmp1pDk7j68eAgWA{hal4bq2RZ>uIOPD*NV1~E1|$#SNL=>aPJrnL&OKYCf+b8 z|5CY7JnA!G`W=Y3AZIpCZu8l9hzX{Edw_vsa9`!FRh0ES5Df7e> zH9itC+_i)*k8BU)2E?9|RHXvH$qF|T=_c_zt#9)e_zDb7dK6Uz3#v6abH&uJ|M2LzeRM~ADa~XIh4%Bs_7dkzw-r+DiVO5%ubyN&NqH}e8!+At!*kya(S)4jB zZ;Yt;%+JcpDM;OJis=zKnqACl8?*Se70W*5`(&RU*jbM(PDcqHu68tO&J&HhD(lqi zwuN0HHxZ>q<~&jpcNFrFewLcEB}$*^i}GNH7nviu@FK`E`?ERDiqZFU?2TPn*|~po zo7^q`I?j)}%sGq8;~CW%xPLT$ZWPNrzEFk>mpi&MHQF}=ncvDS0(msRvRGUNQdJHX ziO$*Xc|i=yG`t7aD&&x|@S*l|C zYC((xnn>rZ$Dkj>jUcI4t5#SU)?gf4+(md%`UN)pzalyuo(C?p`3xz#6!0xKSrir6 zJv0!$Y9$~JFEUj@fC}qx$1BI;bk({PaI&|-_Z|9`21QqErEp-b&a(Ek0c+MJ)aUFpc8#O;rJn2o}KnA{)$j2SZ-S7!bHL--TF|7Cu-FaVGx z7(#I3=hN{eifcjwgN_g*ThXydH`J%UhwU!(9U( z27NE}XH>f63qta7Ov+l2V@_;AMQ*FU44yXh<_H?h94`2H{Qgv5soX^3gec&cuMTmQ z$tzuAVb6hm0iVUlY2~=W4q92UsWl7efzH>u>w;n!io$h@BEGN2ffu|BA~;!18bzs( zQQ=dE2#961B4Z*=2mnO`+ZGAu#u}n=yANPT7V{hiFB3zNiu>d+Ws{l3bz~(*eeDc! zjw?Z=JjB4XP58*m#4vxF5n=-gBdg(i1f||q3riD8ypU|;USPPTWr5ZCJnQMhxY&dYT${qtS~lx8+XmwJ_(aCIThyLa}Svb z0aTnA=Br&t)IFZFCz@#eufsdA$774L1`GtiMPjN^W1Ns*=1>|Vs!l=1K}RX|y$V5f z-ba*hmw{*p1boNkey8Of;s24R29m=`g|=`Z6U2?V+}ceKL!0vSnL|ORIcTRUmgQY z#JHjQKW-5{j$IWN=%UYmwJmfrKzo3ZcsOu_=BWD$+b*V_`eP=YHi}s=xV%ys#f<}Z z&{Gv4!w{Q+eSKFxd6B(()Yz)$xFG-40}2|eD#3Rsqp+UiORZutHRIA6Jm&3uQ+ zzO-SdKEU}3x96k}GndD`aH+x^m_GEHt;J6-m$Y`9 zHioofE-3D`_kCRQNwjuWaC?l*MsWg{3*8Muau}aqJDV-lR36@EIpSlOKm9b8QXEN#$ykCcg>w`TS~L~&L9xYO&b1>Ynl-q&f`eV$fpHbFlL5))CxYfC#*#Mi~t z4ge501wmgxZ}H*SaZ^C~eGKr>Zb z&;Unmbb9Dy$9BKNv{2fG<7jXm;5p!~hea7^{=GQ57kctE^3J||l}jVM`&wulmEbW` z?_te;Lb`~q3bNCEUd@jp!P%Mx${A1pii#{&B_?)uIJbZIi||Sav@j!814sb4YiY}X z&WQ1%Hn~qyS5c4;yQ`$`%?r5->lxAd+A>cA#a%WZCK*}Gq9=H$XBNOz1RZ6Mc7XoM zaudCzpo8fd{97Q8A_B?U#WdiVN1pHX>iP$&cEH9oQkyRB!uEK-KTX3al|_8HHw>YR z>n~fim=mc~;{F4mxxZ;T3c-yJci~QHoV57JTxL4sW{S2hq3t%u5I_QeP+~HdzZMQS zd`-npMrf2&rdF_CvCk{@im9Vu6g-A{SA98+c@|)RC2SCdO%1~OE9B)i1Uc@=Oq<$I z^3EkMSz{azDIAi0>3`#$e9o{nHP({d$L3hrfq4kVtm@O>I@CTRndD$O-xa{h<;(+P zGIZhLJ$SH%6#p+2ujnm<%)8KNqycA4!?xA8SL}e<9MOt^>-p>^#=aH~k#==Iji=!A zQ~_VsFCrTKYKYdlP#Ujn@}Vzj?Rzln{eAaQm=^<0T`x5R22!u)v$u25{T*w?WCwE) z2(2#smE|G-?G7(`Z^?7=lG@<(OcOQx>SRwkSDkejAs|mQJ`nwFp(T-(Z^`<;@^)N% z7A@~dX?(xX&jARp2INk=Io+R=lhS(>Dgkl}H?Ha__>16>&%yq04wcoa-c>7arS?)L z6?k6%(1X)}st7ZeqTfp-*96R%=~U0JBe@E@Y~PG(40O^mKxZqTEVexYiMZVp@@hDh zt3=hkb>vROBYI%0NyqZ1tuuDg z!gR=5DR2tlA1}u83;sB0-vFB^8ny&Uv!o{KmEGs9HAE8+N6N>Cg{Z&<%uujKpsjub zwkt?{1~1j*^tZNl#XRTcFX2&u%JG06MeziK8R8F&FeSX|>&mRE%Z;6II_WMcc#9SP zBSbu<>`-UZf$af2ncpCZC1*?_(n=@GaUP0@ApO<;G!JGFd5a6yXKi9BZCH2k5$zoM zurCbXtHgs|&AvujsX2n;4xhK?lN!(E_Q0C>st`6m?*+y{;=Kqx&>_vnJsEJ2Y#q#0 z8AUYFd4M7pUZ|vjX{jODAmFe1vp5N=MYdKPdkdMflr9`95F>mc6SjA;aeYZ;^iClz z6gG%52x;uWqkE)sO1%=`Q$&;u+peAfv|)(fy*Nzu0XUz&kl{jEfGIkJefDft<67d5 zj(NOB>ksp|U~52#ze!ipOuEr#92z22k<#lr-ogrJrGIxAp1SGALCvTw3*M%cn-YT? z038Ue_Z$L!8xeT#`IVt19Kr~|13Z#vz9R`Gc;lBrsU=~6@wz=A3F=7CU9Y;Q9lJ(- zvyPAG=h;7^Pn<_8uJ0$jHg=ejY?+*G;;Z!P)1W>3wvvy7@ReYX<>1Ux=_ zjp>Bt#Qrcer8v>|;jEEE*7;caTULCRSwm3Gm;iP3xE56x9lV(N)Op)5(b@#r(sy1O zIoA>9^W^a#Jx5r=dN}Lv&9r^DwMnkTIIwH1PFdU@<#L5K~lOG5&K zFo61xc7$6(XVcaNTs27G9%v@z?j^JQ5IicgU0Lv=*e9@j}IG%>i1fPEqGO>g(UIZSdWCYSO#dA=d=k6LP*G{ zI?BGu&P9UH)}|OzC5DSj{sNBpaSM12BOhioCT~nvbLV6Mid2-Gbai?^kLN-2oW&7> z_^%o$K1|hl#V#SN9~R5)-VHkwHX#8ApddSetx8*G;ZY;3EEIW}F3+=FNT~(%Ah%)Q z8$_3it~2JR)8Rl2uaIxvKrm(s9n=V!NHWuMOcQv@&$#`9JH=YT(wunpJ6u3EX#gAc z(NlC>5Tf#Md$TSa#7 z*2XRfxfGJ_@p4mwAHG+t-v~#qvW^!r8|nC@7OU*3QsD*8&G5jlU4~)Unnv z<3JrMcixsEueG#GHFS)&HW!aHFsd|h$OcjDjf~}GQN9doC8qs6wY2QoH_|tHot@wU zp=~*DdE&Vdf-X#XKq~1JGqf%JUcet@P0Bhunye=IZ`CkO5lSIlF`mmP1evRC(*fR& zm8jKXdOm|^-o1|5TL>to?OM-{Ul(N;S?;-FTDR10tiihPWV!Wnhg(v* zOg8De^CaNKN zb*_c5#0_09(Y`q_G*%ohm#q8BeNkZA31rIiO$)b(dM8Bv79P{cd#&$fd@Fw@^r*{Q z6%8GZ(AvCM<5z7X?3(PK*dKp?;N0BlK8{Qs6Pv=44$@n|W*kVB6@0J8!m9}`XQ;>@ zaC|gy#*GO{56=w3qe76=c&E6py^ht4_WzhGXJ`=PxuBxbTdGQ#H3^+X&fmpi6ntL2 z%n1#1cf+T4G8xObXqq76zFEHg9vkf-Ku8DJqV%L_qH6%A2DqVDEP#5)Y)QS9>l`OpAjEmPpt*;yyQM_xUR zSYe7|$&Rerw%PYX;IFVg*?dA~^F=3;<53|eumDmljT!e%v za2{>3hRWyyD>+h);`wMPrk@Rnq?UXl@0C;~zrFgOEgO4eEp=JGYZ{yfI!6>>XS+)DYJ^hS`<5NjLFSIk6x<2snaz_t^|pK#-~);9)7unY z(0X|7KgyI(Rq4{l2&6)+-ltRD7qHeyNkgG>UyQow7-9R=9ses|w1)_mzN(^}`23f3 z9d9+8gdis|6kara7xKNbl{Vv7L`1+%MeRJ%}i`DYkzJkAFNjhz@_jh8*|w-sTAy z(Ee>sF%|Y09fdDaGCB9(Gdxyk7f_3ck!43 z2sUR8s$>|-xg;T?=Ho=VW%*g4|Jk|ks z#|PZgL_fOI7g;y!qCgvxFA(j?68pFtYrCcPgD7qf3v1tf2nP8GCP~NvrG5R?Qw0Db zJyHUyF(Tj}i;DEm3QunQ#TkshFPtr)!!S8&c@{#kmFc9r6Ql_#Ea~&tBUBXAo@@qx z1V5bdER3G73htK@O^Rimm)O6xV1Vp4*&sr8-S#}K39ww-cvC5`65?KhHvMqlnOGQ( znJiT{6~t4MNqGF9LIB_{LS{&J34JxOT`})k6hrO=6dO$jgx5jN%pxqKOUo!q1kx=I zN9SF?T(KU5jZKZTKoWEO_&X;S2t>QC=o%5 z^$y+!=H%3Zh)o8%TTJ!uFKcUw7UiQPbO0Oyj*gT1xuBz7z%P3A^t0x~y?y)VI(;bW zn+;jKG|{}9@9%ru19RR5(-Dq>L;2a=NzixB3HBCAE>6}2Vj?@bHJhIad?W2uAM7EGGECZ9GU(eV$gQI2d_+d>ka0V_Qni` zNw0OlP!I&|w>{xPSW7jaiats=?p`Z&`mmoQBhUkXs`k@sFkOT@a<@k2{ZW1VM|wN5 zz!rdyc*urF+nP@avr8JNoB=c85i(8$3QHiSJnfe?w? zI7`3E6m2uiv{AwK`>{-=O~t84CiIoxE#4aDb_ z29yM}lcA_)JV-HTFUcMPtaw=eYC}iA(c$B^eQxFl@`aH_-6XZ0URmi+HCkp+@`6!g z>I2smT7A`f;W%)bVMiw-&SxtT z;UMA%N^VY=ga3(XF_R$$);zc7w3MypnifVaz9dj=A|hx>XZUP%Tn72>6N#^I<1-W{ zX?)ooG*B-vIF0cOe>jdy3F1Yv~12L`4l1laSSw_{tPM|Y3T{x6z z7WM)plfZF0Lc!bY{G*8}CQc>W1mZyQ&5T(GvNzxuoH}`E{a~WK7ZQFfY;#q&$mM>3G zH}@^V7ZG20ZfKDpz6qKIlz%p=&DEmTyt4re6NU(fpo;AaAn#NRWb(fNF*o$mJoQI{UU zwXG7*0)DY9*k8m$2Y<+*`uBte$pn?pa{Q=b*11D`aL;f@ zzj~D@_>Oj8}g2C4?;JFqNGYvphea- zyV=cTyFezzIcV86CIpGs3@5iFivMZ_`L)kqjMSx*eHC39@xRbOEXSK8?+M7!e~`d5 zDfPtKQwq3oC*Jr1NuL&CoRYANM?}m9RTo73HEx2OS#jqK|9$wLDFU*{IoE9va5$fN zhIVd=hmHCKiEC10C(<$6(e1flF|oMD{fI;5c1nkmk&;+25FHMGu+whQ{|J8EFbHJu zQ;@s|d0c;ka_~RW4U^Nur5^>+?oV^jRB$OD7dWGqpXPq_cbtvlIF>+F8HVKATl%}QtZbb;JoJC(?@#;Q2YI7$t%kwDPa859KvC-wO?E_q>?=EXmZyd z$cI7qjSNG~LPYtztDHtY(=t#^LD3eSKQ3__v{@>sZ~V7&WszVhu@X0w zsOuCAVYjhWCb9)=yTP_!Y6yb@zas^jI<{qm)|UMeA3${Fa`;x>IrC1;tK&OP5K|m=n(S zIQ@e5)@@5>arSXFA+@@`)xZ0UP01wjmcD5Qrv7;fWOl<%cfk0jhc$KWfE0LwN+9%2 z-EER@Si5kisB>133R}d5E+OhkGkJ!6eM+8K53oQ`tpVX#$`J@2FuLPq$vqaabox9P4 zs0N^{>z9{z=dT1|3JUVZ%BuG0<}rX$sSutFN~8%>^Pgoi|MVQ^x#@9IgTn1#)2cHo zfY#+5oM(K);IW471&<~PMFQn#t=oQIphM}AyoEfOd?ZDxC~W+u&DbJm3rP!J_vVvQ zji2a3o$z*GH$5<$NJUa=G~(UJBeA>Ua8Xe`t<)C~pBjQljJAp1u*Tv5ssUA(UzT!t z9Znj#OB?w{1|lpAycO_H?RqPFrXNbW5^@osk<7GSLT=kmP4ppdUnC7p*#2`!bFWki zdJ*gIm5+eZ|Dj3xTCXm7?NxYMmmzw~w1tGaQi=XE%cQ`LSvL~smxWb!r)LNCympAe zV-<;^Rvt>-H5lq^StnDVOgdQ(M!gkJe+$j>FcQo6fdTKOA`mau!zV`JqYTkvoEj;} zZXC=_^d6f@v7AYxkI-p;>|-j;!EH$Eo`@SBu)K0gZxbn-(p=>aRXaf zMpGdZa?zq9nCPLP^#4qqw$J`nQ?}nweguW^IHVE=CsRRiX#_keBbkxRa6Q0JwKv6XmGL9~^- zW3EuMUko}#2tnp} zRNv`!ap?#d)z@xpVOn{qe>W6Wsg$N)0$UP|O>70A@}xMDLSXsN;a1oPAj3j?B_I6; zE)=Ri>`#eju@84QplsBmaHhq7S^NU7CKl}1y#>Y%j)IhpTH`sMjtH~MfK5~#tYr}{ zjn9yzPbdzdpp{rBW@M+}^Pqd22@VcZiCW-QlU@%3Ibn3YS>j#gad5m{_TYd@7{Oqw z=x8gMK&>y!krkFg+L}ce#Il!Iu435QBnoqEtC_aX-bs=-igQ})Xxr24{~^kmS-D)0 zhBCS6dw=cF0YOIx5v5Wl+fn8nJ+-i>!2NijtL{^0bv2P5sU~>C>)@c$=BtNHi^rOw zHw~`s$R!CJ!5157qosfB^M#`*2iHq?dI@s5Gb8c{PHMP^Y1?w0Go=+wA#%R}KW8%j zzI?q>vw?|!M3nIu!7fkUhMQj7dD^u{c82|@ zCAb5tM7KG4JLLurrHTpwGOlwbp`ZjiS^0}^gH<_*o;Xr{NkO?6nzLftg@dR`4O|+c!BLF1&avm(5+<_2Z4SjXx0T6q+ zPHphROS_(u+N+D;Wutp>{gb+xzkXt5VWk5kCDppBuaZrv)y{p4v{OwN>0hKd>TX@; z?3n|fo(Y)f+tYg43j^But+dSoM{r`lepBemf0)L-`*NztT#BO-UT(ALIG)HjM2WP+ zadlZ>?(yFPG39&7I{5_gEJAKfM}cc7zxlu^7aTsr-Skh|N%AZ3mihJI&+5|wTz09T;_hA5SYfcC4 zv-D{J&xr;D-TH5r82L=@(RyB2ONNmGkrD(@M@C`Mrf@NQCwzp zbDSK1(OiFZ__3a*hjA|9aW+%&EC*!KRYd>)+O;$CZJ}M!z>D!1d1-_C_2RI09M?ZmrE9E;%>kHlnknFw zu*@ft*F?~RR6-Zdtx`BoPIayL3ptUuE#go0ki0fZExQQBbAF`pk{%ebvOw{kCD35q zlCzX%aBD*$Pu)?Z<1NdI0AITj8-b=ir!3Fe1sO;ZE;Av0ZXV22%!~7EzuV@(VOB? zE_i3J9ug9#OXN@y-rS9II5s1LWCsLjSC9D^ivtMjkXr;=c2-Zvt*f~s)|&=_J_Dyw z@ssYT(D)68kqI4BKkz2TgFZUSbk^$Fp0o!_)+{E@KEio(ztYOpmXWWTgZ4gePHMRm zlj%jTv?&_-l0XA44dgGa9s5nkq5|vkQiWdgpN;{f3Ys6@eb*2)=R!J-aa9RQb(Y-Z z1rF5dtJQnt`(bIy`4Hrk){~^36EzpWQycV-+jo8us!0uN>+j`ScVwd*|C9 zuLI?f&@kb6|M8;u86w!IGTpUul16ok5Y403(7iYk&N9uYI1i~oZ}vvh&X0y3@)b>q zL?^Yu9$GpGxPe;h@8xUhEc?3YbT?~V<&6od1Y6lt} z3)ROqO?5>`;q_(n1#PN8YYVSO*u6hMY z(0z(g%UX4y%eeh1O$~e9D_Rua-&rW}>6K``1L%;9uT|p5P7-#6gIT6R?jNKH?d|k+ zw%p6dYArDN=i~OAANuQ)sdh2^_Y4 zvdHb|PrP^x%!H##VaL1wF!dcPZ>+`$89%N07ZP{Ea~c4C-O(l610S{4EX6i#&`p1| znY<7)#FQ}S$g*}QRuHvQ*`5kikza)-Wg-Eiw@J_n(T@p#T?+(wbG+B?=WXrnAdgj zUZvRPo8*@QycgfFP=wf37ZRmdXu1I>y1r26DPqw{S)oO8`V;lAv8*PE3&|71`6uLg z>iS@Dgn_GHu}|pfY{DLMD4sencefPsj*Hc~`b>8D9}_L}cm4QHB(S^=XF^8M2#B8? z%oVJY9Owu{SLKi`DGh0E^jP(5h>d`78;e0AWFr;m*G51I>9}LUOOQy@OAqD22jkJw zGXp;NGgTHZlLe-8#};m`RkJuF2MG@i*wEw@4DYidBJvq)hC#mykvC;AvnFI(_@sK5 z^Sipn>uS>6m)koEyvdtKGRVP*^hEmD64DQ~vKBvCDi;nzmaf#tTin0i&6H9^v-_(R zLthL_488t00h`wvvHJmVcc|k02TzEnx>X7VmXgdguT_OF6In2Sz!6VkE-QV8kUq3D zB6Nf^ZCVX08!i?Ja*$}a>vxV*YE+>eEOMLsVL6OPw+B6yvUKjCmNmsFmT#>gp3_|u zHT=|-`LD%zV$wmLDK1i1nvkBiP zr8-ZVJGTsCs^_&|(HJu@M`?YsjjSnArGPl4moSo-aEpqLHF=!R-pxbk#Z)D}w2__4 zvTja3qb?M@1KzGXPjo=EF77ecH8nzl&_((Va?=KRKrwB@ zHijUxP2f6adDs;YHy)bM|0=Ad;@Ct2Sx$F;f*dD&lQ0thBPuVcP}Os4=!lv9Xu*R;R3PT zSp_0P){-p4nfuH$ZIhiH6;93QnCb>o-eqwLg{mvbxK;r{Rnu+t`AGNFMi`ex#RZqZgHcv2~9<)qz|{RG0A-V`u6B;)(_w%T2PpvWYyXCz8Se)r7~Ma zDpW`=-JnfEfiOiM#ej3tt?Pe?Yh-tXa4#rmGT>i0{Bj!37Vs5$rZn6p8e77s$y);( zFWBj8D3Uk(XYnlKJ}f}Js-noph6Y03J{!MHCng2hnLvhOl|Ma{K{4Qj%KiBicF7XNsYY_J^<=a&EoCaJkp* zo&UBU2pOAT-TEZAm*-(NdK3tlQ3o`<&3%9h_<`p-XI5_=s1SJZ?n}QqGozRjA{EA= zRB;O%a|wWYrzvJ)JNLBSdM#cvBW+L4QBqXe({gdU`%f!yZ@kx#^}5sSYbKQ=dbV3Z zd_mmTU^Z_!2me>Oa!PHe$`35TVu`)2EwM)m{xWRr&sr!3&_eWBJ4{}O5Q(XH$#wgT z^18RPD90UfS%oJS;L1!Df3CdF4x*gE1eGVwERKrMvH= zdOX`OxNOeS$#jjLVrm+>s2;);2AhpHAKQA$npUuV3YT3*S6c7IqebOFFarulci&V= zh?{f9g-~}l+2N1KM8htNweiehjX;77tgeSRZK^a86qbUs5eL5aY?lE%ixB5y;K9x( z=wD~=#QuFYzNS%2z6{bHJ?+4JeRkRt#=pSrJY6goX1haA?;gQ?$?~;YzvTPup0U_a zv0?xsUT19;F?nnOMm^u<^+a4fiW$2Z1d{!iwo9v?qm>=;f+9c2wj^HaMKy*`=@OQO3`Tlqh~(1MnXC{kfw4sc zZul-W_|D2)AYO{n*{r?a1T6aXzW4O2;1-vA4>4dtW;*(q*uV%TW8G>hE_f6JVslwU zwtmA>3Havn%tB*zG&ewZ3N^tx2O&@SOWCcuY${FtUZE;GjO{ANYNEo>Ss#j%oY0Lhn%@6$ zgpvmfVVx}(s*|)z=ImK`Mg@=EMa{LWQND`g;Y5X!VCL9(9Z%*O*NR=K_jy>fb@qoF z10JZSkG|4~Jjg7|qH4Z@AB)bj}-7(OXPWDHwgZl}r@9+ehulmsKyMqy6V~5uM-JHbfi959aor zly$^LTaGx5t@T%&Gsm^5ska-sun6>j2XQGwGm;zB8c$6HD!YOx4w{p z0o~Z5T`&M7+QMW1p*`4e@oyGWL*VeKSCs~N_Rg9YQ`I@-Tceip@p`v;z|wbUgwWn^ zx@_cWO1D~?jr+c?RZDe3*x7g2Ew;>GZQHZh@aaaRo~Z3RhuK84UPVbfY{@w{HB*)~ zu)G0q5HITrINu?SKmU$1>hgxm4VEOYN#PisWTZgdgSM%fh%MgT)u`y zQ6%S(E2GFO&=y!qtg8~=LuMi2Mfqaq6_w6^P0>RG`*f0L$Nh34U7c?A z3Or1nkFT0Jj42HGrX{^`gRiYqq-%0MD0s@7KoMx0DHkEEuuXLEF5&OAp_#=Oc8c;2 zeWt)_;1nLkqIbx$RC$b(*&4~~ZLzm7bqBKoPX8(#-TO_g=r9?Y61CTco*UB+9)yki zEp1hSf_fn~q4(Hat)?t;$Bu=JvY(HtLl##VcE!Ea7+7$(;gw`5V)5s=MhO)=a*4;N zr5n5Dk_Q7WZ2X!DRSWa(3T8g!hwMn2XfGV~0Tz7&`g140`_pt-J=WC+W4_BV`19Do{ycKE8g7GD{OP5t(F^_) z&2(GVblkd2LP8-g@}NwccP-Oykqq55ZB$_|rlII#9T4EQr02^@K{R5pd*Jf$U9#+; zv_ZnHtmlS$4&_rY?j+hQ?4`#%yKf*3!ci@d(M@6`P45~ak;2Ua8GrI#?tZ=eLurj0 z1+w1p7Y6RlIGiLZXApc4G?RBs#FiWM4ezndX?z_QK?k!F0_2q~B4vRJ(m`$&lGL}M z-~HfeBUy&L>M||;3T}rRGN<+={Sw>1`+@?x&>CYN9>;@yV)(UE2Kaa4%9*l$A>uT8 z-P79K%r8V+J?PYO6{;h=4n-=z1B_$O{`avrMT$)w;bN7xV%x`y_HVTAu9`5r%6 z-=DZn_z3vjoHC8`9}vyvTSSH=INoE-lMhmMcsWaNPEA%<2LdA`3L2kn|I@y5A)T4o zsA?mR7jS})!`wNm)dtQ7EZ@icgGiSxEK5D>Y_9M{p_50h0NiKV9cDyXX7+Zr61h|) z_y6|6M~Nd1Ag4kaz85f1i;rBG;7lDga(Fhr_}*gBv{f$N>9fRmEol4N@uRn22MVC} z`(vKd1*jQrz-?6k#?-rElz>g*zf^0TkiA^=g2kuCk|h4Pr+d+R^!Dnq1^%)2xwF{% z57E_4fayb9Op2Kj$XzuvC0jWX6K26x*9I3^qJSq$Ay;P)gnMZzpP;c@0JH;gtgQD3 zPtG)9%hSW==hMuqCdcX3%)kgNJFZhnOT0@@r`$qUX7E`e^1rx|#Ma4!LJ@5H>3&z5 zjR%C;Gb$&*%VxFOtxe zQ^svNpy8&I*CZWDR}y%P<8!^Y6{zO!+cng_*j~XDnoMJ%_}6Gj#bAktHt*- zV0tjU%u5e<7Hx&onQ*7)_U$Fzog>pkxL{vB5z*P#)G9iZ;p2@?0Bf5?h~_lG`wEV? zN7huN;8vzt3*@rttlN{%Qj&6ydhSX7IdKl_QW0t+?ClGMIQRS8^%1W?d&CJX)U?=8 zZgg{p@*>1cR2z<}#C&vx$=ev056vW--(!NIy9sZzE*jKmWve{UsuGkhg1}r-=z1=^}wO)9YyZ6t5cs}|8 zp98kZv6#V(Hi_&TG2?GT?{gUN{MEKmzC=&I6oI!1%g7QeZE3GyU^8 zXZNL;2az#4RH>RgCnGxdR+_rakkMiIXaQxl%{ZmBl-xCpABw z8fQ!s)f2J5WLkyh3KYQyk~!mg2@tic;X;pk2rd6Xq%|=^R4!)<+3{o@WW1pBHbFYX zXdmB|wl;T>$DB8;><1X;`Fngk-|pJ)2>xT@1d+)9n^zOMli{i6ru=)npCtA@x*mEN znCxUuXE7WgF3(g+gLl}j3ZDQFdR+@3!Y3#!f$&m#%Mf^7U&*C) zF&fvAF@&_6t(b%}z)c?Lzp&~GIcUvtW(+(|ml4g&*`+cm^<(#-T40BH8N*6JA9|=L z*AEdfD0UL^xdZEj&(Ra!fprPXMMH;`q-BW?&Rn=V*}h;EvP2VvPX~f3D~0*(9Z>a5 z+ALjFGyV9foX3^BahI2qR6%moBA3Vf3%smUv#h{r>^``h$<_utii}PD4f+S=%rn>AgBXUIAv4#N?nSD?N8oe{=~4-Pb~|?7c^=6 znf*(=58_=)uzy$z9kPLSk&x@<07jcIt8$dH?VWZ@Dpx=uz>zjSKtY^fq9~EVa;A$DhI8DE) z&14~gsH$0*9q^4&#_zn^vu9*z5t82=IV&X0_c|92oRN@6kr(fokl(+m1Ri)$WpO_H z#zH|^&FOZQc!7FE1Ki*(%k9Ag&aJYBxUNhm3zg=d!Ca$X8h2A(~JJr`{4=BTQhA}z)kkcx8NAut0; zQcaT|OlSA2dPU6U{%*pPPS~1}a9uS-Y4Plb@T4w_JCT!qSaQ!(2FaVKa2i)}rwCkL zz29H-Ey;dT&HL3g>-0Ilx;s;BU-#!03ra!n1k074}o zEH#avU$877zonDuC{;H<`7Rf7KB>7$a;)y7ttM_WfGsNmxHbi{ySK`$Ur+K|p!;j~ z3!)1+0o^KHAxu5N#ey*Icm9ey+}=0%c;^yF)<~hmj1G<1#C5 zWgQ1;b{oUY3+jkcJlV*EtV6#{{PDg^6x3tefSxRxktFwt1WNPVWR^f8z6u)#0pu6A z&*W18q4wT*?<9(4eo?c#rZ`)!qPw*NYkGm-GbR5^oXRTvQ(49Y@Y|da+yr@)`C3zO z-%q}|GFzljR_7`0Ru9FIFBjzb>Ll&vZ{av~#D_E~K35&G-67C)5_7V%|z* z4o7Oh;vo0jikTu_G@RT4szhBH05>@QQY_M$FmjHZh#Hk6WVFkfOoLL`m8+@pawoY} zA+VgFSBJMA43A`Lk5ANO&y$du00|lY=}Gl zD;ZSq_c_v76;3MwU}bsKhUAlcp6?zzC<-cN2c$e5pgiRK#~YD!yJ)LLN~;L}Lo#Lf z4VGbv;VW9xk`d+81$tUAw9*8E#7ObX%cGXPge^Mg11QzyUtfMo%vM)6$jK4Tmz(lq z?^86R#{*z4fA-x-WngduAgc*k)fXQnWC=JRhJ+X4+RN-=l5MbGI`0QIE9o5)-(RJob{mS91LRmr%S3TVz z_zN|lhc*a*C1p)10N988O=i~^Rz~84Rh1%3*}0S|wF6i5;BhcZP`#neeH#S0IiKV; zVyk-J8kY)Hon&ItPC}A9Y{{|y8@PRONOQDt;}(Mhk@g?xm+-@*8T`h%V#dz3 z@oAnNsn{gdI@fU&xWLiV(gb<>OG0RPY7Gh|s@^1@u1_5DcN~ z*7eT&^hrfkn;t2OSB-Yi*XxIe@+o71SBYHi@oS&S-+JqfVApX!;Ctinon*Hm^Ql5~ z89(dEa<_-IWGYi5k3)TVi%2*^#-a;1s*kFR#G;ssbYiG(K4GW11#!yIO?$0@NG3+# z&H!|4uQ49EPQKU$&9NgaL2zqfJWSqZhwQJ}ngJZ!m0>VsjRi`!VCs8nLpSYYUIqN$ zRDh@ny_6DbddQq3N7qeGrWeXLkJl0t9e^}dP@*B>fLvb*h&gi(}#1Z z>Oo#4tpiIg8q|FF>oyvZa0n7%Mnp}->+r>RBR6?DnS}B%jk2CV)3RL^Dy|j`uZgv` zNS^?k_2L>kX!|-iheLxG` zT5~RWK9~bj*m(+nMmLPPcAPyju6sH3Fyb+UO1)$#Dw~s+PTUYSgxu0?ZPaA%GnF%9K%${LagKmthLO3W~!kYeQGEC0*iV#%Fk^jNj`_lTDK z(ZIN;RHpoff7>YMuk^K0wuM-(H3ZbZYk;}IpH3~v%y2F$S`{g=R<~pNcu3mnA7dRA zzddR{U6?9h;}Mp5-#el4Vzy(BH_I4z>myeODYgo{(RB8`Nx2Y&F=;!ISwI$Vn$qO) zW^n*T{_tP=Id=&M{*6}0OJy3gC-*s1vR8KJ)ZRd>(F}Br*ZxGvT_vOcpG}szMZlEu z{1u&d8qcpzZ@&~fw~s3e!Ivksyn-jySc*%Oj_Ewpn&@D z=DrU1P|OEh3l+GTlW!q-p*bsfXKW;3#Bd%G!yz^LoQi`Rm%;iAG0A0h00fwC^Ec}(JGDoKguqJm z!V~bi$UH+bkxLUl2dVYqq^I+;ijBZ-Q#MKZs38)IxBM1)N7?Ebd~}z1hPd69jhFkE zI@44U=l(+$TI`671%_+-ZWHBJPD{AKBeUqr5TP3doKAERsH!Qqrb42*Rsbst1c zB{00JXfQx;88B%i^cM$+b9{i=lv-FP;P3e$VV&S7tF9{wfat`9gx1xi_kRAUb*y0U zawoEe3aF719dGEg_YT3K?F`(AEQe{PtaJyP ztZ4I@@#sBY`VmoXfo?ioO#f;BpD|!=6x{D_4d1L4rBH91T{6n2*>5p) zt?)Ak3+6|v++S?3_^!IZf)F?@s6WG{Km4QJvOwT_%BtID2!IR~#0A2Klck)8LPrBUagq1K`k_u8771tbwmwz}Xo zbu2^;_)V1m+}Tp}z9V@DnTt-P;Hb0&qHd+QNGBcEvF|ER0u97w)S*#rA5II7=;|>d zjRg4kSA+z_H;Bsro8fv_00V-JjN%kGdsG^1gu94_8OtM7EVIBkR? zkF5T>3_%-8%Ch9lkrP@A7bMyz@(1lYvFVbQw^puInPgR@?At^ z*d(z~Gp?!+SpHq75v?URF*cW>W&V(*I07J!^11qV1EqU;`W2 zkF;*{j>~pIqT1ELc!VdQWF0)#0Uwn<8}bb{m@bw>u%T@zcmCg~i9D+9XEVWkpmLX0 zpg%Dmjh;&8IqskABDyNzz2j0FxfXP(p6eNeF$`JAVOI3%(mT$;V-oYBHGNBGbbsU# zK?vM_^#$Co*&;2*|hcK7gM$C*Ku#c+2qDKZh6eL;&(UhYP6c82Z zf=?-=2z4cd_wRWOQj5Lyp8Oa#_z%jtU>ZevXQ4T|Z#M|);e9q9LAfJr^dBx2x`5U7 zUO+oq0T9owUU*E7+=(ep}gpmVy{C8&CsCl|rcyP3^~ft93#iWu_9DVx7G31L@8e zk52I%#3??5HM|n0-qHZnB2!{=24(vL9i&s|z$Zs)bS~|d zxlodM_?|K9O=g|a#2`K?LVc!Qon6gP$F#I@O-iA73aR!}T|fI)Um^9NOyw2A1hxru z?MHuO1hAq~#{!uk?I?hYcOZjL|3jfFdRrLH1sdAzN1AYH37j_dIZPI>gK~Yn)6tIp zlsH0j&Fo1w1>XmAz=dhiE6NW1$Cq!$?# zL&q^V2~hy8lwTRB$&k;*=hDqHL@+Tvu~*8$_CE7vu97H~|9pt`P(O(DxirUo0JG}r+Di1`IcnO(Uo0MPwMTf zcM8OpeBV^O+z#^FgVk9h7zHvy`F=Md&t99bar+C5(R2Wlbn%nGeZ3sYJ!YSq0DO9; z-yEr%I(jEI<(U=3`Nx($nMe?d!1*p0`w=~UunYf)uU9F#JA+!dV85T+02g9uhCvOA11Bn6}ga^OHL1zbE#kTvW3b&{ux}C+in4^ zPh=ZON_k$i(zZ6SuWLLEwp*$@fzBo${^QlsEOXjvFrAttJLE&&QFD7`W&XjYbZnERvc|k8BJ{nOa5e;D6Cc@ z9LZ{xf%#V}r?UUo&raKCKz}gtkACs!F2i=h`}rsmK>k{LIa5E3FN5pQCWXELb&bUG z&J#YzVdT|w@-t( z`bZlS$X2J?Jx@d5s}EB*Gpq;snOT>e2T1CSP=6ZrXeuD<38Ha>-7^~_A3xrb(XTz? z&iM4#!Cm|GRdX*%8`%!iRu*EG+Jf`wvOP4-D#q6ZscuOl<;T4R2ljd|DzJH%ZXQDB zpmYB;I*_apFgK1lPhRG+g)$f15{7&0kT#EWv%;aR4QM+y1SWyNmt)T3HNbqH5Bpe zZ7)RO%oMJ{d<~~3t~U87^oT86>*wff<2Rnqh4I^SKO9%0%KA3YKF*x170AMS2K<2w zilq!Dxj|ZDc1d%mNo-qf5S!5Dj%fds2eDMeTY9I2)gS}1n_i)&b)WvVS32VC^ZDH$g^h!*_}za^=a&}cCBV<^=%Ij){cA^F$-ftr zCy=rXYL2)i<()F8E$5rMO>^TSA?Npl8!h61B5|)amGlRdQ<^~{O z)giiheG%VST>bT7Y`eF0EY3 zIsIn04;Fw70g|ns_eR^Vy4oOQVb1?KCeL#6f2yB5bHOdTbPYhR&v5lG_m=^x2UQzd z%`?}=(6+C(d?s+=M7{yXahag7I<+Z=Ez0rKv7Pq4VGH>iV$Y(CKoUO4eiP_>*O5An zK5}EgAUX`T<1JM}*e8E6ZRq+*j(2THhOXWq>&}659H7LlEH>juqgQ^0+H5;)+V7D$SJ)x>2HIErlUG2<^635bJ&Hc z?nB3vcWX(MQ%i)E?sPOo0y(f1IWXrfW@7PQuDTfl34|3?6LNvKLBx=}EhSA3-c@|a z)Jji3dfiuXe;P=`GDf3^I>#9{m<9R`-rSlCu^_`B#zU_czUVCn4#Hdb440(oNtd}i z6ViNXpEPcMeB7AtMx@__(h%7b49E=b&G`j`nONx>ZRNdV+TmU-O2#BcL~ECXABAqB zUO6W+->^S0p?X;|*;!TTK5be!j=q-%3+D9s@ke6%w6dl*U=X&+|Z+PNG%lm_6;+JplMA){kmkFBni za(A_&a%n|9g>13&9f9h!5L{RONxqniagifyZ&=Z^9;qp}le0qgt=+I9tg|e|BSv$V z#Um^y#Z*ybFhcp?TqlOl9g|q&Sjr)5A~3KimTz(<=3v72K+>C-m{eSzEp-bn-w~p9 zGM=;0T_DudtO>!Avu8DeUB#{Iw(E4iWw0*BwSR^+qT(EfKh(FKN@11`EU&aT*JXQ# ze}@{e3Lb`LMUa48IN**3bZEhfijBLf;Z37RJqPf6i*2=E5DZ6U3t;8KSmyqPZ1MW8 z$n;d}eJJ%x+FBV#O4IWMbn7c3LYBZT)&^h*8dYd1jnJAgtQ&lWB9a1d$XWrsxB9@O@V6BizSCv0u@8|rUv zgLi7#Lj_qI2i6pVKCi&|=n;nepVWV!zEc76_IQpcz?cYip@Rht)bxKad>;`umy({r zmcrN*v!?gHv&J`rY->6?EZutcAMp92i$>h_DSAEAy;1oJts zf?sy5@M*q_4a&Lb`HBD9t0Z{yiF$eNPTmdVYC(KX@u@y2oY~2UW~kn(<${|V8a62u z;-(ur@e0@Ao$LzLz1LyunS}nqJ}4)6nEs68_FfilbDLe~egpWc0w^!#U#3P7Xp7NH zM-c-*0o6={-3u9szpjw;cE1FBdH$TS`S@o~3C&y45@tX^B4tg-vSoF5REAwyyMu>d zcaHo-3mShS54Xz77!Ac8o2mpryfBcT`hR&?RU`w)f-Z>&d}tUDh@!kSc5^I^lQUlJ zKgS4Z6V!tuTDwUM@1FoqgcTsqB$+}el<%Z61xxrP)88p;3nE4%zkEDRhsj42at zUKg*{|qgwM?4YcITp7P`m6H{DOS_3 zrxO$Ec%YCgHVHOm3*Yy2SIrST;|TOkG}G~}$7e=!*Ry!cP}or!m3doYaT^P^E{EV`CVTk#Wbp7V8qzd8ulee7nAcmd8&@8RTgwZ)A^k| zE-QBd&YUmes4m|obo^WQ#OeW*KbBK*0X-!0Zp~(JacG2J9mp zgxGE1(j@QPw{D&Y5;BjYyrqyr-5^xD0{1e9Z}!7WaTf3@W5&b`-F-gJyw2SpUm9=3 zGSag$KMD$xpZZG}v9NO0{1F`vof-6f{M=zy=@Qi^Az{A)FoDLpE!c{hV;LaHNDOeU zgSC=G7ywFW;rS%(hGc& zkGSP20w8QzbG3;gj*idJ2SNxuHQViCm&n*98&+^R3g3=kB6G0$_4?FipWv%>le{WVR*= zyf&ErZ_qeLt3k*}#b|S#;@E4{vNS{u=Ak$2pUjS1nw>I!F7&cJDCG}*adiB%S1bisIp3s&uyY2c8nB@O z;luPB_~JtPaUWtOc;k$$8m9^qlbu@~FtHxzR8LYezoKP$^eH{-n8d3=SZZVYGE9%q zC@CY;wx>&!iPZVkM*0>~kmBvjCpkMC)s+OO+N1_1SD*k~vocn1#3^7%x)A3wB(UOV0drT6#xF%yT@-u8L1O+IS04Xgdgw z2hrZv5PBqyAaV5`t->|=oBh;9xTE(zo>J_zrJ=oK=y^@Z0+S~9@CRCkh2D@DVA~*6 zSxPWhf*Q{}GbYW0{OL4eWPS$OEJNKE0=b>g%Cyu|vSslfwNY+Va8;gx}u#9Injlo^m{dZm~3r7WDaMU25DaxC*Fkx zCv1$9nfq?IWR~dg`x1puxH+hJ{{rBp9W{#86&C7RBxFT#kht*s8K$q0cJ#li{fx1E zD<{{Qe2u3zEY!auL;(Djk)+6TdHY;9(xN_G`xF*Co{xgwqq)mdgzMXPdt58wGi_>8 zx41qK37h2cioi``?=u^mtx2dg?pc7PX)F=5>L?)(U60QKQ>6}E#Yqt%?Ono$tNVpj zMo!3qQ1&f;&4>-(3i`vf)2Yg-Hk|W-af{2el^8Xvov8sj@dSp3)jsBMSX-Lu_*h6} z@UW=pw^7a4C|)a=K{pFAQW#8f>xbB8hB#<0SA8!(is($1Tu~ZB05Hwtn=ox~TKJnq zqmrEb@ot1Ma~?MB`#7h%_ZAe)siesJCaUbg7;L{@;T%iL+*eF+9i&|xeXVZV+K|R{ z8=0(gHDxbG$vwj|wQ@zL_V8pm*G;eB9{^R?i0Ql&;#RdsQNUi?wUMhJx>oI_HlX$a zazx8UFig=hf7B`^Jkx;J$`i9=mt z`(eJo!sEk~%*Sy7`AIzak%vjcC{6kU0M5d>M^cKG45H_D7pXA5?5N?VnP)cy6$H>5 zrcT1Kz0}(NW3?RZ46=&v#L-?iI1BJci(1rT#x!f^OCDhKct;26uHovRq@Q3)&8vK7 z0euEVvHD3@AGK|Ky7fO_dADOcwp5pEr3X7(k?#}5;3n(srGzZT?NS;Pa^#W-0R>}6 z(H4g-l0)@v-7&FLGYv-da;Iav0;tipGbnwznLdSv+S0a7O1ZW29i)K*g6hICW{^fo z7f$nr8CU6WThvVQVc>uYB9(v%;91?CJ*rgQ#3xu90XPMPLB`iVu$#t6Bay6?h9cRm z{oN>_cp}-_d!gcJRfx#1x-0t4|Bhwr7=8RR0z?QTGAA27JPHsD0Ous)f6d6&aBkjU zD}Z7T_$X%$(>%hvayHdN%RO5djV6+=3%DI_e>faoAZjy#1+S8?PTQtv(#-)@znkt@ zRlo#O-@Sq(KVZP$y5}0=csDtMXjbrd;CZmI8PKE&7r_*-M!ewG8jnWE9rCj_O&@y6 z`!8VcSzN(>XbuR){^%aN{GJJ(- z(1l3D?mhf~?HxC`4pikzY&$p*+@MorrBAJfz;C68cC}5EN{ih|UL%YH`>ctEO}p>q zU%i=~neNm&GU+;=b!sF66};4Y=9OyiD#CSPiMLC;7;)D9jSB-ePui#``>B)qVcj`?0Kv~<)0$8L3R#`-Qf)iOHd2G4P5QrO9Cc#I zg>i6S7?C`W8$U@ss05tK3Rz|O(+)^voQ=c}CyiqQ6#(0}}j zWj#sGjQVA1L1Ym}DrwFi96(y6mSoHRXevpg&Ui`MCmEQv&SefDg|CJ}?!A&B1B5+C z;VATf#`qa>*1tF9JChO^KFXGgd3fvz>>Ar)4wD1qKoB}IZf;vYFgMKRL%CH6c~#IT z#SjtO^N=&GgAVh?%zXPn5^73f2^@y3m4KVW9kjj7{rby_#oX?+uqC45zV@&EKeBG{ z9QT4rP?NvXeuJP*Ak-zRJmd8}cG#ckFYC@0$|+&1W`Pf_LAStNZc;efnPbtTNJhoM zLCmTL2I%W})s_LNHX2(6pnflu_3YiL+9t=M$6|0X+0r73HrJx?w3Y_@_RLR8`kTta z@D_~Zgy{BBbgz(mJmpo*U`l2I+I^NY*Y%(?0p0p;B*>N}Gcg6|^8jMuNl)y3$USw` zgUINRLh#DRYmMHt%4gFTY*WRW75n=63PkKwjg`1IC|x#dmw&P@d|V^Ijj+WGliQZ2 z#MR7K+-vmpx{ID3)?z$?qpU{dN~DL$jBsL{5t?#RpKBvaYxOv(ndRe;*M!)6t3g~2 zv-UoR9LZUtX)D@iPT%fe^K&cD$rYm zWp0zYUODpUEdSc~RTx~r?4tM`o0#v>_Ecuqs}i>G%S;r3W4Kamq<4w zg2(kR(Ekwpe2n9*AwN%u+MUbMcBuVi0l2CAfpFJxo+R7n>8F|n(Jb@0hGyZ-68aj`FgXh?ys9SfmYV7(x{2m3I3)U87sWfc)Ij;pr<&FqRy zQ52%n6l~`H%sj&vfa#ha2xCvAQy~M@S?9@%XaI4|OIYKiRKYOn6M4Hfty!9 zRex6Y-|Nl?tykh9q5M^Vc<*D{L_sgNrjoI zDC_1=#GUp)S(zSmZKX2VZ;r?fX-J3w7sfVDQP=E$y!w@kx&+nx141R8IS1&q(7!5O zZ@n!DoTo}(2aq~)t3Az~ui?F)hnVMQraayYwG-J1h4~5GUK=(*Im6!)wiM4uWuS#R zc#rPB#IkojVA)+OkiScF#e@pBy+c!*EY6BSyx4MU6Y%Nr(Q*k;L?~5b< zcd6FLfP->`&uX~XSkb5m!jDk8I4OXyroq)Lu1NaniWl*vz>Vdd>xlw$FKMdNSq+de z2Pnqn4vtf5xi3I$&_wfF5qv2*`@{}5BKK0(VyCMXAVu_}i)$PG_v9ApwWNj8>;UqV z!&nDCq)87}1ts24l#5Pite@>ZUriGInM;u8VcWY$nOat^4>Sb*@{Ct5iZNE%snD4S zCEG_eN^Pw0$y6~wdI{thymYkIPt`T#J2-owWXF&@(mAwbRN4;F%JJ&}qDv{Zj@ZKy znykOkYMQC11xw_&jlfz z`82I&hxSn2;#JdCj3TcSXbNw(`GGvEJEDv%4CbBiWioVT3F=HNc#LvIGP;iOH0sMP z9PM^p{!QXsMd;9r`toPJLAGsU_Z15eAOaSe%Ukx6gTs9t<_%Q)+W6ofE6mHC`Vxyg zZQz#wFYTjQWcLqTR3lAfS!6zf*(QNkzjRlFPw`=+Qg`-0TO`Rg7VE zEZbG1RYWT--CbHW1p^6n7Xbi&!kE%&tC$}Qobg0M{=w;kl_sL*7|H`AP-$ap^63Y$ z`jtYP%UWOpA#nX%8|uf+ZP8>?2f;%2DVdX>n4+}|nrUR-xL!tqB*X<(2!ksTz<9O^ z72OFIv9p?ErMbeu_xI{)Gl&gRl4m#jx3P4!o290jauS%riM4~jv+8M~1ePNWDY2;F zQ?_7Eeq55pKQkhy9@nhE$KD0ntkXV>cUkCEJ;mnXgso#Kk0PJ4afqLAS2sL{k3jt^ z^(gnMP~YaVM5G8)lIo!#5RMjb4be+jJxRQ~MyW;eH5VfQO}ylk5UH701tX2)@hU`< z19SX)*{xo#%|mgHL%Bo+Q}r6Lq4v{_R1S0@0U%V7rw~rqAgtN^#}^QJ;VKa(QOekA zKu#+zc$JU26<`qjNoHINn_fwGO*z}THkbTOE4MhZqqTr`wYqS9HQIyf9U-9XkmSN4v*+Z7@q!q8GIub+oyC+O{jGHJ>j8 zIZ^WJP8+o`XTgh5mBJr26GH_2eB;Yd*<&&9i(Oa7YBygq=eku1vE@bz-e$%UUt$2B&Cv}b6>*`U{ zx;mcT*Vm*;bG>WHE{WupW30KSz4C5CZMwc_?l36GWa5| z3XkDKz)cEZ6kvUUw4-&VJ2=UKElR)%?LS$91T2chQ>t;NxvTl$g=6mIbH#9D8h`QmH3ZCbl5}jeT)sKP>1>_u652Y zG0e@R^{@uFA)?;*@uK%M?L6!bD=v7Ijun*x%1ophPN`^gIbB%_tNvuTilkBI>?)tC zc%tXHzkJt!S|ghI1Mc*a32bO+Nplzuzn<%z1|l*2EkEE}YDaM&1R1scxuqrny8Zt_ z5^W4)KozcQ_s{$_l$S8yxVw;*M!7dsRBFQ2dujk>J4=As&B0J1<8Z5>w(d0MO#%vr zLdt+~-Ms(HxD|QD%9>GZ7yB5nIMblp)P|P=P5JaNCB=tH2j=Rg`~2$(OBef7;r6K2 zcG$4L=|T&py7L!MEM`$KG$yy){U<_olM!#kkt$o&BmuzU_pW3h37F#ECo3P4QYivg zpMqry4_h~{)aA>@JXn#0-+9+Y~S&C!)M}4 z2@!`XD7}8#t! z{nCS~s#T$vd>Ep1Fumz&{;C#Rgn^{J7nd6mAiJqX1#)*XiBky$e*#)7NVN)hmjjne zQi1{ItML~0$TOhp}u`kA<%|1CXx{#LwF8+I&l z0JWk&6al5+=OA1}lXG)asFD)c7vu8i&B^F`wxjmThBcgs)v`L8-ss`@LtHS~HAaRi zd1jKt6v;@U*$K zoy$801gvzC|DPI#R+M z;0Fo|dX5K{%8Ac-!Ly05L;-4n;BEgh7)OXohA9JAlNl$at_!JMQUYo}>)`}$;f%$o z6lcARkHDij_Zg=vR4#|J9Tbw*3g8L@iJw^$3bk?4lzLauKH8?Ce)YTb&l-1HB=O!C zBw>b@uF94#^!kMZ^M{K_C%W0rM7&|f26^f|@>vsu;FB93RAo%D0y)eroh)nAsxp7s z1Q6z=u*sH<9%OU;cAA-O4ijRj-6AVbd!SjuCpaOJ<(I5D`W#S~9N;F1$letKum~Och-~taHA4k?JnEan|lFLWG z+3NlHNM}^7gDhD;!#^@Mai-!rc@Sn8=_&xV+LUU6>>4CVgzLC13B1tjSg zn@!8sG=16N*^H!TVAt~LX10WsY%0-~L~fjp5|K*_Nkl-&oS^hgy-<(|UT)F<4%&O% z^yc}4`8HzE-uU8-yQu$h6RQhefCd+CiNVsxhBk~b_~mg+ZCbfdrEuX6h=o(U9k6kv zS`LEoU}i?>R>c6ZF3!ftU%qNVNGBn2gUB@n*)+ko5hmYDDCHw6*N3kV)q2tD{VSDq zej>ukAefEs>MDr@aOoQgJ4!4t1~1cJxIu7)@XY>V-t6LG7+q27D8J@BgzR03_svUc z5t^;5}9c@z?*7bg{M;&!f&QX+|r-2_8t2cSn$Ljn! zL$pYBXa269Zy72O3h_;nyL{Ht9Z7si{>Y1fWQgZ*lT1ltx zNN!kH8LcU#zYhD>Vf+l=4KcXByZVVMI6srIjXnEx(?AUlw-muzvuVv#b>_AN;G(Dj{J+O`AZc^!B=0{^1CJV*1_C_ zzZ1X&zz%sh83_*oz4M?1yExHH-N#uh)h80i=%9v&?|%7@vu9tnu(pMmAr0_b;fl|$ zvXY}P_3^L}Q6DzaFPF#Af2W_qlGKandu{jZlIH*&D7!~u#{ur*Ah~97?igV1+?FOht*&bx~* zH3Z4#(bxjGE}>FHUV4%CzNw2aX4#~M%X-k5Q{yD8fD~$F&bSR}do2k+w*PzO+sr~e z&yhJ5B;S((l>r`nidgL8;Y8VoE@vYtsdNSXo;&%ywC50!FijE%_Ue&N&T)1A`0jc| z*&x5D&fmY+`{Vpq8)lxak#UrM1`72)0`9qUfclturoVVh&Yrx za%Xha)Paa@&s^daH=ErSSbAZ@Q49=i?XY=-AmyB|SFg^f8vPJ-y9Z0Nxb_;Q&%Z@U zuZ>f2k+5pigx0TD7}33@=Uf8&_x3?|>rV7qTn=6z4L_InAr^TANA;bQy*w_nds}(o zSl5xKhSU^m1W+b0aUhcfxy-@4T|Z>QTAPs|XZTHx*l@% zUu(>Z5_ZkA-v`BE$iR_l^v&QOD9WY6TiFD{9$ckJsg2XpXNn~i|Np9NXR|Fmh89*P zAMWP<#tV7g#luD)!l$iSm*{Z#f3cow|7xp?U#q~mJqnl%esW2*X1}xKVy-%M{?+V6Azf%wZ9OX`7{!d zCR_{rV8#pESK}uO-`%Y5#+X|{55G0nFx*DVhx+IcV$cu1cbu4a!(P=#O zEMi6-td|2-z1^J2#;YrTn-AXSkJI{7-SzjC2%J0h=R3HJKjYWELyqVYS!{6AADs9N zz>;xq$IA=ii%Li7lYwd;^zZx)?_^{k;Ixm>P+C!I2H9hjsU^!RT&RcNu&{@Bq8iAq zuqYHmZ@3Y0Ch;2CHQl|r%H3;|O%S17D|O~x1VDDXdSLYKq^D0JSRT_$6NUK$$Fp%Q zcT+M2@+I?lyKkk|%Cyg&Zhsp!0}_9f?(DlamW1nkr*YQ%tqoM_3V!i|!mI?1FWSRR zTz@L@hTO<^IzS^%s5ehs?CVTUp~C9?{7LZWW-8eK;G~{=F*m2&Eo@0P3uopF3_-&1 zgB#E7K0C+{wOV(zZwV=hl}}Bz#i1DtUvZ6PpV|a$RdD&*)5ir`miVd%fTXSm8`6@IsfWO>aPQ4sMsFy z4}sH=Y=*PEN>~9A(2XZxDhK+P5;DP|m4s5?5L59WAit;ukh7JKR*?3`a#r@9^c+Ri z%<~pV?n{<@=HTk4!#0QFd`WVn);y#@RzCk!>1Idjm|BL#T2ZKl_F-`l#sF^@?Q~m% z5WFSD)*MfZ=(P5KkHHA8D0BkM5&I@@iHD*Y*_jlg2Dg{?tA?1e`M^KU(GJLFT7GI= zZv@9*lxlMCj==EhyCh^%!~Rb$2|UR?DAVwa+0BpGZTQrHtsbIY0N15D>PwX*yLU8> zzg}!kL6GMDkRRHO5UxQ!voZt7DeAl4H+c%PJA-$O-dS8LiW|Ahq`y&IQ2&iICbJNZ zx16euv(oDsjG{|`vOa@1`nf1Tz-sAj##_9`0YiFREII91_jw~6Yf0~f+m-~U5h&ZJ zYy74B@=es_AZYM7LeW;8>yh_;aMlvwuwsYyzFgkM0)=GJI z2N)G1eA`J$1RpFgPVDCF)Gy7BV9^c(5LyNqB+1r8ma5Yq2OvmD=eo2`|3oNkj{S3; zN$m^a${zvEMK2*H`aeeapxN;fP#Fbm^phk zCpY)3zRU)Yh?a%*`x>PaZuT6moSD=P;An8X1H-o<*OEsqYmq(5ogj{yK)F;;lkqoX z5$DHTBRms8fG=3fn_zw?YmBF6DK#YbcKVmri6RiyrY7+~4Usul9Ea5Z;@JCIb+i-> zG=OM%@`VGlFEx%CGmJVPRj$Yzb`bol9imB7v??ZJ4%Usv@@o=XjA}Nr=%MF%4uSpPR2TcUu_>y8&frF zNT7{F|CM3!xXiFq^rC9$f!X=aK*gc{aupoaX=+PnZP-yln{a~e%vHO^&n0+o!wK4$ zPFY83at1sfjEDdhZLAMg>|M4sdX37AHsB{v=$@=NS9!On%&Ps842*qRTwiNoZUz;c za#<73B7&fzap~1Kv~0HJ^C^NKG5NB`i0?|JK0Drxy8bfswIK|ew^KaYdKX{QDznVC z#Y}z9xQvTK22Tb8^5=@7zuJDqGXePN;$&A4MD{te=bV`CAgV7~g6|<#uT^xDL`nol zMhC9$DdPFg?RWeem$;-G^%R+%)&Y#axNSEXaUU9=_5JK?L}6gEj-3u#6}Q(hj$9L~ zHI%q3ci4O0$6_#}LSm%-V z0d&+W9i%&e?zC!RezF$>vm3?$?uAF4KHE?!bRYB)X{XQS$j(b23acG0msJ1s&LyOD zNJjp8%4a!ip_`W;A#s=3*QMO<-p@{bS^9Tub-77G`5!eQ#>jwxto+#fj&#wyJ10$! zi~f)~D?1LwONy5ealMUTdHMLozcE-k%Vx((WwPT7ta8@v76#vzr~&1@i(lsSLh@!C zTPY>f%rro6xDRxpjlvq`L`KROziY1Rxdv>>5YSz8>ciS8#xdbks~ z{4>cT?E}2JJDI>~T06Uw8RhqvdU+&SbH}Lr{y!X=wW{naiQlmRlreENEz--8N7yh7 z?8p*7=0NAC4;nDTTC&<}HovckLn|5g_dxV&2Y_MT0BsFoZgr(;P?+iXj-o~0;+hXR z=`K8rA}S*-`vN)%j8|z63KP)}Eu$V-o#iXghfdJ|E60~yZfwUW;X%ZgfWQWth>7#) zs4j=agx%pyT=Kl-onH=%#X)@;n79eEtSa^V77DMjF>`IaU0BnPONHfdpB(Q!-$!x6 zsmU|mL=ivl+uHyaoFxyf6H7&rN)$hC6fGw6Y(Mw}ZpEw-4CQRY@|OLNwx+%czlo2? z*}$S_L`GIk`-^0I$f#WXx&5kn~=NcEI= z9Y{Ro{}X&G-~yc#q@h6co~LcxA6LT(VoTtu%*Hm>#hecS-jZjGJ5gq@L8GNA zJ^u~}$e4g(V?l&n6*7Y9(A{DBdX-8pC;CX>rU5HCR0JCKNc%C$Z%zAAgKnTUAbp_9 z6k?zPL7UHCl3-IqB1DD&dwl@^t_;f9j*q>rdEUS6se~4}WSO8VwTDF7&fxLb!8AJ? z68=;L>V_5ScC}~#Z#-x`&}pYS%$d!*W)+vVbV%Hz;%-^(HLcM7L$;`rNebohK(o+d zkxBKzHp@sY53l?5r9kbI0Uu2B;5daFBPqn(h{&7Y;I{f`jjTn|<{v|?OdCju|f zaII4&G=rfXNV5--C*cpmaG73yiEpEMkE}e3w2c~dP8OC&H)e=J^y4H432uiFJ&K=1 zdjd$wP=J$A555yGVL(aNto6`ck2AZ4%PY#QdaaDb`J{k4-%LCBEUWqPQn{3k`csyP zHl5A@tQBk3O2*oz&6Ze^2wDO7etO?L%{qLKk5cfa`rC}w4|LJ=p-z@3>)*IU=Yis< z=>5uZbXb)`(}Aak@rw%6lq#xX+U*)}qwTaz+GVFJDyJ$3o=M_Vb;xqC`4hQ{qt3oS z%W_bT*3~-!*0RBYVo39+f5cmEd|0S>_E;Y`o{HS-_i-dxVmA3kBMIW@L?YT)z1V2%HmGBNfiYl zR~_x?t@eRm%3O*vXI7bIcObeFYI8^TYm>;FI=T$U;pwj=;VjTHr+h+*|m=VtuCeknvbYqfA8AdHsL6Azu+!IphSA2vEGS55MMV~{y!``M&1EpwyOiIo~ zxxZHo=8uuFSw{ajum4^GTE`)QuVDGlM|lU*W<=T9%9E+$8KIcCd{D3P0Zn6(F;}Qo zYh@=y$4{ci9gu+U6o6>0j-Nc*+imOG>n{V)kyty4HM*rzr-RjgQG*>6r=M}o6X*|m zqfZS795>nAN+`TVY{7dTC$aCkaJ-ig0ytQZ-Nf>=;;v;(OInRR|IgG<7UvCsRGIA8 ziMVKBJgE6RM+Z=@K76P;02Bi5+sMX^Hb-TadV#|Gm%W3=aTi{&f6Kvz$&nEq?(#Rhm9xwe zz2_Q5tx!hEk}Ch=m4Vt-m&n@F#c(DY^peAaO(?Ajf98UZd3wzBA0Cj@@oQEFhGKI# zM_sr;g`do$Dq~MKhmV+(_#Tc}!y*Xqe*^9>-gO*Ux*IV0cOfZ{Vp0_B&k7&2EeJ~z z@@E2p$=>Q$9zx3|3`l;eHs8MwCP6AQuXt=1$rZsP5LJAgu?`cH(3B$0)|H>n64qz<4l1(CJa#Xce8xrFltG7DZO(a{&BYBn$ zNiOD&=`o2G^91D+hm8M9-k(9_h`6v!_$CkcOCJE8!+zv#plQPdZ4eTUsJ4 z?>ReY!g3H$GS&jM3?T_;y2qPM@a^NJ`ng2rfD^!$_&Xs_AaxS2I6_V{bWOM0(Hw=W zNJKN%sj^QF9FPRvyjw(sds~r#gb^Z(O$QjEdZ!+3yR|*k-RGdN z8<^1MQ3&&M97)afC{e=s$C?&e2WhqIat6A5BU~`s1gNSmHU=gL;m0uRQk2Gc!y+v# z<08gSm;r}T&KP*Dg;Ml6mUKmXFvBjway*(@PWR3Q)Oj2bqLiOdy7}sDIKOHGpcw5D zt^{t^4h%$-CkY=d=toQ$e63@ya)80t?M!=-9UCnC&7 zY~@zlMhSS(4z{0xH&K>0%$W7+{(?u1aPt*)G4EYHRH2fbV%*cb`ySH#rc=&(J(v;z zuq@bSrHzCn*dgN^jDQx7M1ha<0Ak6^e?n~KrzZrSgG{~OToJY;284EpW5r8#pe}6L z*aCfO*!qTFdqeTozB1;56%1x$$6P2=ZXY~tGliIC%$0zL_xjXA8#jH&mY@iBLk0+Zm$}9rejuR1}fl096N2UVnq``F%xdJ2dzZ zWxwt|f6b++V2T{w7s2`42&?44`Hj6fSo2lGVZh?L@wd@f1#XfegXkNMRAeCOk#=6M zQE~Oe0=x^q@B8)NjAHa?;F0oSv!cU4cbTk6Dz|&^^ZgQWuQTLn+62@ExnmR3$yZmA zuqJ2`m3sy^x5N*IH4=hbPLanG=NvgC>f}UU-)lwmglUWtdi%y~w9>5nueVl$EdC`1 z05XAz6yzKCVt1vv^o74tVoEVr#Pr|?0z#&W2{O0vb+@XXS6)wM?ceamQiY#ps*LDK zVr^Ib**=6;k?wCJ%S8&#CQs47u8$n?OWN2*Mn3KmC?#Pf9GDBhMNB#<8OfBuS@ZeM z+6m$vV3m@-aC&4?%@OM_6d|YpooffAFZ>%)3YTN5(QH&mbBBsq{DYFeCQ5SI+t&9s zCje%@PTx#&gdB26-Au(I6HXplMC!;fNB}n5+;I}-GcSWO^%d@&nb-Gi3Vy-}ufM9wx3NWIB>=cD~)rL!ah~T)(YEWn|;7?4{BA zULzPU@Dbl?sj039DN^&!waUFC_!3?<)3)VlrHUX{1%KeNiheCUUz*JxLBppvNiVFQ z!+sUjW_5*3j?^01wB4UCM$a}+q??LHlVky=dYn%Zn6Nu_qmbSf4S!NwQFhKD^05#b z6R1BRWfERTv-!6*S8~_pqnY4|Q&yX9n_aDEtWXr=TARe7{^*ctR-!bV)boaAO4;Iu zL$-F3pz8~67k?S6s5Y9aNw9p0RQ6?oyq;P+TXhBJz3wYa`_eohVon|9+%O{$3z>Ma%s**QORmC)sd?a zdwqSS%TmO_2F>$~5=HId^xz9?#Hq_2`{~lO5|#ApF2^OtY~G=`3KK8`Nw(2|2smel z`!vzj2$UbQ4`)iN8mA+d5U7!tV&zOnN8bMPVaEZhjas$pFXEo~Y=&C)eanLVSnzoe zjDz?;7h4uB@+R;(hGyp++>=!@*JCowIP{nEz3JBPBP`PIWOOkQU<}?WpFtIS?()^9 z97BLQ$W+XI^cqagOj%Bf)t>V$+LV`LD+7?$5S>rI5&v*%{ybsdsSRYUr?hsEU~fJ= z*c)&7`q_(|g5{<${~2Q+Bu<$+T=ef7Pa{nB-{-Io`LeL6Xs0jde$MJ>tv_%eFeo9F z^w~*H>oM6HbzucEuiHF9YF31;+G5Ht+Z7S=R9CA=tT1`Jp`0FSS@!oTRi--6 z!7v?COPJg%Snuf8gVSTY73kr6k0i^Y9U9q8l>dmwtbSe?>U_5n=lMj)uxiO%cL$)j z9f_Go2Lza-wc3-(1D_oYGt%a5$7kZ>9)K(9l9C0Be;OD*f0+93?64jHJ_I+&xq~n6 zN@P(4d^mhi_Eb}fFhZ1Yv>jy6R>Ou7oME1ExJOS zAx^bVrc^_}#off1E#i?Q!1aEGHtC$JQRzko9EvWMA0<^6wt|t58eHfC6aj7Sy%Oh= z<+yCtT{kF{v}~2PO^3x!)Iz2LpJ@ff(9vUrQxtr+ohC&JiJB`)-(Lp+k=e2*7$_Kn zHPiuoWKoFpwJ5(;=~vys+BYqCWFh=MmoB>hNIjub*Z)a69DF;Mm|mp3cBo)$&T2lq zCr(3eSwze5Ad=v|>-xL{x>t)RrV_lTg%AX>47}v*n&Xl@pl&QQM;aqMSXX?Bq$obLqySg7;V7X5gf8bH>0JpkJ!Y^T(Z*afI|H+w9sU9>l!Vf969 zlJmzo-)j9TE2XyryanxlAa3ddI-dE5>&i<-ur^gH4{%Wop<7W!vv!e~)ST}}jK94* z2&rDDG}_#%_ST!upcI$aJ)D>3ERV?*ROQOLoJVnR{tmI3*e#+#yOqSaomGgw$D19- z<*Uum4-Hik?LAdJSG?Dl2Z>X-gGRD&VyBu8-?I?i%tI13Fr|Jj}P!(2*Zt?3uA+&5j$<~E;x&o z`&uxM(Hxla^QtjNj#t>J8JtU(E$KU;Gq-E7A)2P~3={4B9*VFUar@=()%9cm+5}ak z-M?obDtcnflmS$+Jk|YxL_n4QfXM`JGUO(oWj?OY3-ZTk^r82IXc|lr>T_voXg?!L} z%65H_W%ZR1-!VHZrvpSPZT@~uD9=2ilsbcYNwYezl_gi}w}E@N5VQG?Y{pV1ItKCD zX|og`h$ua-V&gKUPW0^yvBc`-OE}?Ij$LSW)9SX5K{kBbJ67tnoc`h39)QdlW3oTD zBjjQ~;M~{$E``iq{PyaC&8o`+~ma^p<1px3t)Ugf}_po1Q+EF@P{lqg`p_A1XvEy zbwBeUCWQC_($~0I3QPvf#CWDFpconLr4!{&0%5$1S}YL<)`qJVLM+W3#uYuXOdUvG zkwMi5&G%X@<+@uz5kLV9GhXxkp@W$EWS;H2a#z?bbv2HVmhIZEv`KKd2qzuPE`>3g z4%0gzYM2HM?<SHJvV8!^ zuW&&kh63Tx+F=!_DszKlX$b}!wxO8bhqu|5x@!1VXV#qAx$3u=f&GUFi5BdIL`B#{ zY?>Gmoo(>0^#d z=wSS-oeAQ$8CH|ouKc?HCTjHz#M?`^awJUB^en^fQr|LbxQ~4Sj53Y)y%W%ThOsye zud&2?({qSINCLt0sG>#g;;B9E$MP1~c%Gg$zZGVW-+D(e)1;%{k^K@s-9QD=EiP-p zTb={e;knh|A38C>lj!dcsS!<{r1r2ouf(v8c*&z*lOdATuff7JSOt8j|`}30aK=i%^}O2WfVL zV#SE;m;98>ZNB7a%rPmw0L}WDAa!s@!*ee-bW=t$7)VrRika7k`9~|+HRSSMrdyZ> z;S;2iwlm$rF~vNS8BrEmU?X z-TE1K)c#JS?oy*o2+%qdGmA==#yb7wW1cM+glO36!C{5q#C|j1X)nVPa&L<}5n+(h z2yv~>3=VBhiBW){7TTOBG&@wLuPw+;x{mr}tEm`hv4{%|m zW5|olo15Z0#Ksy{T1Wc%n=5tK7PFK#QL8{oqP0$wE)CSd_i)u9^WLuD=qJTM$>iM% ze_8hW<|N+~Ys8y|t` za?e%csuOegZ_Q70$?snP$#aBleLw{Oxo1LR+ZpA={m@PUu3E4aLCLTLNcjU5C*eQU z^KORLLl!cS`QwM$P?EV-lRtMWs&XmD2HU-6yC~o4;6*h+AwQ@M+AzV46u`Da2OuGbg9m$icQ0>sqEcca z&$od+1hXkkUc#i7g;_g5G>@9lnvkB!lIwJ-8Md&)%}-EMw$g7_i}r2iFr<6rtP z*SW2T0#RAStN^#UhxAg!U2}`#n@iMVy8aJZ^xTsOFy>B;ZZ0Tr@Y%9yr#3>62@639Qtqzqp+{ zV4ia)eub{s6Px{NU~JjFH{N02!^~3B36kx81N}VVY^0+|#rjEJ?EQ@@WYb`X3R;3B z3?t^wF`v)upb}id91R(R7*$MS$-)vOh$8lu8qdtQV^4#2*>=u_U$cox7-3gQ`d^}P zG#s`I{XYX(Z9xW59ngepqWc&!!dESmfZ`cP(A>vMTq&a>FQ9CC8XPIXArM3xWK;7| zv9c4mYuSrm7V#?o08Lne)ecOP&e;LK=9J~K*GS&>0&o^tqMJb{hY(ON;5%+Y)+qCr z@y?4$mw0Z|`!s!zWQSp=NlHHaw}SoHj%)2JAZMp}+H3Gw$QP3d;I6-su&Wp$FfV8( zM5Es~nN!*N#O6jW(Lx6M*`f~o`LWuVWe^L-HdYB{YXz5I(TTY*T_zuXeXh176@*v( zkL=>5%z!{3aCd{$=)~jU(g1wa>lNo47Qdz2I0+y`28}9EUnfq;*h5oW6KQxH59(kL z*@`%SqWavKso_LSsS0BoD^DE6LgXfoKVw= zP&!L9O-7!55p0LCu=2$^IgR2P6*&Ih>ugkzqdd0g_E-v}SZ8b|nX5^{MaUAW&X+M~bnmb`m|-Ux|_b>Ir#pp}yI z=8>fwoCp`q-TKM8Sd4GE68E~wfK&Z?`-nhmToXzv9Wgz#^zM615=?E@0q8Q*-|J+` z%se&9%H91xDeWgEbw^gY&&7)F85G-#J#gE`9Z{zfCw5laj{8)`Ikh$ov(N(VD;l`Dn8^S40nC2;Z-!8tz$5jXm)=#9;FQ&$eFUd^j+5s_x5p;V?-Sj?H+cgNmLwKlPSI+4d*QP1J z69EZuX=w(vtJA5h%tB;HA4i zC%Y$J{tacxqS8uakBC_9wtq zP+kq6a-L-}zHB#`p$W3cVvP-lF>FY=yxBAlr!9j9xHeV%$F3JI8n2e8xvk z2a0>ag!1zo#i&bo&jbN=+`#daeS(f#JvWieP@*vgphlS(+@`4Q;t0a8+Z`$j_Js_O znT!keEjBo8$9Xk?FVygH#0>Sg<<1u-EVpFeebT8OjEhRXbW&xjjbKI&p^wcB+ZZw) zP4p-;sMZY@UnlE*TmX_J94%kxAYK5eoPk}Fh>#cq6x6uuCboDqgL9O5gr_YAHG3u< z1k^O8>!yjLAkXeXo5XbIW;w&V^vt;6l58YQdv<$jfsYDQ{V-F%tKMeSm1VDu7nN2D z2a{+Wk^r6W*>NfFMj}9m z)L&-Q2(5bkod+;GvadXlp4V?ii$nau8$Exn9OCiDSkvs^r+AIwQxz?GWD3K=j)vw* z%)wc;oq~*mHy|TdlwQF|bs4CSTlCy?WMy_*s|-@Q(uS9>S{%gSq2d~iEYdG`&z$z_ z+Wr{WA(60N?Mv|e2lYG0<3umquOF!sjki?rIiwwae#3^4KBY} zlW`}&9^C$G?u+GBN|49aX6K+T%Vh=gYXG*PuF;x$KfF_B!OTu-Y0B*eUh42?F}ivOof zIxS+ocs61~j@_mH(6Q}TckNj=-g_95`{Lwr0lm^iZd$rIxAa#=lpwmB`b6WSx~Pc9 zQy<4YQklrKsco`V(|H}r8=LcrR!jfOp!v|2>SW=q5?rvhA?Z5MVf4tT-NwFlaf#=} zO1^)W^7AW{ShN40fti43XqtuMUx*Wvfo3(K%Br?gJKig}?r3z{XZ7jef{}XiV1v24 zK8AW?jUvLBqyRA>yl>0zHM{zZ%vrTRHAEAA7uT6HbGv&_;zbl*YB+~3`^XE40u&-1! z1$_zK!JMq=cV%e+b5@3v>ItonMZBR|Zjvs)GfTX_MM8w3d}MIF+OR2~fKo=s0Ert8 zUJIR}HEt<_lr)ZBlL__M=`$3%>-o2L5z-Z4zAv?`R54dS{nJ@&xtV0s1=ynz%thn2 zZf8>X{3n$tB|IC5M*8epFH5I)XtF``(a^foQO_y*k(gh)VY@Mbab05XhzT z>`s~+#6p1-$Zs(U@QE`>+Ye(9?hVeAT7sQ~QH>bdZjPGe;qfDo2y438w>3%fWOL>H zy2S;faDY-XuT>$}tZl10G1+Ks%Ab3j^cxY0>Uq1~W+ zq0knVZ<6+ViDRx9GDVqhZ&uXMTUV=yKuB)7I;6xqz3t>eV3s zR}cNUO=u93^gEip>5FI`&?V_7-u=3Qg~4R%F%E9az!G6^D770Bc@L-Phvd>bV)I za2F@HaE5}qBwqS(%pg~lqnaFb&I!67cDb-br6(UZwN+L=!MMH5S)VzgGMH1+{Uzr? z^zgi#d_`+*Z3l2e6l@_u&k|$+RODUh{IU__CxGmlf-;h4|BMHGFD)@|UiA3|`1Q8T zWqt@z`iNg{WEQu~>t%#MAszMY!uZUI^-3|T zQfNhGHXFogiY64|N(?uZ)IVrGf}ijo5}85{LvXNSJy~xUf2r^y>o#JiV6td68a#GH zJ`_EO1L?kf*1VmDCZ&>FElZL>Tnp%gum{GA;2}FZhy`?oJ<0ZH#jOsCOK&f}aRnC` z)DZWYRg%NRk$-BhiN&hQ4$LF02l-4#&b=F-Rfi&_xyMc4&pDjyM6sa`ENyFClg14B zEVPHy&Ih@qf$+Sq1B4VoaBH^_!|=yji(d5G!kE z6$Gv28z#*r66Hv)buOb3_+gcb&vnGM&Heuku9;k%pw#>r2N-=$)Rca#V)H!FaC3!H z2@i*Y(vC) zY)TDyfHXA|dyhW?_j`Z9=n;O4s|;#-x?wl>N|9Rh2Hhp=@hTaF*HkJm2*IT|ehi-0 z3R?f6E(q}UKc9X{i`U#h*)AURMiX_FSe~mURsLFV!-yT)Bs7x+47G*i%&pQFMXxWg z;mXmxZj2DNq?RCzz!+z&CJEz_hME?p!1m*pZB%o^VCq6VWNKCioek?O8qZMo&8kY9 z!{3C1IW`Y1RcGmgqHDvkK5Qr!=itzWS2W9=3mji+TDB2SC3m4P(PiFYibQ$(Pt@|@ z#TYje+;_Cemc3XU%7&^jr)rDQ-^*tajNGda&?m+Yh~O(#fB9kVz1czcYA%cl(cCq8 zK3iH+aPvQDk?`g+=n6>LgEv0F717-pq}lm=&NIMB7H|$Xs=Ca_*yb1&LKc%YDBTP@ z%O)ltzk9tib6IO4?24LjU(VYfB-q}_w{HeKZYo=U)Q+x_&x3C_E~rivpqw%Yjcq4Q zysob8BMS4K8t6n)bkpKLSx0w;Sywr6BNxj#QRBvAv+@l1wx$6hN)j@US# ze@g2K!`%a5BBljvcFw65i27fSAEHibrjRw+C-HdhGxK4wMoFfbl%-@a_5aaiPJy`h zjSjeSJfnMhVl9Opo^qP~h>nJDt_jOrtQX~hF&RWz$WF8@J%vC6FWBZ_ph|1$@Q^TH z_4UJkMv%R&<+5Bw%#KM2^m5TK{ImKsxC?}8^(mry;SRVrV3 zt$uW#ltLd=d<)DpF7u*tTBzRzsnTO{kq<#k=m|qPhkyNQKuhPHH2F346B$AUldvUj zG3Lq47cLOqk#IV^b88BKVZr2y%RNF`gOQ8q7Zr&+enyVSbXbs)>LaF0B$)1PXUP9b z@vfvK>Gbl(e>>IiVhqA3v=##5H1s_d)m@bs9u=w5(}?;A1yMb5`H=0F5#6N%Wj%Yx zv@!cpRF&^9@mExTdD<9>|J0gWm+;D9g{eqn;*vZ4f+WHXo)vBRPVu5s{o>tm{)rS{ z@7}hj#eH!A*r;6OEr^zbOPcs#(fboBD_bK=2uKQMJR3w8@LGxp&~Guws7GPAB1;DqRW|Ny6vJ%6-n`NP^)-4}%60|;>P_}|+L+I10D@u^< z2jno)u<=>ltKH5&cjSP>glhf@T(vpJK~|AyQcb&r&vrM=sak;e2C(W}eIV{$dmm9$ zs^x9#jPtc9Q7aBy8$&t0_DnV9Zn~jjGwmPYp7?LP-fW3 zbI3f8C`iZ7*EIR*W>>^93o2z*ZcOABYzp(dcn$(6aArT;ik@|-cL6XUb>BSDtxF)A zBIl$FH`|4nDc~XpD1b)ABz*97`DO91MVHPhZZ(3+iv!3K1DAxhR%r3({!`(M$xwwk zI0(Us==LsP4mk3>y*4b<+;}-&YcO%v-gwDKV1fW_Q#c~)pR6Z!OwcU<>>IhC3xH$i z*+~;|Hz!c*(Z>YfRI+R<54vQXs+$dUV*>tDCAJ0S@=0HynX~DX*Vp zP)$qj7ZE0C`3cG3;k%+xZcvN8naC8azMNXKz;yGwwR;Z3Hw>$}#U&rmVhNMV3-ya) z;u*j#Ug^fGYvlzaN6Ss|N`^!oAWW%Yhc|wV8(riqJnmiyonH@dUnZR52qB>9_d{dX zitDOxCeJaGO7L)5g<8aAbtId0>|>-aSyz{o>5z}>|1-VFg%Chjn41t5I1Q>pCCe5L zAQjK7LFiZ{1FssFd$1q5Iv@)#z-aX^J*H1-rh0xxy{p3(Ew}hM;?9f^*6=VA;9J$-W57El9)8dVli3^4-NT&3u3Cy)PSe~{WL%L<# zQOLQQwmZ9JGE5Qh*PpOq&?F+EfbJXi%Je`5&Q+(KwEZyD^b^GeNFZ&)4?2SrFm=H7 zHUqS7i@f(fDJCQBotqAGF<~XTA^%~UyhG&;wU|;4T=$B2*^8ZhpwPLMkUu}JPXF+- zn22{r-m$O^AAF4mU>3A`{JhzSFgliiXPX_z6jwQi%elQP|7V^{#Xu6a5L@pw z+n-QJj!)UH9*BpRtFGY6nCZ0`pbJ-{jcFVO4Fg#%9JA$4r9q`y3Q&{vy{Js$?o=FoHi537ICngCD@52Azi+Z z3M6LgE0glLM0IHWEj!s%f-po zo!Oj{g+Aepb%nVm!59a{I3G-2^OubVWi3{~>3gZS-k0;3N6U{|^#WrC(e4_9FS|l#IZa92zhrU9Rt7L?BA0+TIbBqkkQLN#jy4uxg;$_ux zSyd;;G@7+#V7H2*%!tvLohbi6=YAF}G-aId00;}Iv;7iJ7M+OKmARwY)j{Rt#}x9F z!(ti8+N%YZy?Y^Yqq`O|Rliu^8^Z${YA!Mr=IB`a$l$yXwgC79FO47@-Zl&w3EuMv zeAu>~thPPY)arUP?>=LNHOEU0Zu<`YJ6kMORfQn!MQYfC5sEb_wMjf1>B^L&Gl*QGlC`3dL1$^M)w6y2!dJB$X z_Mz7}p)T(?DynJm2{`c?71=Hqcf+@kb!53Iv2qPfmqOJCZ@j!68x7zypA~JN#_Q0g zvNVbe2-{F6S!3N9IA^?G?rL-LB98XN%WoQZ4X+W>iE(5g%1-?&MP^{K^&}b>=4}!A z4ElsvF666out)~-t|3wt4Qa9x;S<#%>u>bH%VKQNyb8Ge7m{l_;n+jP2{JDoQgN-rO$;4grhBY%X6}+|wEj z_kxLg9frRKsegeL*>c-%8Vo4NZhtd-8=kp4=(kX1lR&oOkoz|2!cAgSox{I!b!OSQ zt3g|InV+;e-qmT0{Q6Bj74V)xn5V6QQeFT7PiMyFCnZ&lhu>6liQ~wXSeo!5Oh`mS zb&zl|)Z`g`=W|pr(D>Nus0ZX=NNn8adAGYr$#E3zK<3IRt2+R*G;=#-2$&BG{Yhcg z9dJKqCUK=HNs9+pjCqdyF;)6Ss2rpqf;mYijcOgkN-wF*YQ{3|f6m*QThhqvpi_%! zqElMZKA^jh`;QgSoE^7grTPj3I-W;)=b=9(e!MH_I<9K_Ht@)Hc7!yOX=lBI-a!D! za89pQ^?YB^UPtl=#Ht)fep>Ehjqcwp*8ij96p%_HE;p@2Ufeg%Md?Ou__03$#zYv# z;KuMGO9}G*e4G}yrW!T*;p)t-_28XBSCeb~K$z(jD2%NN0hQ=b;m2I{1+`JK?qIpu zCo!r7K$m5c9)U&*ystmdD;XihiZK?KZlOHJ#+1)|uXnu*QF?2`@OyCOBhCGdecVZ4 z?VM)~pd87kZu{pX@Eh219wN1GH*kIzO#mIaz*P!O8*bv%u*iTz2cdslN{-D2cnxu5eb#0kvn~Gy z_So})q`KKXM}hNGw~CF%8LM&ndSuB35F_R&sbTy#w?jnHdgc1!`Sx)Y3;X?Tq$3~XM?$73l6QPFD3=m=>7slUwT1vaeFCzS4|SZH<&{YF{K%E zfmn8TScisgoen%P_(4=b@55~hBf+yRY%_L~Pg%+UhGbrlVlS*#S$G*wh^LQU`ktT+ z7?VZ_V`(SEnG~>_Kj~N)Kk;9gokxDPuF}n|)etdRJXwB}js>o#3Z0>n?c8cKO2{!Nr~yI7E8*pBFm08Ag!M9OFKm1taS33)w4G#S_@ z_6~iwWQ3!}Xn^?l;$*{nfU*9VnM3-o3LQR1$num_HgS`vK~XuZpbj_XL}yFQVrcIr zaB^~_44i+y?A=ms7FKvQa-(U$aY8%8kJ3b|p9o&@KfB^bqJtk08LN6&r{>af$Zy^$ z?i>%Z$t$bfV)Yzxj)cg3HgU~^MF?2!fN+cZ&p#^TSC7+IB=7usD|h|rrvaIky5gn6~IH4-Ya zp17C4r2l?@0A5up@|abyhk3ujHIDf8;%_1e{nZ@tt`Zk%jK#h1CjDN(sOc){sr6A-q%i+=p2rmFYm}0+)P!7BS<*cF-RGNbK;4&`*gm zo5F`I@LqWs242Jlzs?Cmr8?k|h-Wr)xN!maE85p}aKbHK3YjqhX6i?h*7 zN~7nZvR!Y}JwUXwdQVn`V2wGlkvo?u-NrigF%QSh4a?K5`Lg;dVmb@c01zGe;B+%W ztWY*`=B4kPhN6Dtl@ZKp>A!5_r2SC=@gncc5okzulf-|FkXV( zeFo1YYWvHmuNhYq`tT);0;8yP!5CIS(nliJjCS?VTgzU7tD>mNR6k+gate89@3=7R zwv^2R|9`(`IUZ1%DVM5uJF!6IkzKMkE9DPQ5r&clZ8GogG12@hi$UB-7 zg233-z|a;H!1;zbT|y>|F^k~RU*uO z1L)%}hxkJ%X6nOBVY|+e_|WO~(mKe}jqkgR&ICnhf+Up*uR{h!j@{x$IJpbCh)8wLS~<`K(JSaw z$Es8yJnPAw%6SC)5?K4(pwMQbI`w;oNltl^+KrnY4w-lJ%0F$suX?~Mg(_48>nZ}2@}-wut|N^ z$PFf;)YuZR)5YBy^Y=m8j zFpa}tAP+p4=O9eu0OB=f=6S$5E-qYvgFsobmR&9fw(DFBj%9Vsd7Pq8=uU&x30&~U zP^-V0zJKUx{|z;r%p-! z*U_Ii;}vPee!Yb&;-$~|WqP@lolwGnypbW|Y}07qW-?Pv!<)BfSoc5=^_^Ynrx}^y z%f?ZQVPbZwJm($f$Y+tN8o znd%sh%JoKG_Pl_-^7;~!xDW%~rb%HB67c2k+!l7AhwMHvn5%aFu=!sMCYs^0>b?O! z9y;Q)M34v^m>ZIb*|cLLtt$Nwbx1rRP;@_mqjka990sL@+U$E;KzEVz9@^!3*Loi5 zG<%SUJ|@HjnhCHd7I&*mp%fwd%`qX9KQ*eqd;3e!irO$&b~#~N*Y_p`*@amYbYL)DVu& zitbh4`H_LF0d>S5t?Bzuu(=MJX_o<~k*MmNqPb-I&NHy}w(F&bNpeo%pSV`W=uHf? z6JhS&9!YVRU$-|m4@1X?wg;w6*+c0lvKC%LcmvMMNj;&}j%M1R-RnFdW59W=8P8D7 z)k+6jK{(KJ)@<2vg91R5FmH4STC?mKU&m#|D(5k6#1EEQ6k7SS_wBvPhXxS0&o`X- zhGA$qXV_Ape&}pj_q}fNzc^V5ayw<1Vv73gzk1W`9BCDZaX-BAvRvJ z>pd9@TKgVDMAbXo=)bLMFIA@7@%Lm6HNl+Pa15au*GKTEJ8?Y$%n*^gCulw)KaoNnx72KK;$ z*j0-hMgeb2iMKblj$?TnjJ|*uuBThN-4MylrUB1VWy{&S}0FN z9U#NtTqa3AghE@zKTw?Q`A%Vjw#gD`nu@TeLH&{yy)Z7f8|N~|cS!u72R3?=|5Wtz zOY`rxlA!AgZWW#?20W>SMJRYeW6L|ICXkXE(+shLM&mBFxc%}Ll;XRdSZ_0 z8@`D}IC({5#~y=*o>Bp*{Tpi0gm#`;hy=RbB`Rgo5@_WXU)DeaKCNHtKO4sK05*?_ z!zxobdcZX0USe8+Xc}H(UM#4ovu?=(de|raF#}X>&^&h5hW-w|zhahVfz(asZOqjH z4QkI@EG6d|mZgB(1lgQ_%QRi7syh8_j*2wyEJGH)NM1+fSLn^AXwQ?{O}jJllTiJM z(e$B(t{dey1pK5TkCj@ybBy#q**c@04m+1}rA>3u;~dDh?C}w7wluAd1^;wqZ%Ye| z9HiZvH|D5IbQDX2o@(B{D@$~TEKeRHmtq4`eUzH9$Uo!S`0=aSzOlRJN>k3^hmj*VF zK;az|;yT{4ES0Lso6wWMYuUvX7gSRuX~B$c3c;eYzfXK}6}xlzIUJ7k9Gd13DaAA{ zS+J{QffZp=Y2ZrN3k|VFlS8>Q7U_D6(;T7jym8fAVCoxBPs89LLnfkw0XM^9j_3Z) z3(dGYhDY=jmq{3uyeq^Ic`A-#$M-A6s8}swYX!ihwLjc;XRP-7!03 z0IYXH1-XgwV7f`JF*9=rwg27TIg|!9PdEuOYsf&C_Bis zee-ht2}b$Y-bd8_(R|*`95%pcs=(;aiW4K`B(m96{BMTo@TmLZ7zfioe8fy=)^exi zbkpo4eKch_-W@HG&971i$?@A_zj)ooNi192U$r9PsObdV7z0ZG(u+fATfg2bQB(Q} zQ@~Fd#|{sbby&)UVscbOBCs141QVS(keu+yR!}38yH!Kf!vOk_k$aHjgsEj1yibQ~ zNTY0sMVEcRm@;fR7-WBb3!$`N^4sJbz9F*I$mqKQ*aMl zUjI2O%D01M{(Jpu=Lfw#>s7h>e?}*Nw;SkZ|emCB$KfmG`3GQg#To z5DnjT6f$!(e60!}787X{a+V#rQIUktWD36jkRc23xiRO2l=n91)(SnkMryD{5m@4TcFx39!w5{R z2AHaWU!!&toP81iCk(Yb@Mkgi*)mHDpfm?spat_}Bk{VzE6 z5P~R&8rx(2bv!ghq9TGS$!8|O)F(D@7y*(R!&#Ie3dA5OTS1F9&KCvFhqG==EUuLF z)qhzU;TA`u%=7=xMsB4-S%wxkN$V_PjOdRghyfA3OamJ7n{nnM}oDb{`H zh!@*niBN~^svv%gG1YlZjnd}mJ|Fz9r;%5BagV_rC|n< zJdQ+ih)(82r|8WtJ4ZuLZT7j_D>w2VC3I( zg6P)#-(2-QM4fJ#AM$|JUAzelczt?E= zrHmx+iGNzgSGr+>gaxue@;m+=Idbx+##mi-;Tpwp@TQkVN0s4q7L*h>)e`cb7nesf zzrnj!w0Brt2Oi75j7D?2qauOWr^4wVO5AcB#ji`=V02K|Jo~onWDbH(ugDlz9wvQj_Ms`gj7Su5VkrEE99tS4yoVqT8Gg)u6 zhmZP?&LhG6<>bCQ5Yv9EI`?Y4tnjh)Kc`2ygA-NFpv8*BBhBu)+q!Z2G;xrrdJTOV zY+O0r)QLAuh?lwrhbrdLsqOM#Ds<%OHQqJggqmV`2$$-cpsi->LZwy>5p`x zap`2XW$@BBsz~~fTYu?WLOS&TPfAAim$XrDm}&O#x_^Gn?J9BT3#RH@C~LLEyXQYM z9jZiB5i>5b!_LoPRfxq`P`*XrqyQqPLUCeaTx|S6(PaKj2EHlSwe4Lk`2(TM<7 zo|PQ9A_azu+o{nJIxunO*9|c_Tb)e}W*Wz^;3x|0LwL8#hW(6?^gJN)ADhb0A86i% z-3dZ~^J>G_C^aFA{f*89L|WujU8gD;In_1IkQqZ1c`@cIIxRfI;d-|>s>L{2z zZ-ED0Dy@`k&F&c@dzEHHmT?esx}H8g^I+pm9nM;L4pXqN>xLJ$a^DtNGbuYcSP!+l z^Fv`#keM)wyS-)z0g%4$0VV!~pR>xC+OS0L88`}s?ndksG1A#|P7G-krTy~k&+43Y zq+fFlfxQR!tPfB}qJD`$ys`TaFMP2xz~eJ%ApRufB{@L3h}U9eh;sW z50>#e~{UL^wPr`2G<=i_riiz>Svi0FS;X zQiMB4MmXAH<%Cs?k%Y~D>cS!hqW4moy=z2&SQ-&F5#o!eLurA-_1PhAc83H3O+z8b z;4EeLl;=wDQXzt!dB=>;qk0|y0c&3_-jD{g`PUYjxfWTRZ*>f6XkZ8)TlnN@0Brdn z00O^QMX?5umMpM5pG1dIHMZf{6c_ZIn!uDeGc0l2YEb{ zS$K)S+zR+Xw-avkW{_O|*J3I0KSaj2l0lT*e~k#|YW0rF%8la>Kje#ovlE!ELNVjC zbBe$@i0gi1PGId3I1?{6(2b`)iraf5!~f^mb#o_ckqe8B_u^->1#77=^4Kh$^*KDz zZxaPK@aY~gI(DHfy&U|)nVjdTWJM+Xa#)HdKel#4;k+j#lp(S671rjR{Q1mOy3l?< z-e%Ce6L4b*TBIVObg?eUP3XjbPjK6Ox+4R)`g*M;Y|NS^Tv}77piNQSWr(w|WkGz+ zM7x!%ykM+R2X%P=mb+$qmD5%m#nht4b++fd486Yj{BCd9AdkE!t(4%EqYXDqRiAbh zI)l->Z9U?Q+mvg3c2RIeBo8rVyV3|PQ}x*r=W}Dt#__hYH*U;sU{q#^t%)c+vF7~O zgK%B(spUU`$pZ1|Io{eWYBnssg4A)OD9u}ozdwE77|WQ@7u{jeK~3>#lD=D5b^4+6 zEMSNwDN?BPB$arAMn>Q?rB_FB<&ymSR;1lf zM^RrT?{7m8JOzDR;GE+Cf$~VYH)2uSF&?I%Gn-31rghn8oH4iw-H71Q34U4&vXt4P zuU#?hC`JUT)Q!9kYORl$N$lYx11DVtq78zA{utrFeTevUPVFW+~0B0 z&4E1{tU9}C{pxRfUOCxHq_y~bpWC!^>t)qxZ$XhCnY*-(NAgI)M4x`g$(yYjkXj)y z*T&~;$e|pBQ)RnQfl}rW-Qd`B#>A^PjBMys20UokzQ6akfvsF@*^q>)iVM&78Wc;f zTp@ERL>un@vEhlUX{c34SdS0*SQ!*ghTMjt%r}}*abTZ&2FveEY%UaYxI%T@hTTZq zuvoHIpboOuCDeoE$Mz3DebJWWZu~_`aS0(Bv$%nj06~U-lw#GPi0B!PjQ~Zkh3JeD zP#HFklD|M@9{BCFyvsl3;I+)AJG7`8l09fGXXlAq_DfArPmaXCI{P#>6jg&xJsEPx zrx9MJBC4HMBZG%!B{GM>-_rv0)2vFbTxYf|BB(fgN-B0TdG?6q#%N|Q*W~jPfI;#O zdes%KaG`6A{R$LP(vb+k9eF%kXTc~|5obJTcpds3ZhF%z2%!n!zNAXgJA`19`whvO zJ3J+#PM0s?!&48xoF9yWMN74c`nA_EIZ2{DRyp9RL3XMjv4an0G%eQJ-X3GHIE@}H zl|)o8juIY7tXBt12vszcisI(wM*V@P zoisW>In^<~RD>PlWMS+%^^$mJ?kR?hS2&xwPhmF6>bTCnX(-VE$sh-iLr@uX?#6B7 zy9$|+nby!0XR1tI%j?OE7HP>98@u^xrhzOc=&d_9acpiQZp?~x*z}zhlZ?ZFt+@(; zOHU{YB~Yt)r}XFrPyW!bmDkkNd$yjaLmldA>P#DG(Utjb3F^szdWnCWA%Ld3ckx(%y9jt(yDp68TviX=st>BWEmNkn87`x@D@<;un&29{yOErjC07@G(C z8~6cY<9f86(8Nn;F$DMn&B;j$(NdQ=6Tyffg1EvOx%hVS;^Um~IblEuBfToPc+WxK zD4WA=r+4vdAtZ`q8Fz^7U>fP2GR_4toZH5kaVh!6@)S><$U6-#0D=8?78waM7Z241 ztRwuUYqa_?rDngrGD_`z0~*(WUhKxf{zW`1q-gD*u9j;wLS`9#e!aiocCdZyNUm3J zQwqj#g<|%7zh^uTq}YCFt}ea(rSy-c6Y>4>M_B>?B)gm&+R6vjr3p0Z0kKD5kWTe)Y`HsfB`JHnWC&J&vnrU~>aGsK5r(Bjsg!cm# z?CwU`+vMS)n&t-Vtk8>m4F{>XV z`ByU6f|$V2tR1?_5_M8XnT3r;J+!IcKo>pK_3*lhPYqnf+g~i~8qpayMEh>r^)?uC#+IM!Q$V9Fv?+a$9NYn zPf+$&a@C##2?l)3{gz|^H5Zp|zhd4gd|Ik|hcZ{sIKL#XS|e+vDfOUX`=u z*Y_ijSdN@JjOHFZX1+`)Jaj5t!WmQr;)h^!>gs8AcPvhSuEGQ% z9Nrbi#2)zj^FEBXQ1pE(FQfTz+A_{c=8uWUn3{S^Z03!s@O!8qAPNdqFa|~fQxZm) zzW{}m57Cc0cS7fyuSZyjk`JJ|gmamh!5N_V@NuQ0tM;KdwG#*4b^{_S4Dev3=GibR z%=%G}O^y84uvy)Cc&QDDrW;F>Pu7mS#?g9EqeAw7Tg?|fTr$zv5A#XHQ4n7997^Th zK&=e%{7rC@cd;U9cayMaklr0{w4E!jn094^MFc%}Ocv!jZG4(5@r74S_$>%V*E}EC z${S!y6uQ|a`%!%mD4%M0x3P;}xD*(;kN3;s=HJI=(V5iD^K+ ziCF>j5*($aIu|?r+F?fZJ?k1+>L=EofyO5@3i(f@awI~h@fPPy7=xPrg zJNjp43Y@@JS=y^pq5QK=wBi-n&CGW_tSpz?V+3uoHVEW)WD2!vSYdaHn&_2?WX|SiusT1RbljHYly3xXC=#4@cup_M@bE}*}lKlc3ACjFSw39T(ggRyf z2MnfK)5{FgFFvey`?^&a+?35G;r&J0lX+zoz>@CYLN<b0ci)#pV z`Gf|oGyj;!H{5N9IR@fAM=N=ZH%C`9C5VL8<9TeuM+F0q0Mqm!gb#{@YU48 zmK_y}+@&{-FixQVScG?fGqbg`?0blyU5ix%%Y-I?qF4FYqA&MXvXcB1zC>!7E=t61 zvMU3Z!CDEc56$%`^-(knoZZs8=X<5(B^6&mPmA^zGJ-f>|8e?12cw0gjbrA>l)%>5 z&fvYklY+QSI`a66@5vJOAr}B7}f0ojN}1 z&vTe4MVyml2xj{thVHJD9%O+P9XB@^*zT5CQoq$gAj}UT9nxMRz5oOip|oK`1wiMYiB}v9L4XTy zEBnV~-WLUzil%7`G^g!Nh2HJ@g*010&lQQEch8&h01^!dtlvCu#t$i}Ev9Oz9zf`$|&Y@VTskwbLq?%^L^=>TQeGL}AasEFq5291m z$@SD5D}pW;CkQ2l)P+s75NU;KAZ4ysTC=Ke;(^@GvIO)OPq!Rs=)9l(%<{s^%ID{o zYVCz*2W0u>YGJkOV!dO;1aFoF^TNm!xUYlf?Wk2PRK0d zg@@)(pKeaDUT^Ma?AhkHEv5tDF*+~xRHw7(GrB`TJMvoKkY8F{o@Ra`4i!@x>|_ss z6NJMB&tM(=cDcbE2TFBfjSfB{^+@7t3Rle7W%YeB3XlD0tbc3voQ*uWR%W>CL31+Y zoB1`y#I@;-x-n@Z7Oa;7#!IXGUer&wXUFH(9{6R1Dr;8EQ^t%IpOTfOG-cdL{nnn0 z@v%@3$^E#H056~$SyykgQfFvg+9td_S+~-;JjJ31-N`uGAI}L=yTG5aWI)D^z%qw8 zcF|ATtnkzX^8gg^O6ij%R9 zw4`rf1X@V6m+;v%M+OEN!|3ia5vZ_QDFnBH##9M7Kw#ASgPp)*5UvoM?kjxh7Ff`E zyaW$xqbCH)G`R%Tp?w^)$*u=b7k2FH!F zH6B-BrCi-086Y&01-dv|Oy@9J<%m^>Yv}b|k`deI621?P7RfS{uGqmKhL?c#sW;?m z=AU`{(ICe}EybK*%=kTriBbj)tW@(P*Q^z1a5EKJ0d3Mt`!H&7oa`>Ny3r&s@J6{y z&O-zrmzZv|n_S>KP>&qfu{MSr=R)r>4M#k(joSev--llgiviB+4%d&fva6r>3s^~f zgm3=TWkXc^<9uZTFL6&dj6u0*Ajc5}1@jJq$3qkWZiBJ8Cm2+M+!Y3MBqy&RWy+V! zS92MU;#1`=EN0Mks(|6uF$bLzGdQzo4~^hHcBjG2=Lw^fpidNe7$*-S{Hpt#6rV@F zv3v%H7lKdYqtN|G{ak=*5KYocBAFO^FUAc9A~z^8)$5cBHTLb_@)Jz~R@YUG-FeE) zn~DV(8%(j|kl~aDO*nMQnTpYK#%ovZOcaOfqdT^n_Vm zBG|pcwfy!Nb()^qF%BLN{S0>_0FCPddcSjbVG2O*DOelAh@q)kDT%HN6^55We<$9I z#Sn;Q678sg9vA>MPQ&`L#TUQPvT2(2u=5p(xjMjFL}74{^!AP1#n#3iPZPv)XaO_- zwO|6p+|kOwqsY>Wzp%FxzY+-BYX521bQ3yinqc?s%!j28c=~uCVVxr}KTO;~YneL? zqnAxsx!~7S%k3b70A7ti0Jua7glU123LC-?qEiId5__xUJ#G!uBKD?@JEb6Smbrw& z5mWbmk?%6r;-`yPwLNKo4Bo%^Kz94pA1pYMOz-g0D~Bd;&4cN69bMrC)13QZ1=`U1 zs}2!VjK+tSg7q!#vASF7^ovfS$I9Rw05HFS!!k z-;S(p5FXs^ocmtfQGU`ngJbO1k*X9Nn@S;y>~LPVwAt|f6xXod0BUCnf;CyD#UJ&? z0dWNrBo_R066tA?nEUemvyfu9ZD69!kVQATZqxzf0D~fSpa>oq&~!ORb`MBL+7J>z zaR7OUJU=PKiq&Ecyqvv#19w147dYxDZPV3Um{bI_8a&aiXz|{?CcXIqs!#qDbBw-K zFVG+Fx}-m_3)0;^`RziZ(l_pVgirk3w#>HB98}NOEuygF8y?BR`y5WoSbj#br_8yE z0ue3+c2WSZi8<9Zlx3Pf3M+bcVt&x-MjzIp!)ueW7K4JxE-=#M@yT_P*W&4LpSEf8 z`U@R040r=RC^KiKi=0&j<{hBCt6RO0M%F&fLqHh@K8FuYsb{|1xb(&(ppnhY-AI3_ zBx0kuK{!)yR;}H}7D$fMM)*cAZtWrq?(Z$WQOGL_@4^@dRG~-al#s6FM_*qJd->^% zTW{H$)lU;-c`^<{lzIRo?{$58gfQ2}Opt%Q}Q7S@?&G-9BB=4+u+n z6ycG`S9g!QU+>dtqx?pc(fdrA6sT28Y_OIgO?dGr8LZi|&s%3IHy!&eEsWOGgeb|O z6JL}gWh*2K%X&>g9_S8od03NLO@15|gc2t}Kz5yFM8H%?Ick2p9sy3rsQh z8|Lhj@sqy?Hf)7!yUeCT!>d$+C9NNa#VS4mQ94svgnzCBwG{~$WZoYEw z2NhiIC*gKF|H`felY=qK?{K=`_gyIbD#274G;hy%rwMEMLU|S%u-(q8A^7@sM#=RV z&%^mskQlealNs|aHiZlr?A59@wNyY+Cof*ebDBBp4EodDgE|049=;tbsblF7kL3$z zVG9332Y6;X2nq2Z|D3&f%&*cqhg-RHSioso+ax`A37Z=YAT6Sm$W*Rq9eI>4d_3y3 z;Y8$7D2U|yin)BM@mZVXIKS-D2z$w0SIKCXvyyF(+bKi@IAxMZiW;n|<&5O$eOqi= z3zN1UNqd&dQ5|?-cNP$tmd?tir$``EXqT*9n;~DYXSwkC0&7)#qFZ6gJIYbO`f&?7VbGz&yH2 z;WF&`HXB+6r(6b%1=wzj38;uR(5^M+x0U11wU4&@A7huqsfu|znmVlk5(+wMp zG9~3FNaqN&X0er~^SgY4`01Rp$Esijz4I`in>WW1dHL~ zTHncyX}+fq10<?=%XlA-Bg6)Dk)uqqUV zRWy3+mX9Q4jX|TITnnFi2Edjp{SE8yp=`2(?hH_p_s&3twI%9cBWVtlakJ`l>Ta1nYdqr+vU-tL3n)8^rw( zigo@CAgH*33ZO45V^+%XUN)YAsqXtdYh`!eiseT_cUI54z4>wxL0zK-+zj$^um$aI zP@Sc2KJFw|%tD#(Gv>m*?8nof^Xu2ETE<6Z_P|d+&V#)>Ftj8}d^vCc9UTyVek5lt`&Cv;@%rMmiw|30vuXZ0{L=S00R7Me2$dpK|EIk^a6&`;~_TZa8YaGR_SSr@r<5iOwFD&ifhNzl_(ZfZ4tQ;*L^ATn&x`O)n zTRrGE?r7ppyLc+yVVVu6A^YZ_=0bpx?%6*>oi5=Bt?#=bPNXjOnMxX=m(ZD3iO+WpDdBkS-_`>}>WIrTn-4f&jZP~oD_qJAx?ltYIQ=h}?xBNKM z2T}FV>lD6(h#s3;(DI&xEqMgkOODQdy!Nj;8aPbwni4WvK zGG?%@CuV;P=QaeMC8hT`6?Kz3Ml{_`DE0?6c# zyRyvZ;Sjjh#m} zd46fq9GBeA5vL}(%h}b4gd28=lripmhms`gCErJJ%s#_Wl@uKU{DEZy6EN10+D|+$ z`ApO!v-y>HJ5nD)3|AU8rnh?T_*Gne!olXB0=m3ZjUodF>KuAABI0b$ZvdBY#|X4$ zbPrd)2xKgV1!j^De`2_pbRyE4kH4~ z=HuvnQZz^|=y)7ygU$0sGH{mt*^+d8Q*Ge=g66B1OlRX?87sQe+7K$aXE@YU?}MZ6 zgQaRw8Zw2oR^v2Tv=Gy67EkbPp3lQzRPr1QjThjBj>|pIi0UhY55Rb`o-QBPTAlEH z0N9K`_jy_u{0GBGw5PRX>&O%Mnekw)+*193JmicTFO!H)FNP*H?{q*|nwyC_KS}4@N^y10+;~F!MiXNYLMMVqgfh?H^UmFy z@+|-dhgE&(;xV{e@^}PFEzY^QI#-=+Iv&-%jZB#M89QEn9buT2&YhhxaZk?iy%xT{ z$K(_>d;$oWG*64+%UG&3=171&mk9_2w=beA${(EMm7paR?3GZ*cVOm2;U~OR&rEdo z@91T7#zF8{v54arlm{DFf~?vR>6o1S4Ma^87Z?xkjob9pkY*%kA>xDj#y=K+n8*F! zu&%k(X*M!Q_1sa+9#YXjFeJ5X!WBTLECZ$OH96EIk}0oN?Z|ljzr{Ab8YpLxevwr^ z?OL7{GVvHtt~jvlwA=Z-5orxd6{5m1%#$Hv%$djQDbWiJwNzUW000IN9vZYKl@+hD z9&|@S*JuG`LO^rWm$dqTzn{K>j%u5rjMl5ly(^&4&3ecJ00vlQa&)0jBfKLJ5DQxW zp;WM*0gijzOwgCa^n_dJj00Q=5M)3TWvpbr8fMc6vMH9v1b3}s->4A4(#o@!yxt+F_LON0{^u#a zT`5}-Xi^A^Z%p&dc1cjICuKUlCzii>bl%aJHa!fl zje)0zvP$0mjLH#17TF0*qdSPqa5;!V)h!IALO~aNmwlKE)erBEoeC4JSaMk7mDY*yJ^_5ZlF)3Q%vb1L2~yy-0$=1_SE zDHLTEbQps-b7Bf;@|(vY2~sRio6MjL(*rMyE0mZgo;gn&I>gIsysFHBv@g&Lw>=UR z!6KHEeyP=WRmaXWtLIG7(*RuJS(a5Fv->Gd_76u-7PeiFkb;sd9@^~wTcB7Rbw$U) zRCj)?3K8=k`|wnG!J!O0;Lr85T%84*p@Z zeid#L(u#u|#f)Fb@CixL(;^{J-*h_H((9)lEJ|d)mV~;W(c(9OZt`o_ zoUNO49P(I0FS08^ZW|HZKFmH}b*G!oz(DbXD$o;LKDiv7;N9fYzxL5b_2u z-GWPwyy1qv7sDEllDJ)T4Zx(yK1eNi{xbRT)8d;iiq|cTnFWpHX|H z8BWAc$;kr|Qg*mH^ZR&@US*VecpKMEQ z0>0lXKLNU0M;yLs6yo$z6rkao?W3vzkfPFQ?j8j3TGP3dCY_l6w72CM+tE>Jn+dzQ z7i2&$R_S+j*ZA@8OTf61KN?#0o#u0Z^u7y0-9jG+TTa&UY{tWs%=RF*`|~k!!2?b~ z=&5n@0DBze%kAc!c2k6qz)$ioO8H~_b#$*I>Sn|pL7t7g)wKDPg~B(ztte*$Oo-bZ zNLg-7=4g~Wt0X^y{0I+hTiZM##Q;T{JBaw~~YJf^Ho^1?R*oHHt{Yu+NeWXKPSQK>t8> z1>xo3W_)_2C6T%Gw1u&J;Tx~Zy_A2QVMr9hvhWX`Em7S$_BKr@XP`44Dt99yO+{HM zEu}8}&>3d2YM6MM<&oiVV`ID(WT+Mh5x%}%OUsX7+F&cQ;-id?;G$rCJ9P3SDz&rD ztiE$XzZi|2FJ@z!-r$eF$oW0Fw(BcCPT)!2fnMnpTVQ5jR9pVD4-fFLf_YG^<5Yp}^1rDJB4nbI5nE zsIvq{xiWDI`Nf#5YXX3NaSAYoRh68Wp%03HVUGW6BbL9bQIW(_{9(K|O380bJoWT|>KXuRTJi?*_}(KhXipRG;8@54{_18HApj&8zyy$|mV_Mkw6mYKM? zw$fuyX;SK(z}dV#^ons|BDeeqt5il7y2*2$yR`qBq8h02TU|m?rtZJZBu5T+&COmh zA*1x>&|Sfi6t_0o%S`d$yoHbPgRtmqj^OePP=1U#X5{` zZGkX(%*s)K%7U3!PUss0N$u9k=Mz0}H>sz5igEXe!V`>~o)IN$0BveJELv(1v9yul zl%?8HswytSrYadiVC0_n1xWQH_#!KT+w_NOZ=UB(t^jgHuWZnyEK6Xj(gp#nF9$H?dM02(v1*{ECm#AO>?;`b#iNZ*fk0|KN}*Di$O_*b-a@F zO{)0H##+7h;>;`_X5L{a=0?qO_kRk9KxG)Lg4Y}$d&1wcy?Rnt3Hp1rNtNF{nd`$Y zJjz0N_MfIK2ByWtbQwr80k!R^Ap#8N4G$wu_4}tR9k`GFG(a4GgDN$0)ImByUV#`F~S^Bk4P#iMlNoOwKqgNwGPC9JdlxP0}x$o zRL`=G0<*yzNTi+-z)f1JP%lTosx7B=>R?Saf2q*#qu(HZW0ini|B&oCYDj7#Pq-gr zUmj2}A#`STAW&PcC2!qJzPy7$2$MsMJem=sLr6+q{R5GxSsgV{c)99&1$OI>yS_Uw zxWyy8#t$LKD6?WqcZMdmO$_abIjZLOpSvxj_WN)Iddk#9 zibB+W4Cf{MNsqMBTR3W*czRYFO(&YFF8iPHK@>l)J%ClJ4DQl?O$_XLbxt-ICVCJYu1^VRF+--Gs3vK4$LBnTrh`2@ z>dB9wTmBT=xWA?CQ~4IeIB(EQt1($kQzFSVUhQA%mj6socvUEe9^F?JfmZy3_=qJz zs_}J9ju^TJX7^MH!|o9oz90YbAS<_0bp!wYT8c5DkdZ4(Gco(I8-*}buaQ!c5 zK2v05 zF+7fOR=}v4sp6E?jp|ip?1Uw!08v@`?sr=ig0MtAUk_wo_5J4g z3Cf1L@pJyyj1z}8-2HgAX($0R-GM^eQn`IaN9PbfkoTnaMmi7nQ^)IYN$8UAgaA`VL0vpepT7^_pSqGxzGo^hr=|= z^X$fWuNwvJPs4z!a+Y^AMdWrp8 zR6C@dmB-D69%k+NXdDz;VO<>*I&dS@&o;%WpH7;tTu*u8%TwjMp% z3x6Bcq)O_W=^3*01Pp$<8;K-)&h0a9K!Oxn<|Y(Vrf~4002$DNh6?d6*kAr1jie2vv9_E z!1ovSFonW0;Qp(&4(-!FOk{^Su8K34ZaX`JD1PEIiY6OI?~)8A+?pjs00u*B5KPjI zK`jFEht0(kU~1)}XNLMZlr(cC27tz)-QS*<_LbA>3VR*1?wMc7j)Uye4 z>Ik;SJaLlEk6!ga$S%Joj@fQ5PR|Npybd+q0I@B!q|=-~aXp1+QYn<{LnG5a<|Q`0 zm3@Crh5{l4gaUjnZU|OCdM&Ts+yb5|Bo=i-K`&O60UUS{q!&peA*0>yitAy-rmvuc z8ECGylrG<2nASi+d>$T1A1P2_qr7j4sIn;6QsClk+DBMwD!ZHLI%yMKFv)mFG5yDv z1oOm!K>*YQL5&IPH+g=uQUJc>#?p*y`Bjl!>94OvnEG4>dhEjiD39;gAq-*?y~VZltu|DE4G>^0%yxA6M5$S z$PRMl+jlchHziSaom|OE)65&iP52WaT#B`YAvxbZBbJqx(gOmXS!j9HN5J@|VB zo()uv*=z80PFU#w#a{+5^k(G~P*xI3r2TG0T$0>9-j~5{kh-}8>tRvQn6p1{OZd{6 zj^j>vOdYS8WQkP=@AncN`qMaSUt0GVly-;#ZsQ)?0fxNJ|7+D0$)WXb}`~@G>bTyENE%c`J zVVM4nC*))A&la33XhK5DRydGmK&@GvC|9~2WE# zlCFI-W5eglJ%42fxz~@^w(9qrmx!6(_}45QsJ~P3#GUBPm;HMpj|Y}fQ(ZXG=S0Wv zhAzk?nJ@dBXV-tmy+s>9z_+&Tke%b7H(G$VwF74{{dP--Vhh($KiF8#J(thyo=~0^ zoycEwI3TiRjiOj_07a-K$#qnf17dk5Ohz+nMG6m=1Y4SF#iW(3(G4jJ+l<@IJEv^T zD&tBq*RN#8zIaTlr#(qYR*OzLtn@IY!#u=t`5;Nbc`#;iEAr>Pl9p# zzX;1HDnEy!;7+X;k~0lBd8E~ZM_7ICjF~qKVe=$9_ba%*Qc+HHBa+*(Ux+$OHVqb2 zhk?nym@MpU*ivFkNh;(Z@lC$I>L7YAd5QEM6Z#zK-iijW(s9R9dc#IE=BRn(VuU~< zei#Dx-y;C7_)oPxXK#=@bDKLpEZ5<(FLm7Q@6Z3&SC)#< z1-@2|anVXKK!X0DSScr~ZC&^4Gi+d9bAHjx%;6Zziu_dP}_s8LG zXhtPSi?}dWs==7+9_IL}#ek5MOTy_>g;u+s%#Ug+6>O^L(g zL=;?CWVLO=;rhqG?Ei&(nb$=?n&yx}WGiji!sqhOe~>t~S~mumM%KA3={XH8*GIN<6S%|c#o?hj1;`{8h)*S>Eio>1gvW+jYTrIM2?(F zF|ZRsVg2$80iBBFbDRa3LI*MQoPq;SzGmu+X9m$g{Mjq<#|_##@LUBr^fQQtzu*7S z&X;hxxQ4HZhhZ!#L3Gf8-EC;%^w0x}7h;?S2k_pSBO%y{l>6>SKP!e|Yi z*Zyjlk|5M8_L8JeX?E@1LM;Ro)X zTwdZk%MwfkH2!lYr=7grJvm{+M|3J?F{AW*;tpx<(ms#L(lnn<{QzZtLJC?xK|JIBJTf<^_X6FFMakT#G!1?=b!JH^ze zS7#4tCzn8%$VY+1@tkmCJs3xbIr|}O^K3lJNKye2SSr|0EDFhaxuQ?dI!dMvl}xS= zNq(2?60gv|BlkFH+%0-GQrID3dF@P8P@7zKlfS7>J7#p)K%L_A<2hJu{b90JrvRfZ z>*5Sr3|4@8Di=F85?RCHzekDb%^@t`DzOkMw?+}N;QKOc(>6s}=eA@#joDafuN$bR zfyU0TGvpi4#=4a_(^6)m8LJNO_)A_{@ss0)gpY!Er)T+6md2E4#FC??8!NZQ;M4^q zELz_U$!CLGr8B*(mUU_-c!JxS3h~RcU$qODp}qsZ?kco)xxe>M-@ISX*QFZAL145Z zCC8?SdQYj};1wumXPM0!;)!ptZ=NbV>gLl=W^zsHXl0&XB34^}dMnPHSP1EhIa)Rn zNDzZ9*cjk(?wugA8%InjvutPtW~dX|3v7s$t9|^&`ph&rwvIUc?C+HKE1$(Hma6{0 z79wd!Qe6}^TD5|dWLzjnqWtX2eFonCUO)Bt9>eHTcJI=X1_HKKM&7R%(vyPnOX4e< z6ZTEur=wZoR)=aJ^oC3NLlF!W>D?n=^*0faWFDk&Tr0ema9}T9f5TCve5vDAb%C&j z4IH-<52RizsyrH5s94QtC5_CyO!2E>T_*6?bTULOG!+QK{q_2S2uHaHKk~M+03_fh z^r5b(Q zBX0S8u5Lorn?WWe#pV#_UV_e^hBjiA}wvPaIFKHnvp{xhLR~Jj-MnOn%^d8 z?H$yC&z!9n4W(8ZpulIjnQ4L?Kip&r2m&u^12?x8NbHHr`hlTZ36Bb|Yp8y_p-Z7$=S+(^7eYF};TRZ8{w)Fb={Q zppd5YZc{y#=BaRsuto>7Mif-z{*@_Q!JAiqT3?jSZ_&A-3+1@86N}({4vdq_ zAEdxN!T9+d@CahbidOZfPYEae<(wusR27nzkXnhvSe;O2yoYW%QBm&sGJFdFz{AKO z)ttAs(mQQ;qoFd7vY}<;{AtAQblpG(;CAiT(6H2P4Fq_|Id7I@;lMyc^tIOC3MhbS zDT=vO%7~6f@&v4&V3+@>)Q=3=7&5lm(G0bSiviS8VyWZ8=$p}Fo%=TG8|>aUr$Uwl0oI~f`h%G^EQM$98Sn)-NQu*-LJ>*?C*z|*bG!9Vt}-%KTNL{F0-@r+i9(Q7%F^h? zTidtXnm_p$70IULYPE1y=68rce z&rFFu2)9hWs(Vbi#nsK?)!j}<)ObBs1R`zwN};iVBnN`YI%3SW(;o;C?}`LF+rS9U zg(Ii+r+u4UaobNaNiA;X`=49pW(^-P>dS4*;~bf{%)Y3_c{~&f@;J%Z>mH)|Wb2B= z-*Tiz3DmaU#oy4DA+su2JQAJF=5*6#%ve0*WL$q^9~~Q6y;vwb6=c<6RW?Y3#VZ{# z1SK093Qk#BTTaI=msMv2Uwk{^>>qwB_0TJtT`qa7fbEpHw6`MVrbK`^u0Z3rVL9vG z!JF|V#QAgiyEFryU}9)<+R!D4o}3Zsk=EW9Kl_}^U}LpmLzC1 zchzL0O8`OXzX>#tCjStch|m#^JMaoiDg~5SnC;7Y*UR97j*qef2Se$euN22pc>233NtBIgfy^t-zIBG~3E0?Z`tW|v6NSka z?~%@3B1WI$b)?w@)mtW5mvTGgLa>E?VtY?kg)rjuf_;!94-U5{MpvLuFQp)`*dvkZ zye9>9-cnySR?h+4&}hMwn;fz}Tl8G5J`>qTgZi=gH?LcpCe=N4fNWT~pk}q7#sJ`> z$>CpF;_(9_?B@9!4xE{|;(l{lD7G8eXflqsg)Ies+M`Tp5{oW1-{VOGbpUT!o=EMel?_*fG#D(sH&pJWxhJY52Q1soj78WwVG2f30+F}L9ZocWYz zGYoS`X1AOqmKV>O)b0bycBks?$Edrnrzo|h`XT;i*m2Z@{>o|@bsno$dFmPFLPf;a z_N+bh-B>!CeiO+$P|`M2tvoqB5wxj*?n!HlxcfQum~5TMgB1M@&*N><+zpT$g0v0M zoJ(>Co(efl96YfGZNLS~rs$M2pCHEl>63ntMf?e8`2+mbOh>K&UUPq=k!ZMQwzPvU z49PgRoUvAUrR$c@;ZY_|md^EUO6K|^)874!yI;6IV+~3hsXs0dmb5(G&aOiJ4}Tg?N{0#n<2-&f0peOeO0nJ9TEBI&Usik>hj z>KhT{lwRvMmiMCig+v-dEYz-=vVHkcD!lGfFdMX|iNv{4cy3LzNv#4m8#9nLZ-o;> ziqiR`ijm4+%c?ncn2XR7j)7H6-|;{P!ZC7%)=bfR>Xg0RghW zwhauCf++=;O3eQ{5ulzE^7ntv4!gJYE$&r>tZ3^?>~L+s?M02>Nq7O(VTV1xPVr-v zdeb-wz27H`q0wt<^WFt)^oH5GFWQa#2zdNIc=-%-_|AFf;u^!?;HxgXHsZnMpW!iE z(qr-LyUC2X;jK=px%+u#x3O@dmXwd%U6%)u4D*k`=qaEUj}6V*1D3ld9nR7opwHzF zqQ>^Z?N7*8A@3Lr{PXa0{oJ~HUtOhdAiKNMr@c3#${83D>cb}T@Yh_4W8>Cml~R_y z+uIl!Gas>3`kwHLXrTNrH49m>$U?XLM~ACeP*vXJyl#!1*+4N;Iv$V*pUopgikKn-oyl z&`QK)*typ1psV=<)owJ3YRrnHKQ_41!o)2&g9C-N$vubpz9|l1_=*=}H5bG>{`+?u zlP0UKsjX`u7m2KBR)LYSBH2T1ey+jEKc^#o48`1e9P)Zi!+zpv;`FF|MA(RP^EE{2 zN2PR%N8aANY=r9J2o<>%HM91#YiPBn9siR+`7M}AO?DV-@iMI0-qUdRtahItTU$2h zx=Jm}phR0iN3ptC-Z^VCHw{(wBGxv5<;ZN%9SIv|Z~ExbLJzmMq9<7BvgeEQhIaLr0;xFie!7bFu_|G95=$u;~B-HxeEi$~7Up2B=6q zrw=KUL$mb^SnKLqI(sw)jmOZQ^vUsXe_6n^$}8dbdT?}KqXzyqDOaUis_viVn2vu_ z*Q*IvHR%39Kmxw$b%9pQO$5vNE5eXlhD1vr01!C^y1~+1NQ=u7=B4`=x7UkxkUce( z^jM^_Lmh}0rv(XFaTWc5w)BJfQUNj)=|$-!$@5T8JDanE9k-EEEieA{x}MT5gxr2=cUjuVt^WL7p6stvNS+innKI^I8HQ&0d=ue5ohPg z?woOZf|S6K5MfRD?d_oME`z;-CN=7PD0~r5#WHs3kS4y$+*H>-#v#avh zbsohqaGxG#Z`oliMmI&|cDCNI{tT8mWF$;Q{J0ImucHxig}!0^d;4$LudFA*-PPhB zyth{WU9ddmdsBw2#(8^!p)3 zP2(!-RJ&G3QTKb<0W>|SP_bo*F&*;P%Vt@J-=ap+bSXG~%&=;DbokzM`4KMFxO&R2 zm$;JxMp#ae?)im01rdJq2(o-WV)yJ-rh$)ez+a?7Pj2*l7s2D&lp)6fgO7MT7%+bY z7C<}JzT7!&rh>lsEOVEMD+$q3(dh>&x0#_3B(@RS z#JW@+IbQ`@4U{BW?y*u|Uh#{paup$)H7G(tE)fX|FuG$hIU~Z4Yf5EV56UijguI#x z&9c;>jhXGv>+oHas*9655b-}o2$NbxP^+tsb_oVEtW=9Vg|7QJouL(Er5V4%mIspo zbzl7be!GDcB>Qt_7u+Bz4hS@iQZ5+nx#H5lo36~KJrfVr=1AGxV0vnR$3B}ahWk5; z`2~@wj8A(C9b|fLk^dBYenJ(Bb!6cRhva}NOw#Q&j~#b{85#qs-p++D7Fnh2pYV9+J%%>SHWigeW zO|dYCYbBF5JkOR%NKQ&4uU)Bo$m6OEUrHJloETADk11M?l4Z=#&t=K@xmRk2-R!H-Z zVvVhhZ_3hqE zL{kmdp5R_St6duhof$N3EO?jF{y z5duY}vlB1_rX%W=Bz+qzjKr;^kF=WZdX%3$Y;I1u*GRCPkzJb?MY1V?F z$^jzh>TNOBZr`EcfIAC?2&*FtXh7m3Qu(YG0V{?xLHiN;AP~yd^}O^Pw3>fP2OX!V z!JuI51{}Ec-=m<|e5kLT1=0k*;Y@&L0CjNB4ucZfm>m=>R$xGTr|Un+>g`RdvTbV6h_%I5PJ z+%82uK{5s@2V89iS^C3*6qc_s#o!=2>y7aC2tL(FaKHEmz}-FUQ~O$#C_~0`0yX=t z)w_ViJ(D|xh4snXS!dB)Mp=qw$E>iq-VvYx5eH9!1#OpUJc$9s57qcP=gAzM=VU#~ zzYXJJ(2!~WK>V`WFA{JX$`V9{P33JBI3U2q6;5HXtpQ z{#&_j4SH(g(XafCujqEc&}qv4q$5>M+m)t(l#=7?8tj#M*};>{$ZA?6E7gRq9$Hod z7M_fyeX?hr0N>MF_O_%HQ7emJR@nGzMbz}rkCKYj;9AMwl!`ij&QLxXi&+8aNDtr_ zjy!jH-Bd(DpI2>KFxSx>fv)(tV;-WseE?%V*Y<6tG?pO#nlp-!5{9r z{6|u)POkmFDm}DKPSOScp_Dtex~C|J_}&ky+8IdK0OY(7q#E9%ZWWGMBEli2C*Xc` zr2tXtO&&m{vFhnk)tp{zIZF)|O6?rWJnKQ!^Q5M;>Evn3dN24M&tHFePPr&N#2wU% zw!to{IURXO;`J~`wB^kQ`?^fc>3BtpvL0`ty3#hf&Xz>q37CZ5R5}r&M&|s0QhOl9 z$QeAr7&(!@3l&X(wyu}_#h9t+F@No$LlezxBD-XT9tX16%urgDuRu6Z^xp2cUcw&` z1zi6ho{EmQPNk~>9RTetx3j_spWQ5hf8RWR?tX@v8Tr&QI5a?kesXmmIjVC*0E}*0 zn*$N!q(7YIg&rUOJ8)j}bS*|Y*C#&z+0INrl+d6XzBfk-*3y`?6t5jrB2rU6BFhf@ zBEAi5X)fYlL25ji)pay_<%OnvjS8kwcZ)QoSw?G$uW|R4!UoC!4#aA1In^c5k^M(s#2|Dz+<&5;pk}>im`gfbZLXTJ-BdSLBPz4ynm|+bl~WN^O+gN>+M=}YNYDYdanr+{u0=?8YK~l zmI&&FjxPrfcJh_}yin73#4)eDMt{{(&bMENlL<30RLFnd<0at~(~vcHXQK>r{+BMy zMH&pzp|ytI-du+n(wlvxz`n+!Be2Q10g2n-Ev)6w5_CW_Fv~MyO0+qV6)vyR0*XdI zp;rH>!$3O1aQwmp=S<&}?#%?+i{!I9$`YVtaB<9=UsV=fSDv(|!%|1=qx!}$ldioT z*~Nwc&;v%8%0_!J+sec0)PbouV$|Nq)}JXPryoGZ!5gqEbzICm0kPHX(DLV(wM7|VmoQ?rGj6}MUp*&QYjuODbv;$UI*Kd zc5D)n^@*yQ%e90OM~O^r7Tsu2C6vMbhj3PjNgp&5gW8n(qAg-tSrbx87rmB!3|JBm zn$DWL^apu~rd1PLZ$IFVJ8F@ZqlD45{>e<@YL^QsjG@i^KDl;`S+gJTd#zU_TKB!0iXGN*?qnYwT*ie!#D>~^^Q6r?+Ks(2?`s0Rx zRnPV%Ah+hiZ{YJ895nmq&Q>E-(5nuTjaO#G^+#xkpF4(GLK@Dny~Ax!Gy{8V88p+k z2R5-0@Sw2R1-c>z=z1UbU`MLaM>>x(0eWCi^;S5g$*5S;QqO-OMqGv|Yq0$j0LIw( zn9cXwnu+P!$34CQZiI8F#LB7XY@Y*>NRKL?+gXZ;Z0y)mV~50%24cU`J{}#!OTpSx zrBO%-3)_ci00k>F3KIWt>Y0_>Ddi$$bE?Loqg^9cHLp$=jf3JBd&ARhkNV>4k2&%r zWS#3N&AwM<`}0@z=VPSF{iCD~Unyha zK5S!L>7j5~A%aD8XaOxT8V#HjUQX2=TJF-W)fmT*>tS?f+l(hSjR+5H++sulkav&9 zAJ3}oX9m>do(Ac!8yb6k^<=zU(1dO6d?q4Tjr$EroTgDbtL4PH626#VOz86^u>r6Cx(9df-2y<+VhQUoAf!SKIHr1hX)cJbV;DjysB#fYH|-prarc>8 zTPh)mk!Q}esQf>I%lg8=%m>UIgz;`ayitVGDXW3eem+>ys*{K^>-{a?qQPQgnraHI2DcGH_XJfzltomq zDD$0Y8K|+9Yka8O_I{6Z_+A((a0WE*estV(M|PTYHx{Hj@+-Ny$_f#tj77a#5K@UX z`I}^iVynorR7*GKJ9TKl?x88lI`FMis&&^FbBQqgFAU>(TbF2d%@T)v1jA%Vw!;1c z#zNXCsI&pq-MB`9?z=B*{|&(b^la`YNzDSdk(e51aPn|DMaIpCJ{09{-0}4Bv%vYa zrCFOEwwQ2rX^X!!`)tTlv^swSsO#22?w}p9xV(lR^~}KuZ$&BIQpO=Sbre)4q1}gIaNuC0V*90 zVo6Xq&~%p_0LSI53y5bnQ}lf=$2%?#3DCyPJZx%MJ&(sAHnLI=YryS3+sZDI8IK-dC(C3E=Tr3c3bxO2A9bfd z1Kn4S!o1ns=$Rtiq9air`B)@NrQHp}IU6Obsfo+t%HFPjq&zsyJt1M|^R&jO?4Zc3 z+U2h_Qy(LjKn=tC2i?&YC>_H&E@b|+mTeB<$AKPoY3tS$SP_w`BtGfr(p#@ZVSiCv zHE;FlyC5oveZ3lzxBFkdxvb7ZF3bJ3fs@a9-MX^1SOUEm&g5UqZ5kIzjdu^Hf!pC7 z^ev5bc>ZQX7}lG1XdWM$Ggnc-8nxbm`j5|H***Nje&`2hQqfi@AHzACt}ODsgS0m4M7qB(aO!e0G&-4myCsa58 zax!LfW_Ym+;|A>yd7zqLY`^>j@CZ95IpFVXiw|)R+#oXDm5JRoa$etO;;iY_qy!@r zRBy6a(htTcVepk(jf}NSe-v-GRp{!gLplxvZb5`g;YmlIj&BA=6rPfk!uCU-bF$E-MsjiINjcxBjGdK+!~{=q{HFLR+~p&h z@^~g&zIMOB!ZmMBmm2$OL7DM`C$rHWo&Qt=<$Iya0G)UCVSNl?0*=zF`4U4So3F2y zWi!nwT@K{3wV&Jb;f(hx^(tH6_XpkJ2P1w;%4zml##lDG@^TT`6~xOTjR{@(Qc|#{ z#}9{U{qjoGppSdkxG+hNd~gmGj!S=PjV8+TA8PKcS?+@Znty7}R6pEarl>w0k+D?& z0Q9C#yDfAGQ@vLVw8+hmEj6oj(KwO{FqQ2D(GKUT2AC1C`$62Nm$TI12_F)HKM?9= z(fBvPJ5*?zBDb91rI0~8`OzTX=K_{K5{v}ys9?n%oUO?W1csJ1d34-bHaY0rJ@q#oV)-|t`;hHU83Fw?yrWH_3?9rUqxklw06tH%KBv!V}>#~IkTauB) zL)?v%tyHxIH%;`&GhghV;X|6<)4DrX5bDe|npB2IMD?FP9ZhHfJKym)vU8%q9~Vqa zOoIC}d+9^=xu18v7^Df$3Zw6wnL_w)g1Ep-?mZR$NgH2fd8Yq$GPoUC_Tpmz_|;TW zC#&8l|94ZlkiJ6PBDrln{cA}0-|i#_MKRFy?(%5NQJzpr_xeMQ!Xhz(I9#r>@+d z#u4qPsBZ=bSK&3qhJTi=33NeplheCGE>ozEU>er7$Ro2vqJ_yreVNX5x%z-+eP9nu z<;;E>D3rvJT=t*fcQ+;V+c6|5ZDdnlL4eQxvM}&O%39qCM8%AV(j~nkEY&C-psV^2 z!cWvl*Bje>B+oo=XJS0a&*x#%jjmqUzWjR0O3If=>b`*oIh>jAY>#RInvDXEv z4ZITkun8jg#80b@O^Gc-R;_zt8WU9e0^*=+-(4r7bg`YodX$avn=Fg)P?7|}1^4U0 zw7RBDow&Ab6OZDD*nmnxHL(w5xFz)+~`4BvWs6L;q2xSTa3}EW$!*)A4!kwiW0~( z77ayL_R>#f5)%A-i1+mwfI56q&L-iuqwKqmke1V&zF1Ku7BP3f8S4#hf~M0cpcF&w z7LI>C%y*yBF8XUM4{zGrYs&a0zW&kJ2-}7|K=wri>t5J>hf6UZ7orYbC4y};&0~xAUkl^O);fxnzy5qm#|Nk+{boWm-a*4@UsX%G{f9(G1h2 zWvc(e^MLm53im{&+S2~mLndaEUmfFnc>5H}FX(vLUSF}mkzI7qwA>ms2Q?WYe)>nQ zPB7lctMr%{U*1sXY~`KgC&x}Q}_c=en?)sHl5_YR08@lWAa3Fyt8 z0bOvkFH_nlf~c)nAe_i53jHXpv;f~6NkV)%t(~9v$H6Eaa^TE*nVKPB*DvKlkP`9>hE2Z}=j~d{& z1tS?xHmcuVHxfTXOvwL%o2p4-?xw9f=@Z#+B3f?HOv}n6u8IK#{=W28PXH8v00;r< z-+^60F|tu&T}K}FA2vK^eOTE;xq%h~w@jow312o^)xKhJtM1-x=VXA`b1=Nd*AO(M zwJ5`>O^*zK3|PA!vAF4}TZhXhN!fo*L7DM4-$`%>dh$&Nv@#v5{PFz+w+*tzFvShV z4=Mi1uPH&BT;!kW&|~@hawvDEJL2kDU8093PV82LV1>k!t(a3L`yT5(d+AA}=yZxX zvjP-hlfEID!Kv6aVJ(269QmrRD75UwZa;-#45#ArlXrTYLNRL8T2U&8_IZq1;Q^1n z<8^0RQ~fG$LdEg(P+d+XEGrE2VnQ738lH#yeJl`j?uBZ#7j@@Ff6WW44;BQJg8KtaIbf z`*n*{WRegv**ONK7OH9skGhULS`?lSZQ7xpQS%pL)$yBYPhXG&FD#&qbBx2!>(k4k z`A?HJcwqy4FFe`UKW@m&&Rh9k(AXxc`A-+g7uGVOu%3-k80y8Vw( z-Ha;gpzlC^oE)%S$3vl0XK7(>Iws~c!FfBPStdrvI*ZLOQ6>+wg(B-vvLtY#PW)a! z^%qup_BM2&&sZlS(6WC>(8*h*6eD)OJt8qcAW#7`SkCSzMtxvy{vRiP3Z4eMlsbqm zBgRLNrXWm3wn3n3$_n{=ERp=^mD%$Vc*8C89lr;@S?hq8wsCcHMaI(IJOO{>4Vvw* zu_e3NO0^n?qBPsN`ST#F7cnjy3G@`@eWZkh&aEsg!QWM=ZsoYIIRfcZw(BgmUXaH* zp;5=l!djN*44XZc(l%_}aOnmAD=3#>MV<&s8EBwts6UsC#|&warui@967~$6cfSKz zOfiWs`x}^lW89;#Q}kv-kxe>#YQn{YT&#tothwWyG_QkoM-8v~MzNEcr7b~0sztDQ~;zW5$a%F|m2 zj>$6m8wOq9>^dsxioFr0gH7rd#NwrC>P~hF+OX2PVjoD7yAweV#PpR}BD#x&&0V{5 zsin1oC;bQgsh?ZvpziE;wHMWM1*m3qA^(a2@mHhzy9o1m@!F1uD1dysd5g4Fb^Eyg zkg~Q>RkZNc@=3sQl84#OA=%Y~=;OMH3s(9jKBx-tokR5*CT_8-9?k2-oJ`oLH?s-y z>ntNkNK8L8Q+@B#!e*yL(I&3yKzzRQ&cfOUnXH}P|5Rwc+|(D3zkJk6iNsVu#q5vd z4gjt06-4^V^f--RZ=^Lxe|XO4!hjh|W8mPX;hcJxl7;!lI8Zc+gxz4(yO6y}J@GES zT~5G~zpF-SXj=er<8oKGUDO4$`Mgai3AvGOZw|J_d@lL28PcX2vz*a|5hG*$bs2Jl z|Fxq-#T}6iv2OvV)4ek#9OkE#BH6bj;tP~7T4nlrG!gYg7Fm|seIY|iTW#8Z#K-S_ z66b9^x|{JJ!%AnT{1vkp*mEjNVIgQvu%-UkW{0!h0v{HB?RGpMDZkOGL5oILf0IA9 zhyyt1%)KH?=8Lc8>(3-jbg-ml5e<^8p#tE?93;;^8qnmEEg0Jxx}-%&eAO5dWlUGi zby;2d{oKV!u_jUqCh_4Fu`w>h>M&C@3tVc%TONPEr=#erx{&RZg@xetrBKSloK_0~g_QsjcmdGVf*~dVu)WN&aDfj)3u8kIQQ z(D(!sVeNf%blS$hMt#3y+k4`g!WHTMHl?ilskT2_{w9Xm)dZ<@qgXAzuTus)JC&=G zAPzpXY}YM-02G3=H#3xd(9mbA4_Jqo6_PDZEk*T4#PQy#V&N5~mlSo=r?&#tR9wox zJVgoOb!en%U8Bye9s@Gv6%!TO_6d8a;=@y3)Lwe?pQ4llw!sHtv`=$g>nn{H~2D<{#K;_r(3U46{ z4O`0YvkLmcM-F&*M^PK~DB?2Cz2WAd@3TbAfjhD+Cg4UrvidG`?IjW!Hxc(Rb34+m zW{`dBb~cqVe!}uT*ReX(!p(NtX>kFM=&enL!Ac9joiE(oQ@U;N?DNz%p`d*48XT&2 z)=aWd&BmN{cGDNIQ)Bph{{bakKx`?gL1dQ00;{%v+OwA}WfCt2>cQ?Cph_pXl2}nf zK_BIe|2(%2oC~k3vax}@ST|KZ2fUi4xR_)RL=(4Yv9cQKSr7P~4V@O6y1qLo5>WO+ z$-cR%WU>evBpBh55^$yHSMexEOYlh;b zLXz}@tBA^bw@2ecYkm5Y{en8;4Wz9l+t9?{ZFm|2XS>GMF?MRuM7@;vUFvnf&&J9l zpow2wMS=kz;asL8t!88pJlxk8m*q~E3_IjgY5u8hL))fY*@4UQOreIc@S&!Vy#U2y zvr|^3Lsi9#+^v{GA<2hiF~sBF0y`Mg-eRkb6rVPWZb8b^(|j!W-lfK(%#yt#p#r_ z$W<@>ByA`H6yC8HCmTe`n<&B!z}KVTOjj|>ur zFq~X_N9hUXCD;RoDf4-_yUfTCA`n?iMZMer81kxST}m6|f!im0`<1ek?~>s!*qhZ4 zei)E2;nf%4X+Ds{av(fMcG25&$KO z3QN^N?Gx0|tQQgBw1ho?&GON^%Dkq0N<{@jV(~;3toVJP39FQc0WimIO|pTt%b>g< z&ol~>NcX*u*a+%c<>?!*?>Yk0iRc&Q~z~+6k`aOvK+Y#K3j*=ee2F9lr+f=K} zg4VteYC9fCRoCbKAkmoxD!uEc?{Q*ba@iD1`%~=V3ChhGxiRmf@CUZv_h`?KRb3`I zM7quUA>e3lk)^n8Zh^hVv?4jbY_eL&0NxJh<^#kV?!WyGZHVsjwAZo+ec)pGEM0@9 zVbE4O(J!hb{xCWz4@D(T11sT`M~6OlPTcuT-~`m{Edf2)DXG*6qW7ER^HmYc^IXZY z_;p5^y~MV9Q#e##$cxhs7$8lziXI_cs14AogfN7C!uB3l`EodU0yIPUXadII^tz*F zRA(JhBPxHcvum|j#L;Ku@jasW1S&}bR0JY-AU`DQ04Fa!FlJ&2&o(-``B&XSORb$l zBU|b9VDdw||AbUblp8Gm)~n#@YeJi~Y+Splkx0}l)E$0m45q))0wU+fDTT{x#?y$0e^x|MtDe%8Ky?Izb@wv!zIJ3z$0 zyYNNn!l=7bi-HN}tgUX4*|-tqxI{%im};+gg3z}&uoEB7f6m(RBqss-9(K#EbHK~F zcO{zq%PD-6xa)K3E-G=_!s`Ir&;4nYz_zSHORj^X19ql6Yk<~=ATYrzOuVz1>HCZ; zd>XQ7b*U}6V$xlV|6EZJ1Hif{TE!D$Cuuc~hFQN4HV-Gaa2D&>4FqRkHGBwQ3#~~- zb>g1@xK$%zyGs+;jQqy?TE8!GR~p|eWQ>wLb6C3B`dS#Ax3w-dJf_;K;nNxO#?<&# z;j7%B;$+~vNH(^nC1Zu0wA`&`XEcNF#i-qpv9%sMQ72904 zUu^}WfP&fThgMk#pqm3N<90>buo^xC1CDL=+MXldN_pYD(Zw(e&U*xD6E3wx=T&bB z80u)&y$Di-mGgAnnkoQzu%Au}RKGB4_YH7A!F&KLg&Ivjdyt|Egrmq3TxcOMnSHTB zBOH#@1P{Ww3g4Df^2&YMSF$eKvIivuKV*_yTCY%*#S*3F?OIGam?<*cF>Tu4f`?6C;q0L|l5smte zYQCZ;-@>4m8<^uHL?hz(V|$@no4)Z)yvrLBPDl(o%%tW+z{5z!<5S^v7R0kY54W7{ z>R?abb{=J9B#oZ)p+QRczwZQoqDg8?Z3C`h6RF;?_4u-n3~wy4RV~~1)v2dF>{;;D zXFXugQXsy@a_~a*bx1bmX6s$9IVZz-THv3ig(IzIDCGWshhY*>tomh3niK$TV?h-b z>6@w#7;;Cj4%!0bBH*>G115Wir8fRIz~F3FP}8e+XVCG**D?-pLnV&zUhDh~PPST!I{ouFfRdWn}sG-fnG>qRmQX0SI$RI z8^W3kdLJnnLi@Jj)@f_Zu3OmK;<%Or!c!9ZD>oR1(J+7FV0|G}h>6wB0UXqC2hNRz zwKQa0Zy;S^HX}bNPfB*)HJAWBG2t(CHNg$AqnH+_0{>TFo z1y+4e{p22{|N6hO0K|j3%DwH<1 zun0Y3aqbp)ibQxQJ?Q1+TRs~Vks6IvxEx4cGmeQ`xsdN;sQ8K1E!VA?##uR5 zNILZ*AB7Kkt0UXKt0t94EsLQ>NLk-*BodZzRkeH;Tp8#nZWQq88&%xR$wv$*YT3#( zw(D!j8&Y1zN9-gf5~9gk7^4jgqf17nVnnku>)riv<@B<+Qc>3c2!SH1o0FjzWwZNs zL`AQ8Lw5k@b9ugMowfHG^kWzbV9@8_9g~QY4Uxf2LTJd2t-4tLQ7s%A`9@*F3`_&X z=u}Y(R>lSpT>u>}O{fHph!Fej`qkU zHIe5q`tar7>W7Y_l(4H3YYb~73%Gf7d8BtZ-xIY8gvo4bS?CpMVLNJ`DkBZM+3^jA z&2@LE-nb!bDd4eSI94s;KjD{r*nZPd5u{|0tA7v;!`>kCfN1w(F*ocw9ZlD%|DAQR z11=H9oB6ZIJjk*y5oiMV>Oigv&{J|-xVLB|$h$#;a$doBfeIu|p7Cbjn9|gQco##q zSTS+TYpTDY2240dFv9sOAFDwKN~ z9oKahYu?N!I(8U&+2;(5`28bTp&9oc((Vrc4vf|VmEk0(cNdHoeP-KEv+!hjd9E62 z|L1Z3u*F(@lQ#*#qo}WRrGi#OCuJwQrOnAXkHYC-GT%!|>R?{fv8UA?A1T%zQH9*P z4t6}zlZu+ngxfg1oO1CFatETB?y1+Tfs<1HM(s5^(hiL8QI^xfpIqzn))o%v2d>^C zmc`-f^xbYKhU03dhBf`+mj{LVkS**S5FP}Dov51^XKWEi){wj+>U3MAeq#UlXXL+D z;4Uq*qH4GCXBZOsmfr}DPtdC4$o00YBGSX5{Yfx^N5$-C75KLMd?P?Kwp3>f`6fd;e9 zn5Sz`lh?8ipIoZtMgT+@2>v^ZS%D>)kva_PwoAl>q+}hp%De5ji&VdEOA6C8Xe0D$ z@p5nkYf55qe>EYq0vf-*e^X5(AUguAUzK4*0xX<1w_0!_*k`%8O zvFIUi+9h$aHQ*z}T?WI$9U*{G>oCR1xK->MA;@s3N^@~*1NJW6Ug3eFo!f{0=qz7| z9s*$|XeADm*C)~gJkLyodyv^WfTU#e>}}S`kH&UBws9tNB1qx~*7Hco87ev2Gv*~O zXih-jN?(9M0FED5?qvs=pL7tl#j{!J-^Ug%>L6(Vg^s20ygzJ8@@oE->E+eq;Cyl@DpIC z4~EcL1O&XM+uuaTF@9XmI5R}QgI}GLAKR^Qv9_^LdF*i_#ocgR0^!;0`^22nJHMi$ z+K%}fc6;G&50D}XV%*qnHEs94=0udY%&jJVml-R%W-447ZnBY|S`RaP1bf`|J(j~AM6dn@F3ywU+C3P|ezmd~`yHP?N6L}YCRmqO?Uk1q z$dUyv;&JTvYj%5F4=W6pByYDS`3M<~)rN~{RRbC=fd7TOp@jWHK*HswdLVj$CNDeh!caSELnhn`hZ+O$J53PF4^)$?q zk(bybm2rE}p}fy}#y2|9`Ub)-%HksTAwW=k)fy_lp6E1#xDyUzUA2B4g5P>T)~gQX zCgg&Y2($&vS`|4WWf2e?E5co>RhHctu{UT* z?Hec4ZlGRURm9&hx3fs_g)tDia6`?5MZ%``M`Dj?0$&}NZ(c?wqt<&ho}-&RmndMW z8~_XhawcKn}uutINaKgRiO{OPM_|Xfm+STZjHqOny4I;-vzZ-q3Xn zBsUPR>{wU3w&f-Pg=!mI%Z1{%_$fivHfbq;ZyDhYZLO>a>rH(@C_>yK<8KHrH{QMpKZbl3?x)q z+amQm3dgd)7CL`jA3kV)lq7}htyeS&{FHkNsDvzzOEGocgHkpxHoAq{RYpa>3Yr&7 z8^wK zPg9xdiso16tm!;+B2~QlH}fG9(;8y2{mj#{7qj|6@(+W{Uol!K$-i^h{Reb-lkTG< zMq(Ra|7$a^ z14jo-Gy%*1(ZnK-i+StDJ~QHSH}!JMNqKoO~piPVlO%OQ5r|B4KyK99FFt@jiX z0X`rlq5>XApa;0F+dk;4Aja1w~pG3w$7S9uks&HJ1Y{I-WbUhc^Da@*yHifU%{o#Px&0*(6SK02!oEHV;E|j0w2~2;f4N?{1HwFGd)g;wiqsY{U zcga8lMO2S(enXA(O})*-a@jcC`nzRz+O8XGW;JIG804|mLkdG~GK6^4dadtBH1YQN zm>AgowRyj8X}ZTpF)1U^xPJzsf}BQpyN6p7h@VI_+Z7@MLE=>Eu7pj0B|*{}K*Gk^~nm#oN^T1(r?xR+stY%XJXOq5g zoWx-8Yd43KZW23VWQ54Nd`@cFMgWp)Y$I2-A~$C>n~nDJWs7qj&o@@>$!1Un$aN&UO5@?Dc@WZuZ)HE$A`FG%AB!={~$`JmHyB4Ini zdp$Y$c&;D=WlU(&>br<}3h6~{zJt@#_KRI@nqH!B+xh*of2Bc%iW^zG^^^n^E_W)h zZbQH$=bg8k$n{UE9=2d@1zGIxxtqw^So;U`qiH3`PmOX+0f9JcfPwiCmDX=~d^_fvpqKUmL1!&laU+T9? z^m}u!xX624nv*QcqJl#U2iFz*0!w;NOGjpSINGggBO@r55W zesXS-aUK#Ze09d8=-~^DG6c+YtBsupGS|&jMr$%|{-5Po#T}bYbUGV9xweQr5E;2} zR_|Xv2Boepmv8X}`kv*++m@uZz;JexTQ+hvwsTA11_OrPpkbYOe5a*2-fpRQkXgc= zTlS@*>q>@J0oWPsvff~A>@UKl*`{~fIG-u&9LVdFQFK(-VudPl<&Ua&0T1*k7!T=6 zL{uE{MS)uNp_6n~0{%Hrg&$Wb{wf$zJLFM~HivEZ`KD1by|c|Hw$9261E)d8lOso{ zX;I;Sb(V~DHc?tvsEE@17;PPSh~FBL7yiM2Kb&dyIVECCX~O&w6f9l=qLK@AP;JOQ zI;;nJ4Jce?@ODoVYn&;HdgHEEF`~nbLp+*^&U^po zQR_qy*msrl+6tC{f;~7Z0VI=ZRBN!0G8|}YZl@jNYJhsvkF)wW3yG6G7?xT;XD-z= z`Qe4|7(@2xM`SmOp;*P)=gHU%xEv?fE{}vPZtc?|E~U81dZ#E;vwaNwcCH(9jiF6ghg9Vg7oZ7_@^8?g$FqnYKiGp^5KZRNfQx%zEnKs+E(US7P92zVQ_Y&2GcZby!heL zSU(tZcJD2Kam7_yX;Skl@AZMtTfA^{f(mel zo9ifmYdeuIQAH@qq<4aEWqd)tk+QYj5O{+>k45M2wrT}TXZd$gveNJTRD@M6B3O{U z{dhCNyx5F&YyzN{?7F15&HsH4Jvp}-8{$_6HtW38Og3FAru==DSEDPWodVA+I>87E z396#=(5QHsS?{Pud@;VfynA8)t5@43}IWQPRroU6U<1$q4fxBCSpq z_4df1DtK~S&9p}`S9}UT-v$G}e!xKmP|2&r8K~yVa_2u=a=Rn#7GQD<)Y!%E;<^u~Q3d>>-iD_P4(1TM;)v?u zyMWcDjWgttvEM*tUm31Vt?hKpuid$wv;xuc<5DAIj>R7g*azKdBn@GLm zvDNnkVwYkl0KMsWkW%_@WtzEZY#U(LA)H+b=?WBWpgNTo^92RuCPuv(H7Lqy_CVW1hN^nlNO|2;ioY{ z9Ms5j3l0|Ro8TOkCGP+wJLR7Zl zi>}g60qXneTf>#6Fs)Qz4Oo4N+xO^iu)d|so4DA`j$0Fr{6Y50tSPru!Z|`UpyxL$ z28ow_lSYuW1H)e;@^qhd5-|3qCUt*T{f1S{*>_QTWNuvb*O`{uzw zpijJUEtmN@Rs8q1q!SeTFjBCDqy{~sK@abXAX&^)P~TxpARGNvxip(ON9~K$1e^0q zoIf6`7TIMvY!S%yU&`+Vth6O)x@$UXDZ&LJR%zz39_OOfJ~sdW%q&TS9&Uk+rB)0n z-i!~*$aB&|#WzR>{#$epY5MgvZv?i++JP(Bv9A>3h8C=_S_|_{I-yzDZVvzdOyg_3 z7VpV{(Ow66PWskIj)eVY9k_|De1G$?(Kw{&~|AiuN0dE7VOOO4=} z;B$;=ERMDbE}{*k#e=tY5hby{GEwX)%8sP^jU=E}SRrOLoRb41$k>ulU4;I@s(>T~ z0tp|c|C@wp48rSj_vTXN>^38qC=V_xpTJczhu13U1F~Izd8!$@D8WLUQ;6a*KS%74 zFku~1x)+wAnF`CF+-qiQwlOnYo?@mqJ7Ad<$ghyUuIzj4QQ{iUVt=Ar#*pHbmRur@%@vyFT;qmd42lw%)!P~ zW8hC}DFWia>mnG_vmi@@6WMwI_1Fd?g2Oi(4Nl>P7_X74U>IYFuxZ^S1=ux7@a$ja zSP9vwL**YBy{`oBCG!XY+d}!YOxT(K39RrvRI3TjQ$z?p+fn7$z1x1_p}Cqy>jA{> zLS+jl_gqnkb{KPpG)??I8(XYp0=-zq2k)dG%$81vuVF{eG*t_TGN1&ui3-LDxa6RI<7oTmYEwhP9T9XWXz3{Ii?D!G)YDdOZQ8kY6=|2(7 zpcKa;?BZk0zoup&w%-2qG%+i$6N4id(B-lwRaxW*nMdawKq$Io69bZG9KDkLesy`j z%AsAgJ%)*K$%Bb&zTSAr8ho9>j;Y(rPZJ8vqii+>n3fmrS~YXqm?(I<$@YUhpLAm{ ztVgWtG_C3}a{=5W0?^K02a$VmV|VAk1Yukr!&Vl$S5;I&I0==I2g5-q zi3GM>0ge6v6s}Y_FM)48>2<{*SV&k3DpZO{{5Of%>2nL{0=Q8Dw;U#m-Xg_6J~Rot z8Q-b>DIr)8m`>_myV?h*9B2wrSpg}BKNjSFpp~%>Y`zbci(G>Eb&k0LV~{#-hIO&z zVy2qdQB{wR5fO#Q6$AL$Suax+4iiV9+-30y$y4hp5%2m9g3BGpmKW9pul^oroV7E+ zJtEDl{{S`^sC_{NcP@{7oSS-Uf1Ayev$r5dI;i<}IMm3(K4~o?=)OLtB|o#SV0Nt7^YrT}5%*gIPg?3pzW$^)6w=~|>L>WuP*=zioFy}*qeOfSw8RdAjuSRte zIVKBJGSyG934&K_#1lQ?7x2z&q)t}W(9Q$(-*7qX~J z?Kh?`8Q40Y^W}OaC9W3V{@u;ysTOKvxZR2Bi!{`gdtjckyW(N#q6R*Tq{d~|03-($ zQNV5BqSgqu_xx|Hy+Km0Iq?;$;?-WuQyd1j5 zRdi$iVfvRytz>pqfYIX=z>^8ku?gx#tpU^js%9s+`$MV+;_8+wAG3@yCAX&l z)<|NsiqGr}KJZ`la37bwH?>JvVEM_+y4X3~@*_=9b^53e$*QoYd_foAISeRZbtk_- z=ZuWO=NfMAaY<1xnz1@BJ;alJiV;?r4$AF?Wm;V6Z(iGqpBb~yD4>5v_ySCSYo}hq zEYcZ30m@lMYb5LlIuEne&R;_I!^}$?A%bq-b99_)?$xnx_m7-7gV2>J1j@pOTTd%{ z_rc1ou-}{W%wh2>6+wk-kM1T6WzNFGb?IrnRT)Vy#<1>9G^^FQnP!~aF;4G1Hc&zg z+R$*grAN^IXCo+Mi6l2@$g997UZ8qs3dy8=$RRKt-HMxxq4Eo~bgl6uxKUn#C!0&@ zFHud^3)5%VhbZ*PZK52mD>x4zeKSpmiPtURL{THvkz0E}%9!*&s?oxYI* z?oMfbQlWCyq+D_tm{9^v0{k3FjQym8h$|pm14gONZT~vP!kq1MaWp5veR=_^vSYDl z>s@G1#Mzl2IP~RNfBI|3p?x(+V=ZquFzu}Z804yHfn%|BJ7^l~K#$IvfPwWfFj>3F zJgvx36Mm;c$#4fSf&&NqGs%R!$Dfy3vP8%<2zSJQz+#uNGA9pW+bM6KHt(15Vbz* zQ$L&7F_(_dyE-#`wgQ#4D&kHi^y18k1YhoaW2epK*{kXdM4WEnb@T;mg~VbhH6FMN z2bD=5@MQLVr4OsxA<;T}#FISs8{(4y)T218V`j-w1&1?6X=wg7k3XM#muO?JXynHa z(d(gCv3CKt>1YGs(qd?oN?A>~AwlRPSO6|lJmYawPTYcTwj0PT7a$S7(YXhWTN6is z9?z7t7+6vjtq!^`vZ)xEiP|%A3ysI`(`S+Fy{X~S#`0&|4+JQj*AT5%d9Ydbyi(Mo zymu;jr7BG2qhS$=Y|~oP$IXu1YJ5;LjPz@zlJ5|A_23FU9B=h_djd}5r=N2DZW}W+A_Y;YGIE0?l5jG?2ysvof%^uS3%{PUWT*fp zU>V>QxyNuC#k9-FlnaN;DtC65F_wS6`^->SfjV=vQ03(%3l@ZNQFj@U^Fp5${p!@8 zj;GXodL|_6;vP4R)>c2R(q>On6#o=o#w03vbGvE_BpSRe0cx}}p&6M0w+WjO0#LTg zB@F$e1JFEM7C&#%5hf50pqO&8J$_GlO*ApU_*R1PBd`P8LA9$4O?KiHx1t69Sq>6m z?*k^tKv+Z7f+F_sGY9`ZeRP@sqEvq)&N;)@^ zdE0W-EdAg5=kr4!W}mT?;sGEw#(@_U;XPMK{OHs*WEZNMaxkJV^i5FSmgQ$_M*E)6lNqJt*Dk6Q<0N-d}y}uv3p5) z+L(W4C5perlEW>>P*H9Nu-2qjP3~?Nog9&sRe*N96+{6cE__ICt~Aef;^OAjH`;1N zVmPbOSBpm{M%%AuVYYS0QrS(-VIMk$P-|s$*>-U2J zPT43{o!Aein!@G8z2sICo12qJ5~iXAF~k%?=lXRW&8PR1j95U_uFY)7!sFdwgfHes zEuKQc1@1|pdeZiQ!VkR+T)|@`6Ic3x z3u_^#>!C1cKB&U$VBQ0Yqj&4%&t?3tZcRr4r}f} z1~?J34^679p-U~7xsqc6(}OUSJF@+R0~6z^_@F)rUMjju(aSKjnJK2hAP`Gb~VisNJy;sf8& zCbHWP6Pb2SRd|w1KH`=J`wXA?@TKHCo?KjObL{Y0HP6r1N2nRcs5`4=xZXhFRZcxI zuo4TP!>||I0|o5`bxaV?Qv#;ZG@diYEq34=NVf0_| zA2sJbb5i++Z-)f%@b2;;1?xEsPG>3q$_ww<7-61PQe-KGu7%t`G+IE2}HaSDohEIfAH|-I*uQ&ul;4nC8 z6;SqR(CcKP1E#n`_E}vx_U)@%&l|DMzeQRn-->E`kb-=%_KDB4GQw}rKZc>fRXoZ$ z>G&hm{LxGWCL7b~1*KI%yZx&IKDHQr$ZkX*o}-HXuyAD6NA06RSGi5{{Y|BCwx?I5 zH;r3La%iDE`#>`yj3$=~&T+3Dju1Gdo_tL{D0(r8)!@JnbvnQhtvy(~cV^h`7rR0& z&NK``9SO5*AgD=5XX1mH&e(EBMBI``38sWF4Y5mFJ;ukubwqXu4o zN#x&34in8ZwqE;uSF2zgD{6$`-@1-(+ti_1<@hg6Wxrfh{2b_x4u`G` zv`pP@|B4}4VKth{LOy=%)0bL0rXSp zP#QnbYR9GT`j67su)s;@)Q72okMnhMy;5ibCEnI7YpK_BP8O?n+85U)t&LQnhZTdB z96Qz8fr~I(n^0O&t3)Dfo;o(hF-Ga&*E6)A9aAp5^ejP^?ApwLr*pD6UOV?>M~|M~ zlW&U74r|h}9IPxz(1$-AB|KL1hL(_qWVpz%og`6kkcm+2pMcMAc~4A@ z)5*wjOO#$4d}G}3AV5uuODmO@irP$WQzho5&g54q))Y#tfu%dC#>TwuJwJw1k4AG!gH%Ki2tQSz;Kz z4joDi;wBX>Ud-T|5qpP7-U)MKttOEkO;0W@hC4TOeLYYEqeeL5g5k7@f&}$sZc_!w zZK_Bu^BbsDN;z!t-9=9>w6VCl?iZ1J!(@bjUq7^(Q1VWT6&o==-3d z3LDCo35`p1=T8qbHd-O7qtd;A#cR%J^KxA-oKBLj9Ye@VL3hLFHJUVa$O?vO`0rbs zTL!eYB`;3O06ZlRLc@T!kg-}ux#uE99v|@~hKNL(K#{%O$o6R4oDcT9G3~QqHk=WE z2J3qkcHb}jsdbhAxyPa@tqc}bub0y*Vc^-6p76C$3rpqxcz;(@U~$eDTkSG>v>cB% zBv9ZV(+U%o4!6iZrjr@TdmG9pVxRu8WwMu|w~9AK!-s3b#R%3d@Mf_fsp!Eg=HVp~ z*567iI&}TXB`VlVO0`a{8Z6VhaL@VtYRlY zh34G^{e=N&mNv5dz(13u<|QlGmOZj-}I4XJS)X?_zR z%(1j_Z={SJHn&q5JY})Q5fD3gI`7Z^Wv|qSE1IDzA{j^aU6+igIVf3HQ+hnir6Tbp zH&)s;%(n1Va38TST8{117~362ss6o813PMgF4c86L@%+;Q-8Ni7SG|!YI>Fr*D4b9 z(KKu^wW;?-VMl|B$8vbbRJL(oe7xi3w3(wl$JMq>X_r8Y$w zWkN%H8uJw*i?_e1(Ui%C-p*51gwH-ul0o54g=zJT9=%z&0i)28I|RG|Z!ByJrC8+) z8UAFhm`&qZn2d^Fk?=SAX){~@4opVt|GobD$c#PK07VJ(TZ*2@xKXR@=ygOz49$Dm z<5(qYZ!hkq%#qpiwf?M?hU*tf!k868!S7;yN#_O|TomnMm6EpE#Xn}zqH3wqo2iEG zY+{+Ph0-0bj2mO@E-123O|RyW5Ezahrlt<_tP02?P0U`!uJelRXv+C&9D;%+P6v8i zVPV-EeVL9k}z?ZcF`rs zy8zms>a5SPI_GPgVI)cN!ZfT{Jo4|by1NE(q)CL?JcfibibPFg> zXBaGZD-o7M-2okZpeuXq|mQzTTL3jw;aWf^(Xl~86-XPA;Tsdy+ zIM|QRV9;WpB&->d;{o7Vc$WPSvjwsNapRKjE>r(~_p=niQZ4kE215#YLcLEnrS>#N~xj6WtBsv&KtEh6!wAx#wSZNB}r*Sv=x zMS~tl;*e$}?jQIf?b-0KTqBp{`8L*NWBeE(rDnCT*T}%^_yC%Q0$Aa%|NJpGkPBL+ z;~!@W9M0F|pkYLC005PT;Y$sox$FO+!jR;r=`18I(Q#t%LQ5o51XKoZLBGf6<5m^N z#y>dJ1h5Ymq6yl;l(D+-x_a@S%p?mnW`a(iwPZO3i{bbpkAq3&L4rl@peIlpV%Q`P z%`=EiE#S{Jbtfe$l8h3qkY64(_mGADlHVT|hR?j37TO&@OSAN}bb98LRh00D^|Dva z7hd!>GvA2{qppyF^7Ke*Nl8_N0`#fxfHpg~IQvUjRVqO0YPr&l@5_Q)90%JMq(H07=N4TbInf?Sg-$bB$JkxE|XXN{N4!Ckp0w_i8tPi7;=u z)Rl3zKVuw^8^SP6F$ZK{1wzHjC}fRo*N5bD)JE2@*W2?^fkpDXxHzV}vVvOk^jPjm z>OL#N8qzQ~3)~WWf7<~aTMS;M%g0C^=d~RkVhAGGtzWn9a!C**B@PpZyr@wtA#2EX ziS<}U7&J!$nLDYDb>Gt-1OUJVUn4^qwZc4O-Bu#(jOPHr*Yp9SOVSY2ekQ-I&4!<` zRC7?NNhw2QeywzN(QLYh3#suzR56SPv$$+lp|Z0MezHZlo@JcvsHHO{*z^#*C1eHb z4R0P;c$7aRxp$uw)^+6wcXjUbAjeH{z4lVvDe!M5JRiYQL3Zd{w=9&Sl;~(U9blsW z@ciG2KUgf~pcF-nA%819aIi(k_9c@a}i&LrBLU< zn_nry91&oYIL`Y)%3+RpSAV^--oSp7#UfDzf0!NeuEaq6xG9+2n0fKzI%e{(*%sd} zg@}3}IBq8W&h?rOtSgmV+lOFF0$C_YGVvT*I5LcA@rMWcw~xC#r??M^uw!sm&O2;I zwQL~pZhp;0qioB)e*AdOutR_CCf-+zqJ6O^!dK8)GTkB8Vg1u?b{E3ma0^V7+cgu3 z$X=YajFw!yMN09H$(tx zm-8`EaK`6CJ(q-Odx%7OXg!^#y>&3U!G&Qp#s9&A9&Hb79Gk3yOP4O=G5}y?>;?&2 z|D0NVMJ~w)tL7Zy#rifV7KS{xQ|A^>FNXx{JXN}-BX)GkFsD<1K=HI#YOR}k!qmSQ zEt>e7UC>bzCL&^3bhnDc0okzfX@zBS^t5ve9j;SK*+eTaKjMdxRq(fUmH>drQh?^k zLljwQS$_+mQMlwlgnkGILBgM^axx0}kQybg@Di_i?8$cF{jrzw2T!nhMIsaQZ_$r*rPtaoq=GT~ zn19BS6n>g}X8V3`uVx)O)8I6c=h$*BP*@UK%OvW!`AuA<4(Xz2#F#N-5N1k~ne71} z>sfr5-1pbcGD&#z7)2n$Zd}-R>)jzs&p|}cgyC5BYfvbf@3FMvUb#}pHBU>fNCEue zsEU%33K{na%If+}FDgs*xnM`rYz*T{1+cvwcl!*%$AmqgZAq0(43o*$fAW^e00B!< zJm#0Z{1Q|CLD&NCqVOYeE;NBBzw7r0TLan1#;Oz3++ba0h7Tr1b(rt8n|W7OXjmJc zD7`FR-}5$1qrDr2+P$;KBi<6?wDERJRur{VK{WT>wpR1!pgt~xt)7E)r%9a<7kkP; z1XY2bgqPo5LrcR3W~B* z;ppMMk#kdnWF0O8@}R3tL3s#o;D*Tp!M>>pI5IE7sPepSC3j+=?t}>G+|U-{Z99=g zgMeyC=>Fy0b5d-r2V{nKTsJm{cVES8lzSFEsNj-z*h@Ik_1~cJ`*RC^21>7H3NelO9HqfrtPa9{;~H4kCVi(V z11y9hMBpwVAxX_gx56L^^PG=ec3&?s{Ec(K4FEhqVMks<5+Cuorp9uouc`P4LASzm zBl!ju$@)7y3l3<|Q+rR4XZzS=>-Id;2W$E|dh2&U_N(w7 z7Y0dyR)WL3Q`5Lvl`MlHXsLXUKIFp?q;P78GPq`2rJ@umUs>o@z3Y0dRUu*WJ5S8j zj50Q(LwJSkI}ER{gu(ngdniNuy8K6)w81dkAqOnt_tRQo&0Dzi9;PzopIsTJO4X5a z3x(laM%^sZocUoAaSMT8c~wEJ@JwrI3Kmo!ocOs7 zAG+fBd^Tp+x(s>$K%Yj}?z-wREbU(2{^#L(kt$|Ns^>0|EePV}8Wb}eoS%tOo_seL zy#~}MiPd$w+)z2mg{<5HB_z|e5&c_aCkisqcD8%i-Z>9nz?EN!E<|uU)%XWatP}om z9cI3HrBYumXC8Cp_n#ZZ6MyZNqgB}nP~NF0d9S&Tqx`hK{H)#Cq8(d1|C_|5E!O8$ zM%r_8|Avb;tN(jHh@c$Rj&~{&ejqGt$jBp@zDV%44i2jVd;x<$|qp*Lu_4F2ut{pi3f9D_af<7M2;(nS5xRC;7>-}kAJCxvg;!z*0*s9)iQGQgH0 zy!L1AOgpJ+Q)x1~rX2yosvx+!JOYKrBZ@I;s}z636fJJ!)5{6yCXVyj14A(zq|`Kq z3a+0bQn8h+U!gvkJ+)3RU93aQeK3M$o{J(HiEwc>sKkp={64Pz~`JjySG$bGcF0_Y`)`fQyeq>}hTbOZ&H&6A>;g?Ku{uZhS!z)&uPNEzSdH)l*aOI1nJM1BE!KPh}fd zBj)KO6V4;xT~)IgEq#*~`BAm*Ld}hckp|0vuHzkr>b78^W!@_- z*ndqQ1Z14DyreTO1=!Q}Xpeg}EGhKqe0m{<qL zP?JYhZ2aqgtGVyqh--vlZOH|!3h z-~b6h+!7RFN@u@{W5pfJ2{@|EzJFr&46?%!j}Y4mxBmNL{LFP(M}{(`Ir1W-bH@(s$MvWeqMr)A;9PEADEUHUluqf^qn1=Hm9yT2 z(xDoR2UDVpRh^rvrA`gPm-lN9fxTOI{g`gaEPvMZ+622H)b^(*3d2BevoGu22K92n zJizq!Z@5w|BC+3QKl6R7 zQX?)vF)px{2kuc2AIERY`ecezv2Cf&tYSY{>;ktZ2P7zK0Bch2wHCzWD$`;iV z307kK(+;dy3F+~c)CTRn3@@v`*>gtGi+Rw=>Y-%A`uW-QcsFgsoaQdiR01b4y&~#Tq!Z{?oJXpPAeh>vmiFI3W=#FC?Ol{!xT1;we+S`iUhr7QiB50k5Ua;Ub(uXTeEI| z9!h)D{4_N*w@UPzWZkyfZW5>J{if@KmIW(!YLJ+q-JycTbB29aBn;&=Z0t!NDq|9b zZ*6K2)_`xzi`P)fgcmQB{dAXAAR+&ldhI^9{gj@Rm8N$dbi;HTknS$rxt|>wXz8yL zj;SQfA= zM>pPm*&6LLufPxo_3u|)t;Wv%#q{hc2g@{V5^mwR#59MGrRx40GcChS1)M1BF-r0zQ8NerkDw0W zYcE4%yX@_MM?M>~DSW!&qcndq+LZ4*L>D+9rnz=o{_6`WbIaWwiA&L4=y5FVfES~s zCj7NEz#`1ATXrc;tkrG6lOW&~6J0bnBQow@Lte*(Y;CPeb8aJR@M;2rT)(CG8NQ@) zaF9O*@@l423+})p0|M;LU_ka*AVQ*5J^BJgmiT}{W1G~7Uh`#ILnH(|$Y(PF zJQoWQlMH51_+l|S0B7a5aNPKuLMG_^B!~9s?TXsl=x4f1NsNk+NT162vcTR7744Yw zJ-MxixgWkKV+Q8_bJq~=z4vgQZtuN&%Grl)sIRP62_hw_6s4#CQdhULL()OR`n-Zz z$l}EcsX7pf$dQ4YGMu4Mbl|IHlzh10Phlo-h+2z(i;{yL|97uI$hw!@SaLf#)-;tG zYhE<_=Z^fs{}0z9$!31>WqSVF3i*q5wiNU906q+DXD>;OfvQ=o*8RSaW+Z|dxUhlp z%WDg{gf^J5jj)oVEeZ@F2ZmwM@3vdlsxzryp=>Y)FON?a)4Owy>p&Am`3Ws}L;ekI zxH+lNYKANr>i^^ltFLu6xqgK{fTPP^bEB_Z@^Yy@6jzVDV<YViQab zy&|7Y@S4YP2KJM1r5h;+Y_tJJ{cbz?_ zv?;(VeVwkcCX6prQ{CIpGNd)i9&wl)Ao{#AGK@(B8843oGGkDm$oez_;+d_@ajioJ zM_j$0p4WwF6k5!xd4R(hg*j~o*HD$RV}jKqQtF$x{-!?0RUv)8*H{PMcYf@m{w+yU zSS*0#)OKeEOr3~h;;u@BTfv)vyg=Bs;nK z+8<%nKU}=1ga)l z{)h=&QCVGH4dcn}lXzhO1Sfj~$%-~yxaiVMk5__IHoEKuU$cMd3&3>1`hS^x*tE}^ zVF`n5Z#6KN%cQxv=+or3PQj5}pnt1pDSvUwzmBs1oANa=L33dko!>K9#;&$y5kNsG z4F&|RzM_I%fiBWvD!;X~E-9lMt+{@vqrg@G7m|Lu_rl*qO?W{1=zk#JC6h$2f3B1{ z06LK-(~J1xu_{Y`c~Fu4CXcPnIn4-TxQ}WgPZTvgOY?3~lez`%O|YCyw#mRk*1(Rl zVZ|QVv}ED@P_CAaJ69{_mQFU8r3h(L03!so>PhqYqm*Y9yRvdyl4;Vs`+FRa>A4ui z-0zEm4h+%dD%y8zVYST@eUja3OZoNzdmY!F1(6%#u_IG|1UI>-9Zm?%A&EUFdT3n+ zIzrlE>*alfV!f$kwtxTt54HvX;V&d_g7C{xn}$`pH6W*;+0WgfH=O5^A6$NRo#YBs zvu>FI`*yO6^9~weYm?<4-^OtDFsp?@bC(j#4I6(OO#b6uXk{0Ry;f$`5oqBej7ft| z`g>7*|Kn;Sr820KoBgFp;y^fqc-E1F$y_geXiXa$^q>y+uYwu?xUL>k9?=J3NmLZU zBLTMxo_1ik91=Cemto38(+v-?1q|-`-ccyywk@<9H;2uUvbaCpOpEXU0001-LiK#eorU*{qyD&~u&%RMOn5KI zxBQlRzWi(7rKr##kOja=qVuZp+p@fu;?c%&;Uds`AYQ%z9YTz0=o_weM^J%GJB@jz z{8R4(5@rH=n%W*6teOc2FqS?b$m&&=xCTv_PF=mu+|Qm*jy*Kw9R#-P-6+|M`v_@o zCm)hg3uWfCjn*vIR9p4eBQLly)o3{~1T8;?zBbFV+>1MiATNd^=e~vgh3)?eHcGg6 zA8YZ1H=OM*)5B?K6zb>_TsQ=$Rd2`5<&*}NVs5?Seaj^rP}!*8KF&*O=)>vYHbB1(*B2;tSn@Ipl{|vbsOA5=P`Inr~K~ z;!W(q>eFHyL6h!WIU_Z17uNfRlxf1t8)RNM3FMIl{g!B2(JzC{Ue;U^ToBaPN=B2z zHVXk%Tk#Iup7NRV3#)g>LuuWIAF??GSg7gQg)8QQ>8YNVeXgbj!>Q-F6cBnd4cfmY z`4OA`3d{XCIg*3YlN<++!HA8OLAKG9}eG#wPye4WeZ?jq2$`6s{qOvOQEB| z66G$pj@>I@9GtnYH?M~j-8x&|R+RM3?^Xdy2bZ3gtIUqMbaFN8Lscq6!1;NZ5xLixNHeLP>26` z#P3c&ex9egYY5XHVGV%uY!6u{tHKjt@4eP2E-)*kOHT^TT&QI=;C=S`K~Ff5a)-Qd zm7}2w#{KM75?UkI`;`0{lHQ(;HYJxrKkMlen#X3iJcB`eA&7uW74=EzVD&cZC)t20`@cpkAtc6!2xn#NS>hI|H^UfN|khHYNEi zbgp45Glis=%lUes3x{(bkCq<;~16-2`_xRe>|y-$8wAwbPEfE|yyE;!H<(2X%YmB}8g4RT^EB(*` z`CcR~!VJ4uNTizpYta>@#GI5A_m~%Y-_8{mSEL|eR72xxz5>ERiY%2D0;k0x{4QJD zFjxB!TXGdRqLq>qPdE0(4n5dsW@3R=JuVPHjCX{uYzwl&ZwZv=^gP_vsBYMs+K@-~t!(kA|89^uNS+2YF9+8WG*ilaEOACZ_njJk5=s>Qzn zwAro230rn};)X5JI_x$;$qq_r8;)d6zw-@oR2?q9M0 zq!kIC2b@?ymB41`Oef$S`{c+o2fBT7M}M$7&N>IbOHuOdl%;r5K+PbV=Yc&13j*E+ zL2e6MmkCx7(wIYvK%gg9DTehQL1F;d`0=5c-qu*tt~Lz1k!%QIKa^P58wi*h;R0Xu zA}(6DoBSQ6LM_^ zmnB#kH-q_<6n=rHz3haGgAJV&;d96cj>LG|ECudx`Fq{*=c(Z09Y?uoa`YjkNqw~zN z0e3bB?pa~7xLE>yCIS>+P%BxEmBIq&lC{myW2JIpcC#1B6hlwV~JmGQFD>lAw z;5~7|Y~1eB$PD)~M=rIOQVA=m@|sHyv!)9@D#HYgjFc4HUm}RzxEzSxY0kpYIr=W3 ziMC9=HlUASk3|6Mz3xB<6>xdch% zs(#Cj5ZohD-#hXMZKZfQq&K;Rm_PHuFYcNGAT`1jPix@rWTI6&oCWryjd|`-F?q3s z3VmyTufQoTP0AQ$fY3L&Cg5`r!+X;C!8cBF1{yE-KG z_JjiLzXkRrg-ru`)Z=KQs;7^c?JQr(gjLh%gj~v6`rk z+|m-dPZn!`4BDFrrj}6GBYW=noH~VJTrE(>KkHsAfrQ{k2kg~VvWy-cxHVH}18`d6 z8DIba02q~^qWIKd+J|FakZ z>9cwZO{23+kvigW{8*wN-4w*wg(~h2J`c?HB+K;LSw1qO%m>4~>7x@CU-(BjhiVn8 zvkq7k%1z=u1@Rhx1pzzj>v@hm4N@#zbl7M0j^`{Q;D+U@a-P z*+M%CYeUSUu)_zVk5;S0?m6;YMSt!0)S%JX0jmaR|^+ zxJ2hI8*S1j7U(G_-BAgdI)ABC@KRfd@mPDm0UGajrs>J4Bdm8=ojwA45>+Z=_lcz6GpUoJ!CEb3hcWTfo zrB&jDpw06xn8~clwt*m=m#mKo$Nv7Za9H}JfPldUD)?(TFRJNY6qEQW>()M>A|EM8 zD7cxP`|@_r2#xvP)Rz{X_ES>Yh5XF|YIi71g^8q`Vf2G*1a{)o(iELE|I{kc2T6lq7y+G_RRS1j>&AwFG2BO?A9ov#1uSf=v!f6TdLbIQ|xm}5}Wutm^rE zAecJSPGRop$^(GA3dvP;(|cML2pTFLo|}J_DJed*6{DDngkIP0cud@vTMk!^R+$j# zSX0}cP7!qfN0^W8T5cHxyTB_jYRT4Oc1W81Ki%Z?>rU@qMZG-Su1^O;8}m+C=3AFBUf6 zzk=4`@@KLU66Sh`aH{i=w+yMJ)|+d4Gnfa==j~!nH0t--=wdVBkoC}b_~D7x`zc*~ zaoE#_T{t(uOPS6>dBKaIthOFy1VNCJq9!CYEw=zgGc3n7Yvsi+D~dW`+L4x168Kxa zYa@YHB%zWioO~y3e;N<&7yN|l!%N{QghkbHjv^J1f&#bz-}KD~CS`b}D-ZJSY6Y0< zeaFu7daTc$ILXuIMn?$+1b*N@j6zrQt*WyDBx{21IT2qO#o=P|*-Fwf)QWln)^Ilz zmyi9uKtnPBc|wQ0jZ~KjTMkrri;3qNzbAZaeh^H!)nA6y(Es}pUoerO=h#^Qps1QU z=bm3>ayq-|tW{hrdABX+d@+2TjC?@9Ppp0O^sOm#YufqKCB$o=`#KmVP!MK;7hHHL-DEVq_82g!8iXSQ8m=IR#T`ksoH4xE-&uac!J9 zH86oR7f6C0aOk!v7ooI4Nq1i+6DT_&f4pf6^`A@9xKJx!pl@GVTskvtpo9})Tkf#c z!=S#M{tyltT<_Hy%e9s)GKICUaysSgj zdeS`&os@1Hqw)z~VJAu2;1CYy5@sfPU-$p82{T0X>A-Eif~q&Y#Z|+iz*Se$ARML^ z2avpC^VwEH$!}#PyN1QaV1p9L(bpIiLfFZ`p8#FXz33yY2H%X1vmo?k9og!g2@jjU z&yEd{yqYcOAlj3HZ&xRTA++zToK&+)@YR%dOEqB7Dak=T>y-VlGim-Zacb9EZ~{D0 zyzkiD_Xv*#HSbWv7b{_JTi;m|eMnlav2~PdK80h-M;{$F%E}Pq?CMfzyLl$;b?_9_ zQpPxx9{(rvUJt?jqUIkI%P@^%U}!J=7`Mb*fX&8v`2PIJe# z@bcti5(6fSGrQ9m{Y4c?QRE@7ZD7-#rKM{zT_>jS0CU|SKZs10@)kYQkQnc`$jh0a zV9hpn48?~oZqbwHgFJdchp6D3^189>3m7DaMKV4ckxB(#N#!{sYs;44WkZ0>+H$Z5 zQj+tMmmt_z7vEbdYu$ygL#qv)oBXTxZxg^{RAH&-V>SJd9(=zrf`tWw)_b*?EZ*X< zs<#K}3}BUF!E1D`2$sK{*A-=7TmHEiS27jYnXLNV|K{^nn;{IM2m zc@O<*v-C7UR^`l#Q89t;Tt zmeDIy?Nc$2GJAs51%v?i)ti!cx;qiCj;EPG0*f6&`k6J;1SFe|Zz&0CsxpO2*DY4q zms#kqbcz=G9bmb;$fB%Auy=;66U=VEMtG!jtui*+&or2d<8ReL)QTTl9whg%J(b)H z&mBE-I3OUM;tDJ$w~S?kzSZs7j5es~7NHu)%^d7lhycgJJy(nF$~*H^}u8F@alV6Ip%GSxm+3-rRg|wNXA_AMJr2Nq|SKdbWY z4rrg^=_f8K@O}3`OrXlFzyO!H0000IK~DOOVu``=lUuN+TJ5C++Dz4#SbUYbLTAwG z1cD0MNz#Q~z#3;aL~ryK<3d8k0D3d97t{b&)H$g;x<2o;q5KA3!d1k|9%m0I|IsZL zV;TC|q6wYE680UPwOerCF(Ln&<1%93qNywtZm#pA%Yu*QsU4VJ#hljY#8i)y_3iJ= zrfbIHd1kUu_r8@!jeTC{{Wk8qx-atrK9Ke-fk`y8 zP5ae`=<%r#9A_KaZC`nm0mlm^o+1>4ZfPBapVg9pvboxu1q^>4?k{EEmpy!JsO)2U zPoAv$*nP;+vvbfei2`i~c*I`sGsY{5=zoFub7lc}qWs2%bVF-5i4xQuKnTkjMeiq| zR#C<{+nV#lkuIhp+4LnL;x|M}^YH#IAKEs0MRRfG$8q%?ll4z~Ob2In-)yu7v$&Wk zENAy~4*!FYvRk4=&Ul$DFFgaui0g)SG?r*akG(}{;M@znz>`Bx9%L^=`(XUoy z*`Zf=Z&=y0PxudcFJlPyMA4=bC1VbydfT(?mPCGTxJBzY66-9K@Q!GV^6V^#hV^v=X^rFFxX+Te8*@T_uZhcyvu<9Z{t^J1x zdC~1S=(2*-i09*TOfvZVOJ+<+GH|do9|fq(;p`BaE}eSNZc)RA-8&}>!!luQ$YcAK zKt<-Ir%mkt_40R%M8d8+vEnsf+0y#LXY*LbFCJ5e< zS>zjfd9^+|lqNFY;TI!uF&H;(42cVf37*z85-iKm-9^WncZS~?oG)wUB$%Vvo3Deo z&Gy!B6|xKKBbNo6R)y(~srtlDq4?gTY<3_nD+NYv?^d0H?|cZiMkw*j$1l3~;>W%w z)rmC6&{g+4+j3%gjRB|$b*np_a=;}1#mgu*W&u4Zsif_y)-E54M!+OMAjVPTY2k;o z3YJpOaD!bGLCv!0cgl7h4qEPq=LwHt&Ni6c2(!p+qu)8MjY%TwXE$caJyJ$3oICHB zx=_Q)DQ%>VUZdysjvXN3e&WkXlVj+k2>pcy>mKRNAqA}1YFGOG(kSC*?AdA2ltH|J z>?Rk;f)EfgY-$_NcSIltELO_0e_hfcgnm2fzjzT-rv3B>DY+fbqr=`j5ZcCtsnpqM z)2y;kbH67M6sI>T$U7as|U++c3{+EwN6e)Y>gfQx?`W4BzNk^|?r%McsonHf*%C z`ZR{Q;Nh}#+ny;24037$UA-0tZt;8flkcp~E1k&_fzdot{gBIW=-rc$^F-HNr6kqM zcAL!pz_p)ilT%75Sfw)SYq8=>V=LLRZ1?BBu3ecOjwahqPp;AYp3~i7XrMv%cX@z% z5%d2yE#0M_lxp#&4)A|gv9HcoPL#8vnR4QC7x@?3Aj(?%E7#27xEtX0r)Yc4IYRbS z5LF%6BmUv`^Ap3AsS5^cNwl*EYTkN+5k39mFwN^_MVNMluJzY z5>(y_H958}FSGLiDie~~tSP#s_YG8}wwaJ?@%T^y6%4;j@n1Q&(t`?dM9KlJ9jku` zp@4>5?P4<9{u)95x>pBmVt=FhoD+(gA=l>!dJKg}7|v}!_v;75%Eb^PjJ9?Z^@W4^ zfps>(8%=fw5bx|)jCl8cvLRab*Wx?5p)9KckfZ?4TG9QE!92rPKOsCNZ)-ROFgf}h zv@j0LH2`-hTSo*_o^3Qm*XF)g zJ|IZ_J^V-jMj~)tC-z?SA}O~Rb;H{EHtfiO(hwn#^$)aj zTDEJOWvRVvJ07THf6WMw!+V<5D*+&SW=~S3_KD^vOZtp3;I3eMWaI2|;0aI_RR*~+0ukvu}?b^j;N2QMigVqTt+4kyYbrnGZr4z8_ zqZUPCZT95u@t{04^3s((VJDo@V^y!u&(fFTfd26{x%l_@| zi&Mu@+!P!ssYUJ?+t7n5hfVqN*?>$9Qf+MUM{Kx@f}MccbPJTo;)7hGc=n9z^ai1>d*Dn z0P|eXOwSC58nwX8v@YOr6H1`^I;j``iCmDv!GrHaqB?%ZrIqM+43j;~dGaQb1S#K< zB?w<pR@=({0ib#=?59&z4o))M$T^djT79%DfsD${D zlSKnh#~Yl_7+j8Ssyd`bTLmDIEUNUjscCKjk+wmw#`3pd=M)c&nU#51NwuPVC?X=q(!g-#Rmdq86X zC+~ylv`7Z>IG4R&J0T47?hcn}fujHiPHZePGk8yqzmNxe)|Mk1OO|ZmxW0CAnd&UZ z(y+P$w2n>75i`TJK9Vd|O1O<&E~mba8Joati6VS6Gk-Kyk2W5^z0p&je@9OQtMOeC z7B4UtTZYQ^R`_WOA1_~9kFEPBHDA@5-~FnE4K;QspI61O+&`F7W&@}NTb646Fcjb+ zq+t>dd3Sv#9Gu~4@30m_H=EK$gd(UpqOCf@l17&Ax|y1J2{V*@!+HMP-k8|=>5k!_ zli$$flxYBqo22#LI}a7(=K&h(G97~2WpD*TwEN5wABbIaSA}#ZOt9>yuts}_9L#fi zID^u@mQSN;BO)`3+D)v2j5JE@2D`IydA>}&v{I)JR2Sfn);vU)l+rm+|NUU4F0X_! zy(5(KU6UqLv0LbNmoc}6b8Er(@tj@Ti)SzP7qpShuuQD?3Se^MEh<_IVg^rp^+P(5j+J;j&?s`kD&fE>lx3(1wwZ%uTema|^I{uVV>7kP+N)gWP5 zvD*hUn`+DYC@%rpAOD5`AVsM%;T{l-y9RP#r3gHrGHeHh5t`JMAemvA{9v$A(*Jgy#dnz()`*pa}~`MlPm^G+3vpORDXLSAc2T5K0HQr>3-a@mt-`;a_kjM8iy?;XYZ*pU3Pux*7al0@p0N}c=uGrgo)?hPFe>fc3{P8w~*B6^4`1m+1rpevG=YURzNk* z2>1i;!%>U`kP-Ai9Y$Qlef73vU)FIw^`H3T$TjG~P@g3zFNn_`L)t4pguSnD>~`p9 zSe1t2p@UL|7?NY)AL<1&*<)P0Cvk1X@ETZP+Cnt3^)D{91Dpa2kcUX@zBxQp2z{C41#ta7wPxn0s1Oq8N8 zD?#+YTJQ@jI8M?eqF??t?H=v5q)$I}km>ac*v+d;ZzCdwO!!iid&1KnhkN>Z+=T!w zW*|76#wo)1+gx6alnplN38=vnP!jlcpB#`H4=ag+yg=BQ!pZ&?qDvAO6(^#1d-+>AZT{Z`>;zV|}?ze<|KT48wEfdCQ>)7b);iB=3x(9-3@D1 z=2*7SmaeJw|Xu>;j(y^?h`$1yF0yclW9t88RWG;c7YJg2k zK@OK^v1?nLErG7Z6R8qWx?=jC_sCgjH`K7;#6ajPd~q>vyQ2T!@7cBYqr{kJ^X_fR znk!Y@CNG`rFl^RS{J~6iyA3X(d(eiw85P8JQb@|(h`k?;eshjfr3$3L{Uuh8HLtHp z`CusvZBgsz(Bn;tgZAb;o)CZL3SD)aJIRm7s=4y)0Hwn~(q+>;FrnyanJh(jbMMMH zGM&6v^|l*>6K|lu&>{BQti5ZDelV4vtV0HznFeqB&SUY`Z&EFVQcJLWKjguNEn23D`;0gL!Ly?U*ti}oo5a)A+l9Z_zy48O=qB74X2$i zPKnPsoD+}Kh)+hf2}1kecZhokQ=_wRmOb}aB&;_E03C(>`%w9N(}49sMp3^**JQug z|7lN7x>9$Zn>+a(IYV_AH5F%^JlNwdfsIZ6^hI-s>b@XyqN z&9Qlu$MhE2NA2C?EnZVspYG+pK~lf#57@mha3z`Y{W_8FFER7qqGjfgum$xnaz`UA zyU6?KLz@x{M{xYQmc=ai668SPdTlOgjE+fNPkIf#lU~JGZQNK?+HQ`e4}d#{rGC?^ z4h1*-EfM*+?(=mvPMoI^&`!3IItj0Vv^5YtOG@l?YTkjq%_#B6);4~0|H!X!N^Hp` z%xO)(b%mvNB+hJBbu$2X>g`H#^zLuQ$8d4)qQH`flB7&=d@7VrXj^4)SN9= zk~rl2qPRgwoNkOxiBk{-1A+1oLoYz)hZBk#;u|4y{3UHVM+I3PmmhCcX1|3_I)e8Y z8%tpAi-ohb*t&=cY!5eGgk{&w5)aj_zZ-W>D{a{)3Uz?ik;bEUiJON68O+PdV?tq{ zLbFGjq$Vew^&Esscs$8w4E_rkXO6+FAeIIMy8^3NhrEJw9zo=OyVf?| zj6?qB>^IcE-Vs}bw5tK-k~V7$Rh%f&RiKoO+;9pSE2@?WCl;~*$(F;e#xDe|Z&$oW zib08SSVwayBwZk%pv}V9_&39u$Xe*o`*fCpLY-Btbw<~G%wd~B275OGWE*8IZ`RB! zVsBSXA@-KUGnBu(hY1ZMcRT^ib8{(Uqr5dRoXI@c<(n+^d`Q9O6c8`jhyFo0@`sUH z$Yx(aMP|i|0i(5yjC5f7^SYnABe|tA?>%{ndq0`s(_pc_H#*8de+65YX#R{R-(fbC zE_hzsA-lIB#PYPlt`9Dc!~ZR@2i5Bj!`t@QvJxut{3!CFbkN9dUt6^+M7-qJJH;n5 zw73?B>FFIWg84pC3d3i`_S3H|_>2YtBLv_ca-2zAZ$&8)%2o@RQ&(E=06=~^&;3_QkgsgTgwQHQivs<+ zc62OH_a`|91b@Bf8hORffyKo@uJKfcI9Q$~{Yo;UkJM`v9g^Dp>9gkT>--VhiL^9O z4`QgEn;O6sBtGIf6I;ytn6lyKPLU(qOnszlyY)FP=A3kduT8-Z2*S1Lun)7rJQ$9`M^X*3jym(H~SD%hv=X(uq zCOe!y%_G^rGDT9H{O@k9%dyLN0pz3&X!s;=ltAJ;_w2!6ubJ1U&;w zGyQQDAFXWHgB1I!6Shn2&JN|$YDp?>+fls61nR8lk2)JATMINs-HHEkkTR~fD%bgD zVq{_mNT&?SN5bhy{pz()WZKRLOn1dj&PmZsKx%uYl$mRk51P}^W!rkiWX?B_f!_Wr1?A`10HLADhys_!B> zFWd1YN%h~aDJAX)0Wx1mQ&jnSc?H;!dZ_fNb`}bQt@rJZ?H1Z{uBT+HzK;Va^j3JxvH(OoU7cu=_l!qez^X&Vc9PnphBUeM= z+77yoW=A*jXQo1BD`9nrR1RK>^Ph)WAOGf|QD&At9z7h9@W*k%ozHB9xWhx75-pUX zrN!FUYJx>81xh8UfaP0;LoDK)WH!hAgnu!NgL;8wYbvt{jJBNK^7F zqC5zI;u2@kyU3tX_h+D1vp_Gb5s0)a>X#gU^^|yFU#4!2;-W($Qen9?~!YUk@x#M~NqjOP4UgLam2ALHMm*Av(6~T#^bse|9Ov4#$Msu%S zu#r+uo{0>Ei!5?(;6m;4A2#9=#@49O*zQ0hZ=D#S7>`tbAM33*yzakTDRl+QCAj&@ z^#!c6f(PvNEen^PSYcLrOsKf8l8-Dij`|+X662V#3ry8C5g9@vT1o#B#BBu^_oLu#bt@HT z3N)2yB_nqn0)g-6uxp0}-Z>@xz-~4|ajm#yv!9!_7KYg*F?H+iJaKlR>O=Vn*!&C~ zSwl-1G*e5A)!EcpI<&Ro1{L3(BMRWFI7jP32XWZy#Q<7p)2L8 zgC#Kb)(EWL;CkKGOJ>m_La`_mHKT^6bYa&xW$rM}?Av2;YtQXnhGNp&1<0=SC9z@C zbX<@dA)JPkVBTP~9)k-;ru#NwZcra?OGgi| zT=4M*5ksj-{B%`^WqU?avI+`Eq5hhR#S@Y-5`;e#A?T56ks@M3Jq^UDZqP_bE@W|7 zUB%1wcj^2=(We{mXRce&9>VM;d>Rtff0jJ}00000NWlnlwHR~^V5HcMN~j`lyJd^Q z@Nz1E040YJFKy}_^AhWvSU1L4O7I2506jq$Rl1!pBgxQ6+q6_Ho>=LNm@Fy#WIUXt70?b>e1H#)DQr? z7SRX{KzG%W9m^k0cEzl8c;-Cy)C|)oI#0tl-Q(ABei2#}5#JBi2rG#Vzfw2wVOR8y zQV(V&(9Rgpd-WFew}3-Lq@7e^iO!vTm)Xg74F|+GsCO1g!`6E9FZrgMoXQY!2h;_? zpoRpAELj_*qI;zQLtIkW-=}Ah8hbn<@yXD5^c-^YG&=&->!(2cH-%k{HEyMrnZE(X z9c%a_m!hisE(GiDl>reufzlWXP&tUb0qTOngZhTg{1of4R2TMd0&7}CE9Hcwh7~$! zC^kG#KSaw@=nwJ_FaQhoxg%KS=!Z~DfB-Rq;NR+^PWsZM!YeKU7VQTz-M`po*Xk$e zv|&(se8G@mN9}8jh0IF96MpWzo^pRF?_LOCAV>))L&Z=YqJzgk)?s(Yii*>Rk1gru zTgTEIGrfn2&y+HV%&cRUqnp`A?&DeQB!N-~`uz*0MAHH_DIbb9)R$I81o_r++)>jZ z6fGYGL$GKWLUh5oeS?8G#Kj8$s^z)oquP;u=U3u#JaGvu9Beme&_F-jt2lr=En|!a zPzW@tuimCLDUWbym!iB}DdOMSo+q<}F#wZp-SB7hR!9XAL$V9JX1S}fy?tT{1B-*e zWxPTeLDKR>pbiM?!PpcDiyEa-n&6s{Wwsjd&S>E|IDHkk|8;@+1ug>ZP!3dl&}0|h z@9n#ilyn#Hyhf_&Q2E(W`tk)wav+TtOaevJ0G_SD!B!-4u@o(d5bFA#%C5wXy1+g3 zZUDzCzo#rF&rMfQu(#IUm^L-cEEHF_6@Zl38%ic-Jb_Zu{xnndUUM5l`s99-LoNUS z00IC$D^UZXFBrkV_8F5F0kWU#D zSCNx-v#d^!$->;&chy`e#`3+eAcli?5+B*jSm zVxRLgQ&C4;g6iumgIs0HdNL!DB6YPK^QAz<8Ue8pHmAG)_%A;{o6df{C}|AZUjH!#8~R~(B*X1PyYuQazh&L z)US>9gK&Qh4vA0ruU8=rQyi8a1oH5Vl(agLjSU>)xAdgulm-5_uB6a zbT}eW{P;UVYdf2t7@1s-GjVZ9>#Kf|@j-Rb_BRWu&{dps7 zu^vL(kpfN$-JcVrm+Eot;+jr2N)G=->`Gu&o^?M_yf|_O%j$;VdY3X9meaa9>N zR^}Atoev0))la*|tczi&RO~pxBw+KN2-~liE95VSLHOz5zB7+@iSLE=*c@P|P(UZ7 zD`YdXDk&W$_V+@Ol?r_$<+_oWM#SA2|Kw!O5z<-N_MdO=vrkOExJrgQ|-xCDo?NE)u6Pe zc#`2P*RNaL9WzVl44c{PC0?bxvAzgD9y2CI??CoLIX`rUe7|=nf~gs^Zk#(-e^>kJ zowU$u?1|976pkhKh=UlJ-brDU6si$aYR*xyI>bMU%xS;U5y#pZp!zzHVDLDP>NI%} zec}ie$Y6IFYu{r?bM-Q3&VRG^$Jx(!n|6hEJz(dVUy?Z4mxCNDQS}YnJus@v=yTy4 z9P0_&7lG^_xJEjYID)#8Ldp%is+m(f(FthS@FVeA0F(X&ch-$zSWc^UWls9Pf>CiA zq&V(xVuD|6dnZ;pLvq=A1(AQFB5;E0_$}V_1XOa=7;0~cu~!RLE*G|NnYY&4WylAeV$K?KBJPDfUj zlZhSbuv-569gwk0za!GxPv`-2wxO*cOdCQwi>U^9dD~9(j)OoX0t(g<`PS?zccmOp zd=r$MFd)%;g}gpzNFWpnwv=~yOr=DA)LgL}Ofo3x1ZzA8j>RSOpOFaAYZp@dH?I2r z8z<}=MFSKU0J829{Epy&Cm^8ofe<_sYPhlX)(3;w;{H$1dqQH*-w2eQDD3sXj~LJY zY8;Blya6Y`y6L2;&wk}_7+bs&EC4UStPsAn6RnLAb6 zxp*%YtPDvrh9TLCz6jpMe48JITw9M?nu0Q}`}$JH$+uXnVoBSWDbXn!X|w^CvwY~* zpCXN68*#wwOhvn2;!MHcl4<)@Zn~9pXif(4xhIeuYhKQA&tD2%-yKJxDp?Y=Ko^KX zpxZe~U73f_cV%F`PzkJUzIcjqs^(WI_3PhhWa{v&rm6}l?-s1q#mBbw_KBLoIw5`I z*dilwu|8XHLo%b3;yiB6Oed1 zBk8RQI(3B^^VUJa8#%Pt%VVv+yovM$#Zgno`^bfcoRnlD?h~dzu=;k zo3Q%5vXUeD$+n2|@E9^o`$Lftf(r|Rtx6y^iY*AEzj7EQo(M%;stPWXxOWdsatQ7v@g=vp4}xKl(Bhe^(Zr6u*bkJhm1 zX!TZFS-^Sz%uf}y_V_-i2jKO zU?hPmst7Z~rk5QyRafhT0^T0ULhIJ}X5bFb9N$3B1XYwCzk(d&MF#B4kG(_`{N%1tYo{12m`{*_26IzIEI9csQCms)rN zDJS9hk^SH?&pv5X?jELCiZwF(AoyM8_5+N`0hGYrS_ptGUJL13mgeVUOn^_OfrU^; zudhbvv83ay=LlnYxB)SO->crl+gzZY_LSZOT(rsAW~7246Grm8)!-~EGp(Ys1^Jb- zYYbQ`V{(#GUiFHH;Eq@t#aXKUJuJMcTDv59`v5Aj#Vhd241Vp7!)2x5xE6XlnXZg& z`w7$DXTK)y=lM<*JXOLY1PYdpV}PC&`L@>ZOn?x?lYZ>yH^z_T+u3Vh_~fdU_Kp$u z7zbMKBD+cyDozDnVTinYh{AX#>%%0N9zduVWBMO3=I?-HOREbtAUnSAR-k<=TzfAL z0T^NhwKSLep}!%)_oF_Jt=PYZ*S5KqYY5bHpO|Rr{;XSq34OgB@ZJjN6%jLm=b5My z(V&w1Scjj1GMCrtY!woPLg%=wcWRX$-+!mdmkokM`Y zc1Cz;q<+oTnw4=40I!XPw~zKG^nk5IF}3_NlVG3bz3i$W?EzbLzjv*MYcDzo`{0!S z8f2vZ`;89UZ-)@JK1;}n;@>EBtKNER8xOD(t!yE2e=Xj7%RS+fAdsrFh1S$6DAb_X z^8MX6n#ntojcs~nrh8R@HSlgLXp_VYDEf10$Z172%Adsr&>1s+JrGGj+W1!=BIBmm zROhL$)~bjOV4{yVXHOl_ny=fgb6F~8*wfQuCC|%(fWca>rkA0nHQIM4;EbwzM3z|r zeg62NB%gxo1=$Le0qSjXJJJB-6o| z&b_nSD5P^rWt^8OzqJB-dvkAcM1$m6mdmrN`lEhdSP#bF zKa^7pV6^>Y4klXC=Rvt5uA-dyNvR0C6)o=a7=8i?iB-47A}$_>99TfGuBJ*Wzy*&U zq4p~v01e{1+AshbRNJ$1alIwmMzh_+Dyv$E$%UXqU-$3vaA{4Rw;(r->!rHj!~){c zLEfG>{z*xNW}FLK7;2)z|9dT_P=kFp0UAHKUt=NuEia8_iILacye}CTz*N=Tb;kit zKuaq_|4mS%gSX~Rmj}*boosaBIC0($qw#jJ{C9V?dsPXMFEXJo@F#1h*oA8OyrH_@ z{q@JVMwI$h+IVxNg(ZLPi82dD`yM5wXZ)S{L%oG)oWTujLv5c=7JcXtg6>u(a1PXW z0S2#2p!e;T8Luyn`(&FUE~Ra`7Xw+7L4J4g$)i7_MBZ2yUpSa2Z3u^!!qlSP6Dc-r zSK4VvVBD?OOdzbzO^fqp1rZ410GpN^uk^s2O_PrIAUP`Cp{nxfSlqDlVf8|!_yj5m zGlfmfy0gyzD$T8q#uyWLRX^Q!#gy>r5yPxtKY96p{iDbywTCgEWqrB4F z@g#@OYjPK5pQ43@5@N_wwWnccri!ZXvgN?jFn8B~RGe!D|%7@Y@{8JFrH@?Xa zFQ@@sCek*X*a17+h1tXj3~w%OEfrk4p0^yw5_pyRxT~~GD1aYHXMG;yIq1XJ+6#N2L>ZI~cFiI25)#lZ!lcjg8 zJZ7{hVUSDJ4e*gKe9+mSxYGAP;;V2gk>wLJrqebQy;s zF_ZC#h$G1sA0R|XErX%QN`w_`u0h&^V_(UR3?`DrRlP~mg*C!K#(hZg@B~e)%T=nW z9b76u3jNo0HtXmo6TLNwWcu>ucsVe{JLgLlid9^#(x2*#^cNBkXyNvWHvKR(l96$52&GB=;x z*>t~}1#RG0N|F*RgAloftiM9=)`mnENVpCDT&ayk-LcYll>HT3Ipw!n0tzu zJ$7cwaj^WXQc%lu^d`9SIQ@*ul}Ou(UIH4Thury7lK^RvU>Wj?qGX*$c>)D6L#5(N z{n__iTeaqBa|IIo8gvcrHBV6ZUzYuIc65^_M4V~N8!Gni^5YaImFQ!+@R*FQ0sXRf zVrP_eroSZp;k6Pm#WU+*gP_JFDW&(8)Z*okWQ@TByg|V&@>v8LU`B}RjzLxOvtXJn z=81yIgvPNpAXZf>P}=$a*C5RI9~Zb@!a%sRlM0}E=yiJ#^@LY$>*GUN?h`P_L^ws>f9THq}@HA94IZCRT+M_lp&zQtRrndsPnjLOqM$EYU zku9;sRJy``?}jYDHz_RQqa74#P!!~7vRK}KrExaXjGZ3_JXpudu|BTnS*x4x-1+{6 zL@2!@vz|8ei7{ona_Hn)ib2s1`ZX*f&a>FrACJ1i{>mBrGNW3X-_mC2QFqJ(Ex8?; zD*17^_Rc0%fK)-E#xiugy{+0>YSVc2?y_EEx*ts)$dB4?2PhsOPQqXPmR9x%i6rkv zUykgUaDZ!jUR4T?g76Rku*Gs6Cw;fexaq!<|H5OAmxBMY^}-QdY)v3uI8LsEYerOb zH=Y@kF zzVkW_#gwZ+f0zTCSTxWj6F|2U3w8C&co*U*8WOMH8I2U|N0FV@$&74THolu_Z`^wV zMl*A6tKCzAV)hih8rvV@(W#X7L*VfH^AGUVRkL`Fw;RtH6VEm01xW5%_i&JL$nr;a z4L`EqxN08LYnoRrls}``$#Z-ZdD9r7F#I1eVor!gT*!_1oo)bDp&4B?pKjCBKcty= zEUtjKc%Zq5E-RUUD)@i8bNO~*qO~JoC*>?zaH!rYPs}3quG#1M{H0a8P3EG?)A_65 zo4dHui#lLDO!pj-i~z+d>XZYVv#Na8nF-U(4Z>g9W-0T@=PsPTG|i?v!3m$yIo`(j zn&wH7EE>~$ToL*SX$ahU7SO-3s3!q2X*K9UCjT%>jTIM6O&>MVdg$UqTz5Oheje4xmd?F<;?3jaT(*b+a7p>+LU>MKvO1<_QFOTgoR5>7zR^9`;B+dO8-(5><{=P{P~E403gY>BJg(aC*P--tD{@_46^%d8|IZ_^5>&wE|9_=UJh z!iTjz1NHlo&9>Pi_$9j*8w;XwuW4(B`?GOc(RUxm4&(9GA zSTgqD@;p*p+N0XIou1Qcnq8atP;1e&E=MyY{y&YFaxPu7Apk2UwdTnGC+CKqPZy<~ zVcM&UzQJ4i{j;m^ltAiXjjh*qBt8DVkf1%%Yy5y!U0)en&MxF}ETftBL6+7u=lTx4T4l;+X20L1AZV@vFR|H}CZ1M+OQppAjf<^^ zv}?}brgD#3WTdcmtklvQ{@e3iv^Jas1o)Y}6g%ItYa#}M@(%3g#{H_!WBUjbdxDeR9eH%l)21m=aY62!f8DIrn2a{%DNWtk33wADuto(7KW zp&&OXFH|NnD~}?tqsRhW>^#JzRR4&ahowaEaOp4|FTPW<16g{#&zol7c@dFJ=|#Me z?4h=o-JF|2ClntSc6)_a96;NN8=^DCR%Jf0SuKDO1uNsLCV4(dn87PY4?@+5Qfcy_ zl>~D&%6yx*a&Lp?BtY#G^jE?bu8FH&hB6kQ#?<2gV2-kr)72tx@%>?Na~FYut+>vq zN_ond`^|N+R<`3HnjkP+sm-hPo{T&kFrxG1chg}tm0Swe+P6Pa>4^)BXkRaUxT1)d z-Jc|UCU@IGi-EO(+ZFo$b+=Q+c4v8W&Sx4A7^nr9;1C7ig;1)`lOzJ<0o#T~44|)w z`RTjOrNn)`i`3xcamC=JjXG$A);lPaLqtw|X%31rHe(%tn~u18mxwQsfVaGsat~fV zha8J#8io=C5??5D5z50r;O}PPIs`~C(kTge;rf=}Q133~4~9r}hr{wsz(NuiA(55JL*}l3xa7sTa7?RcCv|@<_?7zPOc?1{!*NM z7#WAC`-|gySrRgJR(tTMYp@c7IS%T1j@`B^ojh4d4UFYa%iO%qq$#M|FY1&1i%qWM z4VG3A4qv59RzXiXC#4lA_}DsK2p*Dc-R%Be_7^tmr%2&?aVl5fsG$Qi??`I+CdXqf5G1h zz1KZ+BVhE=V3lYJt!0}{Urp_b;5238mR90|$k}QIwq+j}d zLKIriDvX0?VU$NYq@VIn_|;;^o!uwB4I&BX!2wu_OCjSJhlI~if>WB&Onu2J z;A(&<1{A1|13me}y}^59e31G9zb48ysR~9tg8ocP#-dt(YO>3mhceI8eu2+S0-w&w zyRldY%FpyQqj&@ha*dgrek51^5=!1YmR9j{UJ2k*4?L};H#-(jecP&pRbn!rW|H8P z#Qs*J((YS(foTZ888LMr-Q2({Jj(tUN={jSy)m7hpO>D$!TC~LrQ49jps&Fzy0pd9 zfDL3tb#mMz&09*#$$oWoB{FeP&|CQ4I1A|*OfHbuR&_`;X! zmeQMjS3*}$GZeg;=Y6ls^&vO92(BioWg; z9k`F`5&}uiV@Wi+4x>hYF+{>$OH0bZ9<}4J!GmN1oI0#lzGMYuNPw^BM<@YY{ZYd+ z#!W?fzY=<$A8M3OL3Y}ymih}(`UXoj2Oy6wrqHfwqaN4eF;midI>;UW=<&!TxWudH z47U~kST<*o%OsWG3Pb?UB)U3yR0blu*3!E~ZOBu3+wh9ToJs8DMbbr<%IRT|3f0Rt zyxG+4?9#!}26v_`pvuh$vl(N0B7l?EiTuyl8mF2d(_#^oXD`mBLB{taOS;ATZsHRe zE$ys~$Vm@@1=XxmBWIu;T3s=pV#g_#Lkkx7(&=kdpv_gv2 ziF}{-)Kn%P%=i%tqo&Ae#;2W$9tZX(*5H+D&9_uS2Fd>-0k@zQRvKDo&w^>#-Svp%kRGXQSTu@!aSzK-a4=Y zqXIe5b(U`;UG0}H(g(y-^Id{9VB8lhY8DWqQ_+LHIdMM}!YvoWZHjtvqK$~0I+yY2 zNp28cjQXi;xXmZhC(zO=r#nM@M2|wv`M04Ch3UMu`_h|G3a9S<}CJJUg8t|t1wy;XEdas z;?I#dZuIdZ?x!0mA;>HjTg4yFd68QumOQ#a^9_wcf^rmYV~%jzs)f3-#szhd@kFW^ zFwwB&zX{)v&?Phhc=*XTG`ba!F`T{X=ZOtn5lY@mW=*;E$gs@w>O!Z5v#SnU56FRZ z#dYPzb9Olmg)OcLAqt|FH1v`q*A7%MiO)iQJirkVW@)1bB5BMSXHTAM1tx5kSEJQfst=N zM~l!HAa2?QJ_1|i##0R`u2vE97fD>l5sYVZ)|0G#E;37Omj6vpUpONG2#_kAuh#V6 zoBHs3I0M1K+`=*Pb3y+ab<7y)q_ObVW|RiiVpD_Cm923!?ITrKy<*T*2gzUz><}h6 z>I9{Eyk+yyq)dbLXVvB#U2oOYiiS$V86)t3PCAK4MKraAvb!Hcr1}C6URgwF^6To5 zzQsy+09W@8+xTl3fr1Mo_6+ce{aQoUTNQ7A|iRZ74&2Cf0_rrXq;i(Vo+KXKSU1Ab>JYI8GVU=xt zm(a9ptjO)`Kgqo(e3kLH3^VJB9h$Ccgi&yY0ZIt$w_a`4+GEHNRen3Kt|u@eiwr&hB|32QpkC;IPDC{Rc+40nK|w2kh+E9KlqR>@ipx9`CdOIx{b>je&Ns3yZt#Nn0vZ+c5@Sd(TkW{L-%D5E@xe`K zAB}@MoqJI+%-Q8~_bm0!jpDW-a3WDkJnxd1L@S`1PXQhnYmu-z-LTz&@ht}9%~Tc; z)d6t_+Nqw}a)pl&SbB}}v1;4Zd5tpEo5iI1`H;KCEi1g98_GN_zST7|rI~3EOFxZ_ zK{jG5Nvk|)ezz7>=vqnoda-2dgIv~t-kln@Uiy0>ZDxK`mz6XN+lkaNAC0SnX{r)J zE|E_6WIb(1ik=%UcL}0YVt0y2MsM(JBvpBE@uCk2k`Sv8T3UMm=2+z=SI7I{%OfVA zLjs*;dg;>*id+`CnT*K@{BNJvSW#Ra-3)@iob;9hAsoJ9x_quczr_nc9J`5GiH2E| z1x-XP{F?0X$ik$G2L55xjQa3;<8bTuUHZ}8HUByO|Cf&z*H(&y-Bg`B5OUCt`oNvo z!E!LK|4g1oN3mTJgB>Tld*(lu($7t_KhqN=p$x{>0m%j(w;o37e$?0WAzgi4T>Ej4 z*O*qXCB}%5i^`K~SnfQ}VB)o|NY;{5arst}8w7sztE%8;sZngdut8pP;kc&Tc&h)uH0Lts4G}=D^U7LaLb4vo!>mhsrL!UessW%!hoUUE}hMqMWnKF z$B*5eg=unJ2e;C->7QnN8mPV!3&$Je-kH+!nVAQiOFP2hD;)Um$z-hZ(zJsW29Ew$ z#@8glPoqQAA4dWPS~CgjeM43*S9Rh6LsgTtIjTb z7Du@g@fr{TK$HF5J->pc>SgXo#@29k3my*#o&*Ho;2^cm9;4w0qsrF^+*|tdZK-Kj z7lt}eHP3XLk+x##I}I>-igXxA)+Ku5-m=vO^-*)L=&0f6hc4z9KV?<9ByAU53YHFM z80O4v6bjaEixDAmK6PW-BI#a|^SJ-c<(R-@ZbjBq)!E2`l*H=-d*3$So-P5K&ZKr>Lj@-F|HT3 zyL(WjE|rEQ50fRKMI-OXu(3Qp{k@HbQtffnA`K3IAef`RMVO#Jylo zm2i;#mXaLew(5%OAK+{p21O)~sl8GBX?9pFn{pF3g;>1La0;$fr-PD`J&W^{bQ72D z7JChpr$I?SVJLQ9h?wRfq77!L9^7KrWpMX{W!5=s9WUphW01tPTs0D#--9&YsMyq+4+mZ*(NjX7!n zYu)S#6Votj0~tzqOM*6361i%nFP>iK7_SPwSey}Tl|BNMyH;cvlK#+O`s z!yMxaRXPSVPCwrX%8(HEm|Q#;NXwtR>i;Fgm7VLL3ldMXM}|2$!;#Q8T)R(iMLgZj zK3mJ^%pWmo5D2Cf;JOC>odPNERCGqW1IhvutBmr2=9r!)-+Eu5AI77NAjsUOn&`5i z`l{)=4d3$?Zg(bm-OFdn^Y3@L#VoXbG;2Ya_^7)-2{z=y;v~M}20uqXq{Ki~1ybM& zoFRvR000f~(1FlhmB6C6pdd&A{8^KY2!Z%U1kQ8p{q$BVcb`@zsDprjycpwfK*F>X zqrDbD60;FVu8WI3lnqsj%@)?AaVYE%+L)RP7L8x|Jwg6mlsvTVGZ};x3}|fyA^CE< zar&GoRWSbRH1GT)cW5sxhfxl(L^`+>ByXag$^4t4NKSPaWeEcSfh|Mn1my7a#-$h*nfD)S<=!9Om>W;1N#TmA+>=OWSfqqUEdX?4T63eut}mQc zNHF6jXPs}RroX!o&&03!H&WU*@<_?Wn%@*!^I17;)7bMLfHKPG>W#FNS019Q(GrD8 zB+>(ojHi`8Et^^Sngw9Zv|UEaH_$mpNeGvS(w^#L!{Ky+BFh-8n4DiLuE@kpWzse1 zIH!njT52hIR)RZjaF9Y8Q>_cU3$1Gkb8wEbD<4cAo6Bi5He52kIS+vb#0%M2eXr7( zT^l!dGfr+hj@V_xW+Dkl-o7MYm8ORi(^LROuLTQxIR|IR(a`(p<~R51kVjt*qk;>I z-z+mZnK}7e69F&kvkyxx&LNg2SH-aE4|Ov-#taOe;d`Gbor4%3c7eiO&W3n*q@M{f!hn}9NcyPb#siY>|fY+ z3o2ee6SXbi zTL0mVBSJ985Zh6RXW$p#+JWIV~$%SQnHk30NcG zv|UnBLlFo;d8seNT7XQ50-8-da+FWmIga$f&UBAZf0t#Z=Q1Xib4)cpz=Qz&xyJZ2 zJP2!2mkvbS2M-zkc4WCM5nMG2j_#ol)+~Tgx4&q^o z`ZjuEKpGN|tb-t9vxlm-9U)hm7xwOJBO5CG)KP~*lK4-V59m1R-HEvt5RZ)Lj!6AqL*dK#}cx{bt*&77aw;WZN~EK0h6 zz3KNYv?5|Mqz=9yzSJWRzN9LEE6mms+k&HV69q_VS7Zo{Apy7dE_zKix*8s>EAaq= zBfcL0r~#R6x1sSj$pEo|bzvpnXj9R9-cY>Kq;B`UFb0j-Avx5IWe$QO*CymG_Ud`+J`*xElpw|aS*`c^#%Rx#t|6Il*{nD0548<9`2`1 zAQ2;MNS0nH_Nl^U$0Zao68`N{0+l;v;D~_f;6JIctLg#T!;L3iP5!$hOHETN_y~N+ znKrpB$=Nw<>hpyc=(t&xSi_`B8Z6MSWcZZowK*5K%qcZLV8S7df-igEvvUb=9XD$h zK3%cQ{Cro$hTpX>nfW6i&UmYjs{re^^$-84O?B?B9RWYF5)+2p;k@1E9z-AxlQo$~ z+^G)(KErqDSl!B6k`O_iR=h|Aslw(AJQX3)`)-HU( z1cA%P0lo+U58`~V#8tLn_S&BkcZ%g<;lfnePJ!d}uBNQI7&#OLC4J!4VQ;)R9uvJy zFD;kkmvHP*>YD|e-Kl$S9hkQkXUYp>Bo)jDELZa6Zs5aN^Zv)VF%#QXc{>b zkGVzOD;(ll(vRuLA*Iaao;=JTuD%trqrxv|&*(|cFq6RTD)El@5|4E;jxw&bXL}I7 zuxLp=l#gxdw6#>CU2mm=6;Au5V=J6@!Le?L#a27A$`Z%+GxW7FanFHUe!stBUh0NH zux$3~ay6*a!eCB@5cz47H(>!(V_35ok~P zO@770E)aG)58^#KrbJXka)5wlC<;b`3NWdpVL~~Bo>q=HK>FZ5(hqQshgS8$1{#q! zb}*8ebbb?(Eq9XXK1*RH)rp2|8V?0c?+?*2h|inY+jK-#;yC;czN(;!2zY(9iy04f zc>68(9j`OrjDMs^hDvXD(S65%uO>EHh7Ci~Ww$?>1OrCwf(O>``VUhuS_2p2pl0x) z{&U`SIXGM+t*zmMz21hsw(1%`&caW&+KLxrN<(ZKDV6Jn*$%xWA3ht!-O)RO*1T;Z$ra}$cX5(mAjVJkwr+1n$8gKZ(?dGaLP*Zz4FVE!+M?6(&@ z30oC8etNu7vSiUD8!5`(f<>Ihdy2bMx>a#yb;ggne}TN6Y^O)3rzU1F_g`l7gSe4n zQh5HcUtO~4!H!qqXimzWS0Njg?kVl^k^GN=D!AC z^M_4NX0zQHZ6Ks+_^fEG0W>u1v@&;lc4ECBr0 zB^>E-x0)`ZtxX=XXt zHlvO|acsQ=Ws6Xwt8*9Pz2~IQikjrLg821av%5XfA-Z2N9L;3r;O1{Hj42?U6yYhC zZB&JDeXh7&*+Npw;{MkMP)edI8v6USYY$_xCDLX(AoVELzX@Ys#cGTk^;>gCe))?e z?~H^$rH(MVyPHV-{e`@^8+od_=`>`No?ZU}Z|zFW1jTD;p=xH3ULIc}nN4b7vGx~R zw8VmK0G|GwL#At;&8{J#YS)LDg!`8cW=*$TI_v6}t%@DBF2An;1+0Sq=nQxD72i^y z8{hj|kTVk=SxX=rlv0;Tmi{vdQ8?Y3f8vkro*d$})xRs56z=>a1zH?u-o{pgfvD*} z>ij&O2EH`D8!v~u}l zh_m*!tIrh2`*DMd`RYUFYEGg5+|bDYJbZJiPs{{&N$eoD_~+=ln-*T18$IBX!kUsC zY;}zEM&dG1ejHri(o%=TD{?qzVV4W3Hc#q3bw+z|Z#QwB2x`qG?NVpyD86a-&2BPi zMWEoJ)9*)s0^EvA`qilL?)F0Z6U2J*rdNHuSdUaTP;p^jKYGuLmGv&U8ZwTS9$OV& z+QrbY$3y&uY6*~V63KN6rFKIM*U~(zpJyJ}={xkPMCF&r#pAkA^G5J3-3l*C)1>#@ z+$gwzeE2+7iS4kUJE68XJP08M@uo>B79(B>Z_N+kZtJf8QSC8)5fzRhrz#Fr@)zrj zKZa`z)=W1=Rxb5y)*P{o!`}$AEya8FufJ@#!wXE*nIM_v0*5~3M1{^bl1-$$ZH3@= zx}AG(<)0Ha+Q>VoK^SfBi(?K|75OHQ1Qs@PoqO@9AA40a=c5)IsqRP0xQIV&OjHKX zZNL<1*G%z&M>#pexTuW?);jp`;xm?_^~2+T|BoX{O`Cm+&x&NS0_$HM3Bbrdt3Kz%T0*`!8SIrCo(!OW%W$=kFfTMKL20)0cx zA3AWS+Y6{dIYw`04o;l?{;EJ{w_!fM)d+QcxOBme=rkH7bWyKZfMlgu3WuJCNV&!x zO$wlYc)3#SNAGSuxEXDw1-K9~@1D+OWrn(*Ss zz<8Qug=bLPk=f`7-y%w~fYcmL%q#%X8^5Av{V`1)m&HcQ6DP`Db82t69tpE=f#;~a2 zODb!ia!=5RzmH$KlDDesAbyN<&j%2imw{6+o{PnnA*y~bwz>{W1>92DI-P%a0VLt! z3968Oq$0-3zJY6-Y+(YXx-v9rwz0VfxL<`r|8JZ#VRP}iMfsdy%vZQoa0>dwW75*i z&M9$&pN)Lysrf@mI9Tdaaiw!*8^ilqUDQ4+vPS&s6DcGM{WBo#%d&;NF>bRBzNyao z;SzgME5bsMAE2Ai1wo1M zN*g(P6@bkjUsx7Xugj87ky?CelH^XsU}2|uh>sCl$Aj91$Zm0A9JV!k&!}pSaQpT( z@^USC$J;89imcu96f~zK=9~*u^J7r(!K|xC-0_Br?WozTv;5k4Csep3F-hMO+3N2niNeaMUm1$rLVEArQ;5Y4~x= z{c6V(vY%xB&1{t3jVO1o)W|_sbJlDj!LBBgn1O)N3rsOCQ?X5zZ2f z`kY02wKtGv%CjpJerJR*HokVv0>n}92ZN3#!KI7ew0l z1_3QUDQO$hE+P};YTV2RDx2v0%-<8(nx@+0(&l@9XH4u$Hxkpp&|n7FKXj+Z))#bX zAxV+%cA=KeOD>C+)k`wx(DH6tiu58~oU+;zd^Z#>uWD(6w`ESCNSV^-#|95}T;HZ8 z(}uN!`rmAu3Jcw(;VfSMPaxqIA_{5_k1t{nuFRqlm5l9($+wx+KAPq8L;^rsDul(( zJ@Yb4=y#QC;;|}58Rf)c)#vW>2kBHw(e+2TC!UPD^z{Lc`>zFV8K`~;#oWoU|AdW|KncH16`%mWK_KW>3?q8vi-x^? ziKW4|8+l%w`ZnM1h8H@po7-R}^$1NJFsxS#X7;=MLpJTGB>6DDi+zr0S$fd|32#61 z;n!`1@oy$XbV(7z9xSN(1sBUjr1gR^iIDQYnEhV=>t=4?(YzA|L|n2lUi6ENlrJ@Z zJZG>Z>C)idSe((s#><+#tn-2hUUXgO#z@2&v$k#| zQBP=lVee&C>NQyBJTye?HWBFnQ)6}iOb_kqQB4B7i#^)2=OOyK7ISNoS2E~|VmnfV zSbxOqg;M3{kUcc?LYBfo9^DSiN#z;gOte6jsJsv%^1>xg*wwo`E~vQCZTwFB6xMbH z-)s)@3|Wi6t?#>q(M&BO6qik-r=7mUE{G<*?n6JO=X2LoDiy*M>NUhsL3x$!Z>8a? zvNBBiN)y;>_M>$15p*MxcyJM<4ezDUD zpm__6h(=Bk&|!DKA+uI@!8=v^7w;Qq5NVgD3p9$F%FfN8E^n?k`?=Eu0P)jc`DU}6 zvuVr;O{thM^~7+k<&WNxS}WaUu^NjPcXcG#ci4ipMjWO#N0xYO52-V; z1_U1sKL12n{A=?I%XT9QcY44o0UsjZ-DfmGXcBo0&f9N;GjH!z>UW^0EvE zmHMd7Zaqn5uWc;najyuzyxJlAE2iT_4&2~5)7s?*F!)!nzmmFSr-)yd1^EvWd(FuN zFnui^5^M1|@G86coIO@qS|>6z%eCJX|IUq^ku(hG*^o%xQ>_+`I7qd8vXXIYxC-}@ zx)6cC&+`oh1l^CKjfHxa$a#qHt?#XTVL;A_>wvDSo~Y~Fyn6GXZJ%sL`-jA=;1ktb z74iXbOyKx4C%QK}+*&DhwP?_(%hI&?F54p#o9jEC(pmaGi@v2*EFwqF04@Me5z(-y zDy1YjZZ8}Uw(VpVR~|X+FujDCoVK4}NByfbkk@mM4g`=!2qt+}tD6QrZ}?ar;Y+C~ zg>nVemIE?woL1Fwo9ZF{h+Dg(Ji;Wmugm}WWx01c6he&da#`bb&(dzt8?`#C-N=bt zlqYCG{?%W#ui>%N2iI=Txgsp<__b?bkBATzOn$W=w3TIpl$x7I<`B$enEsGexeszu zXsrM-bP9gs_qR$co9xr$Q@3@90kJ%**t(YyTuUl+clAG|O2LV)EDHh`Pv)5#TER~J zjm6DtZE^c`N2LG6Y~4yX^IE_y{%uT8Fp-0-_v4PJ_Ij*C4dPV z%g@E*B6n?E9od5})7b4psJRLOzR3OlB`F0GYY8V&Iz`Q^m7e|36;vn3(+6XWoM?@S zZgDkVFHa$P;%+$*6XLE3EC_{6XmVQ4<3@^p_9L>GlLN|JxKxb*e6PW zVxj<8ny_Wj7z-JQVl3MhPT2g^DHOGySQxFrk;g%Bx^oi_qduDl%8i#lMwuI$CvpF2 z6t}J#*~f`K1$^i;g_z)gRiO(aK8_1gM^Dage@CXa126z`#tOcVl?j?NjrOVM$u?Y8 zJ+vN}y#(`AqOq?CTYm9=-b8M*UU`Ou!tqqR?^hyouM3_qFM8mjq|%BVa8{fCT)QE~ zmzLf}KM$%5FU=n)QCo&g#&6n%B$4!r_K zjO*?=iU&LmqeU%@lZfDDP6$}(^y`jAogzRjag<&j4&_j2SkowZvLi1wC@=!!k)xqN z0DY3RAQ3|E6v)4hR4XQDWmn?WIiBvht~>QIcp=$Tucv8J0V*Ck#8?v6)C6xN@SwVfB>-;4wYBf`d>6?&(V#0wma&yYc=GADQyTakpFXoj0B{8aOu29RC7ac> zyw05i-lRK1sLchgg^9Vi_O-#;;IowdA6Atn5YLWJqPw2V0WdDTW^0B7-1mqjBi0Gr zhniP6>66{qIZS~_+v9I}6%BUG+ZeBXr_XLE&qB|pko+P_4r{t&+ydZ=ro)6Z=cN9& z<<>duc?|PdhVzHZqztb+9n67ot}^CYXT)+MtL_~$F=1tCEh;HpAQ=m&ke1xS|3UTTh1cvabY$MHB7Ytv`bBd5K zLc@}q=Wx)J6h_)`0002gf?N=VJXEx$30)}%=~^k_^=Wq4%|`8EHW3;R(rSl&kSH8> zS(lB7%Fiq2Py3kk34FXC>xAb7dLngFVeF>7PefGudX^t(cO=(!aT1cd5iA_jiDqKbEQ^Ez zF1NgBmv_DALmQZrBfH+FHCzJ4=L0q&7xuj-u#r zU%(9%aGZS=iOH8IFoMr0`#}95M+4}NVxp8wK)zBND=d&1$XF}o8PB?2O{U)_L)nokt$wA3t5NHGJ zO$2z~F|sSr*KwaOJKdwmaoIiHN-_%=bWGWVtlE|5^W&WB-cFV{$Jbp}2y*tN7yS`7 z9q0=XfWWA+$1qcHeDKMNn-LULe=!4VhrlLG9GQ4U0PqgGaac|=4i}w9f1l0DmQYzy zWf(_Uzc&|;NUgtSAIfJ>0R^j%o5)bnTP6uMedyB^QptSTmZNG3`4!P9)uHbRFicxL`jdVH&>RR0D0W9{BjvCijY70ACPP z*5cB0Q4dcxmbzL|e+CowYqQ>Rjz@cFh%h65+T@)MA^-a8pPNPorMQV_a6%yY*BraQ z6+otI+$1M&LU{vbq>~ikj7QZfo!Z>86d{%r=U;hgMJz1U)UdZc&QOol}@v%k#%bA%0T5p)+*_X2aO(n*O(ZV@} z8s?4eUwlS5@Lxx|09RpS&=ixj#x2Z7-!G)#bdI#9aNWHZSr1#95ujJx)#bqvf2$J# zttTI3aIMxnNYrLx9{HuHsq}3F4uS)Z#1t7%zT6QY#~2l9jFqJ1u09b?#V7e#BHhk#-f`(?v%f->m;IzygV0o55kn<$sVXit0NU89*W$@K=x z^SykS$>Wag_3swLfr0c5^nT`L%;jp6D%{TBhr`xh^1o%Y_poTmzGQGSk~e=oEJ=oF z*IeY_5DwVJo=;OUQg@|ow-6y>N`f;yw1s*BBkVM;!DlMEuQCI3jmMB5a_#Y#iCP0~ z9_4OrpdiVXLzmIFre`34Rly=7GgP=nsKrL;f4g=?5?QL$n;T~<87=BgyuIV#ofTkO z{7*A!|1xPgqB1<3-hF}UAGKP!(kHyhfI1c{r?O~eP=0IE#nK8r$Ric`e;Yvzq0;mS zP7rAWs~o=0z=eYN4AlPI8Fr7rACNRt?s8|LUXm1$2a_#_fQ1LJll0PrS)f^_0ygtl zP0OWF!HSR2umX1)RqGCO$qEW9W%c)z)0_k3fsP|c0}f~c09IsCG~fiPZsGrx z4r6XFH?&@_{xMuaf*xelLosJh(BN$obHwgyEJy1x3 z&VAtSHwC*uC)xmcXcY)=vien-6oHf$G2{goJBQ}%@nw z_If8RmV~@N<-n%{x}zLrM1eomA{C(;Nf==WW89GBt>jEIM3$a8XrU$PxCZ|#lr5uP zgVIvH$XcNblXVB( zCWgb`xSS_#YI#Sb^4b^DIl4;jGX5XzkyZ~d16Ula9PAAsBL1@0Sd{k<9Oo zmZL3IxHO+EC25W}dCwVJ>BE6;2_cmy(^JTc?T>Df;ckjONw=(m%nFHuqx*0GSoSMP z%HCx22=Z%AArTM?003lF-IFRP6y89A~eH~4F7@90W?@q-fQQ3gcqU1*b8H^WvXsBTP z=P8a*MN=HMzeiUa&ZCo!#7Yo#&Vah+QzW{TWX3N1m;xpgVbGdXs0=Lvff3UW@s10${GggfKX+ii5*8w2HU{U=5fZBnYoO6= z@eb$HHK->SpTU7)Q|Xy}V_s~owHDq)op=kBiT$}%vA(f_?BgK8fFmClqhDEF+zMXA zio*ig=;5PamUF9^+>NDj!yRyQMU=itD2(fHV;tE_whGUj#s8b0D!!QG&q@|@rk|xT zC1WycjwI>0#S$2wgY%aR`{kHH-ejb~%#u0OOe*^>|G9Nipz0^Bdawx|_eT(Lbowy3 z1cWXnRT(Z)fw8oRW5|j;CAc|t1gD$`c651mZB@|p$eu;uQ(XW35oxK*jt*J7?unT|L zHno`T45pw1_N)ofl5H$nqB&&uy$vSm$gO`+)|EuZ2*F+3gOP?tIbc9b#NAMzUA8kx z_kc!oA~5$h`@^^%0(2W6%6uwFl^YF;01|S4zvJPKhu)%&YNK2?4d4UmEjNS&Z`Ben zy5LtK7{zxWrD?ehT?9Vbc$yqWSCDp3Zj1^y7 zT7Uo{U1hcfNl6=k0N|M(d?nm1qrV^pEd?iD$d%3#%!cG)>s(@b(Ku*S^3-~wWyjt3 z?h{p!Zd>m19>c_0X|kZr-VqsX;SWr`HVMKg&WrqUm@Pr$msEOx`bJ<=?cJr`9c(NY7Ad{&e+E8h;A}0QIEzAzK)Unv$U6Dlm=E92Nh+ zOH@fh6C&J+U9x=7;HEmor`(qQZZy9|xP>zIz#+Pyow~4i(ETSUoPY1;^uxr*MpD7m zQ|||XkO8^5Z&9cqbwjzPg7zCiz%9oHv1ehGVb?{Z&35?vkaMIV9=bH#4&So}iI#U3~)- z`sX^wLYb~Bl>-EpGO}Nm_+B4`ImbSBR1Kqfd0tLqM(7!4vIKH7##_nKz3m=v%6(v) zBVwlG9C%$lGB~DC?!8N=h#L zi>u=j^SY<&!cxD&FDb&>@S45ZWS;s&9@>ik+(OPFPO3EHhVs?>Q~+lh20k7Kln*=} zT3&*ZUwI|9w_#<|w;N?DXRl_8{bQ5>k0oGF|*=gG@+5 zAfV#?f7Su)Y;C5TiF^{hz%iTfe3pXcUT6uXJ5yLafB^v;eZ$DcCD-Zk=nP3(7EPQF z>aSCXlww|LnxykyO4|AuC@NEhwD3V=S`MKl$5jMOiikY$Fai8e1QtMPAOIRA_&tJH z;aTY-_S9>;UMIM|YPZ&GVvh^vH5rz07~wgIX(K%RB0dOW7_J>sO9h)x!k`&`|{}+zC;qD%}!&+FcX?2x3I!@2{9~J`iNDYHbQb;e~#x$%JsDf}K;LQP+kn_fOYlSgboGe-D zyU>I}U{hP>qFsa$9m zIGL}bA9np;&vg_O9(@(x0CU=al2i|d3cbo0DlmIaSPG%myiozSNdrIu3w8h-1l>`I zL0J?yL9%l0I32)Te`--06?K0~$V_x=@s`!VZKQfO4lw&7>t-EkbXD5}*zpZY^&3FG z6+Pkih!>d$UB*{V+p7)+c?C;lgeV*UE9+WB$M6SR@Pe$MmR7sc><%xfM zRbNt0DDtOhAUv1P#Rfwb#6?_5n%4*&tHD@D-M>chiGlcJRz^;201$19 z_hKbF2};x24~t3TD}$2vO4>3!=lzKCf6gmec;GUD1rBu( z+fN!*F6NT@xH*sP5J(w3@hyEfV|voi%k6+B9^5G3NoF)ec##&lg3g@p0sHQz%{}EN zG8!W&Usx!wrJs=}C7ZjWkqf8`>XZj$w*!xs4^MVi!2C-+t%%4GYdc&nPe8~C1f;{- z^moN@>t&qVs(03_gRE5o>;MNYtd9TSvG_BcoOv*Wkl_mbSPa~aB`a_GS-ER)h}2OS zeo?k;>#@pK9kc4hRk$hF6RFTYW-evZg49a|MAldrVYVAzwL-^bfb&ZF#${C{ks#R5 zZYf&086!@wf3OR|hd9c69sO0T6=F%xz%i+#P0oNQgkV{nM{m6f^+o$OW*8s*Nx0q; zb(gJ~gg0j`*k6pD8Xc!>r~*8|&fpJ8P^Rf3ZzVBSQ0(S1UD$HFFMnYoX;33+4E=(1 zhpQwPDRi+1xSo#oh0RBeQn|2-HtGAxxhL~1x;W>omNTYxv5hkN*}e=h$i@l{=<0Nb zLygHO@5)&wz(L{9mC^ehTn(j12}#+6m+X@p2H@7sK;Zd^f-YK^1E)t{gSpfc>b);EkXI^I2B3_2dN;#Q7ik zK6WI!!X)yy>~*iErU2c%u^xvJK8wi7-no_x9aVCG0D11-I1wDOEGquQSE*^Y@1#%o z__Nx8LDzhGBC`UNzH?aS2!_F0 z*eJL;C&Q%x00002C;$Ke00$s>rQ@VUDd>n{y9MOr3AOERYd@H)O|abl1%j|-8&AmZ z#hA0Gc5OuW0wUrS zU~P^#jl96C)dSn0K{3a!1lRS z>bd}2PAO4#X`^}8ns74}N%@yFe(yXyv2&dq zx7n{(yTtYzpE<7ni|3(3xAOaCYXx^h)-%@O(X?B%)2h79%S3Ho`hAl|(A;TPd)Qq`AN_o07a_ zNRF&8z5?;OyqTRm5O*VgE-U|2@ZU3`T7}zCO?#d;kj@Vy=D6SBSk+h!`;%PoE)0!e z8WM7*u{*agUub_jTfeeslHt%cUw1~;q#L~q(KL`EDf*eMUBgWQ-MO$2e1(z>)vdTw zIMLG1h)B;mRg_&!(orU5392IXkyEZGAeuiRXIWZ`E-zVf2-xM zP)M5TyuyollF$PBaM17J@bYtj0)-369smG3pT1HqFTP+ON-o62ra-O052YL_@nYm zw*h1jAYHT|uQx|>+qL&vV9tS4E?fu+I6V|FEuSag04vde00000?B~p4XKbjzPaC)Q z*NC)T`}|P6L|#0pjg6nat@`2Sb5gSzVw7AS2uD`6zz{wc{<#`;W!v?|j5fygZXl$} zp4?Y*1HPLmO^w@~LH>^Xo#Qa*Ja|g30`F&|FDz(5{OitfPM%4#D5OV(-9!SX2RPgJ zwWFUCV5woNjtA96oA{tFMwMwfWbwVUcDZADlW57gy7Zt1k?l8BXt)A3!MW>2F+-x7 z0o!T6eJM|!&)Ng)lSq2C$U>2uaGsWIDtGMVB+V=8#9Pqn0d<| z4Eqg7GDxr$rKvSjqoZU^eQ!;uvP3^sAt8?k7=D+)5u2XZyw-rLZS bC^MYv>F5rvbP?`<`)szxa#C`wO~3#Eq4%0x literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-3.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-3.webp new file mode 100644 index 0000000000000000000000000000000000000000..0157c96a77391694dd63316790fee986b65a7af3 GIT binary patch literal 99032 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 PZj!=66d!&M0O0=sZtHdm literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-4.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-4.webp new file mode 100644 index 0000000000000000000000000000000000000000..7a7d910fd241256b889942f33ca41136af126edc GIT binary patch literal 104526 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 literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp new file mode 100644 index 0000000000000000000000000000000000000000..683bc0bfbb1d7c000e619d10481f8fbe42e9c251 GIT binary patch literal 61628 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 literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp new file mode 100644 index 0000000000000000000000000000000000000000..4b28622e994c573cda55fd28249d8ef2079ae037 GIT binary patch literal 92514 zcmaI61#lfPuqAr0nHgecW@cuHnVFfHubG)+W{#Pe?U*Ss#capS5cBBCrq5BUHBzfaO-@=`&lU*KmJ(OdQsE_4`lqX$LFEJK=U`4C0RRA1c})~IQ6k_sR0{71W{&~zYue|Tlv3&a=PnUEGXd@6{aNL$ z$iBb&M*|ZG8mv54cqfR{2l_bv%JY{0u#Nhe)L8jgD4MrONHm*PQuycn82oJegaj`A zus+mI4j6fCnE&Je#e!o#wNI530#zUXK7kp)=3xI%g&V(pW9~!9Bll?$&d-65+$WK@ zqz}|akw%hqkPN8#bH+d9Gajt^x%o-*F7w3l0`>%12JQtNgVH`co?+h`UO>+*7X$5u z{a|n7N6;*I`5Ez}^nK#*z{*ZC>VffG(1nQKXLnx_XbLp{1p8_I5%-a`3f>}l2mjqU z204L1U=k5CkzH^K*byx87Yyz=QN9D6l6Zj!L@q%9k+aue(B2d0C-Cw70eos)FA@oE z+S%w|dEa?$xHG;3sSWgjGQqGX%h$$zpq>xGe_ic9O`WsRD=^=I(oz=g=cz$n-ay!_d4 z6}GB<(a?B&hPnm12EVr~0vf8$B2Q_8l6*^BW17!VZWYOdP9~5~1nXFNsj(EvnT98@ zvy8kQ*G%6Ik8% z_w_%}%;TDh7TR}TGIAO2RjF=78IcJDM-)r_&_>q05)Ph?Ub5my-H%=jBSm|X+mzpX z2csOS_|{Qtx++9_ERE7I3BIQ@WIZ0|n!=LIQnsLO7hHj@>)JeX-c;gbSOLXS|N64_7)h?vmM`Xzfioc zeb@OkBE5nw#p{#qzM*~SeMBaXLy*r~mD|Ae%oI?j_e-%9O|P)f90|a&G`@hn#43`= zgo)%YAb&qbWn=yBJl5(^FJ$lMfsh&#wcy^$A;nGS*&Lbg?p&umO=xKE_3Yk9dVsM= z5i_@y!c;pCHi@SVzYdwYUNR~9s{IOUc6w7M(~WJ3lzX%36!dNuFn2jE@*!Y%{N_Pk zENOQALx5HY>qu~$-GWD1X8U;05P+@iisf|Oh_?X+OVcmgxHOP8_T$I|6r`^Yt4gw0$P%tgLl6ZtjfdE(XY z^c~3x1FYX|%LHPS!TCbvRH71uxfexs4r$U?3V|{B7J|TV0^esIzQ`05$LW$@E^GY{#Qn#d5_ zo-DCA@Lh>-)8J9U%$6?uJv>qq#(p%F~I_T=j(xjO{nnoMOh!d z0Bo-Y#*h=Iil0uuceKt$_wbw82$@+}0OHcOwRIr6TzG&vb`O)bj25(g0dmh~qdc8* zP1ucmxPFsS&6kYIvLd>}NFfeLCH{-uuTuMQY26s-@TV`FfPqu>Tzl45f^DP>tiGgW zO!4AsGnm6a_MZ?3wSAG)A6J@|({q2n?GzV4ZO>*pa2C6G8dzex%@2abjGIsJke?TRH$$d&s`z1Fvv^oDlyF7f=N2K_^(d}glckOu(&4|_bYwedY#X${_9QOo70akNgo^Jhm*DAy#79ZO7`wk2jMDZ z&t|St5(ZMZypZm{$+Y(qACNEPK_xy=WFIh z?Gt8yMTn154rL)HfK+j*)6*EqVkjpVTRE?j| zMePr;vQ#88ly?C^rSpuqD`okGjmJ16(XOMnYDTkMx`R-*o; zsWMN|)61HY@BQBweE2w%F*0upwTW(DIC zQ?5<4X2Xx~uc=E0;RKK0j*#VGi}PpdX<{yTnR7C9V#AK@Ln?EW=eMl{8~JEFJ;hLb z;EHHs2LnrAtU>pV)|IvDHQY&RFy*HFE_94W+oI=BHHuuZC^VufmVhd#pKA^-WyE9I z#Sn^?Bi!?~weTFwSh(eN?v_ji1iWK~@l24*yg*MA$=8%PTZjhdi9i_hW+ySp(iZtD3v&WEx1GKidT~`_Uc`NifK&vrPwDp(| zre$h=(K;c9>fl3qlZ((a;&DDB_6}W&kTu}V!0{Om4Ej{mF^9FRbOlao`zGL*Pz+{B zKRcRBH?T3k3R2;a`Nm60XAaCzTA(A69HYt9{g|Vy10?EA&x3tkYuMs z1h+IR>CuXE@ror}j?jTa?!gZ~O-8wAi@YG7Y>?Pcbjq2-^|Cj1TiFcxi(^v+ z;T+?g-;|K2+d`x9TMq)@yB}BF(Rihh1^!gGQ`#i46TEnj+j;G3D~4!cqOh_vu_~R9 zpyxdOR=N(u_diOQt=*I!2>!lMzPLwf;nbPC4wymz>ri__=9o5)xu{yAMbMA z=9CHS&Uys5NF&wX<3)vAo&DVU21Os`B?<~WWpar@T%}4`E_8sNb4@t^PWBx28XIes z4Q;>*^5GDg1)0M=m7D6Mi0D3u-j;zDL`Mim6ll6Bvw>i8p$@GC3C{Ln(%QF-D8ebZ zNPg?b^&|IR(SJnL4{_C_T>aMhi4ozaZNUpc;bLK{jKdj>pA+})GO!FiTWf9W!>_Cf zNkZLgQ#@Hg{VGyHgLwSR;?+-E59Nw_^W}Y+>G98B77rV$B*+u=om@LSfF40Sp_adB z{k<-vxW(~iQm4!e>1gh-3N2}BD!rX2R)jYm zUed-*Xx>NIL#Lbj#Nwf~$GmR5ZS+UCZepdL97B;HW1CX-qjpPBn0~;>zq6P6<-Wiz zgn5=U)krGOj)$!b&a3g8{b;Khic=!mP=kpj$icguUPuUerHD!d%dZ3?r|dPg1w9%?&qpAs3!wb_^N*x=hcLP zPnet-f^zIqUpS%i4@NL#bpYj9lHf6GtP=}H$Aeqe?RtiKC8W{tX-i##v4fO7nBOs$ zscnNBy|zPE4AoG6JgN!twqzGJ?0ipBorCIzW7e2YEw@YPT3G50oD;BMdxv#2#1}6H z02*+|2V^k>0|1E^n|iyJY8|pNmJJ0QMTS1!t&j;Jo)=LXTaXr>clV2!10>!dM^=9{ zhT1b+rW{ts1?z(lhS}-b)92h(H_|f`vupdL9I&13UmUfMJW9b+V?!N#%n}Ml^K6uT z;THZepcyy`t$0I-YE^3_Q$mU+X}j=<4g_)l09qGXsG4)>UhdCU7+S)|{h3hF=nsP6 z#D57W;OsxdzXJ7=EEN_rsthaQc_D;)JaJ1P7Cg3#Sh`Z)8BX)fA(r`V@RRz!$OeZ> zqNEeDftZMHaJFx5!I_u)0SEJ%g2!@4%c;WZa435wLH$^Wh@@tC^5vKcUyXNdCiHp;FRhP`V#nA2|ODM3xHfXV{c>sVX*xaJaGwauCpZfeQ* zI6T)4AlN`OSPwwrtLxwdpw@(cCb~Bx2_Q z`2fHql!RRQNWeDNJO;GEX1eO#m(*eq_~BaR|tQC0F>xKbH8*w%))CW@6Q6TyaqaQt|P4NcqI|} zUnbf}(s*Gx*g*eb1IcGRe1*EvciWVh>+gfGCjCWaz?;vp0eDguPsR>+@g)yt9sC11 zQr?p)8n)v#4<(nt4T(X*rUF0+1|YJS{0BFlQl7;zB~?YZfB7_^Gn`)D;e=FsMDz3A zM2jN9I?%(HbBsMK8PmPl_+=>uU+JpDvlYdz_&k`7I!LO7ou%W~XmmEf zRnG7}+M|alcHdLH>#J#a!El}$X_1ot>;R5wF&F5EP2^*0cG&~4Pg&XPT zMko|xS$r+Uz$|{Q&?^nU1`z@4^cOH8bnvf%D!`8~00@1>Y8fnw7Oh|f06;{=`sGrB z1$>+3{|o?x>kAv;xuqpOO7!^H;Pqov=DMIfK?(Y2=3%cFdw0HKZ$`E0KR{QCzb=lY z7y0hO_LSuJPpsl3cb-6K$ooP^d^ZdsICJRyXi5x=`n9U&)J}RQo{aj%3?3K5^p2jy z&rMSx!7suP4sKPhIHfbnK%$;(6m_ofZWFGZ@02#^1xK-!!R*kPh7H`kp66 z32=e9sfjP7zByZ}41P)TVW?VxCN=maG}lNT3^1Vyw=}HzonK(-+q|X%U6zcjk1l{( zqACz4t=ea5Zf`8nf)GcyHs0q;PR`Bz8vtYYZ3GQ~t$MgV?rU8!J2nR(mvU7(RngW= zGJ(UM1NsMxl{}3?8_0ztA-g-J(#)^$NL!_WsrhK}lf6tSONJ0AjH>@aQ-( zs37FE@X1PvPYu6BoH-JaFWN&6^dXNro-K!28b{G(u?81$(Txn;)LDF4u*f5EntdJ} zhQpLuy~~t*KjFT~Eup4r@P#G&0_!zM2_CAnq_q>hv~pP+-|l`77Hp8Iv`X;YC5o{W zxaa*{k+bzTO1=dEosX0??YU>|Gy1K5gYB3jrt_thA}Zs@pqZWl^1dV0hhBW;k`fCo zQm&Z6QYH6h_fYaj1$;^PntGg2JrvI&0pB-wFh@4Gtx+Mn&(dt5zdRC?1e)tbRGD2q zjrMp!%E6x2WF;e$(W(@Vzh;w*b1$CMqV*_H`?&Xu>zXg}r z&Cyw$Z-#i#xRJ;r5ZP0u<a@Piy>3H!n5Q{H2j z(Jw-ju}w~z{9QC0cMMqn8(?rRlSefaU!l#H&Qon;iAyC?t+?c=zvc5z$kIe)lr&F@ zOa+B~jWRbps4mZTU7j-hdX#Bb!ga))A+(?2I~50>(tqHn;T(VA&WuA=+s~*UMvrCR zZb0W7gE{D}Oq!b*^}2$Qb@O_G!hz9;>#;?5b7UBjvFOe^0f&;&pxkO)PEqQcxLEeh(|wDJTwI zpCOvwEH-?;Q2cBr3Z7AxcRPZsyDj+#u zZ3+lEGUys~(qZjI=pSs{Y)pB`7KB~Lk*B!++&+^|VuSXD!flat(|hiVUl~mOBP{Ma z@7R+vQ3zj0^scY1sTL64&J=TY2b9Z&`92p6ZqB!5<S68|R*>C0FO>2+EJ-H01)n*`Zxmmb`UOWpyWiGWx;>s5s!q`l096|vQcY43q5ydCSvVZwgw6-!R~$N60AHL5KG)6 z2bAgK%DRQ3HO9=%TCw;_!;*W8RFQ~y($8@#;3@Jy`%Y;~ZX@lNUE6uoBvfr)U0!-b zFlUM84j*&ol)DdDM*5n6BT9@F9x&tB)ML7-;rhb!L=N+-JY>#a9jvok^eWGLds~2w z2Nz`euyk_xv-SHvrGtIML}%Y2sCLF*2~xj$?@)+ble_eRlj60P>9_^;WbT#Kn;T&um-5s*v4RFG3IXAS}NqBeCd>wi$@HRwQBKj0)#a z|LsMbu1)*q4ujBE=4*0AmZHi>q~Jk|n2V3eQ?*y^p{Q)O#iDjMH*8IxD9*)I12OSl zd*$US_!&uV+a^jYHbe>k8~kwS*8p{^Sz&q;?c8nD1N3;^JyP>QgRrEudtr9 z%w=li`nGdX(gC$H8lT_#3(oWA=mn0 zBLQPhFtc%+8F&%)r31Q+*2}`R1G9rS^C_g`m-H3%zz$ban9^nSgs*)hFzurh*#3Hr zE$s8`I@?cVps}6q@y{h#-q$sej~_#r6vgem8l2asH9^_9jWaIb+R(^uAGixwWRz!? z1TwM?ZneM=5wz$BJpIgKY9C6I%)ZGQ79{jv$)HE`lCC-Oej3j2&Y7Kqq?^_Y2v(We zw6%xAUtuLNxav)Bj?${%XmoFgzZE;M!fZi@fliztRKF7dXoLM^c9N9Eri1zJX%e_& z66m#9x{mszdB3ooCTDDCRoVNFB`;F&oxPHyNjR6b| zpE&5TrhY1@Z=|e-r@^6kQj`9RI$EiWI@cLpv;svv{3{L#>F?+pzpTju4-;*4g*7L% zZJ;07U9*yxQs;?e`e<*RGCELCm|0+4U_ak9vwJF0Pt^+p_@SOpTWH%-=~L;k#pvr*1%PS%4}t)I-s`Abb)#&(J8t<}^M3l& zeA>kfqo35CK1}(Oy#n^-P+A=?^_YFUr`o7^I4yAvdndpTnsM4-zaib|8FN8R2w=O5 zCL@<;6}eHy<%)1|6ikAClMK7SAGQEI6Tn*Z`jS!2jf&4!1t4B)Gh>?-2Lht$2(_1j ztD%9pvDdp$iB>NE#pIvFF};t<{5HD9VyapFwJUmhGq-Z>O(SkiD<_0L?$3^w9Ia+` z`uNaHg%j~xjfw|Oe-|n5>)Mzn&4jk+hXIh)(10R8XJ^gxZknyiy}a=yul1wvk`#YS zYAP0s6+XSG8W+MFyzXB(I4;TiZN_7nWpPl%p z*lxgSi_XEqy^#(mK6wkkK$DLu2x0L$`CUFvho4&vzC<-lWOh?oNf@GVe&6PWzivVT z<-C1gR*ksJMU;u(TSF2I_i*gjj#&L?k~38}>$oHI(s*^#6zn`Tyz&baudAgV2oA*mAwgI4JsRhdvJmelJBbZZ>~qCRoVKPc!D9$^*oB6)$2{P zm?2}GGU;+$A#)@+1cePS+DBf~RyaZ!=q8kTO5N8^?l{pkU=IqpsQ&={RLtbD*dpVh z9x4kUaGvIumjQs0z8_I$UtEqy<*qiPR5ixh~K@r171befL7TF)y>>&^l=u(GLjT|I+ z=wZB;nb8x_@)E^*?6=TX1NW8ullv53^1?o&77>EE|-qi%XqHodLiClENwhj z@?Wh2AVB=?^mRwui<7Z|xH8fwo|Y6p`l-XYKGICr=*jaJ{;?41y!xAM^#;h-tWKI# zuhaX`WbmI)Bh*L)s*NiLegq>7p_%}I$cQCSNcB#!KL69-0ALXWfXs@U#h^oGzHm($ zLMs59x7B>*y3Px)a(VcCe#YG$ASh=G-A$WC@Vb}>vQ zOWRWv)|Vx!Y)^O5i@;OL+ElbEhojtEI5{rOSB==O`Dak)^+?tPoz)#S>sPhsy^D)j zzcu7ecWCLY#@wRY0=c-%`c}V;41WRgHY_A8RR_uzop=MG>=p{w%bOq?s4a=~7#ZNL zgI+>CH`30JEEjzhC>t`D?tHa>3xETtIYw@X7BGG9WI%_e zc5Cibf^chC2rn|G-Ib<&i;*86P1E_K28fI|8e*ORyb0)Zov z{INg*cEkU450H<(am?-$Tbzu~uC=)er4Oe7v*?>`)PKnBe+Sm^@Wj zs1dM4h+8>Rz_~&FKWY`!UuZr2E@k8vbf!Gb>hOjOxZf(^2VR~w#i$EO2HJ>;TslFFtfL0A^SGfldc?+m zA;|LwQt>skbt{Wp96O+|f$w3(PjJ+}OXPKK|;`h3ZaHa>AlqA50GReuddM6zVxpeTlM zBLkQJ_WB|8o!y#4TC9O_gq0Tu;n5pWhz&KaY!HIzGWfrl{9h`RC^T&GO_X70Ar|(X z1pM3Y^}xm=T&t1Yz453Kk0Xu`v0*ZwGzMC)(F6Q&+w6T(qkUD)*$Fl89=wOIW*f^r zkbjFDh{?qtn)vU3rg7HyD2oDM0Hps5;D6JAQMQ4Rx%+2?N~nEB9d6)pKM1 z_(bqFzH6-J9)yEKzqVgq(bW#f8H^JlEyxYmF?~OQ9q#)Aq3eSXtY@dc`oUa=c$pNy zfS(fKbP}iYpAaw$SpOT;e>8zYyZ&3^slRxIxLtm!0Pxk2$FpMP9vhg5T#hy*767g$ zK6prW5Q2SDE?(%Jp*Z+R zejY;NQWQUKh=pgL^u#U=~MOkiy1c z<7z_;oec;3suh`bw}lLo{$m4G1g!f%lLA0+)u257u2lSNg@Br>%@dg5`Q_VTW;!21 z(Vv0(_ujT)UPJ9v*4kx-+qhV5O&{kP{o;#d3tM z8%X)3gMq6&?^8Cx0Dwg2{{{2kZS+KbKX_J)C3O#&egI&!Jj1oD!VyA${+5lc@K>Y_ zF+Q0U9NZ8hA*YKVA4C&^ncDx|)PFsJQ@M{ZK$45kNd`y&019E|N`W-TSd~!7=nU0DzzM ztA{0iIO?9Od9Up9QO*`G0F^J#Pp+nisq6k+^8alO03lg#DmFJR2MIfUQc~L#HTt*W zu)7ee-+y{5i%tuM?oCR2=kx-`Mg8fm4In?Li_VjYEt3ww_X_)$`}{|U{XYv-<-4s! zPODMDXY(CQ?x-(*Zd3Wn3rR@Ap^A0^yrATI@jNrq2U}O-uU+!*jkzyVT7R)ljmq!L zWG8DrP|=L$+zf>QfKTut(Z1(4NGP-t=s_+^MWp32_HB4n6o@R_Yc@~0;a)r+fLUe` zp&i(d(_vy&QNuU{5dSidFUrs1uP9!w=O%Nwa%BDyfMjhRSd$oNI8Fr@NAfqS>o1en*RyT_^DR ze!CXv)46Brd|~zP41}5wC(3j;pP!4PR+A;ai1)F@^k&)E0~vrU*=J2BAix<{PGc00 zX&zN@l^z=Mx@{&!$y;vp$XGd0t>=+bvrE*oh(xv74(V;zM8K>RfAd8pL9Fk`D>Z*hv_=cW8{D9YrQ71c6soWr*j3G2 zj0mZA>w=5l0Re)?+Cee&uZT9Kf3N4%l}gI`&17AgOauU`IAlx5pPYwe%XXBMdw+lFB|{f-rov-`-&*e?@h}eS zwzl<1E^XFK+tTpHGMeOfoo@m%3#*;laUVM+^^%?);#eun4#KJxD8cdjZ_MSb65~LS zGXZkVgMyP#3(iWO02DjPgn26i8f48NrOo?_NC@^x>}48udq18t46pUxq}n!$$sbbC z#fe8PCzsn3L=>rWV|hf_3=xvcDqbhGkUMs1OcB&Zh2_MLT0txl4Dbh5_us)&_CH2be#5D%*Hd#% zgP3$_jBj6PYE;iXgY+J#Odfy3qNM!N`~)oIi81qqX<%u}k8w+_Bf9o+|E6Pp|Dku_ zC>O1asq{1W_kLv$R_!l>Vi7^Lps1>30(WNyYMduRK|$qf0;~P+4>qDp5SLD=v!bg3 zMTnCc8y9BtiNp=sMF>~R<)YTkbe{?Gxbf-PWV@mTp-`1o+Iu+ia(xEoWxb*^$%EyK zL}CDsjx=}KfAU)W?KWPw;hG* z>HMGbG`+8`UVuw#EowMrO@zfet5fd8sJ*#%n>Qh{^9GUX_Xj>P!^UrPg4&e7cqxzU z!e4$$#O=8K)NWB$wos)|Alct5k5FB^r&h@9sfp6LYXfc-)$<5Q$qGK zz!Ew6U@Zxn;$2Pt4tVvZBCl0M0Ib$!@6md$&X)=9rf>EPXlb3a*=Ks)R}7zsbm*ny znYo|9KsjQBIn{u$A=*+MA4nn(B8qNt(TXv%h;gSha1@I(%LRU76Uo{c#soj~duSiQ zB82oZP_qV{g|`(8GIjWgM$waBHCGgib~)bDlf9uD_UA02KxuIMxOgvh_0iL%`9C)f zx}$j`p2o$Wm7}cynrVRCV#ul!LkE6y7Dkm=?U<@{KKFC*lSSjsu1jQFL3>`I&-q3H zwd0AZKM=TRl3?od<{LRIyF3PH$1Ce)TL*|d-&T_Mxp0@8i;!JyCDSsQ(vJ|bR!qzC z?tppWR5$uk2vs#UOjDl5b6+cD z?75;1Jya#<6o>4sqn;bsUsQ`k-U8RC9F)%#kky>so z^9G4WlPumxu3|ha{6|9ocEY~Bl&WOJULa1YZ)@`rN%AUpHoUB-zQ<=Id}w|QiqL*l z$S14QhK#0uTviv#=$9XIbCF$usX^IEG5;~ofUvL==wDCQ5GZTrNoMYA7b`)X>Qji@ zXHxvi(Y7y2K@|>|Qnlq=7ri>B3){~jD-3?X$|8pDOPJ^+cXkh9C)xq6ABWm<2t*LI za3?es18Fe=I41XSHF*~|mwwZoXs#-OhdUv@JUJ=qk-Llh1$Oh=&RH#CTz-iRn(T9e za$$me*G4&u>=`3}h?heJuP+lhb8KKThU1qOsVWm?`+AXvAz)fLUHVL|NC-GQMvrAe zkB17HM@|O)WZ;ayclOhqVQQThsV@6;N2@&}5#6&G@^Jxwif^77S%Lvx1 z-b>KJ_MZ)2;+eTM+uT=fzGdxs-z@#$ABZ{TGGb-1&C~k9@?#I)_0|20s#VqEH{P5S za6xZxMp}W((;yL2rT#@;rc0^X0P0XP&9AS|=)kKKrJrYM`*!aBDl5dcV}DT2QRFB; z>Ixv4BVcXDV#;%53VCnVWwp&*)w=M2hB*1xh*Ii{G0bJ#N}P6=KYsocs_(Dq_+D!> zm35#Nin}M&;6S%rhj~I2#7eT+3yFBTF{KG2M^- zLBPd|&S~Vr`1O2*Io`7ndO^KAFGtsfg7WxJMSVc98C*%C_tYI(^NZ|{p|nDLCp7rt zein}}dS6e3)M&@8s7p|&v8XZ^`Z1N)AXtAc5)IOpuAjuR3bt4_gJ78iB@yVOCTMD(ukiG9U25X1W`K?}) z{b#d_E}|#fcH1QTsv1uB!$MXj$TSi;5n&1FhlP7kz`vq>r2d=OJ-C`e6!liblKX zF9UW<+Fll3s!pD0A0I+HofT;~Y!poL5ME{dOs5MmCQl4qMhCz+ zKXX1A3hNu5B^82}MOzzz;p#9suf+mfCQ_)CBO49Np1*3yyiC4@d%Pog1tuJDyOzq~ zb8D3$q$PF}AN8G3zR+^Bl(EA5o3jVb^hMCw9D#5ehe{5_ORWKMWLxr3yK;lAJ*nm4 zkFw6=Bz+ITwIg;z!oTYKJ{KDkFCaHjE!YLDN0%`rk+H?bZ&_wC^#Ka>@oL|uP8TXH zN?coPROWt-hG0~zb0?7ptuh$(bw1`NIyH1zZritK7 zMX24jJKeyMQMj@@yS$`nxJ$p2mZmB&tN-%Ee=J^qv4N1T%^*_nm5mk0FeFY!Ae-On zrx_bVO8`CyamY&iecZ?NVN8P}1i_twFPPnzoG*9x()f<6eoYM8eM^l*BgO;RU|yrw zb!Y#f+}Om`+wS8|0c?o#b}K2$qx=?En(?GO<4JkLHHdy+8I9PoqD=;i)LwfNE*f1a zlN+%>ZH!w#6He(;e3{0B1-f`>_kUb}{rH(?xeZnfIM#ks_&Ix3xuU-OV61?Cy$^r1 z+GGGEJA;?koZ>V2OJA5IsE~4$gx=Pu;EulU0lZt|(mZ9Yo#L6%UO>j;K)X+5x$)9K zW{a{Bm@J)#;~$LTYwYhHP)o*#${9#n`U;?dDJ!KTo)N!(lVRGlJ9B$JHM4zFS%;PN zLvk|eoefR3T|dulB}w%8b0E>Tlo-Qv+bfMfGUps+YM-g_; zm~bRn9$P+@GLsHB_ofQ{!tDXR(g|EsoELfy9Ta^Ud{fr+qr^yWSWRSAii&*Ji5R{Y z@IB=tHzmnYlLcv34KGl;HPE^iUQtH6NSNSVTo4VMro1aBBj<2#QI%X$O=Gu;^XSUF zU-TNT;)R|-iZ(G}O79(R zu4NLup;VtX&b84^V~ZkzjFI!A#ziOYl7W~u>6&I=EoM=AUChiTZWGG=iGBZpdrRvM z5k`dYS!amf#Qf-rk-S+J|(>R?mAfEnS8bR$AV_whZN6LV^<&1iM%DP?DmWmZ9-jOw! zhlEDD7f@{2TBnMvr3MF3G%?fKqim8uswx_)rq$dk;Z*?XKZ|M`!k{xwegp;YmcuG6 zIRa#oSMyqBe5u8q7l~hsmd&?^i9H$@jJk*@`KdY8-ex8IarQM`s_k*6G7viV{TN2^ zR;YQ}ZQHjS;IN+48FzGYiN6dO>y(f@r9FZC34El|L2XeH*{r>J{i%+C+c0Y{5Nf zmA(hae5YvTx8~nMW#H#dx_s9h*q0?>nNJy*@;Q!1cJ zn5MB8#w|7A(O%p!*gyW>9(CXu*jMi;@T(JRr@JEW+2dP%!-Y`mHspR?BR#jYq4rJG z%X=W_>n-Y6gxoZJE3#nyp8YC`vAb;&7 zZMRArxM7NxGDTk-H#i%|>>*n|XI#1(PHGeptGZI6aL^?cGlMdf@I}t9PD!0}vvaQg zL)>$yU&HK|F}TTxV zQx~X?*d2W}`O^#Cj;NARS|I`4U_o?9^CZKzf2S!}9UieklD;A`p==0VkHFaU=&x=?Q9!3<4Q-+e11n|PP6JP0WX0!6cZA#(kNru9W56f^#x0pu{^H3F8}>LBAAL(*2{IlYLX+icjx~hUG3Ya`7LO?4m95qbC2qgvu9FV#k z=gdg-qQ+c^3><MU{797t(Gy9fQIqlRL>iRUS3HO_cb%k|5AlVG6M-oKDG&?C5a2m1@q$lTIx?P`wTQL+GZZ zhv2C&;J6?BEJxdeSJ^k;KEm}lAbR<3RP~uq3$0>UjE5xrVyf4V9ih9ROx7tiayU`z zx|1;1bMvi*^mAfT2}7dw;6^@vrTJ(z#NY%VkDFQ6q{D_g*U}z731J=Wtpk ze3vRw6D6A@#0Kh=pGajjd~P%GjaKi_Np-qUWgrb0#%c4rob7g7Vu@Dk{HkkfxiPV| zAR=QM2cQt$R>RiG-7k!cU%^G>H>5TLk6(2tdK4jfPKf_LB}OiX77FEp2LHTlS&#Y- zrE;TUCOZ`Ty+CJmYG#VA2T0P^wWmElSkWhD=DdD~j#NtNnZF-P_tbAD?bJC$%7=x; zqkbes{;Y=4-y~AEcqI%`fIXNLoM`gvC)hhyGV800**eGoT> z3(DyVf~8+-gZ(P^;P3o6CafdGLo0^Pcb(H^b&~cLl@W*q)NM$@?9T@g!XstJAO0?Yrn{I26Xdo^EMJEuY**CI`By>I>;+bP^Z?JrSp7-jB~gVvZOBT>a9@H89r zO8t3nOT8S6|7N_Et6{arM4p;}zz zX;%R3jJ~1geH4yQA{zlMw4y6=LIdtno;YPmtMzZfH$)DO0=EZ|h>zqC}uY zMcMO59}alPv-X^{YfeTI{d=Mz7fCc>p;ZlQgXG2HTk-ju-uNZTY8ArhA5?2+rBV!)6F`PY;+7=ITH0$1$ zuRnxFU`X3tC340!2uZ}oH0v2G6Dd;>g;??5rAy_*MQ~ew$J|3$?Aw08qEEyy4+OO$ zZHuRX-s(w?qk|aLv@8U$hudFQfs+jrHe-ZTw)L=j1#A}n^it)$q(oVybp2D%s)MHroOV_d3f*a#Zz}=ERA!h0oWD@h@3vt$B!9!g!vh}C*s%! zBp0j~#GJZ)T<2eKcKELe#cb0nXa->Bk}#bG-J^t2`esdP<;Vf4MDj~a@^vf@S4;ZM z@$XeVGU^Q{mWqQ9C?f~F9L%rNwo$l?U#XNvilt16jo-m-0?iA-Lig;bc0@6(uR94`L z>uB(gYA7smCc|6{l47ZcF98=ZHhE#49+0RmXnGg-*VS*L>?(K8rcpupT*iR`*s+a3Jae;-Dx2Az^$LsF6S;gXWEPN3~ShUxaf z_((c6q#N1tX8OzJ9^uoZ1tMIZ} z<8dL%qH*kEBFh3OtJnGc%syIK^A8>x*8?kF$A6PNJ==*&5@G4HW3W%a1D*#C?=>vbZO&w5pT-NTZ8 z!w)TbV-+=;-@#p4)4uNv%M7Z8xSj|zt`O14`F$M}dz@)YQoAY78*BIrNPRt5Sf3Wv z@t7%@Lg++$>8>qIK2b6cqwFvdcpWQ zT+DBxs{)UuL*fW^$Hg~ue!cU3!$WTLg7A6)En8swY_z7f?_&|PuF8J}$m=ViR=DL) z|9IoGnBMeGf!%6qQXx^xNTVp}*K{Z5eAem*O_?iL4M@AMypWd&qQr{gw4JRcyO=o;&>>smguQ~_5c@*uo70J zpmoVSQPwY>T!TU0M{0lGuvptAUEMspnYaqu?)8@{h_v2EUHFc|M*fpEDa|mzF6IKw zZUg(vLk0hZ_Oj*MCQ(1}8O~1KzjoSZBGOx>T_{rxyP~h=*BBTt$syDt@p;|f;$rNG zg>u2ND!3)A+XS9$$p$Xsw=E9j<`ggj~FCP-z)+Ps68;qo(bxxq>{Q><& zLEaH0>iL}5gOeBUQ1!*pKXFhJeHE^np%^9R1IX=lAq3-b6c16l>nP-?9$u<&>RW-m zRLn&{bwYP008)l@@m+69W+sIJDBkqkB>98Ygo5z>+$mK+>6Ogb5>I>jdTsc;?|2_6 zTmfBY`ZG|{C<{dv)8P?)bS%$z923?xMTwU*XarxVDrUZ2K0m??^5ckcDLd)d{<}#9 z9ph*GUNBI_Ih%6Itlp(qx2J{!^9)BAv64_UV|{XwZg6Xi6!s?hPRdpq&!ebYabxUW z&m%yj!__^>f(**GPsKO#I4%5yjB;znr?^J4*&32Om*Or{kGc=#Lz4p?ZLupk0lqF* z;{#v9l*1E@tFk+8H#A>1MhewuY| zp^Ine(W~IL#)kqycm;IhyAc^oz&F07 zL>qJ|aVFTu)Su5e9}UysBF!g^OF(9{^jFZ&%vGo_+$26m;UAVU_-BWtGR~mZRD}?A z{ie=3tpt<30xZhcb95~h*^cy#9$=o6l zHL%aALJ%@fH>7h-fQbs-lQC(ffD$7S`)R$x zzSvnv1KwZ>7cRromxs;~bF-%D49uCDkD^`6DG--kPXPqdL0H-LQt0701p|0g<{G=I z#&vYc-hTd}JT;w=V867&cH9my{}I*U0-!F%47b%c1xeB@k*R~~kYKG%A?(V_w3 zdW7`x_VO?SRM+*)et?k-Q4p~mDj$+=Q%|(xlRlB7HIVR5#nW}NXeKu zLAFhLh(7w4>=BEmz5!_uH+aJqv7pUs`5f;KItI(PJneY{jV|sHZ_Y3%@E||nC5h}o z5(nbsNjy)E$Cxand?HhR^Ve^jjl%!LZV(m$nuN38H~K^oB8q#IcoCb$ZY4xACGPho z66WuYg>fJICUu2Hi1C!Gy;w-&Ttp0)-i_8DsTMZ6Cjwo4` z5VTjPjI_G89LsVu2lD)A)&DosVvuL@_4)9qfdGvdp%2$EJ^}i5Fj7G}KAbLZiC$a8 z#05yDD(N6kX=*ik-5I>UGRm*7=f@^>_p8Z>ownrY8-MLQGpP-c&IDQXLy<-JDr)*5 zjxJrRe-o_Y9$WIkDx&4dEy@oMy>ZK|X^2x3^ROeIh34#XJJlEa*C1m_nEV#_ znlB<{x$3*j0NobKE~7BKY#6&PzHFvryP}P>@!+&}9~p7>)hP|>f1i9|)i)hcB-Jq; zj{q#4hhb!;aVGkj_t#~Vj4~n5m$u_YSO;dH7fK3AwMRcF_I%X6{0Nbzw>~7)n*R?ACDZk#pF5yB-EcJE*n9h3k?{1p=9AHA(e&a^YU7*#{dHv7bAL zIv8i=T^{IPm2_f=mrVcfQlA*Oc1i<@P+JP22rNCuP4-XN-my)ykMx1>fSO>89U7u! znCFclTYe!2USD^%pRd1(skvlX+wxGtLU@91GXUBEQRX@rr+Tf6aY~F*nUK# zCvBVT@VYlu6N{v@Iw^ks$CtX!}{@sDmnl7r_ zfD^=OG&CZRn|L$li+r3%CUzCSUP!sGvq^|=d_lC#jwT@z+P zP??o&`W>EeHYc&8qH^9Pc=>KMD9DcqpZkkrRinEC+uybD42)*q{yt4JA{TC@6(NF9 z-7sSSNy5;AAeWgFuU>-sHcd**ZhOmbqV#8IqT-R{yJ zYgpgRNCPbGNB4RPx?r3BpEL(^sz-t(1j|aIOhcudZ}~&)b@vgZsF*1RE`@YnK{&?V zaQCF&0l$Xc4V?HHDDLn8EApoveG;$^ueEfIhzUQBd+g@zG^by|eZdE9BWGnjrUFX; zoU@e8f$2?jaCzj1W&G`fTS&C=$SFsgk6_)*GjyGCLT&=I*e&t78VOk&1Hxn5vRk9f zvd-%eN4Wk9&9dueXU<^a57D~up2yQw!38O^sQrYMRQt*5@8%}bkSU^ppNSqD#QA^^ z+dXMdoLB0tqS$qN!26uSYfRAd^Yz`*YCCtNIkb!-l#`dy?NM5(z3Zs%# z95Fb+K|CuGil8M`?B+aA*g~swcTCKRzI8W0>eMC0t+vop%QkX=#VPb2)nMXmq5(#I zfwC*zEsL6E6Ke^JWNJBDy{>rKEUL8jx#MJbN^(k{-vp;5sr{wozX5EQ+keg}YrF&8 zd@~ytw2^YWE2)O+;^X^O;cj^Zx<^~R0?B3n{we8l;5~}>HSxvHbqs|w#*u=~Iu1fD z6GA^)*K9_k_nJka7g11cf{7u9L85-3#++@6rFCcG@Na)sFZ)=RT{pUa(nSeSrFGnd z;Xguw=g}r6HQPj4i!!cqzrm;o%fGx1k_%`yhwW6w<^F!%+K7u`Tu{{XC3jjIBQ=6>_P_8;WG zbsG^v?-7C$hvZChB)+-SH{v|en1L(?1i2r-)JOrx4VNo9g(kCyp4AXYY8ep`5GrrR zG@FYL2>nx~FAF{>VIMSy>>hO37Bx>=a5NhGk_)+J%V-JO2Hl8xFF@Rw!H{lbFq);N zhMstK+4+EY2w(oDn?jWe<=57LrSr5?74J%p)bae9+D)dP$UciIQ!PZCMAyEG>Au=~ zUshER;rgt7v-ET;5tUpnKZh^_wdP`t1$ z)mk)7G=z)EzBW>C>fw#s!q*PhmKSN090K@)Q?>|)yUf+8gvUa&zqwT((S;AIeM4sl|BguFql5C1S1QGC|{m45&8m6RLw z1EB1pQ(^C9Tmqoy!THtiy(LxobKlXH59ww)3G`4m)75|D42%tj{7+9(v$B{YH`TaA zSx3@!5RW=)dU{mIq!+o*5c1);OB>$O>>C}91Zz`4hXixd=Ii5wwM;wKD348`1Z}-} zLL&9F46sVWNxgdH@38~xix!33bjjC8UrWj;ilrv!C4@b_*4h~i2_l9qf|5*;CbBH# z{h2K@QN4nL?d!rW@@{m_cJcJ(Ku>Iis{1s5CiNh-!ar>}F@ToB;QQyYD+Bed50r&A zs{7jiD96=Ha?M`gslP^0)0Sf!@6Ze`_uA*2iA;9X24p%{8E{WD*P`nq-aOvu4<3|E zoi%(6Crwb~$R89!W(UO!macqV(PcYLD5!pag^X0w5#w#6D+@$Usy zGPWruEOEWKQ14NY-ua`TyYuI^dEc^hfkoWAMyIuENMf%OxYl0c_-t&M*?nRXJ8fOnG#Wmd7m* zFqhniCWQ0Y=#eVMSW730V-qMLI}qJ5w<^k-kR|^0PHr!t^_c6&sOiUvI81nH{9vx2 z7nI=NFxk%j)d&j59w+&51MF%~L&SEd;_ za_+9A(mp$znKE>TbX%1PaRz6i;50saa$vewj~U7O7s^72wMzK)-J# z4g3e|YkHwD&DQ$?)jhxErYa(*G%xj9B^o(Z+u;V1vI2XxBM{7!lzKm?@yFDa|HkvR z&8ozy2}Uhp{0MiyctGfw$6_eW69gOhHw;1#zjA*R*|&Et${sVTs^7*pUbvPgUGtFN zvUeZ_S$(8YfkrwHyp7w(w?bv418|m)5CkihCt!?|?bk^Ot>e)FC>%1GK~(~JyS1qN zMRPOhtxAG%lOKgv$?=oT1`!!6(__e`f3wrYOi>RB;wXda=os&U-i9ot;BdhGx=mHU zKRxHW)1vXcVv0hER`%nd80!hQSFC@M%T#3C=&$|kbzN4W4&5g^(X^VHd@l;|4I)f* z_~|VykU@QuR{YdPt|u;UR}fet!uA>?4`ZE{+D;`NirR>6er5xY5U1NPK%}M9Jr2Dm zSBX^r_?(oF48^Ss*Bi;(NvxtVp8bNe?mm+ zE;;D{_f0=;69Hrh04~+_JKpE%VC@8#xeqy0)5o9aKh^hDR;gF$|djfJtAE8 zMp7VX9lTassS?Xa{9s4E$%2>w5=%ND52Vp}V|9oM%KUBPoav9On+$?rcZcMkP7r6k z70w4E*D9n+ehCRkq-R993L%B(qh^NpaF6JIG6#B^ApIEY#@xUYt!WUvd%+;ioH647 zh>%)aV(c`vDx?R3@k{l3?BpOf>ub7iFcS#NV363f9kb^^)y<|D>*AMEgdCf%55oJv za(S^+2rE-V4U4+M{wE%zo^UW>1yy?UWd5nL!v&3DKH=3~j)geLlD8U&nbE;H<~XXz z43c6%-#Gd0_}+(6IK~GB#!Le8SNdn~;rF6i-7iv`9;MmVIj#uhiGswvK^lcY+kcxj zZN8pY0w6~{08A~liq$mQP-A`>LkLBsF1R)E;gp|Q-HgChL|+}|2H93)`ybJ;vG0ojRSp(3{;><@hSq>Kx)FEA*UTaL2C?ULjfR2ZKj3vVXU?k}DwC_PqPY z?E&4Suj1jpob-nH=Ui-R)4XkF|986O*Loaaob`}NI`$Raw?gBjP0!w?Hs)5W(oYjq z@_%bPoK@L)1+mI|WNka>kiCokj?%3L)(YNH6r0>QkIg-@=va;)1QG-oxuot8=r1@^}bZzPZYB(M?J&c;v4Yztu%d=fNaVZ*R^_!y}KY2L9Baz;DF0I ze`65l+p&NunEBj-bbEt0cbs!r&TT9^4F;wSZ6rtg2VgEE^+QdZzdJh9_ay> zjY2)+eA~HiM7SFuuWjSOp{Dne#|-MDI-QYVmz@G8It9pR;K;uCN1 zDXgZ-bv_ByV*Ns~kw4)wUmv!4$a<+flI8?K<7YcAQ@{hXL1;@sd1$r$+8&?}KOGs& z?{JVYJ?;Wn_noM)9r8;>OPszQ+aSI-WD#5v9Nj0Mrhr%$ohV(HMZ1TY+b8{KW#E>N zfbYu>OvwKY+E?uL0C-LjFw>rO=y%BfH1J|if~a#Q04+`l+PTabB=Bhgev>9mTRm?W zz1;P3VE8n}6NYnE`m3{P&N%|bkKBj!m{kYJpk7JogZ5QJ9ovTez-h}Q5Q%iW!F$=cWpb!Xbu59d4(6jwA|)##(6a3X@%o!>4o%a#Lrt}Vf4?w23|~5& zMYeVTElnl1Jk*+lpaKv?q=EyOK5{gw!o}mVkfTxk9kU_4VCIYod}4zY?w$PJx#3+y zN!Yk<-(-ULjYH{B*^eI{k0ka;WDH! z-(4W_JR{~~>C-b?q|@RYso0Dgzb#xS%3}U-Cu{Ffg9#I5iBK5yG~B&^Z8&=NWk`6a zh_^3M@891(Z(4}uEqC73#~(r$tmaiT006P}cn5`=o0v4%XHCcmO&+UTXWi{A@F8QY zeF5;0ue$`%99(lqv&-QL>5UPTac^~ozT+3}2+r~d zmJ_kI{6_AQ0tF@U4dUjP{aw@9wd~ZXNBg`2fan-mMC`J56<-O~T-JsyhrZrn5Vf5n4SLU# zjqNrkAScfPAG~HlTrr;1>gI3UAl}JW;M5KLb=V*kc76ycLZn(2U;TeokBd&~^VE#V z0Ncbl(e~1ARz(&H)5=nRET_Vb}C`z*E#C2xcYP#xG~6g~Nh5|oF(xll){HL18V1U;OyW3uFb zm2UI+W7({5Gx&|VJTJjT1&+;S0j84SC)t9&#Wk=t70E~z#TBHVQP`=ENG%35YSl*4 zD{OsjPXc4JRkfEZ^Vl#gXeJNPSn`tZ9_Rpq31{5^|Abb_!n9KV0U%xFqE0lM??5n6 zNB$!zXL_b>$lBZh*nrg$(lnwb9h1ZuXH_<~WayYM-W|a7DY^N+5+Os_Vm-tQ(ZfWN zAt$0w1m5xbn{gY{_H-NIwJe>PRf$!Nx2kZW4jAAF%uRD-1bcJs-6kw46_p-SDi?6# zCDO{f07e}zbvCBbadDk#jr!&^O-`XZ2cWFjnjj~?sz{|z%dUA_C;}^rhVL>im3Z+S!D)_BsyIjO6xRsJmD%yABHy_Y>TrG@Gu7IKf> zNThDuH)@v2T$ZvXNVK3fTbbF5Qf^<%(-rZbPVHlevB^k`;NC>ae(f0hV~PBdG??5` zft?3>7|J3(Quf2(D9&d7^x?U>fZ^&PY&?LzWkT)?Z`&NZhQpTF~2 zcaob)jrAf884LhJlbxs>yEyU(yAr%?zwdC~bRU;}#j$6oN$xZ;r9YApX;b})aKLw&0S$y@;B&Mtku;wTKaR4>* zhNtgh(fGt+iUa;-!#*bO^*n68j)|bOgY(u)1<&m-CGX6aYqU>PzS>UD!!EIR6!#_g z3uJgoaLjlDNtxyLekd^hOYj!R)RE*|s9y)2LO%TEJ?_f!*WPlX@DxD9+`(1Nk0Degz}Ik zWZn9<7wVL&m?q>27IUvA)4^~UAPx5);*{XnL`jAZFD30{y}!E!xGCvERXjz1ipeH> zON^p&dzwW!F8d;*&2`jF^Xdb~Tb;-Y7ZiUOnNH}=@7#W6Z2r?OQ7-1k-f3F@@DjQdEXjbd{m>6r4k8PeU0pm^)?@!x^FnO9BEtoAw7ErxIfV1t z&v4pm6$4bn$5olZ>0SF;l|tVb*Ch?oFEMhAOTb1pk=b z@;^y60z61N4k6?Q8MgTAAA&*M_BA;VKFe} zYVBuGN9Li8z)H5|N`sPpdLV|DF9&lH9+E+w#kl7p%Dn+ngS~dHrt=TIifS!cE)|0^ zo^Y|=xx9RP2T;CPkFHDiYb}}DZy$@1M1gGKD#VwB5wbJV5EdcyY$Dia!js&=RO3Kn z)@{`p)gnSw{TE;beo2Z;E`$ZIsy9#OiKxY?l?cW$2OFlUV+@72Gl|ya>#@5c&5O#- zsryLo^av#nvX2c$oOk6PME6vcp(3a{=KZ`$tfwBUMFMvdPgThQwmA);O7<(jUPevi zyBbn!C+~r!uTXWTqBBg*0X$U+7sG%6000FasGYVb;$N^j&q;O;UHQegf{~8z4>)6e zV&plztot?pkUT=S?^SYi@;qgdZ4~<9|DIUE{Xf$Qc!-;p=IsEE)N{LeQg|mIa02p) zy-jgHIJ^kbl*h=otf5UZ@GJRjg+`nO7dQYVdkP&*HVA_d(;2`UP`KmTpl+QpHFG>u zdp^@Uz?UO}2`My%!{AC?y29~v8j!(YHE3h+Q9$5i=%EWI#c7D>1Y_(w5dV8e|b?+qAq zI|9V$t*mFfgNL6^z-)lS5xfz>6pS_IPyE$1j?Hg1yw>w^71aHi&%qM|k4HSI`;~Nk z<;|X&MkCkY7XoHkDw#~CI{Xe|xUA^%r!5`3L~d0ct)L7GH?7(fG@>w${g?7lg+ZuW zIM%QED)b+wGLr;~L`T+;9>pih-H|s8xv{tVr~DCjBf)ZykOZIX8rS`Lnba2Ngkbea z1dsYr!8`Pv)xE{4grj+)4 zpkz<~C;UT28a?PY!N;x+q5H?cl|4ZiE52eRgmF)$97S{6Q%F9RZXzgD^yY)o5qp&2gv@<5pro3Ire8DUvj zOu_Jab!qrUvKZt&k4Gryh}iDm)iDeBDsZg_DG zy`KbSKthQBMJEJd%w2|jbuWdE2tO8(NYr9*ItMMbC6RikG+;)|CUzxM@jBqz(f~zwYBKIDI z(Sle82WUGrGQYj*m*H8#WK7RgTR=U$DXycowMP9F39Na#NdsH(e|^yQ=mI^PJIEyF zg8clwqm&|Rg-den_zhaM=Z=LIj~1TUlDMZ$IjiaHpu^0uR9l{nAt&m$xnEIA!MW z3SZvRef+wd`))72T2C!TuQgO{4Wn|zoJ1E5f-$ycndScU;teSK z8~T1%X%;*EqG`o-=h|J3CkS#6k+gxh=SuzsE%QU3GIXy20w(hHJ>n7p;%`6NROeY5 z{vNwiug9j&M{0v!3_*RD;qmCZ=`*i2w@%iED%vcWWosPU0J#Ezn!j{lD-P?K)Tk1K zpyL0q15_}mlphw-w-Pyy@GgW7&z0YT`(jpF5`4_kfkbkQ4DvmW-?~zD8T#d2>kei7 z-LDLAF_Eke4c{rCl*w=fnyOL9s2Xc3M5e>!n`gAxJPHd7jMN}+v9fiPC|P~`+ZA%D z6b*2p?C=PbALeDaC`Wq&V9HlG;h$6MOQX+EXGt#G{*xx2Uej)rIp}hrh`}80h^jRw-}Y8^_>y0xg2eCZ7nWu zi!K=9etxn}#?cZ*d}={FN|RccaUgBzm{@ia56f_!3+< z?V!{XvW@BIR_NZOFrw0Y^dqQcNTBYSZew})l%#(Jqk! zIN|FC+yp)$NUO~!+n+b~iytf2;6nlE_0|$r`2TJKPOYq#9Y`RTqXV(HGndQY`|gZj zwaQ?$EAx9DRKw+q9^uBN`byZVw)&PZz%O|&-iFh-#ZtNi*%m~kD7tzBGcz4|v54+) z%a9=qUHF%$M+-DoRp|~sV7|f>)`-;?_yN;H+BcuLqY-lpso5P=Q?;L{;TqLEHRJn-$TN!42p}u>Y12AVSDKXhghcAfCYjIse!AZ>p@58j$?x_ z!1!J%Z(w+6Eq-nWAjU?-tJMBX%*82nFicfy?u|De<^_2=60LupV${_i{AT9NlM?nP z{h+j9okPUUOOyS(-#!wn0ffrEqnY&3Jt6X7N)R-?mX*Fa)XXJ)^0Bt1?JXtt(Gfwk zX5s8t&o+*VQ5FH9x)3}adl0eBb?rT1(Di6CufF<=CB*u%(AfsczrdFDgA;NL0z)ue z=A?)B%+*)f@H#S3$d#1&HkeBe|LM$vuDG8F=CB0P!A934o2?YdQllu0cFvc!J{_|q z%OAA&#(4ufQZlj5wlw7zg$Y2*uu$zXw4)%436DnG{2cI?ml{KEm52X_u*f0$yqPzL z0+>9}p4=fx9~d9VBZj{tJPSd8z3vQgqj`h4R-}i-z8&_Ui=+AuV5Sgi-v?;1(r?zq z^I+DPbdaVo6DQbFeK9?b>~dtkC-y{Pkpx3=zC^rWQ8*C->R^~jvH=$WER5DbkV>)0`yMfOEv?{KM}66hI=N-Z8gPTE$+vLRA`ZnNhM| z?o#1(sSD&w0qUKL=3QVJ8I*t?%Fy~0Oe?$1Mi{07Uiqv7bDl|qkNW4Q^BzPOwOdSu z{4?v6S?pYJ3K@|ba!xo#3GC~&b=Cc`#^YR<$$F={nczEm1Yd<;Q`^-6xgH;cnSiuN zUOZl63atidKm^3ho{g|5dI`StTHoYu;(@WwkpAy9k)WbzdHYk*VQ8uR zL(g>UXB5E-dlV^}x<_eL^v)r1?ru`3U=)*N~N)Z z^%BRVPEQ=+a%2^cSib*F8 zEP5d{4(ARQ?ltrPd$L{)@Io+dw)qE`36Z_%zD znG`6=#4||zH9}?8$&1QJm1K>g?L~*T&-{%F9}oq@w?*Bxo~>I})W}rbLug5`W9$;Y zNPr%;{skObc!ky!D|RDBD7aOt&izM$LpEz>N9ZS#;65yEqT4)xI&+{$g>n z%vgz7gV`)0A=9w8Sd_pJYTs=CLXdlpWwj(Pu@b6;a_WpUUi&Z(yb$K8;r& z$gLy(69dq|&xYk1)TWSxr;WzWTYDV6**DYJ#?vtSTxGP`$ZO;qejV=kG#X4`y?A26 zXPQa9T0)O~rY-{!a3Qzd8(t;>5h~*n02~xEol(W*6q_UQ%j^y@`SCV+Drv2ip+YWB z?+Nt}XdUvDBVmTB>1Ns?si9PVm9UqK1;0Rkc6zyP)cAfmsfut_&v6!E8fKnB6c~q! z1VF*&RLbqey~+IDF@Tv#1HRD$`1W&s%EE?<+P_t)ZpepwTf-~t}iar@lG!fEFY z#hLa-UqZLt3=_CFyY~>EsTFu=V+Jp9*i|@>!UR=PvxN=O{-n!o?+UmkW8QT=vDf04 z$Y8D{Q8K5ruFrQuH$bNn4lQdEJHxp($MgFokB`oiZWmgwpvIXPT!aXGanUONAX#-v za2REpSK%|vUt+?{A8LV`gfyDdaxJJ_=z#sDS*cF5X64uL1FX>8l-QjryW;?qEqmn9 zNmC*B!NA6a9zEp&PqIE<2k8^4K8;+lsJ6D_xa7Z7nhs?5qmF5$|3-KecfKCB^zi#Io*l+EIwmKW5u0{(F~(SX z>+FPQPXaJiax(h=OS*kf2>-%2tpId34j83WYr z2Za}l((RA9{(9r{iPCeL&tgtJ&fk9@fL~>-8^Yb2Ax577L;tc_wVaam->+j0;xA_c znp!U%ERE1>o%I4Wss+3Pbxw88{)ncqGgzAGYn$Ii-(;fyS5G1|x~*H|98~WO85HM` zN!)Fae-Ul6+UR!CJfnTLv8a+_+y-ze)5PMmJsRC6^-e}7waJ#P%_L99FgT$@Y$*jY zzVcy-2(f))z-*66=-n%{HlKXuM1wcs2a>ohP;t-T1?kOXrh6=`U}b9oV04XI<89vS z-+vK#gkNnMBbj@IY?Gh(+t~1pAbVW&izcR6CWqlKO3yN7JB9G2(ruPXl>a|FXHm^$ z-lipFI|%pEJ~r@ZW@s;5iN2@a7c6$?bga7p70SF>NJ3YhQs2YUcd%ViD{{sjm8f8r zq%jVDmOzj;<64nZ-XICE)LcE1do3f>D^@h)!)3thb1@?uMeNT?!in%f{3hVFs=%Ca zy(Oh+&tEDM-be3af1s=7EV?cs1}>t0`bidET)za5{lvH=dM&j&YiYecc~*!wQuQg% znsY+{Xc2Zl@3X``>AhaeGs$+95{a(qh`@CIj6J~=Tm~BCmGy009oEERLYd+Mshuv~ zS?;G^53|8?W(*96`~uS=T}Te#pZb|jB05Od*zM1pF|wlIvJ*lPL9%5)^)PA{#2*|v zo?mSzXo=)!&ndA`{*j<7p)x%;Pj70xN~5%~6c$ZJ?C9J?iZZYt z7$E3pxNY8P!IW_D^|-g=j-tGQc|Kwm@vKonaXln}xb5PJV~ixX!|IezsatE5GgpT>~;(58S$g+jE=ZM7joj;d_+rcHEoKO!r(_| zvMZ~ZBOtl)9VA1Tu_v$g@Goa5zc6f>R&a8ftne6 zr6x$X1Nz&H(l~$cC|k{p=s%cxLWt}pB`)PXvUb<{qD;v)nxDoY~2*!+trH0 zE(NE?zIn;Mj%>jo^d*N~BV#8k7k95Xf`;*)0?5_FOSD(?Ded&SU!pbwvfEg*?{S{& z9S<}*#M`6NvE-&j@V}?_c)|TCTF~K-kMZo$O}5^#IwO(Z0vA{H&%=+C#9nC-sSQtc z+kT>$MvLDJr9s z0YFn@y5L!`+8V=iKshrC$^}9lo(%%BXR6O6CQ~io!`s^e7+f+>kj5X>wZt8knP7{R z+7Jbv2(qdb$(!p8(}rbXq$$v(>J6>ZbtRRx5J}C{3ldqav(s70jy$&;L#EDrdg(X( zYmo!ZBzf!@%C?FsSxUT<64KrXoYLhs8)*?I?{2=OR~}fCF0ij9W`FXDU_Pib8U6)z zUWmvSL;(1eiT-FWS`4Af?^-E`SuCDBLycbA)6h%sHuXVr<7R0E@(Uqkgi0m9rZ5!| zD~>4}I<$s?5*PM5P_0ZQg0}B2r;5Pmuvs;p$2@Ng8$UaWqIzAvf&KAI`}4VsM_VRu zN!6saWg!{C6RU}zPmf7jDHOu7hN2_1x$q2>rIQcL%+b4!6fp3-!D$AyOL}~vK*59W zQ&0c>0j`uQ3-O|uhb#GWv;rrW^*fxmVMX{`lFeuUJ+O|hqghD@pC93%Y-3kicnKtR zU@8__zA8WgX4a)?2%!ixjw&rMW<&mh5&VUGpu1OvY z*b5Fb2WlhLtAf+G7~87X%@tjZ*AF!G!DUKI!%#CR)mNx^1upOTEZhK^(zbBa2!9e# zBvVMCw(%I9!B=2T#jwBa_H6KpQW3-5xK}o3c%mw5mucvf+ls1mOD>}=Huu4e^Bpu3J@&{9W-DK1*lnTl5PBa8L~)mrN%>r>Q#-*8?g!`OwZZauUDCl_Rn$+!OaK-p zL*bHAr)L9D_GnBi_C^NPUHPmTF~>V4c3e4ebSjTuMd4f}$;?uY^dlTI&(=Q|J0XZ! ztnG(rxOcet@d6@gXWw%VxNe!>NnYlZk!XNb72otAG<~Uf)0N1sw>caAj^t6tgewgW}?Y}AWW{i_SX zU*%o`J(NozJ+wLvEC`%VUd3=Nh zGGFDGtTyXc3RNrh)XsAr-~Aq>$@n0w&=yFC%3;O)ORu}K6z&|l<+8u#~whsB(T!n zo78aYQs@jG(Pq28AF|5+vVLq&#?5S(&LgHvPqFKAi;bs1d4T@J!;CzAm*JmEszX!^ zN4rP0Za&_rQ^+-Kl^X4Gc5xYuO36EW%74kTxA)`s8lKEx z<>2ySr>{{4`Qaa8YwMFU_LS!e*k^MRVa~8tec??2zLna5yv zH}-A^B0oobtq7y(Xz&~U%gl0URRGNwKPA>%GDwYC(6eJ>*Mm5N`qhBfubR^)F<7r4 zRZ#H!=qi9%vZX1vbRfW~UCPO2-!e?rIKvsb=A)s_SRE9wu0lC7zPKRVbi>I!La6j! zyNZs?+{+?i6#g(sF^+}RJ8#k7gzVLsu9A7#t3!WmjIRvn@QbTe{Cb*k(`KQdh}f0& z#=0jjzlG<>y2^Ih5nOH@G0Iohqn90vknSEnN;A#w5W!rO*4{kunAIQvK|sF06g$^u_IQ$n&Y+Wny zSLkAc>jMS7k?vB5Ju9(HIA37_u~U;C%bIjiZ063Y{1_7iXq z_|@YOXZiGOiImW>>aF2V90@<$F*cwm?Z(1m&tc!QI6gSZ|Ct@zLK&|NNfYk5{h)!=cd~{oXJ`Am!cu zKLV~)XRC2grxL!Yp*T)0z3|tMG(&T;&8Q|EYEkb^ zN!HBQaT8*G-LTmSjS0LukuPLl4bQDAjj&`i@NvgMCKE6IbguI{o~9DnX>KW+7YU5Z zPj0^hSy%Xlb$rqCEb1FCf+OUy`atdBbGpfcG7Z@Jt~vF$^oXSsh;jB@kMgbFe!)y{ zL-cih&xsPj%J6K(Sy#S8SgbFgxQ{I9{gP#=rN{Rs*LlbqmieGQ=mBrB*LiZ9$TwV- zIW@Q=OKqy@jHv;RT#P9cL)+jPg`QI=T|!J2|X46NG z%hBhYYaQs#mDGx)AY@_^9$k}7=-8q@d^l0N9vu~3Ul#GwFWWVf%^K=2Qqv7xLQ!gA zQ|)=1?0>pu4gAL~Wg@-2ZJi6~P0`%tlc)+FbR)RNIaIhroBK!7C~WzJ->~fOqmD~K zfNv(`bC2wDutl5vTZDW^7kTwP%u~?xIvgAG^FDxD+M3+*pPRj~!6n|94k%A~>^^^X zMy$OHhgV2!Psz6>&`ABe8~m%+iy>p;UtHd_#AV9vP{K)qm*6PcUJz+T`WVKcBH==q!`T%Zg^q6jl_}r+OhB7 zO8aX0+dx!SHeT~4W1+EwVA?4fqPlrjK8|1kD9%2~67ymY>5*Ov`8}ta&lwtSr~lzo zvXrd^?{yqenr7Xe4?2D&#QJgi5j~)v3gewHIu{*m9Q(FQlns2aM3IgTx1+#)A!z)y zMvaox&iEtRcg*MjlQm@2(Ags*7Wk!54R->u*ce{_YrZ8s!nJ6_{NJm3I!}8cjBng_ zuEIkOQ&lEs)JUhJ@*(zHJabi<1A(POSP~z4}AQ4S*-kXBYx5y`UNi0i!oNlLfw*`TZJIHv^dh(WfT- zU|0S3ZGJsHldhp?Ai1pIJ1?WEzIQF5OPO#KEZj?3<*oiYSdfXvby-&fbji43N07uQ zeAZS);F@uvMcJxq+lor~Dfq_40(b@01{^gb$mjO7+BjA`cCaji4){-kgGQ^u7fxG!2Z zVdy*VO9Ch(T$fhjH#jIs@ZF<|d~aXxFE9T0Z6$!VZ}8e-^f2*SbP~d-uR*H|DbVyI z53`;PZjbsZu`10>Abm_58k(Wzx)scD1CAUe0owWm*7+>XXH(jChy=Tp*6wsexxl!_ z5_);~AOiviJNcVH5*zl^26j3efkcc)BMC^{#MERlOLBv-E~F6?@FWR0JmW^@BL?DBP*7%}%r;r>cY_%KAn_J7tbR;vy8D?;10?5=dLrsXE{x%+ z`|;+2v{!(Uj_#H9SCF;H7s-2)dokrMOHHfD>=y2Uw^(Kj%q9l0?jm>K`r$$;7H+QK zzKJ`-!SNU^LkovhFnMs9i=~~adawXa#N?ucRtN3>);OQ1ivqHHEK4fjPMsN#>0xc% z(NMYQrPK#5wX_0L*%w2A8SiFs28QP?qc)~>#nNKDX!-LwQJicp(xzF7m1Xik5d+D{ zSMlTk`eJ|p0DF!xs5Rispi}$NY3wQcsEpI*u7ZSlO$Nh7N4+vvA;-A5t9Xgj!K~_) z8|(U!i0>hxjJdS$;@Qd@bRn@Uu9%XGB1QJ7V-{RV^P{#s3nk-y-H%ReE=nl1qC##b zY@+~dB-DS_oU)w7jP#7=1H***l4F5W^k!7oIq9>dBroB({6Ifds@tgt-QeOkgfc}( zqz(;>*sy{b_IR;YT@};vb*9S%@NXu_X;J%2BBj~QEBYA*^(n(LWWT9PcGsYdBjWh? zK=%=eQs@JI5d;MX_zprY8b+UvD#Yf}Zgl$C0Z`{U&wcN7- z=fJo7j91gTcPJft-=)m|qpMzFRN~4*4}OBmRxOjrqu`&K11TO(Rx{HLcw5SLoj?wZP7oU`SI0Bwcpib>iQ)cL%-@vqYytQnk` zcq?i_;dOT`wg{l*fV`tAX^Yl!q299JtGt-iG)C!hI&qw!th*aouS!LC%j8qA384v$<)z-^F%YmY$}5+C zCQ1vF9Z?pCfX17{>A>0pYXa!a8hCzA>PgYvqYA<^=f%Sx%F3`V&bmG7r%0G}4M>VJ zuk?!l)mtSl6m?vZq6bUC82Hz$c=*q1FW*`f!%<6T^u}o(j{qO%IYp)aDYi|kU878( z;P319>|da+L&jIO7K$qnO!xodC_C`}@0hT4Y4m{yE9G2)x_CdSeH5vauno{cP?$k} z;FpAin#$!+LW+*MEW!^xkGJ#LshqV(*Yojk9?VxU=AFUut zUZIo4?&0Q=G#SxgtlKp$&2cSY!gJ;b*{bGv0Ss&c=i5i|uCYhwG zZ$GnM6alL}jhgk`FdQ?a*Mp(Mm+L?s8@;!ax`cC}5wGiUzP8Ry))%BsgDl$xS)ltP z<+|Bm7pf2!kaj6pUsLUiY-D%_d^Y<90nWGWMxctDz3EEeM983IKrs5qtD)EI*5*Kj zJ6m@`l4mbHnmX`lF)NKD6{2u+++(G1mQkqp&s%;TwxCg7-S94j$;jNR+U{NK6SQ+G z+h2RsU*jfYYy_{Kf9AcpyJK~i57S*492%IeeC@4y={n{1KCZVKx;@6cgMW7JlZap8LyS+MD0Nw=Kx zs=u#6m2-XsXFzl>0x3y3eI8TIT#+62EakEk1obPYs-%t-jTo2%6O&_~LmDspl`$#7 z6#lT`Hi??NNa~*Z21%}0w#!Nag=_$&Hzg(28xnAPc&P|IzES^qvLzjFz`(_uo&upH zw>sDf*+<@b;#Zt36yy< z!>}-%n^E3Za`NW4>mVYl8C#?xTHN7c$!q`suIK4a{)ww~zXE^(mJa|mzx0$%CRM)R zYCTYWQE|g>vE)~`2~V2R)m|GZ-$4D@#U7G(ZRNVO9Mph4+AH?wb?}voI`6?S&l7vM zd;c;A3180LMOO8EB#M$nDQ^IJitK zDOR~$=)*|G##CJ1l@wpHrSIXh0_rbXa(i|tNiAn- zjpVV3s@9g1&|EoYj=u(bC?)f=ahcZ-p*;Nojv*pV16dJPUKsp=dBzTT)}{a_Vdn}c zS5uZa!Kmu=61GD-OpQwA1HS8^IV^v09!#dgq6078`xEGdF7)kIBi96$3!V?9p=IKs zv7pCY;GmMRD@@z@Ik3C>7FjNhB-WKk1ZyloAo4#R5H~0Cst+~QS@Gy&{c%-j^Y3QbN?1w zjXF3G#9xOYO);|T4M_Pj9K$_sT6Ay`%pygAMm}Op05q9`s0A6^QZRMfzdb+zgdF&7 zuq=gf=z@lXs%b{%Y0&z>W!R%3&VYcM5sB<`%NE3|LX>?BV9<7BoGItxCzmG6wkJw+ z<8n5e()1Jb`p~iuj>Rk&Z~cyMw@HhKPhdfbmsTgN_YfH7sBDC897^%Q4MMphCb~Qm zNpFOb&Dfovb&%ZEG7*8$0~&I=FH(PYW!&-m%g?-1Y@acVu{@7tXdA@$8Eb?3)*SJm z@majq<%X;{qCa{pk6jfotpuRVlpyt=r_>Q4g@sTP_qZI6{H46jnz z82CH;M(Z?!IOZ(_(mHLxBo#z?=6lTTQJs!zBPyR+T~@5ARMS=@SW9);7QxIcQ@kQ_ z^*sT{Z`%Y{Aj3$YiQ~*#(hl>oJz_P8RuOZd-Qs%Ij1DsD>sf$+XLGDtfJYR4a7wm6MYU~72$XU%dmad+3Y)e)Q1ua<0N#-k-7VL#9FP2P|qW5DSYddNb?%Tl)L=4 z#twz=PsQ$D(?#)WbHm0&uD+rw=U~#OFUhb+Arp;QLs=8RSv=A}-3s>JWv^~&o$~`q zfmOMrgVszPD0%wlybe{&5+9hMsLfJ`se#e)psgG+4vlTUBWJiu8NbG3oX*9%hSf7f zOJKIQEI;99Gg1OQ2HCA$K3KzH$xF+FQprX~9yuN}=w;E&ZGFqxQ4jbe*I0gAi=Vg)ktODbkpTx!7C;wmsrSnQkLx zB6&Vee?Vqes@R5xlqr_)MiY;dpK@XZKGug>gxavmSuz))6DAsb?y0I`F7nIFHYhum z06S(vvt6I;`EJ|<6as)RsTS`uT)*@AeJF3Ba-xoDSo4!%d>sR+m&h0 zSfgQdP0d8p&?eSM`y9jrN5DSB3mc;p-w+U0;|LPv9DEl99y9ITzZHM{mN9zbWaY;| z_RKaWOngG$`g#MvKqNQO5fTTt#_@b*TAA6^8nZn8%IS# z(S=WK3}LU?@qkcZ(+&1_Z3>2I#3-LkiItG#m4dFPs;c${%e8xUF*9nIKEsc zq{^{rB54){O29}i?h?P<8G!izBm9EJZgF^d}Bn?S1gE}Is?CE)LGZU7QK z6&)O|n?x#xy1*>ji3pwFYpMh;P7xa_=}G4#LULNgfpYrR*R`r-UEZ}yl}bt3D@fSt z;LOx;{_C93Y{8eOXj!uO!{+aKia+B=qcAasv8dKXZ&!s_2S4Nq0Y>b>b3?PD3}vvi zp}nZ>02)`MO5^BVx}KvD8G&eUKp3GAV=uDN%bqf2Pp6QSQd9#5=%PTV0bh3IN zNOy^>KL6N$9L<<#Can4Vy}MQT7|IBmw1w0{h%B41UDow!buGcKhSEML@T)NGVYK~s z1TnE_&Ms=c{TruM=16W80wVPbf8fmNs(WGHz#+fuPlJE4)yE5645D49VP{6hnuxQQ z=0e|`FW(eIN?VukvWMU@TvDD6>_134QZ#5?4!{6y$zP5JSUoM&Kj%}Agv{DIU<^SqLt&yc+?+IT=KU%jGhhHOfhMtCRvR=*L0xfOrTfh>$a4MD-SIta9M z=5;0|Q1>DoZ#Bcp5XSns`T&vwZe>8imyru2Ax&rOY;NmC!g_2LVzC04!hlt78XufC zsUvNv5=Q%FZC6!W=C7;I27&0y$zx0mpRhp-H@E=;OVHKc3QH6k*W_`yX}&Qe9BxYA z9gM_j5Irp?9}C~S^znxMSC#II2i3}8s+kVWlV?yl*B*-09-YR8sE^9OH2qvoN@nEYa5TMARIzW zT_Rs8c<@qN$&*X?^h_!wb1%kJhf4_0JW+2B6^5K4m7?kXqCDnIk4L2_s%7FTN08x= zAy`|Yk8Q<&g$j%I9;K{ze{%2I;aN;2@lUL$D6(-^MbbH`qy8LuDGN@|rVL$RH;6R! zJt^Ul>nCWX9m6K}U6P?urAyW0$XM2V4Qm6%p>^D$vM!|qF8{7%+R(uUhuPK)fnePS z+DvN^_up=S|Lt)IoNO^r5w1?q`L0TV8z+tcNz%6V%FF@+Ed;e|wU}qAxDl z&L$PNk1vesAm&O!Z*OV|s`PajDrOOtk)hSH#4XOLWv!)DGb-904krN*7Al7B;fwim zazKixmblf3WVn`y`?)J#hrvERAz$Q~esT`&Lo9^PM??iXT1nV}j+tl96nB(nW|9ytGeM0|6^=ZK{3(~lOq~WDgDZ3tz-+XwD z3>FvSpiPg#iF6L9GD@Ig$}fKJul^GiZNP~|gWld2^7Sv~4=3vl<)-3)wS|6up7=Gb zgL+d$MUxjk#Cf;=^@&_2k6N;2Z0)3)R*ZAt1b}Tr{s1-DU^3<1djJ3`5)8aHSbn{? z+ruGKhk+^(C8*T>=PG;E;g3faWFdG|o{h>1)9aXgfX;MpudV3b3K(7C$JTwP-;gm< zSVOKbF>TD!>*!V*wT*m+auI`@YBZ2Ns`GQ&i2MyMPD32Ya-yP_LSQ#I4b&O zMXV#vq(wt#(s?A)p(lbG3ebNGXwzA{v;e072Yc?jKfcUvMmxG%Nr0Hplh^^5!YLCV z@dlNmPoIf#Ey_HtY||3{0twZ40nFB_LUcTt@n1F`e{5se(Vk2bL8=0G;TLdUl4q?3 z3mYSrmxO6=+Oc&=i>=P1?b$M@$)vm|?}0FByusL<;&Zp@5c zA}8Nh3eyOw2_f`_0~h4sU!D#e%=LCy3x>Q%!cajVp&ddX zz8t>d{U=&%qmQ$@vv#R^y*lfuYPna@&|VRD*J>5#MV7q+^{NS z3>qpf$D)yU6X5{qf$RkQ%>56NkZ&3UF}(pD*xB?vy=;$PXo>f9v zo`@Tc5-Iic+K;I~dXL*z)+w1mV20Xrybu*gAF*B0a)Pjt=-N)l){*m&Y(Zy zW&&m)%y`k=s5$83W2tnp)iEM1dEo5Cg&$1M-qCkw)^^R6Rv*MwKvJ{U(Hmx!9M=C_vk zQHXYk=;LbFD5!{PF-}4s@JYCbCdX+O((g^B1MNSl>3y5e-4*QA`S7kWLUF^0Q`LVJ z)<;1*04mi0r8P#gS{p5ox!itW$VUq9r(YK!cEi)Jw{vvVYQm}4D%=z?!;7G+1Ar<8 zrZM$ZszDo|3fpUwL#5I2oql7L-KHL5a5Z#Vu-S3-v3cE+tvSSG)^Te^S2*2%wYV?x zok(O;$LoX89>K0oe)Av{eiJS@=YE)S5sE+0Ez75SFDb0t@g`^%ejj8-wd%D7ZRe*7 z@=_uqm;oO*j64Yx+5i9>vj=PnpD0(?rF>thf`V-4UpfXwT+Bt{JT%79BM~9TE2;r_ z8cIul?&yo~p?qoM{sITBP^jm^sdox7#t0yPU{0^5uDE!`&M1XA;vA9|833@mwm>x* znowgcR@ex%sLL=_>+mX|gDUc?27i}NMhSOP@2RcO!1Z`jnxC(usDo46m#@38HHzf- zR@p9Zq~h4^*qU$r4Z3`(%{97uJ0iO|fQ^1H|6>|vxiVMS+#)Aa|i;1B?g2_xvMcs2=yLZkodDK{JjqO0%9 z^gdfFeV{2TO9c-^lzTubmX){g5Lfs-b+v@immu3_1RAtnS&&p#i_iC!4=55bVst|O z^o0@+$*uhUK8dZOYh;$2<{92{i_`u7Nd|nSdQ}_$A|)Kp7!W3E^Q2A+$CBr82tN#9 z;NaK^$POguHFG7j=KB-(m=7DZxsopVwSYvA`lcm3OPQq_XBs_={^+RchOT~3^R|`%Z$GiZ3 z_XzU&SYnQl3M|}*BvEJY8AjN}6kW?ZHr77>o@Wu$=GtoS4nc)q^5}PVh;9?(>z0;5{w((%>PCvJdB<2J*yiN2T=&{ z4;(n~k11Oal!G`o5JAMv`$`T5TLE(`AWBK0n~qMl4(N6rUvdE#NLcOpk+_3UeG>Tq zRk@0~;BJ(mm)JKAlonH3yop&EOSd(Xp->4~2Gel~boF>Y!r;%P4`K&$`z&Y$kui4# zhP&%czdpPd{9+m>7hZ@|kaV^e#ks92VvUKjVe3gL9T_dg6|7r{@nI6CU2P7f(sCI0 z*8o9_5d`(}+Ku$!*XRgeVvQ*0y;X19gd%2T32S_oWiF%su3wnv*dHxIil>m7bL#XN zcd}2psSJaOEL237)VpxMB#75Q017$T>SgH3P=RdmuF3i>YpzqZ4~=xZffu< z7h!eC*9IxgJ{47C_7B`wEAFqk@!eN|XIJx;batEoi-0FHz4l(Q#zxk2a-UfrVXMdF{a=Xpk_ZZO}sA3DyuIWrgGr?zl?3 z;ae>GDIOr5lR@K4GI$zT8bbfv^V66^wqYGe^Q!y5sLRTGq(9l;Af!zEK=uI}cHMd0 z@_;BWSL46j&HK^Pm`ia3JAQ*lQd8s3p3@7ld;Et=m@{%$A2*cN^XqjgyBPH1YG>-JlN}F{jIqdRYX;_1PkEHvvnRdrwtxz- z@j|G~KK>oh>L=8q? z`-GP*M6oT^^LdKlXAD@^I&S;8bpv)yzU^2ndDV2S=z8)11zICBIa+@R_w~M0ulOVJ zcg_A9=pdV72x4gdl?5~ge~+W|!n*9r0F!XIfF6-76J1S7qaxKmM>%~k_`P-E*OsBy zIVjb_-d3dsYMBt*>44?EaFS9136|hNeG&_u0TH*!9$*GPDUcbi4ep>p9ONH~E-wf<>Ho&e#+-l7pPm3>}O zo(S6+ylI<9P}5AYy7z_Cvd)@?Ea@$zz}>Q$cRNs##c5E5iS27w3O#FkU|(J@$$k5L zOulEpvPR!reH2ui;D6mJ+WY%~EhVyPEpj+#fb@-I90VAb*D}35)j%8vbiDvn+XWrX z>92&x&TL>Nk7}zt|EN8;Ct~zo5}+3|cZSA(ecsiipuOW%*isYA&D|NSfU9+j2G>s=-Aill zERMR8Jw?*`7CD|}olaG$PFjB!KK}c}`Z7%ani0SV=v*yRYxTW=+&`2OV8V}bh-eA^ zAOT7_#hYmMg>^PLisER( zyLYs_GSugNvL`2T%ntehiZxlN>KqR?+v1pMqbPdRwxj4kf5m#JzR-9ku;7czsw^Gm zGwCC*VyRyENq-f>mV$yy0?fTJso8^5r~WClx9cy%9u3<=q`Y()3^=H#EmZ^F!k7|iZBQMNJ5{&bQ3uQb&4P*?&EiSJq^eZ)na zFd}jmBWpwd+;G%lo^>s^((GffBW!!irX^+RQ8)C2LO@))<6Z07>!jOW&B)0JKl<7% z5O1NJpqsubOl|p3oI*dLJbKvD1b0|XVNC?8u}f&o(MSTEj&7N@7*r$OYrH9*vOQ)Gs_D+HW}p685`$f2TO#ca9B^!-`+(Q z)_aY8+2vT#hJQTJ`NFV)HbiKyz>fFC6&YnYRd%lvDV)v}@1HKqIm5&qhJ=!<9c)pGGN4;qjj8gIV(8zmpK0|{n{a%R({b27Zd}fV?OIeVn3oo zWHwSM)~^i7?o1W5i8|_v;H{RO=_N$-a~wdJ(Hpb8e#IMB9yjry=<8yyIJ{im8|N}X zb@_z+yo{9*?N((%$E4dFdbE&Izhl3j4m9n588^HSw=-^Wo{s$ zVR>F`-h8_^i#%C!u9|*LWVDjpa7edF2H(7iR5fXl{Gtr>9t;L+dNzE-(&t<@f90-a z3p$q+u~?~cN45Cs_5DPZJZLJmQUP%=y$&5L7bFUDYwdabd7(5o!!9|Q zJRbSB_OTrl{nu(qTnepZ+)@X?d&7yV2-(m;KWWym`XGI zTO64XZC{j;=6O@K8TkmLG8O2>trkRM20KtebyceAi24?$5-FJVI`~|5liJUa3`HOjohEM*6qoKsa@AjklXM>1t98iCLg9q>fF17n!gFk3`dvf>IGon46#hDGd9e@OB-`OO1T&8ev#IF(xWdHlq%vwNvm|1UMi+tm!Mq z$%{f|VQC(Ty9KDGJQl4X{sA}X%^ciood*nS8&LITm9BKBTf%Z!MBQy87@MXF@kWs~ zWUt`ZCA3!DxTSh6P!7?Tu@&<@tO3^T{)hK0Xvm?4=sd?@4&)!8H~V0nx;9gpNo`=; z_?*O%x-%TzgOPFRpjWLoFpp-QQSBJpbj`^LbYtr3rybak_#co1q!{>}^A{mUBW&GO zX<2PLgzD(!rr@evY>ij0W|dvMde}6#$6)`RnT#>5tuzrtc=YqzSVhe!;X6>1>)4QS zBUYiS9+HszOrumF;Jn(bW9=`eNC@TS@wcE5gpr-*kXi6B{Os^LrgxhA%()-4AsJ2K<$Kg}b@8hpCd~S<3On`xl)64ieOj2q zwo5zo)OUc$Iy$0hp-sRd+!5HY`%g086wpH z0wPnPw+=+5Rn74cX20LX6O6ah zit^4yhuD=ZmzqS+!zF|8m(eaq{1ir(g>6)NPF0yg_RfxL-?#+rKOLL-{RUU2ANXyP zmmkESD&hh9UUqO`B+s>@n%F#)qXqpQ2MtjDC7CA-IM+Wz5s(jdK0uh;WECs$1!55mQwHv=hhW}qgE zYNRS#Vt6Slb;M=xe4x0~H%VYeIU4>Vu5zT$3|-)fD(_B@I%)O*lXzgvS5TghI8Vb? zA&mc@JND#GN_?fnvgIrG#^-4eN~HfcQ)q(6AHTz~i%i_nT|%vz$!LJIeA)jr9^~aj z;Ah5bSHR!&is$Zu=c?4x+Mr|%{>}IK<+s$r$>->x1jfn*4BN+o~=$rlxgLRq-ii>wZ|ksTZHj zI&v;2Rc_;vRkA$ytMO-MfQxjWlK~=vJ)?}tgPQLu$SX-f-+%ni^NsFB2#E?$y&{z# zE+`4#%CScD_bk_jMO`C4h1QUT?lp-%p#)0&zP>RDaW=MU{9{KyXH)FB@J=5i!$Yt6 zXT@30uFzt`82m~gJq8NG7yIYY;Aw@%Wyj?^=2QL)*Bj2~r=X{mvRGcK)FL$RA{sm+duV;5saSA=<`#+Vaslq^6NUk9Oz6;*$qm9|IJYs;jx~wj4($e{2LAe zK*Swv(gac;+z@xtj$ii{&g*YC=nJIM=GT zw4-yPs}UCE{ti#Mw{(&?EJJ=Csik~M^*Emcrl~|L$YE;qPJ&(k6Tr}n>NC6D7PiMdaZoH zHXEttqRy6ylIp%z!1MlC6Bav9EN4K|xSu9cD)-?|tHp?p62GZ`;M#LQCx|12fkeTB z+Kqy3?Ze~BEeNgdftP=_V{I~9pBHYJMAnHEY%h3JtGx^!y?Dpe=lQr%K1My%J7$p^gPzICeNH##QjnejeCTEx^3p|W^ ztU*fg(hKmrS6vs7@x|y}EXo-=ESo4$ijy{2*Ei_~G@3fnBh$PAHq~j|D z%QZ@2Ih@Kp(SbmoYmGCE_i~95H=UcQZHS8%d?jHr=s;*1fA+e1z&qx0cLkMi|ND|4 zDO94AHA|TiJ_?Kf5znWXGtTZ%W!}HF3HcoE%W&pSMPOC>4boa^tO~<$-nK6hjqhX0 zwJTi`8D%;LFOWT{oijQjyTMDu#~H{pafEEkSYbZp+E#@!T}MIt$BdrDq@{7}5wV{I zROKJ-pyV>$mqX;dHMiKmy6f^nxS4cw|^ zayaMAAB)2$>gnKT>O~EYBh^9z3L*(l5gJ<+Z(Fb@#BI~)Ily5xtdU`F-df!?I%uI9 zfB}_W3V@L8!%;Ih!rsk@E?%zzh#@)|-;h7d{_P)?%v!@%07{|`zW^~ZSXMAObO77J z{$PKX#GgIdlp#a3*9Nfo;$k6!I+j+Oji++5MTn7)m=1!#+?9@RK~A!_2`}~(-)ig1 z?7)50r-(-)t}>EZ%y;_DV|Z8E z#F0aUNb_Bxe5|MD#lfi(;M!ry0ia;1fbUUu#-~960dPUzz-e{_L$4pyEh}6Wk2#YI zscF@l>`E-Y; zwL-Wwk)|_D6CSi`vYPUq9s`ZkC2T>`Z2RYoty8F;AXWAZ1FFqQ2wiZv0}yvlNhZi) z_#vq7%~`F_R6!jfEDuPLqW=?*<1=nSvxS81FmQXy9+GND%|$p!Z~h4{l#ioZ zI9sp2tHP&uM!em_(cPUgliqckYo58bM^{X&L3q51i2Su()Mg4wI38Xj5_lul-_3ZIXc}6U?KB+6z=)Szhofiu`0q^b=(IqxTk50SRRm)E zpu_^D1W_e<(kw=H`(Ci6oRT(3Z%<%{iRWs7WvJBx+r&ooCISv|Zdoo3X){a9cwu5e zTfu>z!uRCh28H zB3(g2PjF3eXP|tcE0M=6g9WEesU>;o>;jWz`t`1%+Rr62YhIf|Xe&S*G5uLr74C1L zUT>uK7j*0qN(ARKC9ZX=E~iAN5V&Wj)>aW8{z%DRptmnRZlT}+P+;u!Xn1#-(SQzw z`){cC2nDeiG_^%-{n?5!(l})vM@?II-U`|avh-L4_uJtcXCcqf^7Z>j8kBV?h0-t) z`}MchH{i>`bE-?DW`jp*+Zt~zdq-e`&G8Q}Wlgvs@i(S?8>9rXrp~VSasRJ|OUPOk zW6=9QYiC~QI`It^%j*t~n>pCY6&6^SHsht@pMbCoyX>CDnha*1Q$Qo@@pO}+9zj>( zeROLG#;m>5l)~~lJ|kaCEyCjGphTqS3O|`d2@At;FLWN&)P;}$Yh-3B+J?v|rKDi` z*&GR53w2D4Dd9|(=7{~wYK9}F9AhuQJ1JQZhzBbG?y6_YVK}2s2qFGuL`}&Chk?aR z`T}|};ugkIWadDrjB*PzT_oQdZZMlNj`ZEfu-A3_%!WZalhvbJQhP4o(L|1CpM5)o zWK}~JA=o&$m`IJ@=ciGMhPLD*bv5?-l=O)v{_%KUs(gR}5j@~x_L$6I`OlH~Ic&Z8BL%&6lwkTOJby4ev9a%nna->y z|G4@=1aIm2c;c6SveSL3;$l~HmU`P`l-&Lc!F&P3%9RU~1kc0CU%naTaxlInm%*;i zkP46oD_#l!!k+Svh8E6tk9jeZ(5cMFKF*)s4F=S;#Hh&nYyk$N==Mvf1NzOIvb*h2 zdRc@3?m@k;)CjTWxsbOg-}x~-?cobq;hScu|u*YaweV7LjT2&m-ebe&D+35J~b=n$z~Dm%jq`8kO}-Rqd#%I$z<0l=6G@+TY2_EnR@$xwu9N4#&0!Iz+{ zg#}N$t6w(L)FOR#+RZ| zEYMidICs%jkob^B^p3ZxI}*(%cQs?*+*XV$fxP%-=fH3S;^%8S(p+1?i#RV|rB1Gl zGZ&lArT-$%pu3-SM*vnpslPq0W6>3n&`((hYU4AHqY%u)q#sk;#d0WsCdhwiw<2 z5;!FbG_N0~)lr(lqRs?Q@jxXNV2i&DQu%AablQ4j3-F&Cm>{J3SKO%JBuoM^b0xo{ zv&UK)d#bRltru`chLi_-M90Sh61wJkl)~kzB-T8k55Yacn>TDhsy^%@Vh% zG}U{WXR8NNKNvyaEPZo3_QT7Mg4PSdEp~e(egeK;T;GPH)DcxZh{$;UE#bEG0?97A49 z^G5r<2N`u0@Z`BcX?@6X4QeS0H&3DIXUoVJgq<`>%vjxFA2jw!+OY@^2Xm#+dQP=t znmLaOgeLJI4xQi2oy$BDe=|B{b_c6xW8Y6;-O}Uum{6fK3zEAwr@ywCm`(^1iPD)% zobA7{O?`wO_AEJX^kfj65r{rM03P{P{)PzZTwo^cx5;qaHKO+3LvNS;|HHJrAp5JQ zO0>-vD^lL|NM!65s)2QU{7V@mH2nZqymUX1uO3B?olKAXsFZ%c2RRP|M`Uwor@GXV zR;+TTIex?+Z&WwLr_>7(8RWDZL()H$)Z{&YeOJS5%o73r=!)EkKg{p(&SV!o{--fy zkbS(cn||v0G#WW+8fRAmZf<9CgJS?oPpa8_-MRx zIiY-{5EBO!Hk^afvd+>5yGJc0YXlv9h_V$_4m?Fw-4eS?^@k3^;pj?dlQXYN2)$L{<$6@Da8EpS|a}3Ci_wO+S9hBl1o!?c^Dmy}Y z1Y`sG5%`R8DH7J~TNOCJYu5L^9HRG+D)VMgYw|<#iYz|fBAbNC+w^FFqD!P7nf^~& z@bc><<+KzRUCPgvh8@*8hqmUxxyp2RBklDJPtKpdxxQM1E7QPO;-|@Bs=6iYaE2}|w$D7A@MxbbnP*-YB)qpPNm&+(ZVVpgIU^lum4TsD#N58TowxeP=2GO78 zkjSz(Ju`?z$l1BER!RZ!0RjlW;(h;JsOiVdwq>YQEgtRBYs}Ms7RFiM?@JYMQksLd zBQ#fT6^E3Wj7>d$%4?Q0hwB>DyG&UwJD1$;PD*yQV`IyR02cY6A0xfOlH+twoG*TR zL`z@$lLf~W*%y+xyjVD>Ho9Z!ZQtGf9B6nV7ta488^RSdDF6j@srx^8;#7|LU?G57 za_?&Y3B_%k!Py{^)%@=Uy>CDA_fc_oz~G5b1}uRaR>{$S_}DYUufZzqJ}wpXH4&I9f8@E zjF2U@>!WkDYFwb-;l6EHgl9GCZ~ne>roY!X=`%HJLzSjVdB~Y@64~vI#bGCY(b0Yv z9(+_}Mz*-lLV0#rQ3x`KfQRvzjzGYRLfh7pAk`JK*kxuOHz`$(YOISv#{^mni}90@ zo-vr?@Ne2KweMU=d3e-t8`lYWd-m-)l%E^ICa%=-F;+J^Z|$K=b}e!@A7Elf~aG^n`I{%bO!h7k%{m{}Km_a`HI07i6vs$SnRJ5NlZP(a$0MHVKxNHWb0ebBZ2iB&qMWr1FtNK?1e*J!(XQP27ilJ&M6bgjqo1 zeWnJ@XOTVL=3+y~7ThcXKhn-Jbuw@_M0b=7GoJ8zJtlsHN{;9(S3 zl$Z_Gkrt_U$|`&=aRO`m#NPFZvzvK#=3ot6<888=tl|)d!+8E%G%+&STDbV$a~i%2 zaQ7?&Dd3k!l;S;6(B}_i5XZ-I)b%7n8u%%7=WE_KbqJ(rerZdWTK>1wr+k_tL?kf*JE|#%|R+WX=xZ zE(2JR6)tJfp?#&Ri4^6gIYX6tWsm|;ht`i(fKkm7fz7RB_iI=tLg8d$`ErSC=k-d%(aAeW=A#j~k-~j7H})e$e2=H$T02gKxSC?X5a7NGoe5 zsbF&7*oOHtryf!~t(%Rb`M{G7iL+34+9!gOzl=q3PMg7`dsO7tGpQh6Vc|nvP00Ua zr-PB2b<=9Cqnx`%yh?<`=e=I(BijgX%c{n-Cyp~QvrL7YJ^)CVKc8_$)*}Yv@&f!i z1V}g0&IF z4b87@;#1n*1VeplafOZOMp};?hNEHw@F2QasOZ2`JRZg;32r=NU+^Y9I22OAEf?bZ zuySa}0V?m4Y*#!wURh}Dem{1~bSXT`E63-eQQAwJbB%E}p^X;ppmju$Wb@hgV3BTL zMMV(A5JnXxDOkYigjm-(yfEVS+ZTi32NJ8t2p65PegWm9A5z@N{>Y|FG7jafi=0eH zIQI}|_LUi2C*4 z6C;x62}Lx@F=XiswcoJ#)Ikw_N#msT28k$31=Qk>oATE5(=NXBwi{RG{5aCoi*YFZ zZm%`Br2?o^4+txjxlOeRB8HMhVvFRT`HY) zSNsX{2QA}m)R_JoC`alkg4p*oaqnvS-~Y3((AUhXzOMq}$jE+o{hW}3CEg+iy-Z() zLHX>CGv5@)P?xFhtc`6~WhRezeS^@DE0?E!9WZ61Qf;2ctuD(+0Cb={Wg4s z)}*LODvzh!qR~GlSx8NCf~*wmqbk z^mctwnQnR-VrMN^#(okxb2Bep-dhVVKaZQPCYK<9QMEjJNeb!!|L@Gf)LyvC$CksN zm~&Qt181GVW8D&2`x(KMb6brfvvSs9SUpA@-;x8WtB8%idpVh$sb|9YM;xq>!-7O6 zYzOLxhf(8O)@iZX-dx$YuK1gN0L|$F)J-MW^$9PrcFfDvfXV?cV|k2%eN2 z;Ktdp@3&_|xpCXi?{RO9S^4oj>5@G|v_3e_SrSv!h%>OdYQ0wI?QT`D^iVbW%PJH- zMZ_1)gnxPL{wtNp*|4wnQ|SV10sKaAl!t4SkH;$?L9OcyQgMb<>w&tugQFjWP-j$_y?r%eVz6tEB(OGBDdRO9{{CB0HfcBc9D*7S!djIq?a2Q4x9>XMmXTX6eZXO%4#%9?jD5%tP*;QI#MS=kJ zzA}4my4DXY_9)eW;J9l{8a}5;UWGwUx2bvYiAjg|g3rjYQ8UhGx<#qUgeTBM+Fe5U zyhGn-7SE~*!(-&sIjva{8{~s*%|@??n*{L>znCr6f~66Mml%E&&9^2e4lyzKP|#{7 zK%2T3Fx%bZ$8%KCpBF1e%AD8@E));LU`zm7vctg7wM`b!$SWCN=1c)(9g&u4g1!9J zpFDn0xKjAcaUAt?84qlcdNHcXoNQCU7f|$P0oM}YF^JUsD|92oEX`|g>M|G87-r;~ zG)Jnhvrl|!lR0cj{`k5bE-&ucC=Vi#r6YcsF#I0;^tY3IPe&%R3b?TI8bp~mLQ_xZ20A^a+yaayzo;p|o9yH#?N z1M*=pktxpEVWf7AouG;xodwZBk=hOjR8T7s{QN56Va{qLsD3KS(<3fltg_@WdT z`^x%0y!dxLSr2-iFGR9>Ch4aH#p9=OS@pv_kvI*{GJ*2ak%Sil3GnjaNpBRZVdHk@ zimhn17vdUW0SS?i=>&A^w>B9Q8gcD6w$tG##snU|{hQ>jJS;n=BM+e$=Jn{cOS^$f zxr&WDzV-Q_JnKBWMNBYTLga^7fq)C(Y&@hlzP*ZkL*Ky&e&ur8Z|zyPyQ6bD3~-%` zFUBG-A3Bs8oM^_FCR1jKV(+V;(C?wuC?=Sx@XzAM&kn@ldFXgoZ zPL#_4B(MshxIi{e0T!!0D=80o zZFDDnPs|3};xc>#a^bQK)^OSk>~s)IS^$-U2|_z39;@OG@uAa%osO`r3Dx}C7zPy1 zGN1NPn|1~9TU3C+wJ6y2Ten3WXcK6e*LJtak0@~|+}=}~&v(c|^~*c{2q4$BzHd~U zoi4)?uX?u(NZF}WGuw-tir$Bczj^84sA6X>D0w+NC zh`+*ooYyzt>)!jwLffM!%Z+-|MG6+yhqj5D8Wu>NNxJoVhHq-x;R$nM=_Ij4XHhkV z8&OJWb%K*(O4OqXV?36r;e-TkC(AC7*`?WFYjj~SPm668nfeFBI=ZZzmWv{vEldgl z+s{toVU@J(rsH#B6^cM1&EdFRciuG@#N#6C%1|r!my&_HB7^!-;?-2Bs4M7zS~VsM z8n?`AbTN$(RMopOn^mstJEZW@dm0;Cr|8WF+%VJ&2)Qt;rvl5-J8z$j^qxZ6_`K~R4Z}NUE&M0Iz-#CiI&Z54Hyw@HcXKK2o3Ufhn1I|1!o=Dl zJ_>N^?xKT;y9za#%d?z<3S{uINn#d6Ru0F-)mL{rsCkJXXdRGZmJDh~n4nN3V0I3@82610P2gvoK2{B_``EMbeG@y;SLGYxp%4hB{xjN{R3`Zj<|XM~{D<%jg6J z>6YGMJHuQNzicj7HHik^FOHC!y-HM1fE0RsX%7in|=wt%CCh+w0 zsbT0<{wEfQkR1sm$xu5~EjW+DkLIzL>mR_>g1l$KQuUEXM`soO3+y(IoC-3BO}C-l zg5!vi<&zkv3FD?7JQnkD0{Mh1+1yGA6LSs^D_vA9_1Uv*%Nqi}{Pa{`{yGd0r?!Yh zJko?E6zP}V9DmUikj5K>B8Z=S6u7V|O!eR5n7^bos>W$$U-d2@+aDn9{S}q?AQP87O4U9~EF+Bt#MIwzNsF zSC{GE_9|=7wG`ThbZv~A(lY^#sb1p^&?-ZVH>bo3RhqMRlBX0(f)32x>&n%(S2#JW z<$Zf|eNKE#kxqt(nt%4SE1P!n?OKS9^!m}MK_ZD5d(oA#1;_@G*LHsgpDT!uFkR(^ zYnhg-_apzVKH7ElP)$uyD>h6w)IbJWo5tqhMA&+B?B5(L@#9C-#os*;YY}56>Z@`@ zVlO%!ZwnUrr`x4o+(7&1@zj)f=BuU`EI-QQ3gcYm`;-7EeSW#LGF-PS@2QrX5ZA;z zWpGcDAEa{s4za3cO&}N$+BaPP?YK7RBP&jq@N`vfr@mFiD>%m=?-E!km?aXx774Xi za)v%jCl?py^}a!xxl#6aTdI6W_;BynzpLp~F|cGW)~1>9OK*lD`7a1m0q9i_h!eXs zdtQnVm6aBU8RK=_1_h6=dVj~m#BG+#W1v*0Z)krI!|||`8by=eqq74F^wr0Vw~KzR z?|<;PIO{G67^>HFta=i`DrcT-X+o3Lh$$kR3Q-OT8Sn`P;_Cwtb-5|OF20)vki$oI zQLnXur+K5}x!N(x6O==ePl5GRcFMVWY&2eZ8S-qlKOu3wzpZQ$$(}QhzGfRr(4YW_ zmoZ9D&0$>)>O$(Zco-gaP7&I=r7yAT(zF~i$UzG-2u|@nJ`hd#*`jqg7aLLUMT!_t zFnmZf6HINfQj~n$Dp&6ys)x}8kptCCK25Axjbcf>`-=kY_u!GZX?C;Z(%hYk4eCHz zYTyD}@%5K+`6gk~kQsgTAa+kr7`#T<&@QOh3Axn7qx#g(oAaIQIg~^UQrS3}8wh>M zFpr~Q!l$1&uvd(inDx0DNtN~?Z|0Xplm6}BYVHHva>^4BQ4PU-JGyY2Z&2^Ns$C&q zz!+DQv6COqcELiVc1&Di@_w&3=#FnG`nb|AfS(Cb85e#{tH<+rKCe(-Y*TgJ<8xZ3GsUq43xnefft}P;l1}hM_t;~RQMj;GucbvX~(4^{u zS;TOCRG0ZQ!3e>gSZbF`@lVE@NwG~;L3feFHyZj7|(N$v->2Bvt&V(It zcfvEx_!3bPTE+KRkF1aBG>_VLj%?Fp+NW2@;vsV&e3RPNF>E2BTGXp`<|<;Y+s=+h zoG6~$997#bPOFebJp>l}p=o9ux|0AX(N6vZTB2!Sh%(b$^_p3GSZc3bIH&VSfX5-! zQbVe!X~!0Pep8@+j7;Gssc!z<*<76-uM}aijiua!7JEB;7-B0N0=i*`;)h zrf-uI9;fjyWlbPpM}BBSySQq!>TBN@m)^@7BVCB z1E%uI##qk71%6X00a6?$-iP5)oRr}SaS}z%vW98YoWXNyM!@{(z&^F1&lmvZ=fz0Q z>3nPojp+gwq)iIil-mfIaRU&c`!5KkIQ)@IPC6`ne+zk1>UdnpQ2Dw&k>=$8b%yX5 zhNo}dh19(BfD|9~%CC{8&kO#05JFg%57-qBakG$7+$QLE6xZm@WGe8F$4S#%^x%HL zIbY-i*42%I!+`zbLA$qaN&RMB9b8m@tSa-j1&O0mEE*S7NKL+5+yDTY#C~;N_6O4@ zh3N|&mKuSSzWkY5H-i354;QHNZcmfVZFB>Jsq&Wjxm`@L}VO` z(P`W}{chk(*fk)$4|9YCz4aqXx5s#SPOh_JawbsFw&F#DT;W;wRxAq;vH{qfBjB!M zI}oDhHTUVfMkYl{3K?cFRs|JoFySpZ&_=jLHAWolShtPz>j;87uZ&PVb*XxDp+I&6 z=`wZ^*<~g(Jz98>?C8Hn4y2DRWC%eR`i3CJYS$C_W!jh~_#QFm-l3mcbZ zdL{BF&9cK=;2|)+XNIm7^FA#Ku@{IeAD7q7IRgwO)qV6umKE509U`YG*iC}slKjpNa8GHm{NbT?2I{(q6m+kkRsVf-*_gR*;$mw>Tm~8|eVyaJvela0D=v@jQl!s(PmcrZ|N}?o>4YB7nfYqd6 z=9jv=6^po+`D4Xb4IYx@0YDmuViDv>wR1M<GB@*hc7_H2E9c^sTP-6P@eGW%Cqvz^b9EXN{K{u z{34>jDMKx_O{G!j6RqLgP|*nHklJ_;%Lg4cRytZ~u}+002s7iXqAbW0!ITNaj3@)D z2vwn*K@_jn2>jGAiT4~$0HVA|FlGlIrEehqHl4z2!;X#=CZ@DbD}thttA8dBWRYL{ zYczN_l@G)c{3V~`o2P(Vi&%wgS@iMuHLEa8j+i6JeeHcg&<<%+_O1gLo8xpC`rp?M z!W{8HN(a_kD4QNlKM(_PK4C%DFHEce8+OZ6j4HZ?a_J4nBJZ#k z8rG}L){hopD;8Fg#+Ld{-%K2-A)TP#a*MD5$%zo8=WvaV_PK0aX=*XxB0gn_wbLeL z>23*%2WrkEhlzy*11PH`YoJ59o{*KizT!Qp_ZTqT{BVo{S_V!*VFCnB1d^d&1*aBh zI-+op0Qdnq$2$WnuErq|;hv}{!2lBLUIMf2gv(A@$i+de<1UHJwRQ6;VDeujhlDtV!HJ zDQ2vS6Gqac`#Q}kz#%=bu&wG~ruk+^A8-3x{{D&VV|^?POn(Ws4O42cA(SO!j98p0 zYW!m9(rjcUmF%{{?CU|9^=+sX>o5w@VwG_o%SBIY=%Eb3klGIb69L5Pu~AVJ5sG-3 z;um!-=D`o}Mtdhwr?4Tgc9+(Ffee?9psfv}3?oQ#2kHM3q8ipoL+N-8paXt7Njmn! zf#%H$&~ira$Y5plO)pgcSLasTodZ}h$>RRX@mp0)C9BAXH4@`zHiizC;WoR}qFe^* zs&Lw-&Ol*UYbTM7U;r;olU{_;uv*|7Gl&PGMI!gGY;RQi9J3Rs5-nUt#~c(3uX3v2T}0RUz#@yt zh=t)TVd55q^Tu;)W{ZT5rkoc#DWMV^!|F?Vt|rwZY<|Oa#IQS2X$3++qp>!8(LB?Z z-Is&4;7LkPBKrXb+UtExtJzFum!<_n1oYbrlIe|s_wb-E0x+s02QH!@rUbBCW*COe zZZ_<;uuG0$K|ZH$>aoj^J?^(^1&XqtC*~@E?^@lSv9z5gNu#6umGG}S0kbtlXO6j0 zMY`efR{fj=W6@{H5$yq=oO*vApQs@edr_M=OjT)+4JdC<_QG%SCs{iEA;8KE@%md7 zK}-G%pdHtyYQ+i0d~Ehoa(n$E#e*1T{#<~$sk}6SPE2Qef=vS1570|x-HtHn(a%!b z{JY>fz_e-50AlGyyAmbK9>>;cTFp+iXAR?gN|y{rlf}q3fPZ$HDaJ?jcp&jG60nXz zI4Nwawu3NTIGEQgf$M>qOR}eX#6A@xQ#BHY2vh6j1UF~kH1`$WIWPNAgQ5fKDqFxY zuUued(AS8#K=nRyG4AUL+5G?UEIof^)0HGzi+IO@xM=_@a$B4or0|22jb9e60TfEB zV!6k5^K~PEe8@;?3w8&j7t&(>DU_~8I$#-CYEJ{JE%53~$}^Lu;lKTM*^;a8|J+KA z=RBYz4>Rj2%bUCQMQmf5m4sT4D{=iiv!cXPAd`GcZFYHDjpCj*3c3G!^nX2Q6Wd6#+#-0o2M?OzxjLG4BCo0)bKJ6~^$N1$}nu0y%r{ zOuQ3eq|JzGB1GHn%H)Jd=L)dYD$_8bf7}5a%Z*U&bs?W(kV-}b-IeF5hpg?GNYumF@&-6ye4r6qDg=DFEC6kx5wetQhDbpr#(sf_JxhrC`t; zfPtqP;G7UrzS6j2E})zrW7|j08Dy41mg*TDur1R0>>^aOgcA|-AeG(pqT6`~kwNv< zB~9)V&NpK*3~MdkyNzf@pj>|_6Us->Hqo^=f{zFQ00I8UpDbQnyv%JIko_Li?C{xU zbFdqzZ^&vtK1pYuq}x5^cTe1Ol$a%AAdkv`B1c0NGw|XjXr6}dr0!TNfzU?VsG5~7 zVVHup$l%twp|vD2FE}bC%t)Yd@Uj*Nak;@s)!NQS?7%R~%DmN{*BQXW<3kRiJ-!@c z1jwncm9FJAiy{`%vST&;<|b~n{GRt2N3$>1p`1y9-KA<(mY8VvqGHeu@hgN^M3+G+ zUjxXT!}vkRt)V;#o_#JZ^q~&4>OTJnva{*-H^1b(8@iJMmVu-SoW!^q$hm|6UqaOb z6n?Ht`?0)l%e@eYHZmQf1r$`ZdYG|Uz>4KEf6bkvT_^cfA(W0d1j{K*@s)z;?lhk1 zaDGga2PW8a_1%yg^fu?}NcD?eZD0@+M`nDY@B$iFtVH}a_{%>C9r@%_h2U> z#kww7F0-^^#+29i?_E7bje5Z|exTgsFvAt<6TZl9FElT0bgY(bM$A%4VP5K7$2LSR7eBQco^gA;7!R+jaTo z5nafsxD`!-LW7xTAB3j?Jw(H-62%)kZIo3?gWNDdJTz$4Ilb%AMXV5hSOuSZyFTS^ zCEAh}jAd>7za?`3i2wy}pUU_i2u&ir6(xf}52-9%^$WCC`7L)fSrjAmU!dqNY8y>o z4>X9YRiu2RzCyQ}2|BoaEpRrerbj(%hlW8f36I9R$NQIF3Dt7}VOQ;-FkwaP=6U70 z@dwYiW*rNeG$Oo&7WV`W0}?IM{2*acf@_8l=9wGsmQ8z4{=!i~>gLQrX4bK#k6k6L z8T8NHI{)&Z1@`g6>*duPWhI&7RWPAoCmwe*#x2dqi9}>1P=6te1Chw?MgA25A%gCU zeH@$GKMa^E$|jQwBdACL^f00smf7mb0)rXs?p3Ol5fFUc$G;$QPnyYUjCjwr_;Cc} zsV41u$9Ff9>}hT!O1@D7Q&)s1o^j~SjtX|sYY@Wk&ecbPTxrv=-*FCbvhGxHuN0mK zw3RBf2)QGGFwwlm9IPS#o7qeGhk3K(`vEh8>F9}(r(D4ZW*RrmZWO-1Xc4BznS+S9sY@K2^Y^VH_U@nx{rZhMd{}>c*>Gmu#uCM!`=Nx5ywxal`7m7xEQkrYdr#0OSIPTk~5ow)?WdUU?G z%_&}y>G{Yt*HonPia6AS_1{qjnt_t&FiWaUP!?cV^IIUd~v( zndBFeJZ@)XmV`q#=2cF6v{y()-v=0%&m4-$j5=%lxv-|OQfxYuJmfo*bYGC52BbWr z04m&SpVQB9PE%3CAJS8Z1WRO5`g7N`9hPb2!yfXj)aE;Hl)~<62`cv<(2OT%w>WZ0 zb5fQe5QXtav{5`1AQT^7jiNJ1#w5dYy7$xKh444kR_buobc=#2ILKa0xfaX*LoHnA zzu|+A)ftzzCi|PL%S{tc^VPG^TknKckP9*$9ZeKRXD8hb`G4 zsrX(;(No|v1FMV!JZ&d++A=qa3)~M@IsXFYy$sA}BZc>qFg@_Myx^=F!x73^63@r6 zK=EmZdp59fqDil;!N6@ovGd$B3)!M-=kOSb?vp@9V#U6qzL_1pfR1}YSN7->K3YzG zV0?{c-?sL0SlBI6OOLcCIZflTETP75=HvPWL|De2d(V0AG|DPC9@w)NJxAdg;#mZ! z$;`J|xQOnIdS6Sqh-vu9S^l8^b=qGkEAzmtII+F6hlmq2WOPnfNgJq&WWWG#{elzs z%{8e#QO^!Y=o~$dygGOroPEdTqF+6Qx*KFgLfd7))#e^LoLbHP(!3W=o;XRMh2TEi9n0`dH#%;1N)PCA0L%lM`NwKbs@N**4Ga) zG<<4)vgUXpCp@LmMn!v?0AYj@=y!5m;I>`WCEJt1ToE`c%yq6h_PU08+TI7wbvslx zmrc{%?7ooG2)2!Om%GKHJ%bKMh=U3#4O`lelclDq0E^ zmE|PWgn8GMv<5p1F<^~? zAM2416t3wQCl=r+^1b|by{1qm@P#ss4a8NL(cAWLBPz5TG=If1hC}1|k7a~5Uhh1K zzTY*N-bw>vlWk3Qb0l=tPRYIEh zt;~&g=h$u{`=xFhOR7VCI(Lj5pqAYENtDaOC2(*#0=ezgrs@niJuJ;i+px!1i-5$@ z4*l6()GPoOwIDd;aeaaYE2)ohJ06hS^^-?(#N(?$YdqoBODpxj2T28KhO+e$1!ZYBUIg*6*225LrOa= zW+W%TP$iim9aKs>n&HbE*&7SeAa*OU#{6aHjAfG(Y_CNVC2LT5go(X}X<;sak&;or zL9xxcJZ%5cp^x{y4E`}EE<&1B4gOiG*mVu#ZtAz+2eot~>?h zl9}ySF{1LB$N8= z0>XW=x2tCBNJWa(B$1jMsI}AmkSIoUVQb{0YPnt|SQZk6n$?;vZ^+386`Mm@00EH) zhwg)?elr1(D(p%ME1x?0Eb&yS6>u$ysVsjr0~UQO|5a3&>LE6D2k)td%*uzS4nGuv zI1}bnL-u$h2{uIH+}Smt1n%$FPOEwY6)9tN$Ng)nqTqP_kQmXnuO#U7QFqs=Eqf(t zCbfTMtBw^#obI`tgB13^z>n1Xd?)-;w~$jWMk?lR6p@j$>B*}5x^MrdOcHVR?p^hl zgn_4EG&;3YNMJ3+m^NS|BD+UazQR#a&cR0);J|>jREmWNwm-+1c*bZDhh(7hHzn7B zUkgu#Q0rl67{BN2n+Gwbyb9dY0qr;I*Ys&9k^(_IU{Xt;hY` z^%N{GGJMsy=nzAvcOGQVJlQ@l0003HtyXS-`#P`#=}2BiClND9MA1dDO=8|#E7pSn zmKG7@Tg`Ax)T9Qykhho#BE5rHBTH@K<4W;3)mqGKW?4gJcGK~H^5 ze)Pj*qqf3;wo73#LPe8ftB*LmT#$vFMco8t>gX@I1&aM3;uem72`YbaFi1i8G)QzR z580*G^CrN0EREyU(Ev?r0001sQ$h^fE9m(VjsS$u*goHY8VcZTxF?U_F5MiSr}bCY z(f#OLjqo_zvGh9{N#h^FaWCCb0Hv1&5kJ8C#pR1g9f=k_6MPj*uzFfRlDkVnr)t68 z01}2`ywL|h0D|xkdg1PtCx%zEkBKP_g>yg#JrN``)ddw^`soN&*UX{`c}Ic@bazdK zF;K4h8pk9X5a#jEuqfh~lp5>(>;MtQn}#5u008;%^!LDOsbByA000v;oxo%1>G;eI zTP8a$^tmFcE{(;II*h>xC?t2}Cc3d|vwiA}|MWbXi-gUl2Q3*0&I!$=iLz{!`QR`= zVH5v8k`@3=Z*%o2$adbhw&PDD5@gJDN92!=JkXIkHL5oc=1^G4nJzO|8bZu%-#+@? zr|4aeQH&A544yyw@2`{t^ES~t;ib|P+>dbH#ck|rpDs7gt`Y0C2&B~DM62r=_gbTU11-aw8b3B0BGmhj%Ce;++-;?ZFH7WOq)_ix z-bwuLhBkOEvl6uu?m(X*g~-GEES0_2l6GRj&7e%6<22Ud(kk3dD9XE*eFzI}#VAC4 zH&l7#WuCL#R*Y0$M8P{q?Dy49G~hhz;#x-leH!7Nh;;iZhb@kICb-HK z`OVG}&fc$2L!8@7WGpqJ3Jc336n#_ha;B{la6t`+An5x-8Bxt7x#iK76hf2s7Z`@R zpbaA+87zpF^oUR$kMBi%ahCM34t*s11x>@qs@>^83Djyb22o znSK4rF&^zcj^a_&e|u#_7CIZ$syHbfY6A4k49;z*Qnqj@3Z&Es?uw3e!z6ErYjRC* zUs?q(xFPV0Ns3t{H=*gl*9PM`Lp5`Mj42m-jzg5{1(am-M&E4YQyo!)1yq{R0a5m# ze1rgJs<`tW>c{{90JA=ea?n?4Me=sYB;0Hk{DDoENms_MbkF1l>rxlZ*b> zx-t#|c3<`=Q1`Ud%4?iE`fx@y4$~#S&F_R7oKBl*R)-^00To?(Df;Lqh+{Bvq^yA1 zYKuor2(G&2?n|e#ssm1*>XEHY11qisRD$@DwTKm~)Ea2;s@kuAjsq~!QexiEnM}>j zHv0gx5z5BmsX?8{N^4}>s-eIwz~Vso%d=^3AR*a>a)F(&CUQ5TNi5tAj_V!t6_o@T zNa5Ii7FheMF;3EnG@?Ku2&c1^{OS{#?JocaBWW=`L@Jy4o^ob|O1UX~nHh`gyLpS- zJ(=-isgQ{$xyy%Fc_KUsI`+LI1lvOaoq|BY!;wAodgbCsb8QZDdp`6t4NEM*Za6Ws zQAvy>`|K%jmITNIeipisAYqhit&F#{oL^uWyyvZAnEynob!vDf%G9n-3Ri#~wd82i zRq2A;wq37q!Zc69;kQeVs^7L@N;XxjvN-Z>H8BVETl8mS>DAh5^0k~0x|p$t)*&GF z+?#Pu&F5jQOU%&T%H9F|6hawGuv0ZFX_Q5RnY5Yct;zF(*0Fuhv*C-XwI%DMvO~O6 zut!a|S!i>Hu;TC1D;INNHGA{PXIl_7sf?;(`$FPGp)PkkhG z=++Sz@kPWOZ4g2v37Zo`#4EK*1b`F^?co044TxZz_UpCt?^rV0Te^Oy5XJ{cU-a;+~;9)tylyR>(gYsT9FNA-+?yUhNAD6l4^mumBo3~Wp z3=IWd@=K4H(im)17p#HkStx%U9o?*L|ZVrU#!=^(S3S1RcjcfnGro5$qRrKkf;w2 z;I9v;2v`hE3;t$Jm7i`&x{hYY7^I0e67ZohWur`)1oprUZH&{;>wG#RKUZ=D;atcq zLn_|bfh)zd0oew5f*?$~(s8-xAw6Ei?ic^ymfKrUJst+N7iX0$UrEAO9<}I}^?d$K zKt*y*<=O9Hoccm>xLh6sK1VbAUb*d|`fIwfS&T|xYXE&|FTyH*dWL?{!JTlFR?$%a z`2{_mPgnz1WXL3KwjlLFC}=E>3{?QqeRbAU`!ga)$2r)UZ4#*Rik#*KnLV}-eBX1S zDnZ)o7n~($`A^29?k+1jMFnwqDqbGzTJ07FLuuMyC$bH5R&QDE_bB}H}-3(s;B6!4pYy0HAOR> z>Vqm!RH5y-y(N_UK!FkS5mpwE(V)sF?w^THlWJNDG-g4M>U!bFvnN{G3dLsE zlokixgms9ohuZ2&?+Ki%L71)6Z(DgZV6uLn*W|LNk-X7+;@&Rgx~&QF*_E^l?{w&_ z8LrZsE*%OgK$PBuc*KS?%w|$BWe?TxC6+PM7Bkgn)Nr%}reLtfO6OY0iLu)QkFx6# zqzf-n2mE2CSo+8gg29x-?suYor?^oUCmgMk(2l)0k9c3l4oe?(__-(jv^@4ESAYRR zz|0+=8XR_Zv5oVsGnxXHe4Og01~!{WLRSICu6U+hOi~4LX;5NLS4@u zMJ=<})R5(Dx%=b=0M}@b#HtE&JVDJ?%JR4X6w~K;`nL}On$lVv_Pa-we6Z<^7eZNR zH}^TxUVZ=VME5@=cBPlR^d8ti%eUtJxD)_TWat}FxaudbaT9(PD}Ir7|G1)D3s&Of z+QnqjE+ZU)xFx?L6{wEfRi5;+70?ewDx1&ZK1rpM818{OM5at!E4PYw(I@{dv5m=K zyG$R;i!IbdA8KI@8a`$x{J`#``i|6VIlDp+)60r6X4xp;cQC$2fFgs!!|M+8-a`;@ zquzHnaH}-9kzG0Y5xEL~GJ!Hmp?GF!>%PHHE?4HMN+?)lck+;@g&;gfCHgbr(CmeO z|2yIyPcff2ZJ@`0*E(E_hnX`YSu^9wsKTwa#+w+IF~Qt%<8kO+kWE|)1x&);X1 z+iDXJz3Kj{W@OFxVc4+&4U9A)pL7r0#c+uu!W6k*#m}i5we8V?Hy7?WNdn6Q{==0O z$VJ16#ltaLX<>q#o%1Nn@Nj(9rs}P&@TK>Mp|@{I;{Kh$5G@l?KBHpu777n3J1vB!LxcFsM z)Ghx*tP?g#8;ut@=%+J{fE6i_3=d2?#;;jwd|=8(VEf*B7wUq4U0Xs>nx9W@p5J&? zZMMSW7R_SSElcRe<0smccY#yi(ux32LxLOw>h}BT`-_=Zv;|+B;;*Tg)^`Y21A2DW zbQMbEDop9fmyT3*`Y@y8z*YsGTxf6T9Pr*#~Uw`H@SyOqwq)Bzq|(&;i<>*Q#F5ysjH<35iUoXxz_N#=%IeN!!!23qn`^vtirdzEdq>(E#I|}$09s7uLvriH zj32p#vhI7&Mz+8;kWgiUG8X>c%%*&a*1d(slD6W|{0rXG3t{Kk-rC;^@*+w1?sU5* zGW$_d-|aC>MlE1=bt}HY@^%>KGE=}cA=m)g^b(Wj``vdxm@c7mP*|9}!jZZ~^?-R4 zdaaeu#UJ|ct`hkgv^k~F&rK(;aMXJEV99crD+Jht0VoWpl(?TJd zk6OycPPcy$-=tx-5L6Ain27~U3VC@-;)v4mX0yxiGZOtZYb&uWvZvvv53tkjYUqE= z-ss?p5#^f9vj-#oY|S;%FOFTM&n8?D>MquuqfygS%TDOxOEVc-o67*#V6Z84kug?z zBb2)i$^c_?+rM17I&Tuva^HIIY>MsF30*5<1z(p{DTyJ-Cj9Un;eb?OWXc*K45MXTUDmmm9C=pPNlv+6xA6)#7S=MU#3IF zfasLU7P-uq-v=yl!a-NiQ)guBg9i%|ZZWiH20C$u88ar zQKj5}&M%Y3sOk(_k$V;z0bUT~8e%n)1|YD4)TB<6+WJ_e%azRFWZ94-n7vz8>%yG3uygf6I`?!hKYB3GE#IQ8^Ct8;i>)+%rM=|6Zw^Ag05y+2C?G}k z6Ac%a_o;!7^*@;6-rrfm9zh~5-5f)y#9O0HGi9x4O5TPgTXo(;lzZk6owT|lPp11I zwha^37A%U@-ZW@up2~a*Ej>blK?c($euaCPT6+t))wW^oU}hZcbi;oJg}r=I<~`LZ zjvvpJ@3@KGXULa16@XIgEZ^<8hRtwQKma_DB9NnB5(T9OUkIj@jDsWFMQ~^?d#+$* z{;_LOHFUWliSCT-OHGYQ!Flv>Nk5_rj7UH~2Udaqs05b-YraID$%y?0XUwK{AI?2b zv+lis-eb8Tqv7kW`6Z0+7_JNj`DXAoYYE9VKV%nPuY*3HZZ&Uv5dI~0?$FJ$7-1dW zafh>0y*QQVgTnpTPdw^VE-vLd!$%t4JnQ^xO+2rm>K)X1I9Z$3r^m5bOIL*3FvEAN zCLA5T_Ei-&%0P2DL?!jEIX0!-hX|v9-((x$0Fu;WN0p{f^Ia~NlZQfLAG$lNsGgo6 z2os{MuLyxp^T-(`4&AA-)G8eUjo(HvBNK2aOjyr-%fOq?)SFYMvN~_Mc_|KB_nGh8 zK>L@u+fHca0V~@V$Xhc++Ss6NECFQ1ex6dSh-@y5@-2o{!f;;sVu62gjUcxO_|Bo) z?GikHf<=;s$3DXCcpF-PjfUV%-?`7#SqQq>j__m1OJQ^d-t%o0_h2#J`iq?UXr)@Q zRSG#O6Z)?#niW%XI<`nht?%SL_&H4vAl?Cqq<1N=@=>8b~#x_jFcTdDrf9pbF?$zcfYk^?TH{Be>br>a zu$8;IxAzZBOt!-N!36T zzf)wiz?fUR_H_McsBDG9t&xi(4`ohnY51$MIl-7NsNh$OKFho;Z!ygNXC)D4NBc6& zSyoFjKoUUaUn0p^d#iImf3C5#XkxO{3FPIFxBK736`ptas}(Mgpgz4|;wnr$lAF!7 zXj(?YSR#?BodW2i=%~_5vjt13wZ4Ll z%#C9ZHSzKetq$AAFMT%iare#=`AN4;Mfwj*F~hT(_RHeCX@K_o`}L~|Ma5SI5^emkON#?gF@QH@cEPj^BR~L9B`9HUF^MxCXhLPeZOjRS zMqd1JW2a)8)Xn@BhFSDZs>SeMMss1MpD8i%7b}hJ>NqHU?+SJF+MWKhB6VNVaOl*s z*ny=~%Z0Fafjcxf?gX$M*?nL2u3F#1er zGgd194}7{!!AkR*C<8y7Y6!meB^U_}p589e0*_F1eohM>5T84(8EkQ1B) z|8M0c_Ns;eS%;W>yFEX&uqlj7Hj6R7U)p;eq^#Crmms65jlwi=pXBEdIe8qU0>Fz< zkP0VBX$*&&iDcU%}qqWFtx zuk#?F$t_9)s+Rf-?X|V#e7$yINUg->wuKXBYXYfpYCbReKY`Iq5sP(kC zb1K{&qxS}(#|ZNu@$rs~*eyu?@T|crvVh!f zF7Z3N-#9kel|+aeNK(KtFP`sR=c}P4#q3Ykf3G)pWDebJD;keuD!9462KM=y8x0X2 z0G?QrvrG$bGGa%8H*@stJw*=P4!a8Y0zP~a_yG*k2l%c;ILM`*_kETdwLspZrAm!M z>d3uCArq+2crPbSvXIu4u`VIHt!yhetk`UA7k4JrUvkcn30}v4e3U!m2PfA|8gh$$Rnyc! zRwo6i6w}NKG@+YN+bdiKyZ@vLWf92gPm~ z2$~#$&KxAdF>$&=53=6luTaZ=st^Q%Rc4{Tx0P7lI)@KrCc#6|0mKdbUgyS&BRma1EXdCCm;R7#W45;NR`R=6~<{2~}KX`Z*i zx>nMWQ)bK4H}1#=v6yk#pBCsHjf=jv`;KYrLB?bRBwCihFPD{PNsPNdN+8gQquK0o zoQs11L$b>RGpD7hFrRX?{Bu6^=?WW42E(6=%3Y>&UspVf0NY%NI{?SZ0w*G9xPKU% zF?u_Y5ksiSA*mUWkb>6n|WKn*xJJo06%aKLjj%4ssvXJ)*o8hfp(z1klC5Nw; ziICB5o5NP>_x8kXm0O_~8HZ+V0}xmeB*vaXUmh=#FQgFDD!!J~0bobLW(9TSrPF7D zp%vd{*R{f@cz$`b4}%{jSy@&PN?#JgyO{IP$h&g8UGURA>Fnf~B=MZ#(MxbuT}|0H z>O?+e%_WA52M7+vJ5WqQYEozizUDNi`E(nQvrZ6ZST!eX{Y?`kAZOGGT{`)o8LT~C zWuk;+%2MMHG|luIIHP2Pr#r!hWu^&0jk`-6sDz&dR9fg97|a8#0eY!Kp?}vi)zz+o zEYbcp=7^1tp0VMB5Cw;N6ESlh5^{b2tx|*on*uwUM%P{1!}f2W-ynpz2;qw-tLPg*DZK!S_lLAriq-cPZ^rM$00Ha^l$_l(F7Dv=p?&w^ zmN@iWv*Dc>`a=}fSZ_C!>&)G9lp@k|khe6E?tjLiLTyWO?VF6BwS)|uLGFF|?PMNP zeesQ3o^C%X!{ZgONSdY0N!K!*G`eH|`r>5Q+zSIc11r+B1kt3@0G`v=^3pHn#x}b^ zu3quTKl9&*vYk;9NNzH#gGit2zh5u(+K;_DJZIN7E=aGC2Op&upRc9mL7+;aF7=>R z+h5TH&X259bEx>S5)m)lX2t_?v43+yt;^c`A|Y`qDt*b0_M6o6gfDUK#SVkZFmtD( zL266B?GgPvcj!&~B09iUY|wG5fIb|<`-=MjB8xgaB^k{8m@+nTV7mu{U`?WB-zH^W zG&8&*S5Ew;0P~s6Bqf9Gt*0tLpMqNeWkOWw^@;SneP{uxpXzuhFACc$5(&(Oqj&ny z`njD=KIw+&6i*R2cJ0^qViM1TW(~D~LDt$gP#PCm#6Vpa1RQ6S4F=G28lqEsFPU(mv$gC)5biOsCqiJ7?O1x(4%|JS}JtpvUMY9qZF^7 z4d#RrQrUv6aH0!_y!`#hcO*~nh?yn-I3Xa{xK?t4@k@9S-#15Y{-ZQNm9)EbWyxEm zdrRbtPYo}NG$oj@P%MjQHX@P^A`L4*)Y}jKjceNUl+Q@jat!w#-JN@ax~+sZinTaW zsSd~${Rqdz3BvNfzHhr;1OqN*k2(E;MIAD^IQKO+;Nz%PR=ylw)dtrT$);(asXb(V zqRb=7@&3s6@k~CTbtA8w8gHaFj8|B=jmO@ zLgeNdZz2C!XnzFA=siA5M(RRfmv+g+14JT%&&Radhry?&j8<|e}PmwZVJO|JN2HxDg?^W42P{xgBJ*j8yI zmQ|Xr8n!%o0a4`!B^{wn2s_>Syhi*_p$Zl}CMM_PJ z+RLZqM>^proOA8BwBU5|3PY@SAq0P)e4+U5^KjnoqR`Ybusl_4XE!XHG78}m?pvWr z!p8U73CRZoh5<+(pixBTV4;`mpW(E$V^HU-A(PA+~X|3Dre>7UWaLD4hV==h{Q=X1T=cl;zf zkwIu8aNA`?C;@0lo9qT{Yf-kkuP$SC(8_fnE~Kith>j>H*>Yx;W$J$1=cqs4d*IxB z8F9IB=e3T6Bp`oJ@eo(jEP%JL6$5kglyZZg1a%`9Gr#l@%6MWvgZ(t^Sc89QQ>jqnoGD7d#vrEj$jnw*s&~jUvT*i=)5{vQK9h{5?>)O= zo5#_{U3&O-{_(EFL>mW-=g46F%6Iy(j&w01K!9 z0igPbUKuUUKx}cmg3LFb3xP40m->~)w{VJQ3E-`&;itL4pn(f`JzlGU7HBXPWxRbW z5u1?{8`ERdV|Wd;sp${c4eba*%=aTDz%&wxHX30~Sx0;<|4*f&24%^2H|85=e)D2i znzt~PIS+pCZ@5=MZet;}9lB@_$vYO*XJuk4Rw<)l--*K@<$&O6y&)ni5LZfHu1RmJ z?tf)zKNEcR&G@&OuH7M>1*8r;Q*6QUQ~G(-pPh3zeBO1cL;mW~YNfZEuR%USr@fVH zvMum@xSZBCYK_6*z9u%wXNxK-L03^r;@1hRWzbpi zm%2dZFP?d1)!YQ=L_Y~{FZOT%9u8`u8T)!wXbu!E`q1-AXXX*Nvv_H`e?rfn3EqmahRJkgqBQzkZ$0?S355NVo8DWKXDSTFs^dOKsDW%-IDU!Nuts1OEtm zh}>)O+93vl7B=qia|v$>cZU=vNsd!h_wu==+x8Xuj@^mIqevbp04ZQ-@VBmqF_6#o zP)Jwo9+UuElGuQf21FV)U9FUt-7-ivYBrbeK`ow#bUsg-aOjagUF@HO=Ee+E(;v0& z18ssY`eQtRMvclol=&58u;ISZbbMP8P&)q0v1omwZG9V)lZYR7 zl&t(R!ew7bm>MN>Z6{Tq4G<}rCCJHLo|(ayjEhZ9A5>M$$|NqT-bzJ$GBi#ztOOWK z@>vyGQCTVI&e|e$R9`|%JgVK+zBkLrr98NtRL~y28JNZ34R7~<-PK>MXuDav6acWe zaie)531@*W0}cyCxo+r}EG$dkz(oR91H)Z4=Ml66Q+h(yY}SapVP%ot%y+_LHRMPf zRHtwt7-Yd{=M5!asJhj#L@^|`z|M2t(EW{rC| z(%MM~3||X*<_K?ut@0X14SWF{`o*V|c+OR%Rg3lv{D3Hb9G%rPMO?5k{4l_{7J^C40wz2PsQOZ;fo<|n^J%M};(1xEjgQ}7N@mQi|2J<(0i^u1qY&7w1Z zY>yl0EqaUrjEp$ic_CrLEom5S&KdIzz}VfPCNZ@S)^&0l-oFkX?HUkT9@UEuyM|xY z1RBzhg#UAX66|k5q1D2`5!T3fbaleMb4txU-DjE&C11l9$#*()(s$ZMZAxd;z|^OW z_tXUv+L2n0d-|I*XEHKM^DYh9nW21WmT$r@L-yZ`$eytO~oP>30uu8;?q; z72Q;%37nD6D)kk4sL#q2tBRcxOA43bR5NIx$LylGG%VRHyT-!pOJ!fB z)!ip+>pe>FyXN~$p1@SP{0U^|?oUrNxTA`QNDyX4(4C>}K9xMlIVk>y5*qrU{|Ex` z38RzxGb%))d%8>_417V~?_zmv$BT&_2)3HM+w6S8iHAVTrAq8al(j#QY6G5I%87)# z?)rlarQ{5BJg0|CQeR3kFrQ=Jz)XSa!aChB*(hFC4*e89{j@f8vduA3`sV^1-Pen( z1W+Y4Y@Q-IAv+{usl^DYL*>%6EXG(0?xnYk1URH7x=uaA+RJy(ksFCXQ)Pux4W$E#Ad#FwvF$1 zhMY4w>d^!FovJ(+L{0tZkipVU1ZpD>Z_Q<8S|}r?cG2_~@F2?Nkt1jb0^Ij~E3inV z^71s=;51S*6Dd}U*ZXRYV+=<^e00(@jyGcnnh`UD&3%_~1xLE1o*pG7nlCg~ZGnVL z_<2V}$gSkXrnFkT#LUTGeI$XAqHkoEA8o{o1ENfq&Mrf=#;v2P7jz>HKR0H2ai#R( zY+d8J9JS9KidG-U160%}9|Sut7by-HD6VFA=T`e4ItYdCqMLPOHby>f+ugS@HiV^z0-nO1; z!50(YCA_6{1ScbRMgAek8^%`qD~$&RE4D;A0KvA%(dF%?!R)>9o@PNk=$W_$qsq7; zc#ffs$(Wl&tR_F@D+%o{Rj<=R&eQf$7R(aQ4>U!P2SVoiaU<#;gsyRkr=$#ofHpvl zu+~i-Fxl{KmD&>5Pg3z2!{<3;!)d_uj-2c5BT_?G5YF>|M5@}%B<0r~g2}!pYR%Y#TpTR!y z4$$Obe(wk2pX31g>!3uJ2?1}(frP@mKw&#rKk%m-0WT#OQ7SC3j?VD`)M*D zh{N~a5qKpcEIk-pVcEhRviJcHur}!T3bLibfWhl`F4E8X;~Vuxv1rt^von>==BID6 zTVF7VMoXMTaExi3BXqPdv3dZo~e{A#9QL_N2X zd1BosP2P9Y%Q{PBpxxNVA`bf9dFFT0oX((ZM(yHf)T>s(R{4R2b;gF8v zfxEBb$%ex5vzPp%kFsWOj^gD`WCTIY7~eg8az688Z@&nAV*JEeoyHk^qV>VjeVN010<@>YE*LbYE`mmKdJF@@%+d! zS@CMx;D{VKNi*_%p_JFRCN`BPG$g0mBCvUVC?3Cv8lBCT-}%|C)0J}Nre;riO|c&G zF_)H*Wun~;a&uYR`0rq%d=;FNq|>;ijJ#7;-&6Q z1sbS}Fe9eKxjCIpAG#pa6HbXICr+&45ek%X07t+%cBGF*EhA-w^Zg5`hxJZp))9_F zn4vNyyjgX{)=|>{44CXS002Ra2>3XGRCN|1zA7isv_^PO;s&CcnViWR3kIxG!b=tFKPkWh>u?adR(dg?d z!-k@6T62v8Tqp#JxRA}9+qZ{9V6wihB28Ro#H>>&;K+O67=w4s z+Y9PkQNr>Y?fEj4Nz$5$IZEZMNAWb$gPTsm6|2?S2O)6H_iET7rD6Znc<$-oA!i$moar|)wtQ&yntE(~$sMdgqu;Jae4OcV(^^!y(l*x<jKuTz18axP%Gr%Ow5qg*ss|_!va%`>KWLmAmayliqcy!l&k3|T>1$CD#AnOOrXLUy<=M^i zu(9$KaocCyQSmPD>_m#vvS%KQA&zl?7D|rxjq^PVU;8Jno9#i$i!?$4Jb=)Aw}&6) zkt|6N?MZXJrRHZHFf>`A}-AMw4m_5JsEqi^rC4#1l-o`G|N)s z8WmTgQ_`d$v?XIf^19M}$e$Cj9;yUEX;ciN^`GKVc%#(Ao0ZMl(Ma0o^9l8aVQ!OU zL*cq1-Z#Id7!}^Ut)jYBOmaHgmvcG%0zxj=ttvl$fc0hLN^7$&{P%qB?HouQ_Pw4ZM7nps!EpQ5FIPQ;em{m5$W zI1|-p8v1#!d0n~{Lc%onWO2by@_H+=cLR{M-Szh`sh5SOo_)(nq1DSf-gcWu2LE&> z;TK0yr-1yt;#9XipZ&lYEl(#>#?1)bcIqby5o`9JL+j#Bs|Z2Eb0<-2ds{ef!a#T? zX=%#%n2QV8Gb74}4MakZ?JJ_>8I4uZS!EYFLBnT5G~;Tla*7Bz^g)5}4Se*Y3_cm= zOMy1TI0nM#>i97I3a-W-)c1GBmy5OVzjOoIS&KidyE=o2%1MEB^_a=dU-}=@VO6sq z)lmS9ktw=DzrLQm4_NU?l+I{vm3+ZOjpLb~3qCe>736?vr2>@E_)P-}240CAk2^6O zt!bgO{{oeBh?btT?z*u9(qi{A9J`0k2FmX8=8F*!rZ-lP#=@vG0c!Phrz#Hl#z8}l z16V>z9Eqd|lKl?ckWwF$w%CzmMfXh)d?cDiJw|gLQzt4i@LStPQvS%NG}n2@*=N1F z4?N#tv8WjjmM1zmg|Pz!_Tp?~L$cZJ1s1xkhQN0tMshMVTwL`|3sc~O6jCh4kbwHr zxWEfD{Bjymic5|JDZHg=2OJj(D?T!1<;RJ`(Ji6>zfyDjJxD2iZ3J020*00F$fkDE2c9P>t(YM~Op#~ZA!kn;-^4J674{adYd z=8EEAWLQ8$F64vXhNbrobBOhDlnNQXCt@lQrwH@IEf}gs4-Lq_hqJ!*n4b2NG_yxD zT(P~x(zgB8f%24HLNX4Y(D9+c?TD$S`2%L%<6-x>+yqB)`b?kdHG4+}z!m4rNk-0A zjKL((qBKTcX&ZLE4@WQYOYdA^(j%@##GAgm;os@}H>63MQ%6@_XpZbnI?o!N4WKK( ztgQ>4P=8wOmS2O=O&&MR35YC68ia+%v)T5xaqV={w~j`-l!%yBy{V8~|1v7v-3x6; zQ|VTe3J{Mawq^WAYzh9Ovq|!X+F4>_jMUYYeg?}cMCGI?3@_Zg68|RDXv+#PsY@k2 z)&z^koHAvgqdT^QDPv(q&xDVR3aHy+FnF&3j(ZK~q`o701jR>)G7v*|7uY?^8Cyo` zlzp9pUM)qYOrB#4Zrh>vX#$mvoAT|?%!yl*QyvEMGZ_d-2aeq)lxDgo<7K@{g7(}O zu&XcJo^9LT-PP;f2HcQgz06mQhMVLe-?q(x2q_02Rjz6_SIncDU+1@YVp)PK=Wwd63(Gcpd+83<=yJ9%HKJ1-Y*>v4k8Rk-S zs(amH@#k&N;xgp`m(F`ieoc>~if+oQ@K$X8jCko`SD4t-@~R3(G!{b(X3T+urgOB9 zTXE+<%$}qd z>!lIlrVezhL$PQzI$Z&5E}qL~#oF_(wM$Az)*vYf(@X={I{ZA~x1*L1V3uET#Dp+7{-W*q&}_+l-3&w*u36>|%qu z+$(7dN=Q4pWU6Rii|PHl&?{+CEVu@_L`a(e2T6me9IEOj$tHj)V^ObWCS^ykl(V0Q zxr!lcfnS8bqms3xrQXwIyJMq(1hX9-{i9f!z)GaV;*Nm42IfCCY1;_-iY>vk(x=^^ zGEuPx!wPMI;KNk!j>xU}V70+&Y;z^tUoyc`h^NG;OyGdt&SQE&OAumzPP+%}J7Mcg zhFq#rqonv34RZNoKfCd*5MRXy!*K@ub?{KY${0I~#v3S6ph7hTL$AF(o6g~xJ#Qeq z{3dNZkdNaTBBvuFF5cuwC58q9>Ls2Aht@BIPoEZ){;^hNGUksbJbfT?0$L&a*Mu;4 z_W|i@NEgLTm@yY&`mb_R0lZm!bh7XT*&$jd zRerc-Ym7D96mD7|_mKNJ*|o4=!pO_sJp zV3q(pP&SV{5h6&ta&R8al3>NMg0UY+magfE>pwZ#f1b-N7i1Dpu*)h$rVLKmmhg=i z3k439l-i^*J%K zs+9#P>-YfxAVjA+Y!@<4@-m;)sZP8h>4ljtGgY4*H&Jo0jE-i*TEBpY{uuiMfTJV_ z3VN~sANc?PAu6G|cJu)firlU>lMS78LT+cU-D1VQ$f(v@L@nR@&Kx|Ou+q@C&l{K0tW9|OA=4v;Cgc(;Vga%g6$2C-Izq^)mW)Sb?(3xK$6O; z9;(qugDaN{K$uo$%|0$(c(bG%Kv`(f7VEpnnu)TC@pTe9ywf<$cj#)yArER)0Eke3*PKJWAVH= zI;E0KI$qum2ZH_6My!g?=roD<2`v)41lX11EiZHG>!-R$+CGIrRA%7^S4%@?&FsB$ z@1Eo``mu%QnHE9-i!8C4y4KjU3@ljKfr50R3u56Vf<1Xk4_wK70TS-l6mMr~`^0)5C&sY$KnR7$AUfD(c z4WW);m* zFC{TVZq07Mqak&DzJ?HvRB1XV-Vr7aXsii5b*qYzz$i;=#_Eiz&?05?0(TLe7Jt{2 z#SE2_yP+K-P-Qf{`MY%9s}DQ?D#Y1d(2%kt8HzXq1bAXNKomxKbqwEe2kZgi)L$ye zDB%9DCjN~eV1&_8?{*c}7S##gN+}J`dog$(+KZ8HXde?ur64+4C2X6kJ}(-JWH!`s z9Z8cBrr;zyGkvs^_9ce_$d7;wQ!$cTIw_HCZ%`sC>Cse>$aEpjzP!kUBz%EGrYxRBBvJuA1ssCzn5)h0GB=d68e9C&fgkFWz~Gh1 zE$Gl573?C}gQ*l{0GTLyZ(G(jBq03m`v@*Np!4S|M5hW@{#}~>fU1_wn@}{m;TL>% z{vyAEIJnDaVZFSPWRlY7xsy{roZ?_V?%h)p4tiisY>FnTTDWjKu;QPa5aC4p(P0&T zOIPwJt(#DX>D@I2D@-~Lp1omjDDXr|gLwV|!`{R_pm-*jeTp8=q{Czp7$o}ok=%W} zk|1K(yJnhzwWg5*!Aa;+(?_aWzx4>ei!PI5qD(*e>zE+@i za&-b;S^eLx~?<^7E>JlgE;8H-|^)>kjzT%I!p;{RSrU!+3@R3gr$JB;M!=>TyFqyY=f@$=sAF1>?^PS(HdLM zw)Pt>EDsptS$l2UfXPD13>G`e^FZ6xYyDZgT?X?1;8FhDfFA-i>AMKFE{Cyd4G5`yicG$9R?b*Wdj z4fjb+%}CpTNG8gKy>6R$vl*M?FEOxy%Aa?rFMFFnF~>M}Y&=Q~Yw^LE*QYdfxJCYV z4fJeSj>3clzCm^qMhZJUa-RU+E=vtAu#0;SRu%N~4Gk95Wmun=TzRCckm<@U==apw z5J(&;@p!t(ODpQ+#cc{VF(AY@zvAa zs4z4WxI${NeuW~yac>fn_*EZXW*K=-e)9m=Rk_VUoYvul!Y+^vLHBmC>%Agwdl;2^ z@&0)Uq51omj9F_9Plvr?5pHpv-Dm;L@Zu&IG`7q#nmvCq-kNs+S~9Z6m}rgEjDf=> zbEz`%%TkK}i1L+<8Qk}0UNXUkT-IJ9c3Z-=vNXI-BRitEKFSo*4i>fPekiPDOv}D3VsUrW^ zlO*mJ)p%lh@nQGgB(e_tOl%9>PCrsa3`$OcSb&yhRJ9+WkF>4@A`kez8Ute4PE8u= z>i(lMcd192;3U3mrSc8iOiu!K)&->#qro%SG3Vwu>aydE)n3DY{~Hq&$XR({yt^U( zf6EX60BF*08n#_p3Ew-A2nrrT^L(FoAiEr{7O~i3>n{pYEUY8oNbkfZBx=OmI;`R$ zh~*u%Ufub32i=A^zu@G4&-I?l`weFRM=2_v>FdDEwW)c&F1|O3>^Q9BNYJczMj8C4 zS^E5SB^5QpPSz{@Pr4yDB`jb_9^@qrESHMFWz***G%{#6(2{qADhhnJ1b^|Mt&QU$ zC(Fm*2wg-{_b^a#J#-MwQRMEWYBM&qBK#zBAe{FLcaSyKZ~%acwvV6Qj-WT6L6e|h zC6HC6nIa71^Ethl2@vWYB3OM~duno^f6tLG@BTcTXMD5XqI;Wm?U?po8!EXK@z`~c zu3UPeuu#0CMnu39mWcaGRwSdrq2cfiNiXzFmT#5?3z0yPr6hnR9QygIG;hEG90Q{hm|DqtMNRVqi-39Lh?SX4g>bT1zFlIsAc zZLX-?G z+Omyp+qPYC#i-b-*tTukwrxA9*tYHb;me!c?%T7orR{enq;pIJZk$?CF2+y2n88OHNE$BH6bfN*XKxWX zCkP%hmS#7HHwnnpM;Y-_7!{s*cPj^=Z{B`DQu)&(L}w}<5L<L!Sby#c5Wr#u z=uN}WsPxGc;gLEKl|{2y5L*_p5X>wTIv;QPz5fWD>Dii2b>Ttlmp1R0wjT#74V6*T zo?2zrQYBVLVQ;1BmqxklLdl1g=GcMD-A}YU0OoDi^|4&>cn+4Jh18xKGfSr~n{svb z+hrJOPsw3MRw;5rEJ=SMI;X;s`ryK5z((X)sn#0~Lhe@{U!FS`t`7E*tZ=e!bcaHW zym6LgtrW8tTt|1-GJ?>vOM7a!wiv&MFyxQqMkpXqY%Zv2T5G5 zw9lxU9#Lp)x{dTYA1)T7bSKq=*xfQUdkw6uW(`uyBNS#iJwyRhD<7xs zteMv+;JRX|cvbkp-ERPd!iiWsxC(4gnm;6GtaoS-ZAjpxbWvhwBmIeq=*yA8z~k&Hfi`WYNy47EPA>v zackNs8YmE4$JDv^v_}F;;~_}?x6iea(Rto!HiQ}&Oh8MkKLPKUtiq2=j?Y1`*;GGW zQxg{85owSbo-m$bq;I+X<8n1RVvuwd2>W5!EuH{r+JYBr%%n@n?cK3d-om4B@V-WB z^K07TLz#R0jacd$G_@^l$>Y+(U7diw5}u(;<5TYUg2;HQuWb~v;EIaRA3vx1XuoU7 z2G95!1Y{+`pmhKMzBw$zl9-T{dvVV)GL{QswE0k4Wh(K_7XJ1}yrpedt=Qvkpk^HX zV5CiCE%gv#-uz~IrHJ^T?a(nkmXrRdg_Bfo+Gf$6(D8(pp&Tt1CNPxI+T*05f)fq4 z#)2ET9mRXh^s52cQQn7omAR9&Zrmx_-UA`-p!?CF z)UrVtr5L(2>Wz#T7^|X#j>Ujrir*SX;#6g7y2Y@WtR3vB-mCa*)6NqQc@&$KcilI4 zjPt1(OqT}uzoSkOtSuc@d#JLovza(@fXS>{Z-04?A|bbkW{br=-K46*V}K0e$fUee z!P^c@%AC_&U@MT?RH#-&cL)*rxW*`SEkAr#Q5>M~W|sLQuE;-FP-g?S})x z0I)ciWN$BP&DOtA{&7LInL!2pR1p5$f|>9Z$Z@~3qc+P$@0kqE?KTRZWUw_~9Lx9K z9!XNHjc@N$I$$~P23g-oD`5ZCMI`}ynhB(C;e#wYKd&!~?onC1wcM}o8sR@7brk_6 zfBKhkvJwT_=xKM>?rxwYiSh*W>gukmL>V(jydh{~0&S?tZu8I!|5#Sw@~7_Byz9Pc z02%9hbVy&am=VN|F(>Zn^h&BptM+Wv>;y6X{X$X9DdsZ=mzWjbOp}$wh&du@>+U6J zMW)C~ebOeXUZE_g4_5RKbCzHluZ{9r4Uu;?yH z#%K%t%f>cdKcl&)A{r2c89p-1h6f7LF1@52e?PX?+k_F%F%zW6Nasdr?pIj3EF3eJ zxlm^u%bKd%VKH=gOJ`I_I$)4}_7R%->7zW({0XUP+dR) z8)iPeAMbefs~SoC(>F6+a`{4`wG?qSDMu6H@A38wUbmiH*2+BVKk}u+zVQ(^p+$CR zp6Mvxx+EdOz&el@@sIqAa9X^2JuKtI13w@UWUi-PT(SSJn5=X9EQkxTH%FKhcxv9X zkyZMso>WQDHRRKufn!PYDEWUB^;Q>}2>tFnA&i)geipo)7rdHsNFJmmTDT2rn8AWx zfA6Qvb}3!`?9@GO6mn+Qpj#?KmV1VkO_HVBxB%uZ5x8UIQB#z#zaV5;+Q*d{fVbr4 zyBOEd=R8FfvcIUkg0;aOia){la7|7@!jNSEs{vJ=CRi)E&=ba zzNeQssaF9d7vA;Erul>SWWuc{rQo6eosTlJI`Eexa088^7EvZo3(;L5)m*0URMnd1 z{P;!?SA~%zWAO0s^`&{$WypsoEPH3c3A|!WTav(bib`wzBGO`f;H$%ls$>COD zQb_lR{CrJPx*&b)U}v?ge<1a7v@(VqF9_xh2#!+^2tv=HnGJT@b74#km@YMnG%Uig zm3!%~AA{R7rC(g#>8C26*ZlcNN^wb-EIisLXQFDv}VB!N}P(s1%u+j_}7=RRKjC9c;;+2@GAb*r^ zZi8MJF2*F(mzA=5thLR&DXSu|#W&o3iAU=v7YtY+NbqTgN>Vr;(Cg&83m{-PJ~IVa zJ#)I;F8GMllWDBe4cY-Nw|$^N-|HVF(f)h_CWJSP6(w{&5o3dP_RRjb;!ii)-7by9(=pcc^OZ^!b6vZBAbOPBp!C zcOeJ>3>v_bJtwf-)Nfl4t>9P%F z1U=%kS$3ou;9`2zJfK!Vmp!C_ys180V#ltDl&!Z|MYWCxx_WP>vb3NzgDultNrZ!9C20pp^tSC^_g4$q-bJPG>=VL$7NFZo|Luxs zmQLq1OiuXL71|w6t$hc0+-Mx#0C%yv7@L8Q2?MIuCTt!giIuyC9gsgcGoFHMel7Ek zn1m5A{A)&w2Xo*&-#IL|o4rxDYn77*2mB;`)(Tbrrva-+_S&gk0Z7s2r3sl9mGGhP zub+R^8em%ylP92QZu6EB<2jeQYj`OBf|~i$9*TXkST?mk9iGUs5o1$lGMBMv%*A*3sC^t>5bgC+{rb;D8+&$0iKYIPoK&f6**<*<)18<+8wLKftJTQ?cr^~?VIS*%f- z0QN4>`-U_}%UivceN+jfn_g~kJqj(CBq;G$?&_E0JFO@^xPHbvPrIt@qbAe7Rw^5Z zkP>)|^Pg(TR_A|BM2#ot?+RYd#&?oc&)LfgQSq$sKj1P zghmKg)@4V;h4-!!mjFzwR3HGFBL{F%*s{T$$tqXU7z-hV8HBI4Qrze-vGdu$8Umt2 zKbLQ2(_ju@=M=usMqbjZ%hQc(EDvHJp=aB?~KHHWeMqwmehHo}u2=a^VO@tB>lsjLwUn?7Z*56_yEn zeC2NvUTMTWz4kvj0|@xK)Ea4yBwV(3M3l|GzX>78e1=sHsG8gY#tkjlT#^9E z82tlh!QA{5iOOYm0E>OhOhTe#oT)BC;Pk^l&JrBD)0e#llC`4@oVt}^v65ZT2cY$d zA3|Lo9 zi$1{$KUH#9+Rb+1=wB$vJT;VtaFp4cp~N$agzOily=yD2@b1Lg=ptn{zJM!UG>Shj z`4bD~#@lt=l>~_N)imdTPx#)y8S^acf}nUSW97p>qe?0It4z%Tst$Uo#N>+w@bMBZ zF^kJgUH)aCZ^~l2aC?1J`vwqA&&vs%<|4$~4!jepAaM3Zrg9+jW-evIJbl{wOAbiJ zy358LBO>-XXm7TFp6D6cK849EjQ+3di##C}TS_{Pv_MO&R$Nshx>Z*TjH=RbY}o z4_o>2`yoL(0N+F>YKCnN$+uU99d{F!2D`{#N@G#B<-ndwwCdST~_W`w-B5otCR}G$o{HaT}^) z^fNmc$pIKM8;o;CbBPAkC)hiK68Ajq-0=d42?yfmuA9|k&fmh+B*r$@E-VgquZqZV zp8~lMl&Qw+9s3x;MtoO?s5^CZnlEX;fPn4+XCdC>h>WntATM8&<$ooi?s+L0tS6CQ z3?XEV=(qu#X$q!T4nZ6I=xdCPa3#O(-w?kJYgp%080ELU>0SUb^7Fq*DaT6}##~LB zCaf}9J#(Jlb}nHksgCyI$`O)Z%gWJ(W6pV0AR3V}%_%DhD+N=VIRAv3Rv_p`)AXNA zJSX%koSl3}gy0$gI)g~ps2yUl1FVRUEu>}Tz~KV&sRQH{;OAIF4d7rS#j9vK<$ljY z@Ih_HQ!6CE>fn^giMb*oT8cb?W_hhqm&=W}1$oyW+_a#VWYp^Uow;2a*RbMNHwH`A zAa&Dhm0&6j`}@odX&igRP_G&PEFs6G{-!_U-J&%?GOF^nh~IAeXsyQM!6fwbs;&95 zERykTaPF%zTY3^!)vIU^NH+Ok%$*yxaq?;dL-arrud;G=@)$=^n}EiVYYgr9#tiEM z?YK21nL>e6Slsv`X<1OthOhX-LK8BYyhAk}A^sxszV);@{|(FR-pqFY!$d$KoQ<=# z<%fjlY!=U}WZjZ>9!OW+p%SBb)H5GsDm0V|ByV$sX4k%EHbh{$AJGs}OA^*xbQu21 zo+F4N=+bxb!?1Aaq?%!zQ)ktFMAzN*P&YvA)tV6NL(2koM{zdw1sZU8-p$5WuN$!J z;lmNbs?Fpxa@&Q9n+xoDG6&sBBAQ*2Rvrtyem*!We7pmQi-F?fZBk6kLsyYq%(57| z{zxe*8IySzmF43mvR$O^n(n1s5d-)W1TVcTeSgN%wXC0s8wUy=;K)NYq1O(fY}}7$ zkr%NNRHO$R7z{EcwjS`IV8h^er@n==%MUzJ+9buxP#*!vQ!^w6Sdjcg#0)Bu=1eMo zxn-{QfC8Q-p?0oU<1vgR1{ARdTil zY~$jfrj*64^|i`8erq;jKKIA=+Q7t0r(SB4j6|n3XI#^I?k(f3x_{QPDI>BY%6cfz z-=IUMkVn`wY7y8<1?dlnhvlHt_z;%aV8}mAomkmnGUGM!bu=LPWDNIAm~?b5PHz~g z@#>*aFqXHsC#O;oV_{7+?ZL`wpj*kdiNYS#_sb?bi%R^4VPCTHo7WWv!HYq%eaWC-T68Qu1#cM+L>qeYwbt77B%Wc zml}kwSd;n5AV?TflN8&t1C>;ekH8j{Rh@m)(nEc7z0w|`*EO+K1Rx&E#n_n@g@R$Hd)wH2AWC^#z%gQ?SiJsLmN;$xd8X{RQ29_T|$B5Ggg@k1HtG|0u3ti!d z?GFdTU`PP1XL@^P)uio-gHB57@{SI;-1y)b_Z>a)WqEAUl5HPYIL<*&+&1q_27^;?f`Pr+Gy85Swd8#Yu$b2~F#A zS|<0|i!D9RcH1O7G*{^z*BH2qmv5*-s+#i6pl)Uuk#^6~UOx!I2z)Yeu6{_9pMB{C zsTKk8`FuLF%ZOb?zcA-$3dqT zvSBc*%_eZ3k0>Ip0dSw^GK{(AN90l{xQJ#_ON)3AA4WwTf-nABCe3!cEU*kIV7yrR zBu?0dWjb-Mpxiy^WjaEsQ)`B!I)wAG2=#(@o(R;`l=!;kqWW1=3EF?>=Y|Lp1%+Xu zN`au)t4d+LZbFFjC$@?-=G}v$+-k|BQY`+Z%9OhUh~E%}Prs3_f=YwKOt|3XDXUvS z<|LfGLo|w}mjRNI(2l?ZtYI_dyM!k`z&-A2Clm^`U#bgp%zh)l!^QQrvv|LtM}(>Z zFS^`f?}z`JzY7Lr7c1{3B51SHdyUq3B~VW=2Fgo6+43BxOvDIyR;t;S2x}QL0JVSy ze%sEqq;-elr6Wt>b6ZFo7`TwDRN*|bw{ubC66;`ul71s3b%J#fQ& z?;L#$CbkV5;RdLrN*F(?0Y`s8`59QPsAN5qnzfeCDK`z$PA=7WpD3m^`b|OHTb;=f zWp6ZF&niB(M<%CHNMP9Rz|U&0+tcK$O9NIYk@)Sj)Fr>bcYzuI^wRhD&n)~6ubC$3 zCQGi>xTdKGK5zdTYscFQXD2Ua*pj#7)_I^Gdbu&n!ibiMoA&-K*#c>XbMs!{kUtVz zFrdV4hpP3D_^6N;*!0_sV@C$dGnfffy+s;Hv`beoHPS8mlLy$&I0Z|}`d9BA4+QLB zMA8nBotB9pbd?BbCK;9^j{o{?q?Xki7a%=Q?PvC&7?;@GSpEIlbB{^jW^(~vs+$CnJkRW!L{V5?3Pm&c%m!3)T%o;0V za`CjuZHN~+(Ba3NMFVC+yyL{}QZZ3!zWr!BLH(}wTZ|G|J&65yCQ2gofEhMfp^vVR zQw>)wnplFStxP-{OHm>1vQ{Ef(6y{ms&nkLA4QKtq+W+>@f2yFNM$+^8AoSfOybFU zd!YyykU0E?tH9rp>Y=>&zUJh=jj$sq+8N}B(gQ}3+QLeT9lBHx7bBXi+x)^ zot|iP;B8w!HsOPWbT?c(LXC{stVgGZrzf zN6_O!Zj~;oTQzOIVG+2fL7PTlzpkP0rZV=caIvjcq$-Xq2A!AsSg9DN`RqB;+N$f< zL%bB{6LguSjgdT_N`P=F_r6}4Qn)gAk;No(K8BH_tPCb3TNj#L*<1+=a8CsG%ZjiS zpH$KUC~<_<=%ssr1Hy#s=s$0{?*b9fMCCbBPaaPH4x6bC`M%6q4Wxd%ESokW!&^G|wlllyzzthtqWDSS>vi5W0??wUP`LFT< zobc;iSQuCX1B>Pus%zwg+~$FMxaPePwjmNxmaDkRkNZHt1+|d*Eq<0aB0Du0pvGau zQofagyQUYE)vb}bt6{8JGANcUciN8`hB4_TrmwL&1{c8**Mfp4;s4!k_1h~_F#yOy z2PWa)$t<=oyvAR^Jrn{+&~qt=6+Z`a`4O5`zpwj8Juxuu{i#MeR>0PH2Iw3f(3A|w z`~sLGZH*^bGm$*Y4YC14%RA~j8H#J0|1gJJs#<^B1oy45oI@mDr+{7M{QJCy0mWUG-r()#iAr9CXXG%WY_c+XKVKH0dR3U%b!mn+Xm z+JToWN!>jCuu*ppOdM^7DWTGQY7GahV{94r)#U2xV7{;xsetP~XUyJQFi3#8KtW_*5de9VV9#bwGcj>V+-@4QSM^Hkec((<$gO#;WAw(S+M zzd{78TTQlRW*YYv>P7VWwhRyuHe9RaD$69GJ1!=QQ!&pd7iH#?>Q{dSTym7zDV|!! zEKlfG5+>nEQ=MWQ3Q99FwX^$|3|NY;%Sjvw@{y?nW72xX0@x^OUs-fH;f|4;-v)cn7Ig+Wv5aMGAPT=BC<^t1y{$){QS!T6D8l2Z9xxDubEc2 z>h>E!2;}`&VE$j>Es7EH*57|=xTHuy(J=MBw&jWVYaSpFgl>HL?BPg2)FUjaqJ1-v zTLL=c+r!Z(F6&jWjj4X%zmOEm;;#@gBfSdv)l88?^~jya+PhsfG*g7Jx15B z$b(~AvxF$n>_B*6x{Pl3mK*{{q+dG&u|CV>=*KTV{)cj)8RL5SJt^lZla09BH{d%R zrv}=Qn4}10tWme+)rAn$d@_TR$bDF5TNGo7(9dX+&G86OKz=SfN$q9SPyX?l<(z30 z|NHzCQ@u z_dVM8ULFV)4^7dt7q|Z>vk$kZ`NC#<<5Vdp!-#q7|dAn8FJsT>8R;G}7$C*Pv+sTmPN#uik}4 zho@a=aa1s6t5g<`YL6=fU$PTkxSHCaYH;h!m6AY!4gHM&K4Yz2GDBBa8o8OL%jc{_ z`T$uNDkK3J28hy0BpL7$^H%*BmSCK8Blro>dUUr@^79UhV>9%MzM(eON3#zz|8@C) zUEx16O7oR<;yw|Q&q{fWKuZ!}SW%us?gqIy9bhJ}OJ`Qu*Llbju_UKty^nKd+20w6 zo+f$l7OMjIr!orMT?T5umGg$AtLleZ__p)M)q0vS zSjhrr#ZHZ4uKAFYxk;Vr(9aYVi$TM#8Tw>fTGNnBRCB z8F+hA`Pj+XdR_wY1HuN%md3b5qo4H?8QOH`O(qKF#Bsj(=3MJRnZi!k365#Pmitcn zym$R_zuA-Seiw4Zx}&zD3cz6~+-NVF2j42KRmE@9r{be(`|0wFz?kzx`{MKb)jxeI Mc1xE;8wlwC0jaSP`v3p{ literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-7.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-7.webp new file mode 100644 index 0000000000000000000000000000000000000000..aebbd41c1fdd033c7dd2a019482fbac8daa1a109 GIT binary patch literal 189352 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

cPc+KK(GH39Al6r4%{mj}lOn`;tIU zK_)<#rp4pGE;$Eayb%O4iV!Igmqd#q*7Zr1b`Tp{_RsX311N?=G(NhIg-1}3;T_Cu znO$%%Q2=_qCGq0@Z&@#zEttQK~3KHJa^(DH8Ey-{+1> zX&_my;8j(Ouz2O}cd*wzSz=Gf4nd_vC-=}#-FEKJB928gh;lzhoM!X{BH^3}Aj)yb z^Y1wC)6=23+0qo{5xzTY+cqQ;@|9qaCnB+mT-CG#YH-l~&;6oYdza6=IH2R_R z`8COEjeh&M;_Cq+XppbI+ht?%6= zKbA#@{>ruuK&P$5g|T12T)UyH1xfYZ?`c%WXGAa>9H{BN7O!$rsjl?!Y{3qv=@KBz zE~fbnb$Co=uaU7um$o!mzZX|(7WvovEmz}Wi95!uxNt&qZLVU(`of&3?2yRNB~xLN#>6lD&>O;kqtF5%*BwO) zDqo2>!~%gl8?4nD=@v#bvC@klAhpDc(S(_*?3t{9KXHHbZfhwsP=AALz5gMT4TkcW zxG^&jk@qv)Hxk`Vp9HKkGAd&0(L0cmjnO)yoP%HeDSC}gBqW62Mvc)`Ofg3xzyO9I znTEDMI3$X~D46&?5bnQFhasC8l`Cmy*mLLOD-d(p+0v9$!6p9Ui>E@-GQvtH=@dGf zo{mA!k%=RWX>baOBI~{Gm%m1!hJcI|cY!|Sus2P@$|8#f1ZrwLuG7SaHKv{{{5UL|;2tiy3dJmaRF*zwTdX!y!zpwgBZpa;M5<7_HiW8Ia3%HZL$&6ZZVV9+c za?YU8mfALIxz+>6jqhi%A}azvw0d%KInxM3A4_?^F`ah;w~i&~wb{D*$XYFQc9HBp zRDAg-s->tTjL(Q&FL^`}6FfWRyF-5qwu8#h#6?W~DS6yA4NC&5U7UxFSX9ex^U)as z9X$6BLSXr$$9>n3a)n<%@b~ za@H9SiC6d0DV29gFaBp~4P+~GCAZ*@M+)O?Z$wOpOSXQ8XeA&XB)&oLJRAMG*SX#@ zO}h=&ycX^(Uk4Mqr@WuT_S0%tzg&&o6Pxl3*mTNl@N$?^8cHy8;VYj#gC%cFHAXR) zIa48b^OQRpYnPvlttDL(xfUT%e=`R-JAgnKpziOSmU<_swxbLoU||3N0000ffSM<% z;+)VZ7MGn_VI)E

xGG7JEr}eTn)zljsdMW#A{Eg*ZBg|NMsC~ib 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 literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-8.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-8.webp new file mode 100644 index 0000000000000000000000000000000000000000..c086f2f6e8341a8fd8574b3261406f6fea07ad70 GIT binary patch literal 139722 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

kU7rP7jr_J;tEU^a*FnV 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%0D@iz(3ge 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 C(^CKd literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-9.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-9.webp new file mode 100644 index 0000000000000000000000000000000000000000..9e17e1fd1b29abaa44bb1f3efe2b1f9e45b4fcf1 GIT binary patch literal 70270 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�ZMMhos(#BHt?YX=YRH0UUF|41ia}`o*1Ng#`kp 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 literal 0 HcmV?d00001 diff --git a/images/learn/transfers/settlement/settlement-overview.webp b/images/learn/transfers/settlement/architecture/architecture-1.webp similarity index 100% rename from images/learn/transfers/settlement/settlement-overview.webp rename to images/learn/transfers/settlement/architecture/architecture-1.webp diff --git a/images/learn/transfers/settlement/mayan-swift.webp b/images/learn/transfers/settlement/architecture/architecture-2.webp similarity index 100% rename from images/learn/transfers/settlement/mayan-swift.webp rename to images/learn/transfers/settlement/architecture/architecture-2.webp diff --git a/images/learn/transfers/settlement/mayan-mctp.webp b/images/learn/transfers/settlement/architecture/architecture-3.webp similarity index 100% rename from images/learn/transfers/settlement/mayan-mctp.webp rename to images/learn/transfers/settlement/architecture/architecture-3.webp diff --git a/infrastructure/relayers/index.md b/infrastructure/relayers/index.md index 16c4f19e7..aa7c46856 100644 --- a/infrastructure/relayers/index.md +++ b/infrastructure/relayers/index.md @@ -48,7 +48,7 @@ description: Learn how to develop your own custom off-chain relaying service, gi [:custom-arrow: Learn more about relayers](/docs/learn/infrastructure/relayer/) -- :material-package-variant:{ .lg .middle } **Simplify the Development Process** +- :octicons-gear-16:{ .lg .middle } **Simplify the Development Process** --- diff --git a/infrastructure/spy/index.md b/infrastructure/spy/index.md index 290930415..1385172f4 100644 --- a/infrastructure/spy/index.md +++ b/infrastructure/spy/index.md @@ -31,7 +31,7 @@ description: Discover everything you need to about the Wormhole Spy, a daemon th [:custom-arrow: Learn more about Spies](/docs/learn/infrastructure/spy/) -- :material-package-variant:{ .lg .middle } **Interact with a Spy** +- :octicons-code-16:{ .lg .middle } **Interact with a Spy** --- @@ -39,7 +39,7 @@ description: Discover everything you need to about the Wormhole Spy, a daemon th [:custom-arrow: Use the Wormhole Spy SDK](https://github.com/wormhole-foundation/wormhole/blob/main/spydk/js/README.md){target=\_blank} -- :material-package-variant:{ .lg .middle } **Alternative Implementations** +- :octicons-bookmark-16:{ .lg .middle } **Alternative Implementations** --- diff --git a/learn/governance/architecture.md b/learn/governance/architecture.md index e2638664c..8d1e644fc 100644 --- a/learn/governance/architecture.md +++ b/learn/governance/architecture.md @@ -27,28 +27,87 @@ Spoke chains handle local voting, forward votes to the hub, and execute approved - **`SpokeVoteAggregator`** - collects votes on the spoke chain and forwards them to the hub - **`SpokeMessageExecutor`** - receives and executes approved proposals from the hub - **`SpokeMetadataCollector`** - fetches proposal metadata from the hub for spoke chain voters - - **`SpokeAirlock`** - acts as governance's "admin" on the spoke, has permissions and its treasury + - **`SpokeAirlock`** - acts as governance's "admin" on the spoke, has permissions, and its treasury + +### Spoke Solana Staking Program + +The Spoke Solana Staking Program handles local voting from users who have staked W tokens or are vested in the program, forwards votes to the hub, and executes approved proposals from the hub for decentralized governance. + +The program implements its functionality through instructions, using specialized PDA accounts where data is stored. Below are the key accounts in the program: + + - **`GlobalConfig`** - global program configuration + - **`StakeAccountMetadata`** - stores user's staking information + - **`CustodyAuthority`** - PDA account managing custody and overseeing token operations related to stake accounts + - **`StakeAccountCustody`** - token account associated with a stake account for securely storing staked tokens + - **`CheckpointData`** - tracks delegation history + - **`SpokeMetadataCollector`** - collects and updates proposal metadata from the hub chain + - **`GuardianSignatures`** - stores guardian signatures for message verification + - **`ProposalData`** - stores data about a specific proposal, including votes and start time + - **`ProposalVotersWeightCast`** - tracks individual voter's weight for a proposal + - **`SpokeMessageExecutor`** - processes messages from a spoke chain via the Wormhole protocol + - **`SpokeAirlock`** - manages PDA signing and seed validation for secure instruction execution + - **`VestingBalance`** - stores total vesting balance and related staking information of a vester + - **`VestingConfig`** - defines vesting configuration, including mint and admin details + - **`Vesting`** - represents individual vesting allocations with maturation data + - **`VoteWeightWindowLengths`** - tracks lengths of vote weight windows + +Each account is implemented as a Solana PDA (Program Derived Address) and utilizes Anchor's account framework for serialization and management. ## System Workflow -The MultiGov system workflow details the step-by-step process for creating, voting on and executing governance proposals across connected chains, from proposal creation to final cross-chain execution. +The MultiGov system workflow details the step-by-step process for creating, voting on, and executing governance proposals across connected chains, from proposal creation to final cross-chain execution. + +### EVM Governance Workflow + +The EVM-based MultiGov workflow follows these steps: + +1. **Proposal creation**: + 1. A user creates a proposal through the `HubEvmSpokeAggregateProposer`, which checks eligibility across chains, or directly on the `HubGovernor` via the `propose` method + 2. The proposal is submitted to the `HubGovernor` if the user meets the proposal threshold +2. **Proposal metadata distribution**: + 1. `HubProposalMetadata` creates a custom view method to be queried for use in the `SpokeMetadataCollector` + 2. `SpokeMetadataCollector` on each spoke chain queries `HubProposalMetadata` for proposal details +3. **Voting process**: + 1. Users on spoke chains vote through their respective `SpokeVoteAggregators` + 2. `SpokeVoteAggregators` send aggregated votes to the `HubVotePool` via Wormhole + 3. `HubVotePool` submits the aggregated votes to the `HubGovernor` +4. **Vote tallying and proposal execution**: + 1. `HubGovernor` tallies votes from all chains + 2. If a quorum is reached and there are more for votes than against votes, the vote passes and is queued for execution + 3. After the timelock delay, the proposal can be executed on the hub chain + 4. For cross-chain actions, a proposal should call the `dispatch` method in the `HubMessageDispatcher`, which sends execution messages to the relevant spoke chains + 5. `SpokeMessageExecutors` on each spoke chain receive and execute the approved actions through their respective `SpokeAirlocks` + +### Solana Governance Workflow + +The Solana-based MultiGov workflow follows these steps: 1. **Proposal creation**: - - A user creates a proposal through the `HubEvmSpokeAggregateProposer`, which checks eligibility across chains, or directly on the `HubGovernor` via the `propose` method - - The proposal is submitted to the `HubGovernor` if the user meets the proposal threshold -1. **Proposal metadata distribution**: - - `HubProposalMetadata` creates a custom view method to be queried for use in the `SpokeMetadataCollector` - - `SpokeMetadataCollector` on each spoke chain queries `HubProposalMetadata` for proposal details -1. **Voting process**: - - Users on spoke chains vote through their respective `SpokeVoteAggregators` - - `SpokeVoteAggregators` send aggregated votes to the `HubVotePool` via Wormhole - - `HubVotePool` submits the aggregated votes to the `HubGovernor` -1. **Vote tallying and proposal execution**: - - `HubGovernor` tallies votes from all chains - - If a quorum is reached and there are more for votes than against votes, the vote passes and is queued for execution - - After the timelock delay, the proposal can be executed on the hub chain - - For cross-chain actions, a proposal should call the `dispatch` method in the `HubMessageDispatcher`, which sends execution messages to the relevant spoke chains - - `SpokeMessageExecutors` on each spoke chain receive and execute the approved actions through their respective `SpokeAirlocks` + 1. A user creates a proposal on `HubGovernor` by calling the `propose` method, provided they meet the proposal threshold + 2. For the proposal to be executed on the Solana blockchain, a `SolanaPayload` must be generated and included in the `calldata` parameter of the `propose` function + 3. The `SolanaPayload` contains encoded details specifying which instructions will be executed and which Solana program is responsible for execution + +2. **Proposal metadata distribution**: + 1. A user queries `getProposalMetadata` from `HubProposalMetadata` via the Wormhole query system to create a proposal on the **Spoke Solana Chain Staking Program** + 2. The retrieved metadata is used in the `AddProposal` instruction in the Solana program + 3. The proposal data is verified to ensure it matches the expected format + 4. Guardian signatures are posted using the `PostSignatures` instruction + 5. Once validated, the proposal is stored on-chain + +3. **Voting process**: + 1. Users vote on proposals stored in the `ProposalData` account on Solana + 2. The `CastVote` instruction records their choice (`for_votes`, `against_votes`, or `abstain_votes`) + 3. Eligibility and vote weight are verified using historical voter checkpoint data + 4. A **Query Wormhole** request retrieves vote data from a Solana PDA + 5. The signed response from Wormhole guardians is submitted to the `HubVotePool` on Ethereum for verification + 6. The `crossChainVote` function in `HubVotePool` processes the validated response and forwards the aggregated vote data to the `HubGovernor` to finalize the decision + +4. **Vote tallying and proposal execution**: + 1. `HubGovernor` tallies votes from all chains + 2. If a quorum is reached with more **for votes** than **against votes**, the proposal passes and is queued for execution + 3. After the timelock delay, the proposal can be executed either on the hub chain or another chain + 4. For cross-chain execution involving Solana, the proposal calls the `dispatch` method in `HubSolanaMessageDispatcher`, which sends execution messages to Solana + 5. On Solana, the `ReceiveMessage` instruction processes the approved message, and the `SpokeAirlock` executes the corresponding instructions ## Cross-Chain Communication diff --git a/learn/governance/index.md b/learn/governance/index.md index a44c6e8e2..051ebbb63 100644 --- a/learn/governance/index.md +++ b/learn/governance/index.md @@ -23,7 +23,7 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove --- - Discover an overview of MultiGov's hub-and-spoke architecture, including how it enables cross-chain governance by coordinating decision-making across blockchain. + Discover MultiGov's hub-and-spoke architecture, enabling EVM and Solana cross-chain governance through coordinated decision-making. [:custom-arrow: Learn about MultiGov architecture](/docs/learn/governance/architecture/) diff --git a/learn/transfers/index.md b/learn/transfers/index.md index 44558ba04..aed224ea0 100644 --- a/learn/transfers/index.md +++ b/learn/transfers/index.md @@ -35,4 +35,12 @@ This section covers various aspects and services related to communication protoc [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/) +- :octicons-book-16:{ .lg .middle } **Settlement** + + --- + + Learn about Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. + + [:custom-arrow: Learn more about Settlement](/docs/learn/transfers/settlement/) +

g`N8vR}~2 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 z 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 literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-12.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-12.webp new file mode 100644 index 0000000000000000000000000000000000000000..2680b35acbda994116f9e34b27c2100bcacba2e2 GIT binary patch literal 71580 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 z z%!I8ivI;f#fDN%9X<8c^FCI&KGFQTB4G`8oS9H0{l1R# zITW0K_to6YW&oX$tvu^@&*jPcvtopcJ5d#)gQ3j1W|1by%Kjl%q53vy0x8JU+IO>4 ze2a}HKm-r%D@r4J#9m2@;c%0~{z0L`>UsytnuKPDu;5sm;a&a&YtUQOfYRlRL=^+# zVzO=X;MA+$$oK4&(^|Lg^v%fyrTdtu9>Ri`sC7f#GE<82TG-KuVPrLj;@m7G$7S36 zngCH)<)r5X)BJpZ_(doxnrQ}96pN#tuoTv^CHX>)sZgtfm{dH2b~Q(zDaXL`7B{RF zqYFFTC~Vrz9+PN$(U0sIFg#;Uk?oq40A=q7SQRC@eA-ql#-gq#tzvoT6BJVl7Gy67 z0Rc)%J3{u><$cf3Ez|{%`ld{;To~ zQN~As_~LMHvT?i@zVLDFMzCW|%wZAJN-yNt`wE3cdK*+_zL4iNnSCh1dmHevYmiWL zFEHS}yt$+OwLZnOSs1YFq$;jz9PW)I>&P5q`P-$!!Dw`Uzm+aPlNO|IRx1P56gOl> z!%V`<#|-LZ>1FG<@64#G2@`TrROZt%3?vbl*Jx^1aBae50PB*b3m(+%;e9Wc5D9Bt zSXdz-dH?{Ui^D(ujNF8Dxjypq-Ly&ahzr zUpMR8MP=;7^ZnJ4$F{M}#h-0mLy*6|D?Rlo)?CLw-G zRr(^u7eIDVm34kfaB5pvJde-dk4*GtpL^FQ3~TYzJ80KHfu5k6)8U@O-@J!tbV<)s z$B_)7+1)1^h3b!>`7!P8xp4rrs!g)L;wB6PNA%!;Yb%4u5&;Y}g~PdUfqxHLBPmMa zLhqQyfew(chp7`luupCQmVnknNV-ehEQN|S@XramaGB|U72M6K2wD8600f1;ie$VP zjc~=hk}N!@6!y_6M9_q?1TYHGOyp$i7;2lZ62_st#_d|#P`E9XXbRQS3X2O3i3tyR zV^?>800F~8^Tcoc+Kf@gvp#jL=4=Xh;sZ7Ihi0YYcs0P{KmY8;%k|^rF!i425yfMK{!mEJ#U_P;?_5v7xc4aG>D}{f!pJ^3)FboSqwtHh0Zt<4S)}zdRFr|A z^Hm(M59YM8^{nWnQy0qD{h6+*d|*A|urI=}*~>ECa*}o+bF;ZxAUv zCf%lb9&Hx$m|gbB9i+2Qk*i{zj?TQo9vnYs3c4TI@e_Q3^4Z_@lo_9~nsHt=;2IKs z#p}HTtoZ5FY8!t0`Y4k{(MR?%?4W)x&i!X=Me;#)_5lYdcsAc$WS9J~XO@*+bnFub z!54J|zjK(lK7PL5iH@y8FBZLxF2Eu+CsYa0$>oUexfXoWcnE%G8n~BNM!_l?1UTFj zNc^C};#=b%{BP~!p3z^kGowbmeONqTY>)#?8lN$_e+_9m=-b3z+c8lda(kbo2M{bM z=LKNS>vi!f5im#J>liG^)oFzPHTq-PbXT;JACAH)3NnKrj;3k1(Cs~Zvf3LLm*XPc zYp`bwq@@$hhIyofHDNEHx=!p-)@h=a8cN(gI^6btoW>n9rs%J7()R=KnOUaFgKTq{ zwGVgQb`kWuSs}k}_j+icsrLcIFk^a}`H>jP7(a-naO)*QEafHc<1=orEXYxL%XBGS z6Z61Z*h@^b4S6zw3#zs$BeM_Tqow{ujepf^_=uy(sV<^E{`bELy4Y}`nk4jB4zwwZ z7{RrYM{*$6u7@1}kXzE~3U-MU>xSzCHi4u!*3cazvhB$&_i6TEDShJsg|2zl*sA3I5e;1Rk}qhz7sT8*{v~c|2N`kT&CDmew)&v>Q)? zR=Y$Br%R_K*7Tb*$+4FM{ri8$f0HDn1(^Pym}4o`sWe~LNi>FS@moA_KtPrhq4|Ho zT&5hS9bvnh1Ho86^!UuTF>9CrT9ClBDsEiL>C(PtJp~k1!ke#Zy06~3m`YhrD9}xs zKDBf_Py7@!*I>byQSD5aDis$Pu-p=)^4g~&0V%$h6~G!`-bz^))qC@<-=1zr<5DGBK#Iy=DoqU^>Dc|1+VjaQU3Wqk*zhv8iOeSlp`X8I+6z9W1vEK=77q1;^=c00L1CT6{um68PG+8xeGQ$rw zfx=dBG$`(Iw5Z}MwvEIoY4pq+>C1);D)czeK`xMIFhU!@BT{@*gVGl7D8*mHby@_( zZ#_Jf>-Q{_Poe;Hj$VF<=&w_+Sxjb@Wtb_TaVv`dF~mZ1r#Nf!f=P=F>2qg{nxhqk zeWp>8Slcz@i+guY%*t*+EyCs;5&oBhTH=+t5>59ASNF8`fQwrophw$(KjYPA2UAQ0 ztl;99TQj1C|1>g7!6dGf(S?%&9_)}Gmg55~U+uRNrshZ0kO}JG4rvaQX)3pF8Mj#Q zdw|eGp?_rEB7;?ox9-YjqlJ-zIzngb@pEWaP@l)N1acypZie^w$#H6M0o4=$ihAi!H87WX3AS!2XE4S(RY9X+nI*)>DcpxaqXM)8)D9;c4|Xu? z$lQ%gl_hB~qxq^7cQueYs}tL6RR$61d?G~O2_={2_k&;Z$txgP7Racgjq+8dR*~ov z@?GCGxYcotlE!9E9%)`K^e1}+2_L9_&}s5_zo>iy9YJgFU~Ka>ZlZBGlG|5JR9(?C#T_o7}t5d%}>NCD(KB@$sm*E&ZA9D;H49zUb% zHawM?WAi+jOoZuFTId!hwu?CnQ@5uVJvuUO*9|5n2pJ-jqUC0RWXRVWS2HD@c1e(k zB|N0czzPOt?d9`#hb#$o+dXeLERTj!P(A(l)332>@D}7%F!TpI@{V&jeA(S(269T( z@Lvk92`(k5foj}Iht;vdZNO3sop0*kz_jsrdN?;b0+V7CshbzPktxw0Hq0pBkG0B( z1>t&HX31ORvvUkN*b(CZL7g;TfcAWUDB^_b`j@jUeqq$oU!8q5eA3PL#j!uB7x!m*>qPKa zp*x=zzPgV=zIim1W=wCRJ@oMly0s6N$hp2=AUk;WQL>NjV@7neqX&5Nytg~TRksrK zSjy^f?_@hL^7gM0uKM{Ip-ztH=@wELR9J|2{V9F3;IDsrg$LoighkCcO#O4c(C25mg8kY?0&h8nk zF*xb19&|2-v3TuwDOxJ+Ka-+2#aVd;sV@~3XuAUogYTEj6058YPv+7O_)P^u-y4ZBjD4~}d9a#o@ zWwc5=3!0zPz{|=`v4;J5_1>pnB*kBo)(PKe<%aNOMOV`9%ze#_kTuKHgPtGf;y22g zN{2zf9>XZS#nHn9IcL(nrY>Yee|6JI^?I>~l7d}s{%`oU6rABYbgat@9QLoXIcs_y z$uphh1li$nx|`Bz{VE`4EU$r)9H1eQS*2dz_w}p1eSsy{-B6l_lm7*=x>(*e>^&5# zjEtt2Bu!NC&)Z*zN&1wq24Y+RO2_`8sJWRXSR%cQ`r!$dcPcc(P}*1vTHmP%(31jg zWc2G+u8@9LPiHDp^I@PQ-*7Dhv+mqH6J70*!|}}vc$NzYf}dTccfpWz8)8m~3W((k z>3=xwV-;<6zq2k=+g@wOyTpg|!wD8?h+#TL z2%3i(5Y=EZs2*V@IDp&ftGpWHBG3m`Rh}{sGifE7^@f(5g5}7kkuWqw5m^KkijrPt zVBopN*+cUviC|!{riRNo%geezzvxn+cw=R6BT4I$K!-*3Vv^K!+s3P`8@5tZai!{2 za?(bu02K!p7*_+DUU+0LQzhrXLwQyX2e=YYwW#cX-DYd_(Wg+2UhoFHAb?S z6}PSoR#@VMB#T5xNqP4_?q-Nw|AM2lLAAJttfR&_N^)zr<|#IfQ}SM`ftRTQRk`Ve zV^cXp5YIHHN$D5>ViE*fz2me!BYu^f<2rJ?VwwFVEk7xV;G`d450T|iCI z2w9|My|mOesZJ!|X@(~Uwx!?CNM{QBwMtImet4xuy0Km?F5=Iqv4D@sIq6ELAH!Q$ zJrjOl`=Gkm%A{MKl`^;7Y{RWPkl#lQlSYU9Oyn9BSkpj07yWq~G|xZaI8!yAP^7U> zY`sDjwXe5}$AI=$4pN_c zyS;h4UsC$=LLQ^hkG2F{VRwV^xL9;>7tXfqEhEn#w@x@bb>d%*=)v#MC|PxJ8b_dX zCWg@cLS&8Cli%l_;d4QNrBBXuSLjVEXg1R7m0R`G+VmbrhnDovndl(@`5LH`9=F4E zWG(ADyNMk&odM@qCo5wn7MIhuKVWK(^ho4M(HgwSE5`lFMGv|k8MY7%lyQDvPHf#7 z*o+3C_3>Y%*>QyPN5J=$6hQx&Dn~JVz^20{CQgl-YQ3AcRj=Ls&R#zlv(PA?~J)fvx# zZcL*Sp&acvPHa<@&5Q+?Eh7o+qxa;bsxEx@PQE8VJtM;EKj)YRxZkxFL_5CVs7_ID z~Tq2J-*MaBu%GZqltK`z7-mA<=zy2ES8=emN{)zW{~!PjL5)Z)Olyc-hHZbSdW9jhm_ z&2um@Z@2q1J{Y{=fb*Db?!?2=3!V6!_Rd^vF6W=nZ#6yf)=h8xwgb(L0|m?{IU}Rr zC-g2fUzse{c7^`1mBDcKx3S&(wnRnwWy}i9F;W+Tpv5{3k8;K)(F!sKj#R8D;q7GX zh*dJNr(4z)+fz!r6u;%mhyLOPOpN9Eb5$pj>;ZIDH0!znx*MJD=enLYxc0Hm;Rs2Z z^t=)RLP329WVo^Cbpf6Ws z#OV0Q&mrye2W4>E1XYd8jq>&^4%DD1kySb@uP$C;UN<5(9$-}L*iWZ>Aci004~C$D7`4(-0rhve;hxar^sIwI;hI1a(tv8SRf; z*}n54(&PkKmeNjmlj+IIHCJraY&sOhFt69xn%b2@nGU`WHPLar-oE7$t>0!#h#uDg zyIH%8Xyw9GrsmUxi-6Pp{~U^-Q+^t{4^1RCl|<4~&ags6_+VS#dFkn>UzdqWzy2Dq zPurBLe;f@kUus#`*=0p31ZmS#FNor$nlj~Kk9J>=X451XYlnDiZ_yewzA5rs<>B1~ z2^aIzg}rp4R--gT<}x2KlFPH2(*OX$zfT*X;lV={Y(Q_I{OG@*!RQV0XU=;o&KA-+ z{BsLOo6rCS%0azUcn4%efcoH$9c2yEiP9NKo>3P1HclA49N7k*PTxcO7{OHZ?OywM zCY!800}qrr559M{1*N(&$z)<9|IwNSjEO8P z>{pz1bRIRLI)y-bkiH*f3GaD8ML*D1^bH7OaSi{COLc^7`hMWxdxhEIWRlh!PnI#3 zg4R;xuYaptr?og^iV{A@#rJ#%g*~8^7xOv+nj+9gP zziG=xT4F=ID>TU%1A9}Qr0{QWi2F8gB>Gi-Hj~=rqKj?jJ zy>d$5PSPj7G!skmfYym#X$jYVK|TGcR`Wk|Hsy^~)7Q1-pO9_edLknKB)H@z zM6NEPhwX&0?VBK#4ZXZ3o>i3g%BT^$B3bsry zwoyqRl%5&Tit>bF-82FX-KQDUMQpRo0${ji zCkICw@wJ;?!xSL{5$p3I^$ofog)*#QiLAR#jP3@VawPLq8N(lsd2PWtUmqok$e+(6 z9a{bIs8%&GcuiA(m6m9)q5!9fcTUa7@<5C7PMJ3t-Q!;Ax@1}{bwJ{ zKl7t%fP!Z1!2iW6o%{4uThxw^GRyhXF0W2<^n?`8>BcnzcJDN7T;h zAJHQ+U2`3k>BHh9)^i7gU1ZVyJU$Q}?~J=*4Bsk_Y2OA!&dE!ao-DJdUx?`0M3Ole zp_!b=L+vW{R_|AF;{5>u9xOwqsGh$s+3WX|i{G&mpw+5U$J&rlD+t=T*T+!9RVSEJ zg7!D|Q~Mcol?NqyCM|V^X+{YA;(237??RjA2cQiEPxXm-PLX0b0701`{ee2OVy<5R z09E6E=d*`aM?{P}lczJzduO-|8>CY_ALDi+dK14?P|XbV$#e9Yrr~6!h{n+7E%@IB zqIG8p+e@_M+_>8G1$Nmaa@i38zZAtk{}6I}9H^AD6B1j#Dcf0|)34_AB(x$Cus9=! z$|3Ah3&dGMh%CtQ0000000000000HF7>dt-RB?4{9Ra59hc8Jz2=-zT^vGc=m0nt2 zUa{_>8S^qR)E62WlUktnOuKT6Oj6{6Nlw%t~(KGJf;WMQ;)gwQew)lk6UzYy`xBK zJN4N``})UT7Q_M^CW+%6Y{w{}L<#^`ia74IZ@zi!@Dm`(Z0wAhgEjJCT3lHDH2R@_ zOKPy3jE{*&-_ArrprenkCKLzT_C+pXq2t6>9+F)#YDOXl5ra@TdBkBQfC99J&a^dQ z5?d?R;=n)E254u({2*a+qR(yb0pco5G^sC!Oq+kK=B?nyM5gCr(L7^y ztohJh9QS4{aARV~8~=US>r-BgG+r6OVfOSiSnc;KmgWiY0KOXvPeZJ%r8uMD1lmlE z5Wh4bWg#+5n&3pxSV#4Va6Q5PuIa)tK|oc;m~d+qQ4&&hy#ZN(McZwAo2d(zy|)x! z>6gKa^r9J6!3Q!$cvO!fbQlHO&B_`1VkfYv5E?Ab6W4&VONhR_>PpEO^IdF+s*gSO z37Gw4eTE*a7#PpC_svtEel`E40S;+<4U+a)A!(9fCzV9Ef10K8=;j8yF(>sb+Y zRylw!@UipAyT#18j-?25%EO4h(uRjHmX4Jk%7 zb1?RTjUOrfH3flm2iRCVV>&^=RDb}yw8kJleG|(0fv1#y73RK7g9m!qa#+8zXsY12 z#fwOABZqtfxzh87H=N7y1?OC7sX|AO)|(%2R1Wpu0&EBmU*}lE(`CiOAQE&8A`=4% z^@3L-$(n0{qz7}m=Z-Q{$g()f$ytFsrSsBJNTgA~oHU34WuTD>IX-bZkK0T#HP~~0 z*}rGt8ngP9IkM7mN2)pvT&BtfKF;V%w`7D5CqP|0nm5+M2&E2) zM~5!EnMZR%O@q1x8j~tkL+;Ifp{gGcK8Wxe5><{KG+E0!X@}IK2P;lPE?6_7aC&@| zug?SGEnUo6H7tfQnzuTM63oRhu{$ut7ewoN&^c6K%?%Qq%cf1PkbfMaExROHe#}!v z`u&vGDZf>Nmp9|*>R68e3w5WIr*b%7000W@v&?LTbtC}RI@o_7flvOx2^1}5Q#_7rUh}u? znhxP@$NLK0c*8yL=)a5RxiL)eZvX0V9B4_OR@!k+KB||PRQ&HlfTfN@r)r2|@&HeT z4**Hs6RAdA9jjHYcJGM+A*E< z3y^8CmO<~VzZ4ZHh?qBcPz295_H_Sn=Gni%*y~y3x0ea1u?-x`FPf{|ih=@<8r(P- zDIgA*vG~)42VVg1)Bj98IPez5ZgPZ1%iQ##M2TAW4@Iq#2Y_5eL8bFmA1NntEjj94 z^7e<;kZd`;#TZa(2UHnIR?11-6)QEN_zR~ddR31*De_6qBD$G;Eqw@L#!{C%%N9|o zXb0`@ub+)$==_#Fr)IGN+O0{57g*9R<>w>b7~vwKpB5E0Rucn470Oz^A;(zYq6~(W z13MLP8lNo7bSKaz1rRKvWoZGK)tfXS=ZQfzT}RlNit2#DmKWEEZSjKeS3PY3@p^D} zTLg2H$BS#~#AD+4yP1)aXD$xem#NV{W{aN&NqpmGThTo4M8I8Ka+`XjRDMc@evmqPSJV2q);4>x=lD{XN0 z{k(Ac;vtgG%kaQfxvM;;v6xayM0uQJ^4iRRv}Y({`7iw6Su$WG{b76Ttyn-ja1N6j zr>7F`)iD26mXUXmz;|i@66EaF%YfyTO#M2$)g&w6XdE#Mw6}g5hFI3#(GDQ4+I(PTUrp@wVj8gS?Q)B7j=I77p`*Hn8 z$Lon`Ogt3lDf?kBMipV7(%b?qAofHm?^M6)e4QjV08ThnapSIBMAuOE;?NrH@sZ1g zp&8fFEUP?3_WS55NXAk;UsrJ$8>S&RYE5JQ=5;_7oq6^7+CPO>skSFq>%u$Z_p>|q z7ZRSKQ*lM-{+^+xRqp=V_@+Q&eJiQmC{W2+PW!xL)Ap%(1&MC{R@0A^hm0fUyo*A^|3fmpKvtmT7k-pA^JE*8p zKyw(pV_bix;!lRU4pY@SMblyF&-G1lj3IYsYQ&t{FP)P8SUJ$9mD+eHyD|-uY~>sN zccTQe{CJgHY%fY{qE1F|N2YScOXuo>Y5kf1sz(8(H8KT*Rc^d!#-`VY1@LR|Yj<2N z<*~3?NkC6*`Pv~H2C>|C9hGT-IiB)&y{!~g&QKKNGZy9aq20&v+B_AA}rHjz!z-;dK`JU(SN63%Mhz8r8$ws`Jt9`-5O(jz?h%HWbU+KIo%R++5G8XPB%^MV@%&Qp z#unVr_Z9S^$cNR5R2l)Ig@(hGlZN8}yP@!}@xZ7FWIuotr?F}$s@P`@z>wz2n+`gK zKb@uKWHid)SM^X+CLAa(Ar|lW=A0zqLNZbZ+qX6^usg#60p1g|vBOzo=JgR%(9^G? z6~9CF0OhQ(I`LR@oC)8%D)VTbDJDZA0w1AFVdcyB< z#zNc_mRpGOU;mAwIbadTsm3Sgo~XS*61&v|^mGfn0!hyv1W1Pvk9G$IoufPQf3!4lx6H@KO!8R9VN!G{zDs*MQ-r}H2ygZEq954L6mEpIc1 z_~Dy)lR>Q{n?NmgSByaj`xP8$Wdm8E-a>qj*oQWqr-k<Me!3f%dF$*rViQ-_e|YC%gld0=KC;smj0vTO z?+Z&h^jYXKem+7+|D3Y+g$BaiH+27Qr~-&P1{@%;%-cb0J)7pW&B~K%xV&!C zg8`|-wYe_6S68m9-Ou$gqxkc)G`v^GSm5Xiw60$`pk{$1fzZ^pZO9c!sW$V7NeyMN z?Uh3t3+CCnqBaA55=Srs`{0!3WgP1kxB2-kN)M!XIE!W z=^WMwI9eH-Ta3*>-ftNlXG8^-lp7AV?DG!rbf3*gzN+10US`HUI>lp>fPgy~Rm%Tw zP}u8sDN#&;7ayd?$;v8Dh8OcH0r@l}rbry{uZI0NDBz(w8M1$FOc5My&(h9GgmocBs050~1OhXAzR%ajp z0n*W^5j8!qq#56-|85QpQlKCEyjOl$_E4!fNmn>g>@E%~$3=+w81QuKqyb#v5<{j< zrUA5=;6|OCOU4wWf4*JL%V&Dr!Hc{%KIOKA2IH(ZO$5XO-TWS*Fcn?^Dw>pW! z#QnsEGa=;XV5w$}T36zXwr{141(xY_c}T1dTt-qNZLGT$PQPRYC;pW=3+iYNfHW@` zQpt2MLl%$7E&O%PV0MUz8U@t=SZzA2TdQR|k!j`g z4@B_^ao;uLMP$64{zq1!^W1zg`y3w>f&Ae?9cSvfduX$S@3YmPo#emIuN}#BFj7Ox z5gn|5&4<#{oQ5Parw!z&>+k;d`!G_g!s?s%Xa7z}qu=(wIeH!$0sWlxTY*=75><$9a z_8R(dVEKSpk{VSdTe?CJp=Jjh&7B3c@^5|qf<)FTsQK#w)0d$24iYWv%q=3kg(3_)|RZ03bx z`l~|aM@>NH^+>Ue;lRfxY!Z`aUYmh~$c)5e#F;yjEe7i{I@72=WI5gmo*4qZM+`SG0K-AyBo) znW!$NdPXc}fP^epwjCEJw*F{&Vc=2oS0&$UP#ieWy_4T_dRIV>mSGQg0 zGIeCNt{>=nEm2^@NGFZ#W=4X1@R@armSl`qcAE5$JV~N zG%;inP)mRUJO?~7smn&JgmN0ZchndrZt#4w2P8>qtRe{7vkeUs$$ELrwp^{-^o!Y8 z$e>UmJ^1ocs&s9y2-M0G-I%5yP3%%uzAu7-M{?0)+b5Y#+|=2z3GQ zUG%INQIDMW2UPvFWItOJEGex&bzNI``04)tqv3E(!i18Ds%4_P%f@Ax?MRY!;g!aU zv*rbn^X+lEr#XEt9lsKtc`ouA48!A$;r|+*h=+7tL?i2?+wzhi zes%zaiUJf)P`*c|T#UlBDb$b|`f>46n=5jy^t4za@<3|PlkMi6CsAkI^wdBeee3l< z+F_|prA|bXiGCB}PK<2gh{_Wd+ln-&ag~S*f%8EnRq>1N^ll#m#47!Pb|ZrSf+^{N zf#W|!PPnGrnxjfSgl<5%C&D3xEiK>8|y-h7AqtOX;_fx)yS?Tib z%W`*`4XX?K2RRXW+z??v%ZNGV^#~8b{FR8n&S=CS9^$q9^O?(42T^7~0(lrBC5gQp z^=}~$-Ng4Wc4Tsegg-B5Ww0ub2}(Mb9&QRWYtHe05YJcSD>Kvto3scu;*?RqkVZKh zWE(H!?cfRve9?R3A%@5etJ6KpBzYJ<$>vVb0{NrY8L38Qm8aFvYn4@F&ji~m72<-% z9Bv@%V4`(eumMccT&u)(Htw^4_VRyQoj}lp1@K!=>ysFD4W%S;q1ipI(q9APa zL6$%7Cw!DlxKPbd2RF6r%p(6%8q0@DN6Yy%%=5k5kj~qxRC8fA7f-GR(>BF9!Lr#o zh)`3FR178TSwO`tH13*F6=dd@2JMVVl4J#JrV>Em8)-Y^Aewb%8KdXML~V~~Wv|G| zI0Iafk_AIw#m}bG6($=M#9D`9OEAJ=*Q6=Z8<88X`n%rAdOkuvMk%W$v^^HWf!T2? z8x1pHucxpP9{N+H4`>y67f(5v!SNn72XYlmOH_f~1F2C=hY&E=MO#4#&?ICx2*w>2 zgnG~>zWc1_lOQPGOq5Xpl440`l4D=6DX2_ehB6z;?F0Te8v@ARMXFY#+BB^*t>;B^ zxzMqu3)fliOb(yea<@yjg&PC1@e7Rf==5UtXfw?ZtR^VNsF^9~$=EivQU9n~1-4y$ zFl3abu(}&bpu~X7tBo?i5&vf$#58)unyKK6C;j}a@|`wcBXjtL%{^iIr$Y@jn9!wI z-uXFDK4Rse>ZSl_tW$~CA6#2iwd?O$yl&atazK}@K>&WO5%06rnv2C~#%6C>ZiECI zd4(#-Sd^7xuqrDF8^&KXs4FM~r*}^jzl0`v&nBe)}$D-7yYcs z?aF#Gcc+WTPcqy!k&r%OzjxMn2|#X`VF1=tcrKNpqx>5EgR5=6)vIi4^76pJ41wm; zCGW`V){F-Yh~h=&bYl5lMs0zJsAgYFw+n+a1w=kC7c86SSxvr?0upLGV7(K@VRLkf!EVMw)U!)g6xRFp7%^=}b)Q zMK#zMv~TBG&S+shj0>U)bYb?Y*yFy!XD^CT`TX2-4B{eX9PdkXALbF zFi4SW2yMtl{?@^KoXz4c6H5R2Di&#bDlXjW zzcj-}?_@g@g|p`>w`5ztC_f>3X#d`Le`D(}vZK@K-U6BvM{K&$_n(%mIXX~+o{RzO z2W>YxAS(xYY+ZS5@B|my%Ez_Q7Rz_bwGv7nWSqMd$@u3lNI=V;o($7_D&!6xS^uh| zR+HW6$Rq=(-HF#bYL_z`2G8wron{t5Q~WVGMDaD)jmF6GqslS0co*&O2Ogrr8KdL7 z^(75eAW-`d5bdnLh$y6l)A&08M(4 zX_La@sk)sujFn|nOs_*=i@2c^ez)myY2FZaA&Y|u`@w6+lnRVkn=xW;f(B5z5#~9r zs;wS|0hlUUv0y&tKglYs*CpR=9G{j>)f&@(?lEs;Sr&hFcB{(zm(P-_DX1WMRqvN} zxPeq96)U9BsHGO#COBB7*p?SXDJ7+EcFXrt6`K=~VEssa%AH``5G{WHOsmurS z?=q$qQ1jfBP^n6_Mw7nOhGFZIVt?gor&o`W`$y>dtbU8EbVFJ@I(=&0h0@N}z~Z4( zrXya#r(aq}TtV~m0Ht$P zFDQvD6S<78T*3>B(9;1)4IXRl?4B|KS6EhS?$Cq z98$ABSS|?GnT%mEWYmF?k`2PNo=RWNPQq1K8K3X51KO%t9h98`QN41F6(;B_kOU$1 ztypi}nwvV^thpJC@n{!Vw~p!6l4ld0)#Sk_Q{>xsnQEKt5X_sPy}7GV#i@O|i4wn( z6jM*NS>7tJ+$2qF{b?@273uV+yzE1^Nj%ENU*Z-I}FN763%3u zbZb>hN7L#<9ufqamckSgRH_kc(0h=P?J*Q|C=`^%`0hO6sI)Rn{N1r+h!of=WousD zz_2vi)LoR;ub}10*R+^H)Ei_peiH~|y*-Tg#E^uQD(Kce3u9oDbBGO#C?^j1;gW>Q zPZrs_XU|Q1vd9thdYMMp*L#y}4f`xIN4{SvSUMh_G`K3+OZc)To|;io5;(wd!HOvy zs=nRE-Y~1I>NQ+1SV23mvz-Fxp(DUk^vdx-53lCvFs$2h-%NY+f$6b1h?(HTk}n1F~?>LkD`)Srx*fupM5@bv9Q743{$$Kk7tfJ>x58FmDBT-af- zu&+{|r@_*>{>=60*vz1bAfgpcv$*DtJzEp8_IbMu^6^HcbV8DxN&fUsKYKSuB0o~@ z8~dtHO@A~4Mfq2EHG2qoY!n2yNh5>R#I%@sxSPv!NARvrGYxNEY09H6*1#1}sCCB5 z^%$Njqoc8=z>o6hE@|O2G{0TZYWF1IYQC{Z(Y2CkKlgSvQ#~&Jm0CD_^bJIO28Jy? z65YB-7ZeRR^(NwYwz4)jV0cr2$Y{*>zRV5h)AMNaSTqkTO!-$G*fZ@RCq==oIT4>M z92*@qw5Jod6hDtD=rwo2x&=+xsIutH*lc~bLg_2&T5WvT2WDg2u}Y#@brB^n{E~W9z$8CT*XWLS z;%&cC#I0+JF+WrQq7&Ur2V3<89h7|Kvp}iXRqavAirlm7|E+W#iWOHaOD}+;A?&5a z8H4P?5cq#C%)h~27;pv=(T*nSV+qwU(=Xwg3cP!SVY=m_w*qK>4^5;$8?rjo)!kCY zPJjNWH2K4#)+oH*n%0E#Koh4Ki1MY<6Pap;vJFX#Q(S0LH;*owrAt>sO#)wsH+&gk zP&&d~g~y(1o`~7rQeMC8tNWV*AboExd65-95&mw-a&Cb-769D@xr*WrFiZ@(gH=(e z`x9_mgagWZJE%F`MVlpTvvFd*juqDEduqyU4HwM@G9NR}*^e3makczbe>Q^(Fi9G_ zpD+Fh#6k6PM-2O;uU92>Kd81v6!VG%LEii#VtUQrh~qHJiJ9CO4vOi)>_mcBT%{)m zE7!hOZr^r0CT%t*EC~v>#F(50E~m?>%+n|glpo*^Uj5^Iab_)5|Z1 zE)aiVZ6o`~MQ%D6%%{1kKg-v7X8{7-wYS<<8-FG>UzZiZ_RDrTy$iU0hw!Si&<9;u zSt-gl)VD${pB)R8)x$h06>YCV<=QPtCcY3wzut8uT9euEXF3>RwIuV}KmQVhsNEE~|W@^##E4M%;m#%_y%slvK$78b)as3tdW-Bt>BvOcg@Dx`Hf z&M{k=vYn3(9|>Ne(pIva1LOt1AD+?9oM7Pt_@-bD0iLhzL^wBtp34gkkFe5@uZfCN zpL|`y9(s*aWj{3j=lxeBeQT2+$%~(t&C{IL${Q|kxNMGoM7;Gnq^tP*e^b0I-zTTi zYPBAkV)j3ANelE%$+-T!;G&EWC1FcUFP7wTwtBc}YDs_8yx-RU3Nb~yql8Cw5P#bd zG}871W>T5KmSehl+hpYdB^51cv0yi)_?C<^e%!SF90tBJm&iNin78~?Maq*N9JM4v z;GhCV7o8JRfTia-LkC=5gJdXaK@a6zandhQ1h|1-|80)Ho_B}hqW-wP?-mH7j2kR# zQ_dev;x!3e_gU`Da&jb%qad+qHm=7Rt_DVZxp~ zHTz(Jxhjw-J9*Qx^`+6RWwk?ppdkr%c-+ANq>cxZ+FuC@%Y|X$*7U4XSZ?dJ5L#dP z(ML>$+8wM`+F!tSOMSlYQ>U>hiZ|JLix-1rW@Opl`NCA1NLZkx|EVCR5(0<$x?=Mj zR(-oVebBq697ak;va#YidA@@%*Q99rq7d zR(R>N*i@AiTKVGz(!vn0CQB&~TgA3wI?b1p5(Xpte!op-JU4$G7RvOpj(47tDrGcq zI6+#2t8gU6D=w_(>OOHMF6z`E%}n{8$X|ENiGB)Lv@j4bILOEg(xzHuMmjUBS~~rI zj}DFo+Gb>}c))PWEv9EmocF}6m^sJl`W>lSGwjsCzuoK$?`RL4EQ-Fo;u!5Bd$B7aT{7{rSOwK~ASR$f38Fi$3MLK_mr&&A9(2DJg8nC~6=w zGXy~jZ|?NHd;||zsnC6tUqTNpnNT~;+3p-o6a&c=H=s)?L=I&LK&$eYisAD?&@orH z3Ju7F^kYe<#0VUv?ZM4N?fHwVTYm(?pFjvm397Z_qyNrZ#Pzuv zaT9hGoS+!If?i>OZg7caW~-_2X2_>PCi5x6vW1#)9YJBV_XDY>;dNxO><5{E-|m3e z(njG(8WKrDi{wh~FT_6|s5-({ACi-OIhvblL0|eMi)|KGQ5_2qheA#WCZa<{5`hG) zGzpx+k75D1`OA>|)84sw6jJqpW&ssmvWMg&U-mFM8L5mz|1#(wW!E!SfCo4u@9fC1 z98Ps9s((?8_?BAXBAvNSv)VfEw_4H?yCTSL{_cubV-eHiQI{_NIv{MDDGrVnHG$;- z98~$TupysMoK7}57K7NPdZ%4S7HTBB=gi(}qy@?5J_e=fOnnE*v9G-c69@6Hj&OXS zijWWciise^I)^-YOR~oc2@=T>Lb62XA$a192m4Q($Cx_>PWdn5Jlm21-uVYyYIn@N zg~mV4$|FBS)~bK&>y9!crUoV+I8LRIo&}4>R_sRT@23LQnaor_$8bz-ZCFqhZbdN+ zedl(;wFFq;+24}ciZcEfiSDVW>5(ZVD7lMf+qLGx;7ntfZM5XZt=0yJ^Zpf`<2M7y<9!c(ZvJ8ta5g~Z{c9re7nSptvJ{VEBn1U zdW4u`r6bJJ8&|i~-uwTx*6Iu-m+y5pP(#GnrLUthyU=_V^Ps#5+p@ndlqt zo+HxRQqs`N2?YiSJh8fRo~EAdmolKrhE%Q-(Ef+~s;0+Jo0|z$VogDEK1Q; zfGKhMW|4hYMGII7uP6azOgXZIb3-7PxkNZM^vwLr47q1z0%vKu$(%+Nq9;v(ViNRj zE}@__w}2M?J;c>~m-~%U#YPuFT``nPD zuz$_8uTi%*z$aZfPKMRlx^7V}k(|<(rYWbTU%aAiq3O6Vjl6hiyVp;Pb`rFkWC*NN zR~3l;dL)kw{b)~tay#ngSiX}R9=b0gI&s{WqA%7gsoIP}DV}blBip%r_o(k=(V`wx z;1iAA79OE`f{T8y*Lng2}^#v#2FC1PxKZtqxkfZ2G#3lr-fKBZZ3v%f$befbUt{n11Y|Ry#)O zsffs+SrbjS3z>&Wl*R%{Mm3dTpmq|S)2L*fdY@k$K63fU9WtpqvrubL|Izrp;M03l zjO`MAdeV$X6B22N310xNJNa6qNY#SBc&Q_!c`Gu|gkP`E2N~6u3b#lfL1er@mfyyP ziv&vpmHbU7Ld6Ku%KQR3bNWnToLGwMCe-lCApo5o913yVc(BV%yCW=8L3+h&ofGS| zfLVya1-qgvOXG=-tT8O0z*{8=L!cHH!FPqz811NiMgRUHck*(x=A;HpEubm~2<1}L z6s@?NTh#golmwDH6ZlsubZ`XTVgi%Pre3{oAs*aQv6V4b0gxn)=PmA<^(0aN(}6``Cp?2YXk~;g z*okwz?UItr&j}F_n2xs2b1CJcI`3oY>MstDC z#zzOw=@yg_IVdu9tdqdYN~myURWp4K1l069r}utY&6oWrJQ5+Ov~z)7Dl4;VS&9neJSiKY(*yjpGd2y|+1T9J zR9MvrTjCJSwts&CN7G)V$BsH3Z#hXa_8!79leAI6jFMA9aUycQK2%_y3*0=sAIh*s zl7e4~ttZEIOpC5NImHeh%+GaSrZoXp03^A_B0?RdVCm$*PDZ7=*d4c{STQ=sy52Bp zHf8NhgH808;hGV>jNREwl$yh4ac74Sp);-q5 zGXJohcc6FQC5fQu_3_MySSn~ev$QWB`capWc(UOW0vi%~=;+Y>H@pj5nMuOsUXZ!= zh?t=c0?k@Aj~}(%>lM^1zwvdJm?<-Qmxiou{Bsy;QoaReFk^%|?y4(muR$eyqvJKY zf^ha=W4(Ph*!rY_C804keWMLy5XR0H+|T&rmpTDpf6p0%fSvkV;O9?1Fz$T>+=0l2 z)_(}z4|KcRH3m*N8jLrHdFfn!B=D^ z39qtxX=(cY{@y?{Gg<9JaxI`~Ygc%fMTWI=tCBUC|JnJShHj_4F&lU)is9v;m<4U= zElZut10x~+8lq%)teztko1i3exf&T;PaqtvdA$$l*9J1>IFZJmn^ z)*EE$3yOwAB31}9?XK7)V;^z)V0l~)aVPp=EmP&UCI78Vt)_-G!c<-5J4#?i{+78P zyzQ?hLO!N+*Z=22_v#U(TEoPJf28 z=cc#Y?D1r!h{6SHq1v0FhICE_;&qoDMJs`W1xiUnc81#hFhqK0mbfgr!8E$U8rnbo zI3U!rh-IPpa33oJ3r_4c$fQ`{$B=qz;hKRs4}o>Np%yDC8&Cr9@3|1eex>5cqmm@K zTF(%SnzvR@l>Xos4=Cxk>7^A=I&(v$2Nz|#bBa5B1QtzrV)Y#bCU?H^MekH~>B%?T zl@PjCa=bw~2-%7JlGzu_9(w0I*&XQ z^d3Y4&B4<`|MjOa>;r&NC-_?!RG4Rua!gycpi{sWnYq(SxT`ZbsAscbYgZSMLZX{> z=mdMk*ip`9>QqXSpa7?7a~PXBfoGA0!l?iO%R)M@B~zv$;oamKUX=|3Oo03Qnwp)(v8JrzoY@^W~vw~1K`JfQD4b$W@X+P0s?xcH9e{vU};gnO~jL*IFVh> z3ZnQaBX&QLcCPd3bq8KRGN~xIOsV_WTDH5&s8aHj-xXpiCfQvWRbhd2lZ=T3Pt}E0J~2MNo0f!K3u1`YqUxm~cSdhnmGgHl0>=W& z$HCbCUwXj6r!D7@BaQ@+Dbt;GtGcz|<=RlR{9LN>r}!$!Pe=o_c?joBM`VLM7QtlG zG7r!@YEae?NVnFWMFjxhIF>VAAZ#?zm&~W=^>#zBebx4;LQ=EipHH#-%58xhv(6&x z>$R(^3#xtrhRO+=q2sCyzLTUC@`?Y}?af1jVMKpWHbHXv&Ljz#3U__EO3$%goi+8! z^kg2eP}0Ty14whvfPwgIy$eu@<+Y!%5*+!F(C@~!%ztGFO3r5qdJMz zKOdiLvw;iRY3NFBgszYU2vAW_@lW4?q>z{*b$m<1O2ow#x+3&%l}ap3$*&<>+NMNi z4=uV8q=}!vTVL=8s&sHk1esQ+CGY0Jfn5 zV};}?L2Joohm`k*rjL#K;=?F(Y;*(9(oq4{Eln3N&TJBAVRlXpqFB1)g%?GLfMTe$ zGgozHm5MNGlkUP_hzAFZ$QaE0!EyQx@sk`8ub_*d*lIl7&L0gH>2;=A9#Wm4T{9s) z+qE-0^$TGam)paC>XG`s1yDv@yQ?Ux8Xu*=Bx536<)(2dK2Ppl@RR3e% z2`PciF(P}co{M^`)S0`IH!9yyDGl{SJRRA8wL5_hd${@sWZ{^-)!Gob!GU#fugE#h zAEa)8Ae;Rn(RX-3KB#q4PRt^$ARO(zl(kxyZv$}p%adwO^gb?tB)fw)Bb`~N%z-U` zbf@SP7R~-%n|~mxs?2tMRo|~tA%K-UK(KT=2oU;HdDQHE~O|?Gu0`gWQvC}}TLD81dDi-jbhWc@xQkahD$v_ZZ z(`~B2zA1+bY1}ht=<7}XNPiQ#Jwt~z05}DmzM2W$V~sZCyPtz$Z4;bN`&FUKu8-wD zo^Vdc!piN_T*co@eL{W{V_Zn0P9Tyi|d~Wmd%6S+Nczd-;QlP%J8sQi|pZ&I~rK-lDy@~ z`6TVb73bazBf4px%avsbz9`G<_+>uC0}55L6P?s#YFGYOteJ=w zhmS4JUEC#jy2YJ_D8Q8PL6VCBN*c&kF2~N9!9$*hd^tSb0gW*Z5GOS(j}imQcPW!W zcSWfx&PPaVDvPz~HqPdd(yrc+gE^G(o~%kKKZaQNuBjbSxz5U!wI<5AKKVo7O-S#j zb_&!jVzIw{w%vnr;i`BRx%_W6>h1}Yo4C>Lcfp{VLFD{2o4EiESn*Hl!a*NGpvdXr8JZVOhbdR(I0h_ zRd8b#_s-iHU!-M|LZ3w`qYf`$Z{3Zviap?qd}?3SN5laYJj+FLe^8O9N%Ymb15L*U zg4V0~0&uxRR18+Y*xwtLY~he8t=&FN&W_A|yk@O^yz4HNLUe9s*;*yZJyIgq|0ERc z79Uc481{vGjcN(lp#cTe)S|4dCcBxJQTTWUzp>Z*we6HqJ)CMYeM4ubzxLOJY83$z zrllqs0`pcDmSMeD6A;)9@O)2Zcs7+1)=o%IeMcldK?|CZu zZfYZTjxMc39qF7=h7+^`OMN$x!D}sZi8uS@GO|#xfX+g2zC0ov|9m1A+WBKn+M+Ru zS0avFkV#4WG^;7s#k%|eZv`jFVZTsf?8bqnI8KW~@qm^nq!mYFmt%tM4!uUUijI1c++1i;PLL42aZUTFo<99c?beY!*%A-UC4fYhT_};0{p$&t_Z%pZ!NH z%`qf}f(VS&MFaY?|Ey|jqGo(%*t+uP9Fx3HzMXoTU`0}Nl3b@f;_3ymazO*u{15K_ z6M25GT(jw1;E)$Szmj{FjS*J_gg?og&9aEQ^9l3iM-Ayv3p%*v9Sd(h7C_P_A$FMdU=M0^h zw$GQ)lfF+2tp#vIjJW(+KfCcRdbd~DSiuvla{$+1^sA{uCEuS-{YT*&<3t^yx{rEu zH=m9Xjl*f@5A5O-Z<4koa37$%q6KrJ0~7Y+*luSFpQAvQZ1~(O#ebV`9?a|Y4bi(XQ)WUR zOV!;%hdv76?65SRn*axiyO(8g$CGb)w@dzA%p>G$_^f;^Gu);}KI%hNE1;9&-nhcm zP5D^Or`e={=LPTxhEeZX7Qg?()O|TWY8vOpCzu-s36a#py^Tf_k=VdB!+ux%Xdht7 zsfJD?KD(8wYXp@CQQQU&EAGVpoJ!#_LX{K{qJcFhRzu|NDbb;YiV{OuUywFyuC44D z(XW&{-EcGVT!SZQm|%~ZNSr?D zRKFx&xy);Yae%k6Qb`#Z8Or>2t<9oCM|(WYG|kM}t-6?5gi;`X{V(5d=ZxRJ1t5Az zKY>6V{h+|um|HmFZvV8E5iX@De03OTU;UI*Jsup^eWuZ!syo^~K!^deAHqUqEPsw( z?ENsT!fZ1p0ic|IyzA=?Q>+A+_dw(yQ(Qy)J;kl}5W>{~?2*Cx@41cKg099k3K^)o zz?R_T5xRkGuu}%%pK^{vrzhHvs0De&ZYa=F0**=}LWPDOzXZ1v;5JMBzZYrTb?E79 zlD_7+i)S~_wPa_AOD5K%&fWIv0O=yLe#JNER;3p!rqxtW|Kk83MDgTGYZpy)E8)L- z=0AW{P_NoN;KJ5lq0q2CjuH<$&WV0xu<&9omjOx`ni$c?$pYIaS zJeJ;&0kU;BgNH};1}UBkgJ@W#?uNk5csT$PPEcj!(}Vh`R$0t_AtKsH0h5~v9cgkA z<#>LebH~a)syFRN!6mwVP5k|EFMw;}s&awY`q*z2A?sFTW7;DlxWOHfcK)7r?wfNl z&5?vP;JT8kY}q<_NXm!oG5N6-wE*IO-m_F6Gmy^I*RWHM9(BcgHuix%e|m+;(t`8{?_HAolVG1WJ!l8p(~-u9ynf+MitZyc?tzb1IVpA#^XZ9OW{o@7pq=(5yxw!)U|on=e@>1Jt$V)>=42URJwu z@&5eZ>ir}laMMI5FZiz8ZUJ+@DJc03?{C?z*)P0P2b}eaNtO(M=B}wdvi?3$TKFHY)@8F?tRI!Vf${(f{R_#?+A9%UtSiimD{Xe-tYIl zA|fJ#2^9eoXBmTz7{Nw69whJ6b>iie*lI+!y3dL|=QZd4G{4;)-5|9#9>7y?-S4mt z5kHp+b*iEVZT;q52uLFuzv#v#-U?BZ}isOdt{ zDFNKz!_EZ@o*i`e8%%n}YW#QF;k~*d>xxrhhmM`k2>UQz0HoEp{%P|?Ua+zN88Mcq zLOL^(o|1Q!S&Aa0;hdHqV#*QCa?w*kgBKzbE^^25`HURcN0~%n@}WjEl6rZ;8ReGgaC=R6 zHbY;A06mOt?zOfXtl_MWr|HPgS;_LxAI5Rw{C3>Q1txI2jU&Jf1uv$0*S2)^Xr&65 zJm<<_T>gg**m`2PcEE$+h}!z-Lh0YyXSqdE9Q5AqXLqU&Up|Sqps~L2e|hDzGM7ud zEL~L7Q$Yqn*4(0Oxy1by)X_Xy%gv20M0u!)g3hmtmq@Fk~XDC-O&W&zwM%eC~tQ(N0d1 z$U{RPmo|9jGUFOEz;M_AgMGeLI0>9+PSw`~OmeA@jE8Q=b0nf0VLeF6l?$YU;TvlV zr`XZnQI_n1nEt>TT$F#u9p7j4Z_^WXH4hX`1h>{PN~i&jxQeZbmjgn0cSU{=?}CeF z!uj0Hc+PVrQ29B8E^9wNJlfyoAMeXa$R*N;r}>dkWD^VF&sm$CKOsE56hHPI6RP(G z%k;0nW>N87P3GN)rklMeNNRC$HIvJep-i?VZ27S z+rfOFabDx&5JjK%mqktis1{Jt4o{MOrE*t*>4R<&jgpdUYeIvT!o2tac zp@iLw03~w&e(X8+7R%3ypmq{|uc8Od z_QWO$r-87C*&*;xqCa3UjVcZ>_3d-M{A-HkV7L<-a@F6Z)aFGE{VJ>k zueps^|J>o8quac!e3BDoPwTRgAXWT{-&~vNp>ChJ7PMGzJ9-rZmmH_BpR0D}j6-{$ z5{~}*JUBY7qR7#YtXrwD6~<6$fWw6q`Jpi(4+fDR*XL+P5p4LA=>`CGi;6!%9$3m& zPr6TtLlT7=!B^OCG3Jx{05LyYa_48!W)%fO+%*RM9p7aTBbV7=@n-3>EJn9CP&g1 zbW~^Usik`dfxHeEcR<7S{f64?&|R^Ta5YK7|F_utEj#JHV(+j)3xHKXnnEE%|0S`$ z*LR7Z92~+umw5+xI|ne(ww6S%Q=~=-c+Z=hUCD&&*_pqzB_&;09~R){(UDw?I)&_7 zxZnyG$hD2!wcoRSM*~N@^)~9Y{ywwohTjEoPJkc|XiNc2p(c44S*5b}e)H9W_em5= z=vGC}eLkrhco)tACV+iQjy!tH*g9&AW|9-nj7zf~+P`TCePJ*F7kX`LpnVauppr~` z#G>Set7I>_Vew38$_9|7$d#9DTGCnLlXF9dkKI_st;ukxm@}X@N>Rxt^2;Ytw$~U| zGe7`em7~!WO59&nMnm&mgD2qOX+UO@s$xtgYJ*iSGx@>VpRF(KP4ckP~!@D z?(~$!F8C5|#((e2p~^Zc`l;&|pr0rfu8phm&ZKW5$qwb)5iM)wR;hIqFq1|=#X zzH4C?702*BsRG{QUTQ`e$0+$tu+^aGcSWF=qV(rvxJ~7|GEnm^u(2GQKEajF;{Pxl z*0AUx9T}U{?xkk>s1C}>`~?e!+s6IiDgpRGQ;WkB(DymG7*+3=IX-_ihSlpFiyCek z3;nP=u@QL9<V4k<6Gp3nh6$(dLVlH^(TahUvTrEsfEm<3b=Yjc2y zLmSkjb>A<;&nrrzAC}u_ox6Lyoq-Ij&kif?^HN!H^T`U*Ikk3QM_CR8q-gM>bb9E# zwboE`$NZH?iYQ5=Nv!yBA3y+gWpPzYIgoTyU;mW4#5YXDAOhvA#55G&kjT;qbEkXaNgb8s)akVYrR@j%otnwB_4c zBE>;?LZ5pnGpMD5&XPz!1%AG{f-VkdfEy* z^E-j7@9P7@v!PV8eJX#S;d5+m zB2rjHsf@e*IFc0i&K~KX?Xqxbk2i22Z!en&gk|PliPTivGcePiwGw61F5qgr{DGl-KR}%OXD#YSx3Ao)f79<|?Ys zwX#+*s8dm%@73-D!e^67>w&(u{aS9h!IQ=b9(D9ow4$NHQXlq7ETZdI5MA8mM9fu* z3;|Wks{q|ALbN{TiIf(&GHv0;?dp(_(Bt4@nw`_vRMIXB zMMq$JpHvr#3iD|Tw4MPw1sNv@__j${`eQ%K^nDVY?PYiQ<;Gw_oM%Dpj_vfeB@&rk zUuRrsHMc{1fEkpxdAw}TVfUn6XZ?dlDiZ?cKHRRlf4*r#^>*WEc9>8t1&cza-ru|-t;=x+!Br&+E z+oxgeJ7jt%B^fG4hPv4)XbU`gK24-*dR|pGxW^aWXN4|x=G>UZ1u>0AMnJcQyogVU zw$ZkZ`=$ixjcs4Pxr?7P&Y;U4@Do{mYiBjkITxr*;@`qV3r)b+EhEl|zf;$48s zNi+2PCoIBPpS*UkQnhfq1ENoQ^>%|+-GXwlERz4}5f+@`VM*5IelAK0wLf}4|NM7X z)3-9WXdLd?F`9&Ar;iVhHG+)f(n~v=Z$!-{)fEYp%~x!|I@@TWf_Lq(a=C>c$5RI0Rwy)Z*k(MKdOrkbcb{XPsM z)k>z0*(wG*_dm<|41z>;0nABTcxs*ga?{KB`!_?$)cWP5S;yMro*D+`4 z7l=k&gTyS3U}+aR59i=nWcVgzG zw_Ikex{CkZOz(H9gVa~C&o@~~C#R#bYw2h{vxWzt+mXl^of1j~KS~IuMOdYkqp`L7 z!azkw+mMXw(3e%ToNbM!e1cnMsI!oaRIlAa;(5P_>2==LV*OGjN4rg%mn3c4sWxg^ zPEC_?(U4Tf`P51a13vmd_RVIXCQu+ePkRSDojSVWo%>SJGXJ!Ls2Uo0cd zi5Oi#6o75Bdbjm8!J|^^+!`L<;ak#14Z-B90*sS&mlrH6k_9eggUJM5q#LxO9M$V#v1|D zPd>%ykw%aACm<~>YZk9Qc^eOf6K1h-#4p!F0lhOMktx-znW&FQ83R~0fC5hM)zT7X zg+ly*A)>_s9wGxiNtsWT?5y>|oQr-Q$Tf(E9G!YlS^`~RVZgJ`4yFZnyOCV23t6tY z&t5ggrNJ|1)e8l1O=N_n7~7P3_WM?ITg*%IU6sYx^XX3@*R8X=wF`f2BPh^Eg3u%L zuf5Kema9*DN@v_gSfjH7vS=C?7K%6OcMYFkhO#*DL})u2ibZh=SHo;C51)(4*S|L% z9NH4@*QV%CRQ3C`u4vN;*au?gSL4n#7R>kt=LB9sL3l?mEF}P1>Zihxb>d#+WVL84 zqJ4}vr%rIx^jsw2ZbZRcbzrhI%^*U<7--DZ86F17PTLE%6P4g!jhRilxxqhZDc4Da z4RkZ4!hbHCV1hn-fcFc*Rr@65hxRN^%Yf$rxehiQuYGCenSMiXZN*Ta_4uTm0!pUy zJY83Tl{A_!c>#JeMNDSpgmYBW*ZpLmt+K6!vBYKeA7>75+^Tut3{W$*qN9}Z^|e0R zO~4vucNAM^d!j=-Fi(ott~RII&xTMm>wvjxaDF91LhKTrRm~dcNc#@Y>^xziu(c_2klkFra%3Hx=;|IM7;8-cvs(R3 z?X^~~s%|xD9>#~b8bUK6&mmPc9~Gj$|2p2t_TEs??W2i>ZW3|KVC=qI%mo+He6}k1 z5k@GQ69G7Hs|mlMpLV1FZLwn1fR7`qyA-YKIA4vxTP;PNuQO$*@i-C0FgM#iiDz3Z zUL=Irr1F!h)d{HAu4_TK|2I<}HoBrEFK~y18g@k%o6lWW{qqKGZsFD=_`c`AOT$p z_rb+1YP0dWoy4oe8-h1*#@mUitW(7^0t+##PG!eRgNL?#BM{mKIk%G`Wk>d51{?U0 zo8*45`p|AnEVH*10(NLClw*5Isa`?5R@`U6&3&sexmj16Q!XyDQfcklf1S#;6wEzJ zCH|z8eRo!HKhb}O^@c1Z?BX8lhAPc(wT#1hKO$S@0{IF}$!>Z#pEk583!jzJr*P@2 zExvM$==nS_$=hJ&1M@?XjZg zZo}ShFJII-qDs@nqZ!Mq6^M(zADK1pX<1BKP4m$jZY)nZX6CY~#xJ zB!h}h>Qby;>N}+Y2!@RucA`*J5ry%hCsHP>Y3?X9eUNL1Ps=?Sp~V~en`A)lIQggS zRl}lV0D@)z?-7v`W1Dvl4~y4r-Zz{F>{R<{I=?Xi}EDCqbE?ml;KaJ9}+>}-I@(1Yt4j&HW~+~Epk^vL-&xp#bIX>N-9 zuAPQGXC6pT2t`Eft2@k_g7Y~ARg8KqeiBV$EQg&7VA16yHbuUiO50z7u!PGgIY1#D zOzlAkyAGp3;Q@gbe(A)wlXicZQUY6!ZZqaYVezHXH}D>H)O}u_xaQ?+nsxG;TD(*- zQW|0}L&-63w^U4yf>9vF zaA1{VYvvor9wB20rMwOhZg1f#!OWXX-u~ox@|kf~Y-=2fmr!C9jb;xH}g6dhQ9%FQu~zA_oVLUGTmd zuNg^L_`Ph0kG`QB*y=!+Sna-ycdEDFa(wUq^9D84A|wpF}bZeF!AOOT6WHlDy-zjZi93+Xg!Xa*-}X$YcBbu!*{ zSclrdTkMMJ-~W>1_VIQxMGEYPG%JYbpnkJ!V#Vp$E_ta>A3Zat0@nYfXB(p%jv+XD z6VrHt@xs(la$X%A)P0Xdk;g<5ipW&c`~*sQ2inHx-^bnFb6H?0-P{Az_z%vES;Ey|3O6*6E%>Yn(Kn)lQU0qi`VNt<(O2UHi zgq9cPkr7svFqr*~`Jz0g|4#fXs*}7DEUmVUk{okKeH ziH>uTq#t5EIEEJH)y7wtO%8@ z#JW%BAyYKp0Ppb2H%gU3NwzY(vAZM|6L}=dXH6e0{3#A$=$Qr>w+NRuZ5{`?G#S_q zEwjpKX{C(>$B)n3=}6~*Q>N$0`Ce`vX=ER`19XA`e3!U`oMouD_PK8?Gi?!E+>4^z z94cXA=old}&j;0M%}`-#G6B=w1Pfb=0&`#|1#+-iElee8zZ{N+zX+Y-QTmPGP8_9g zgr|NTr}09Nj?m;;CXr(RaPS_5Nlajs`zoL94U$T6D(5iZ<4L6eoUqra&a5lCgtgxq zSg6dv#hoL)@=qcK9ep-`#$v%v@v-@bDQlBOvoKTkPf8d8AQtJyR|frUDT%q9_2`*$ zKZldyx6ruFmm}MV`%%XL>AN#i=m1^&BUN%gzQp$V)Ga`^*G0LN2EiE26D$US908*WI-;v$Upc>PtGu7CPU`2Y%Ye z?jOxwNGi`+tp(+5uR7!#fN_rXH5=RpnsXaS5S@W%Dzt4SG(>0|#G z#(-7XN)u}IX^!P7PG^6qw1-@XAwD!Q@ZKWCaCxcD-1UhWmmm2z&+m3LfmQ*LTejHR zatt%4kAyK`(8b6Dmf;zETnmBX^BgBf$Ky7dm*nvI<+I?1I+w(kHVZK1*7wU%Ja-(Y zRXuWx71$qm6a{^1n*KzSqA6xR*hMAljVmq~@V?A&PC<6T?gYz)Q*|4l$F7#n(Jyoz zG7GRk0QP_lg|5^xND2B?J#i=k$zhm+?J_fePl(PHQCVVpu{&;2#fhtepEiMe+b}B6 zOlSdrbGc`I+CHSIwVLNoR2i!{J{ys-Xy>(cEtNvc@z#k46dh$6@0H&Sm=0pLcj#Q% zd5e&(_&Lqhzl2B^Xk%;@qxVWLyjuTrEJT{j@QO}AM2LfYd5XOQE@Vmpu!)vM(0brdx5pP-x~xk6d3?DcO!%Xz zYN630Is*3}(Z(Ze>u{>~*&wSd}$IXUKyJYhUg(&37Ie~Y-s%f#^8fHY_8M_}s zPq_b?$2)O#*Lh9SF;e?fuk?I!j>!Y4j6Y?T%pQJ788^NFYos~fh1&2S9WX8V>amN8 z;j?~Q`0CCRsS0+1u*)=6ki&xj2YpSOK40Ti;0psyo!{?jtgAm z2Zm$&0CqCZ4%-1MiZ^GS=vLvU!HQYpi=p8$K4s4KI^k2$s+vw3kfaHNVhF{8EKO5u zlBBwH=9kwI@UksSK$l1aD;cqf;dEF`Ie9yP%;OqRt@mM0{pk~Z zHT$3#-ZobLtK3Af7x=^~XLEAQF+Z;tYyYB*J-Uoz8!L69>=s1r$PAs;QQ*BV|VG4K5IN^V8G2e`o zaR{2tEdr4k(hhou4X!lsqHvF*S#C;#GJX1c%TDjbG1Gvk|6HK*xvN6D&RE@EFryOTF(^+~l!dNc;sOWQJl3~-#E3n27mK~NVy z-BMZV&paA;*P^Ndk{bFIR!BPl)Rl#vBYNrZHM!Lt_Qx6W2~riH{ixy-uCj!L_^Yw! zmU9vmswGg)vgs#n_)FGXyvv0%WKAdGla`h6bji;c854li<*7>0<$aAEV4jp%s6|p! zde+6(Mt9Mt_|2y2N}(qw9e=Tx{oavWG7Dc&RUo4LLO@%pg^sK^pw zLp?nBDTTuyrCo%+fQ8-AA=Xh+G~%)KjCbOmj&|9Byh>nTQ|teYa?GOe6GRoVPI3#OWz>AEBLVf~a~;h~*w)#;dy7|hfX!eR zbnl%$VYqf1$PIR=Jh#e zyRQyM)$QAFAXjZ2g`GlMp=wK{qizor2(7p65}|@datQ&`OlD%TFMcmvhn4b`7C?PQ zlRi|cX`au3Rf`TtBn9G~Od)3w47D!mEpa|{!`^_G1!lQ!I z9}+0D#vXx@J7i{C{_)f^-)Ri+E2br7<<%=x03)jN?zkO`Pd{e86(hzJ?IBpcLkj?% z6h7>}hL^}wHP~BC(j7IEi6pzg9q8?f18%c0bFMjs#w)Bv5GVqU@!r1n8$e;yy>*De z=Da{8KEF7;@(w=dm827vUd-ClCvRYd4GII;&V3E6gu`rM#r%qfrrB7UX$`pZpV!O& zbnoa9@;Med%)p)1PM7I?uY2s}qcc%9YW>@VgEDb2bBnh{4E$}1*VEVEy;ckEWH(b6 zZ~BIz3i9W0f7br{xv*xA3ymjp@fmo3UsxX^fDNC^Vr>)>V%+3Lav0MQmW9(A{q}!i zAEI?@rjb)l*V^?9a=iyYka-gBA1g;=pG<-MRk6QCaQ7YIRGTf@E5lw!IFIlDy8VV0 zB7?=24j0GK#K&1T4mbQfnfB@{kG2k5tXD-dzB%X7?V7J`I!m5kS^@CuJ}5dm?Xzme z#CLXtpTWv8_)fhpC)~h!)EmZ;s>1#U^|%0(+xlW7=(KowEzF$ z3|q2dR#fO)BE)pI{#)29JTe}owe-sFDn%FM=+>vN$vC8(fQuzs?%{spDWiW|%XPyjR=@2VeQ?(q8fd3bbAgVOgW7O21gbgpU^OZfCc9X1<;`3iI~ z#MD6srvD5f?UVyEP6NmS#V3sP-5s_wT@7@XS`$MPv9yjKLZ!rOO#xNjnmI8N{`!aM1qp2T7TAfsc?0WXX@^qtLb z_k+6%4{@gtPwJ%9M)RBipf|vRkqF^xj?Dskl3W zp8`HHxk$_nm8(gtYR3a)$nF%*|7mHj8{GOqLsm?aY{WwOC|>ITS7E?&c@vk~gq zhDIpqo&#!LrbwBnzB(LDaSJp$5N8s4YhHtd`U)`adBa@@h2!!*e#_!)&Sue zTvS^O$?O@_$S1|4PXz&0hzhczZTALX<-=6y!WmLL-#O5O4(3IAJX_xYIYk7gu4Q(J zGAg0rHs?z+x87JOcbjQIcjc|N=kR$Fu2t%)rjAlMMz>cb z%T)r%H5+G(l#ZHhq{f`DJ6^zHlQ;3lvb3Zt;}dRhn*k+LfU&=W-lKv6ebY(dy}0O{ za@C?raI#GPL5X2e{Tab^;CcY|(H@1W7v`z1->!g%1$UjO+vewCP=P3R{Hx!iRc381 zrS0GrDKuuO0W%1Xh0f)yUuhEG`zA7IULKi^5}Vp9MbOSbji(!0;-5;Rr3dgc>KULj^fa}q`K_3O_GZ(8Jp zs6o@pvM_7JwmlGo+W?%x8lV^dm*%(#?6fN?1G0$nYeCKr4e#XqI_5WZAd{$}1u*$R>p8Zc9nW2A!*vk;p z<;tfDwTePv<2v%he42MSpLKI94nHKsK5Fe8EQT)%okr5ic3l;myrur!+H!1isRJ3ZXu}1bmyA}jx+_K zCCUM~C7y2l!|{)RdKzzw6btz2eHxzHnR?husAcGw$jRAk{3{*1Qb>_$@}Q- zN*=Rz)r!2SYbC(Y;fg)x<+1U7Xdil@DHE}&-+B|(18?C%*Tm$=2per+6aD*IHzfOt zzdE%Y-+}GZCeniZFVoAdfGvexa^kW>q#5wIdBN?M5+tEf30a{F05RWjoXqTGKTY39 zPr>uY{n3Vh-4l#xZ`i~cc=X1ja&)sOEr>a3xoc;DxfiV;a$~C2)Oyq5T3N}FJ5pEI^s^Qp&U~_2v`Wy#UZo?7tOcK}OFcF4TY+VJ00x zY$rEoCAl%fO=(&#sP^HCCpetil81X=%#Sa>D%6)$U|-pU`SP-eB;+W>s79`Ha$Zpo zFT=BgFwO!T=>SU*CP0@Q=B1w-%K|JDG1qEDKmj~0PFl(nk{zstU5u;I@=Wr_au*#- zAXJZNKCNHhmuB3m>3o_*6TrdE4wxCdkAitreFOGKZg16liG6hdZ7PrEx8Otpowms6 zLPPGZQ=9{d+(eCS2Pdj0)Gvfa7OG!E4vVQGQjOQ!chg9rm^L&|!b}9hAWt-oR1N^5H+NGWOCSEwsd&l&o8Gzhg+G~w>y7~Sf zz~8;Ap7;)DWbR1KN^k#M)sZJ`fh~O=AXYyoGUNZ3Rhn$y%Ap7G0$-C4{G6ZWkGZ|s z%jK4H8?N(U>Eelcmv!De}hH-#RtVNK<>@5>WqpX9TA-83hWWQW#YcZvArH G0001z?@vDf literal 0 HcmV?d00001 diff --git a/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-13.webp b/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-13.webp new file mode 100644 index 0000000000000000000000000000000000000000..4bda0c05f29adeb0396d1911d5bd481c4efe60a6 GIT binary patch literal 63578 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

diff --git a/learn/transfers/settlement/.pages b/learn/transfers/settlement/.pages index 3ed7da377..e9329c638 100644 --- a/learn/transfers/settlement/.pages +++ b/learn/transfers/settlement/.pages @@ -1,4 +1,4 @@ -title: Wormhole Settlement +title: Settlement nav: - index.md - 'Overview': 'overview.md' diff --git a/learn/transfers/settlement/architecture.md b/learn/transfers/settlement/architecture.md index 777445cb4..8475f6f9d 100644 --- a/learn/transfers/settlement/architecture.md +++ b/learn/transfers/settlement/architecture.md @@ -1,9 +1,9 @@ --- -title: Settlement Protocol Architectures +title: Settlement Protocol Architecture description: Explore Wormhole Settlement's native swap protocols—Liquidity Layer, Mayan Swift, and MCTP—for scalable, efficient cross-chain asset transfers. --- -# Settlement Protocol Architectures +# Settlement Protocol Architecture ## Introduction @@ -19,7 +19,7 @@ Wormhole Liquidity Layer is a cross-chain transfer protocol that enables faster- Solvers concentrate their liquidity entirely on Solana, where they participate in permissionless on-chain English auctions (open ascending-price auctions where bidders publicly raise bids until only one bidder remains) to fulfill each cross-chain transfer. Upon the conclusion of each auction, the winning solver initiates a transfer from Solana to the specified destination chain. The solver rebalances inventory once the originating source chain transaction reaches finality and arrives to Solana. -![Wormhole Settlments Liquidity layer architecture diagram: source chain to hub to destination chain](/docs/images/learn/transfers/settlement/settlement-overview.webp) +![Wormhole Settlments Liquidity layer architecture diagram: source chain to hub to destination chain](/docs/images/learn/transfers/settlement/architecture/architecture-1.webp) The Wormhole Liquidity Layer serves as the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems by enabling protocols to bundle call data containing arbitrary protocol actions, which can be executed atomically alongside each transfer. This feature allows developers to create fully chain-abstracted user experiences, including constructing natively cross-chain decentralized exchanges (DEXs), borrow-lend protocols, payment protocols, and other applications atop this layer. @@ -61,7 +61,7 @@ First, they lack a competitive price discovery mechanism as limit order prices a Mayan Swift addresses these limitations by implementing competitive on-chain English auctions on Solana as an embedded price discovery mechanism, fundamentally shifting solver competition from speed-based to price-based execution. Through this architecture, the solver offering the best possible price secures the right to fulfill the order within pre-specified deadline parameters. -![Mayan Swift - Intent-centric design](/docs/images/learn/transfers/settlement/mayan-swift.webp) +![Mayan Swift - Intent-centric design](/docs/images/learn/transfers/settlement/architecture/architecture-2.webp) ### Protocol Flow: How It Works @@ -80,7 +80,7 @@ Mayan Swift addresses these limitations by implementing competitive on-chain Eng Mayan MCTP is a cross-chain intents protocol that leverages Circle's CCTP (Cross-Chain Transfer Protocol) mechanism and Wormhole messaging to enable secure, fee-managed asset transfers across chains. -![Mayan MCTP diagram](/docs/images/learn/transfers/settlement/mayan-mctp.webp) +![Mayan MCTP diagram](/docs/images/learn/transfers/settlement/architecture/architecture-3.webp) ### Protocol Flow: How It Works diff --git a/llms.txt b/llms.txt index 923a9580b..c37454a7c 100644 --- a/llms.txt +++ b/llms.txt @@ -4,116 +4,123 @@ Documentation: https://wormhole.com/docs/ # List of doc pages: -Doc-Page: https://wormhole.com/docs/build/contract-integrations/faqs -Doc-Page: https://wormhole.com/docs/build/core-messaging/core-contracts -Doc-Page: https://wormhole.com/docs/build/core-messaging/index -Doc-Page: https://wormhole.com/docs/build/core-messaging/wormhole-relayers -Doc-Page: https://wormhole.com/docs/build/index -Doc-Page: https://wormhole.com/docs/build/multigov/deployment -Doc-Page: https://wormhole.com/docs/build/multigov/faq -Doc-Page: https://wormhole.com/docs/build/multigov/index -Doc-Page: https://wormhole.com/docs/build/multigov/upgrade -Doc-Page: https://wormhole.com/docs/build/queries/faqs -Doc-Page: https://wormhole.com/docs/build/queries/index -Doc-Page: https://wormhole.com/docs/build/queries/overview -Doc-Page: https://wormhole.com/docs/build/queries/use-queries -Doc-Page: https://wormhole.com/docs/build/reference/chain-ids -Doc-Page: https://wormhole.com/docs/build/reference/consistency-levels -Doc-Page: https://wormhole.com/docs/build/reference/contract-addresses -Doc-Page: https://wormhole.com/docs/build/reference/index -Doc-Page: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses -Doc-Page: https://wormhole.com/docs/build/start-building/index -Doc-Page: https://wormhole.com/docs/build/start-building/supported-networks -Doc-Page: https://wormhole.com/docs/build/start-building/testnet-faucets -Doc-Page: https://wormhole.com/docs/build/toolkit/cli -Doc-Page: https://wormhole.com/docs/build/toolkit/dev-env -Doc-Page: https://wormhole.com/docs/build/toolkit/faqs -Doc-Page: https://wormhole.com/docs/build/toolkit/index -Doc-Page: https://wormhole.com/docs/build/toolkit/solidity-sdk -Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/index -Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/protocols-payloads -Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/sdk-layout -Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/vaas-protocols -Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/wormhole-sdk -Doc-Page: https://wormhole.com/docs/build/transfers/cctp -Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration-v0 -Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/configure-data -Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/configure-theme -Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/index -Doc-Page: https://wormhole.com/docs/build/transfers/connect/faqs -Doc-Page: https://wormhole.com/docs/build/transfers/connect/features -Doc-Page: https://wormhole.com/docs/build/transfers/connect/index -Doc-Page: https://wormhole.com/docs/build/transfers/connect/overview -Doc-Page: https://wormhole.com/docs/build/transfers/connect/routes -Doc-Page: https://wormhole.com/docs/build/transfers/connect/upgrade -Doc-Page: https://wormhole.com/docs/build/transfers/index -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/index -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/rate-limiting -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/index -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/installation -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/index -Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers -Doc-Page: https://wormhole.com/docs/build/transfers/settlement/faqs -Doc-Page: https://wormhole.com/docs/build/transfers/settlement/index -Doc-Page: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer -Doc-Page: https://wormhole.com/docs/build/transfers/settlement/solver -Doc-Page: https://wormhole.com/docs/build/transfers/token-bridge -Doc-Page: https://wormhole.com/docs/infrastructure/index -Doc-Page: https://wormhole.com/docs/infrastructure/relayers/index -Doc-Page: https://wormhole.com/docs/infrastructure/relayers/run-relayer -Doc-Page: https://wormhole.com/docs/infrastructure/spy/index -Doc-Page: https://wormhole.com/docs/infrastructure/spy/run-spy -Doc-Page: https://wormhole.com/docs/learn/glossary -Doc-Page: https://wormhole.com/docs/learn/governance/architecture -Doc-Page: https://wormhole.com/docs/learn/governance/faq -Doc-Page: https://wormhole.com/docs/learn/governance/index -Doc-Page: https://wormhole.com/docs/learn/governance/overview -Doc-Page: https://wormhole.com/docs/learn/index -Doc-Page: https://wormhole.com/docs/learn/infrastructure/architecture -Doc-Page: https://wormhole.com/docs/learn/infrastructure/core-contracts -Doc-Page: https://wormhole.com/docs/learn/infrastructure/guardians -Doc-Page: https://wormhole.com/docs/learn/infrastructure/index -Doc-Page: https://wormhole.com/docs/learn/infrastructure/relayer -Doc-Page: https://wormhole.com/docs/learn/infrastructure/spy -Doc-Page: https://wormhole.com/docs/learn/infrastructure/vaas -Doc-Page: https://wormhole.com/docs/learn/introduction -Doc-Page: https://wormhole.com/docs/learn/security -Doc-Page: https://wormhole.com/docs/learn/transfers/cctp -Doc-Page: https://wormhole.com/docs/learn/transfers/index -Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/architecture -Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/deployment -Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/index -Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview -Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/security -Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/architecture -Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/index -Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/overview -Doc-Page: https://wormhole.com/docs/learn/transfers/token-bridge -Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/index -Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/react-dapp -Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-contracts -Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts -Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/index -Doc-Page: https://wormhole.com/docs/tutorials/by-product/index -Doc-Page: https://wormhole.com/docs/tutorials/by-product/multichain-assets/index -Doc-Page: https://wormhole.com/docs/tutorials/by-product/multichain-assets/multichain-token -Doc-Page: https://wormhole.com/docs/tutorials/by-product/multigov/index -Doc-Page: https://wormhole.com/docs/tutorials/by-product/multigov/treasury-proposal -Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/index -Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge -Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp -Doc-Page: https://wormhole.com/docs/tutorials/index +Doc-Page: https://wormhole.com/docs/build/contract-integrations/faqs/ +Doc-Page: https://wormhole.com/docs/build/core-messaging/core-contracts/ +Doc-Page: https://wormhole.com/docs/build/core-messaging/ +Doc-Page: https://wormhole.com/docs/build/core-messaging/wormhole-relayers/ +Doc-Page: https://wormhole.com/docs/build/ +Doc-Page: https://wormhole.com/docs/build/multigov/deploy-to-evm/ +Doc-Page: https://wormhole.com/docs/build/multigov/deploy-to-solana/ +Doc-Page: https://wormhole.com/docs/build/multigov/faq/ +Doc-Page: https://wormhole.com/docs/build/multigov/ +Doc-Page: https://wormhole.com/docs/build/multigov/upgrade-evm/ +Doc-Page: https://wormhole.com/docs/build/multigov/upgrade-solana/ +Doc-Page: https://wormhole.com/docs/build/queries/faqs/ +Doc-Page: https://wormhole.com/docs/build/queries/ +Doc-Page: https://wormhole.com/docs/build/queries/overview/ +Doc-Page: https://wormhole.com/docs/build/queries/use-queries/ +Doc-Page: https://wormhole.com/docs/build/reference/chain-ids/ +Doc-Page: https://wormhole.com/docs/build/reference/consistency-levels/ +Doc-Page: https://wormhole.com/docs/build/reference/contract-addresses/ +Doc-Page: https://wormhole.com/docs/build/reference/ +Doc-Page: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses/ +Doc-Page: https://wormhole.com/docs/build/start-building/ +Doc-Page: https://wormhole.com/docs/build/start-building/products/ +Doc-Page: https://wormhole.com/docs/build/start-building/supported-networks/ +Doc-Page: https://wormhole.com/docs/build/start-building/testnet-faucets/ +Doc-Page: https://wormhole.com/docs/build/start-building/use-cases/ +Doc-Page: https://wormhole.com/docs/build/toolkit/cli/ +Doc-Page: https://wormhole.com/docs/build/toolkit/dev-env/ +Doc-Page: https://wormhole.com/docs/build/toolkit/faqs/ +Doc-Page: https://wormhole.com/docs/build/toolkit/ +Doc-Page: https://wormhole.com/docs/build/toolkit/solidity-sdk/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/protocols-payloads/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/sdk-layout/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/vaas-protocols/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/wormhole-sdk/ +Doc-Page: https://wormhole.com/docs/build/transfers/cctp/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration-v0/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/configure-data/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/configure-theme/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/faqs/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/features/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/overview/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/routes/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/upgrade/ +Doc-Page: https://wormhole.com/docs/build/transfers/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/rate-limiting/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/installation/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers/ +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/faqs/ +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/ +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer/ +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/solver/ +Doc-Page: https://wormhole.com/docs/build/transfers/token-bridge/ +Doc-Page: https://wormhole.com/docs/infrastructure/ +Doc-Page: https://wormhole.com/docs/infrastructure/relayers/ +Doc-Page: https://wormhole.com/docs/infrastructure/relayers/run-relayer/ +Doc-Page: https://wormhole.com/docs/infrastructure/spy/ +Doc-Page: https://wormhole.com/docs/infrastructure/spy/run-spy/ +Doc-Page: https://wormhole.com/docs/learn/glossary/ +Doc-Page: https://wormhole.com/docs/learn/governance/architecture/ +Doc-Page: https://wormhole.com/docs/learn/governance/faq/ +Doc-Page: https://wormhole.com/docs/learn/governance/ +Doc-Page: https://wormhole.com/docs/learn/governance/overview/ +Doc-Page: https://wormhole.com/docs/learn/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/architecture/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/core-contracts/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/guardians/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/relayer/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/spy/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/vaas/ +Doc-Page: https://wormhole.com/docs/learn/introduction/ +Doc-Page: https://wormhole.com/docs/learn/security/ +Doc-Page: https://wormhole.com/docs/learn/transfers/cctp/ +Doc-Page: https://wormhole.com/docs/learn/transfers/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/architecture/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/deployment/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/security/ +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/architecture/ +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/ +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/overview/ +Doc-Page: https://wormhole.com/docs/learn/transfers/token-bridge/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/react-dapp/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/multichain-assets/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/multichain-assets/multichain-token/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/multigov/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/multigov/treasury-proposal/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/settlements/.index/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/settlements/.settlement-routes/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp/ +Doc-Page: https://wormhole.com/docs/tutorials/ # Full content for each doc page -Doc-Content: https://wormhole.com/docs/build/contract-integrations/faqs +Doc-Content: https://wormhole.com/docs/build/contract-integrations/faqs/ --- BEGIN CONTENT --- --- title: Contract Integrations FAQs @@ -172,7 +179,7 @@ Updating the metadata (such as the token image, name, or symbol) of a wrapped to To request an update, contact Solscan via [support@solscan.io](mailto:support@solscan.io) or their [contact form](https://solscan.io/contactus){target=\_blank}. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/core-messaging/core-contracts +Doc-Content: https://wormhole.com/docs/build/core-messaging/core-contracts/ --- BEGIN CONTENT --- --- title: Get Started with Core Contracts @@ -548,7 +555,7 @@ For a deeper understanding of the Core Contract implementation for a specific bl - [Terra Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/terra/contracts/wormhole){target=\_blank} --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/core-messaging/index +Doc-Content: https://wormhole.com/docs/build/core-messaging/ --- BEGIN CONTENT --- --- title: Core Messaging Layer Contracts @@ -591,7 +598,7 @@ Wormhole-deployed relayer support is limited to EVM environments. For a complete --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/core-messaging/wormhole-relayers +Doc-Content: https://wormhole.com/docs/build/core-messaging/wormhole-relayers/ --- BEGIN CONTENT --- --- title: Wormhole-Deployed Relayers @@ -674,6 +681,9 @@ function sendPayloadToEvm( ); ``` +!!! tip + To reduce transaction confirmation time, you can lower the consistency level using the [`sendToEvm`](https://github.com/wormhole-foundation/wormhole/blob/{{repositories.wormhole.version}}/sdk/js/src/relayer/relayer/send.ts#L33){target=\_blank} method. + The `sendPayloadToEvm` method is marked `payable` to receive fee payment for the transaction. The value to attach to the invocation is determined by calling the `quoteEVMDeliveryPrice`, which provides an estimate of the cost of gas on the target chain. ```solidity @@ -792,7 +802,7 @@ See the [Wormhole CLI tool docs](/docs/build/toolkit/cli/) for installation and For detailed, step-by-step guidance on creating cross-chain contracts that interact with the Wormhole relayer, refer to the [Create Cross-Chain Contracts](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/) tutorial. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/index +Doc-Content: https://wormhole.com/docs/build/ --- BEGIN CONTENT --- --- title: Build with Wormhole @@ -835,14 +845,14 @@ Whether you’re developing front-end applications using Wormhole's application- --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/multigov/deployment +Doc-Content: https://wormhole.com/docs/build/multigov/deploy-to-evm/ --- BEGIN CONTENT --- --- -title: MultiGov Deployment -description: Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. +title: MultiGov Deployment to EVM +description: Set up and deploy MultiGov to EVM locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. --- -# Deployment +# Deploy MultiGov on EVM This guide provodes instructions to set up and deploy the MultiGov governance system locally. Before diving into the technical deployment, ensure that MultiGov is the right fit for your project’s governance needs by following the steps for the [integration process](/docs/build/multigov/){target=\_blank}. @@ -856,7 +866,7 @@ To interact with MultiGov, you'll need the following: - Install [Git](https://git-scm.com/downloads){target=\_blank} - Clone the repository: ```bash - git clone [MultiGov Repository URL] + git clone https://github.com/wormhole-foundation/multigov cd evm # for evm testing/deploying ``` @@ -873,6 +883,7 @@ For developers looking to set up a local MultiGov environment: ```bash cp .env.example .env ``` + Edit `.env` with your specific [configuration](/docs/build/multigov/deployment/#configuration){target=\_blank} 3. Compile contracts: @@ -939,7 +950,196 @@ These parameters can be queried using their respective getter functions on the a To update these parameters, a governance proposal must be created, voted on, and executed through the standard MultiGov process. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/multigov/faq +Doc-Content: https://wormhole.com/docs/build/multigov/deploy-to-solana/ +--- BEGIN CONTENT --- +--- +title: MultiGov Deployment to Solana +description: Learn how to deploy the MultiGov Staking Program on Solana, including setup, funding, deployment, and configuration steps. +--- + +# Deploy MultiGov on Solana + +This guide provides instructions on how to set up and deploy the **MultiGov Staking Program** on Solana. Before proceeding with the deployment, ensure that MultiGov aligns with your project's governance needs by reviewing the system [architecture](/docs/learn/governance/architecture/){target=\_blank}. + +Once your project setup is complete, follow this guide to configure, compile, and deploy the necessary Solana programs and supporting accounts. This deployment enables decentralized governance participation on Solana as a spoke chain within the MultiGov system. + +## Prerequisites + +To deploy MultiGov on Solana, ensure you have the following installed: + + - Install [Git](https://git-scm.com/downloads){target=\_blank} + - Install [Node.js](https://nodejs.org/){target=\_blank} **`v20.10.0`** + - Install [Solana CLI](https://docs.anza.xyz/cli/install/){target=\_blank} **`v1.18.20`** + - Install [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`v0.30.1`** + - Install [Rust](https://www.rust-lang.org/tools/install){target=\_blank} **`v1.80.1`** + - Install [Docker](https://www.docker.com/get-started/){target=\_blank} + - Clone the repository: + ```bash + git clone https://github.com/wormhole-foundation/multigov.git + cd multigov/solana/ + ``` + +## Build the Project + +To create a verifiable build of the MultiGov Staking Program, run the following command: + +```bash +./scripts/build_verifiable_staking_program.sh +``` + +Once the build is complete, the compiled artifacts will be available in the `target` folder. + +## Set Up the Deployer Account + +For a successful deployment, you need a funded deployer account on Solana. This account will store the program and execute deployment transactions. + +In this section, you will create a new keypair, check the account balance, and ensure it has enough SOL tokens to cover deployment costs. If needed, you can fund the account using different methods before deploying. + +### Generate a New Keypair + +To create a new keypair and save it to a file, run the following command: + +```bash +solana-keygen new --outfile ./app/keypairs/deployer.json +``` + +### Check the Deployer Account Address + +To retrieve the public address of the newly created keypair, run the following command: + +```bash +solana address -k ./app/keypairs/deployer.json +``` + +### Check the Deployer Account Balance + +To verify the current balance of the deployer account, run the following command: + +```bash +solana balance -k ./app/keypairs/deployer.json +``` + +!!! important + When deploying the MultiGov Staking Program, the deployer account must have enough SOL to cover deployment costs and transaction fees. + + - 7.60219224 SOL for deployment costs + - 0.00542 SOL for transaction fees + +### Fund the Deployer Account + +If the account does not have enough SOL, use one of the following methods to add funds. + + - **Transfer SOL from another account** - if you already have SOL in another account, transfer it using a wallet (Phantom, Solflare, etc.) or in the terminal + + ```bash + solana transfer --from /path/to/funder.json + ``` + + - **Request an airdrop (devnet only)** - if deploying to devnet, you can request free SOL + + ```bash + solana airdrop 2 -k ./app/keypairs/deployer.json + ``` + + - **Use a Solana faucet (devnet only)** - you can use online faucets to receive 10 free SOL + + - [Solana Faucet](https://faucet.solana.com/){target=\_blank} + +## Deploy the MultiGov Staking Program + +With the deployer account set up and funded, you can deploy the MultiGov Staking Program to the Solana blockchain. This step involves deploying the program, verifying the deployment, and ensuring the necessary storage and metadata are correctly configured. Once the IDL is initialized, the program will be ready for further setup and interaction. + +### Deploy the Program + +Deploy the MultiGov Staking Program using **Anchor**: + +```bash +anchor deploy --provider.cluster https://api.devnet.solana.com --provider.wallet ./app/keypairs/deployer.json +``` + +### Verify the Deployment + +After deployment, check if the program is successfully deployed by running the following command: + +```bash +solana program show INSERT_PROGRAM_ID +``` + +### Extend Program Storage + +If the deployed program requires additional storage space for updates or functionality, extend the program storage using the following command: + +```bash +solana program extend INSERT_PROGRAM_ID 800000 +``` + +### Initialize the IDL + +To associate an IDL file with the deployed program, run the following command: + +```bash +anchor idl init --provider.cluster https://api.devnet.solana.com --filepath ./target/idl/staking.json INSERT_PROGRAM_ID +``` + +## Configure the Staking Program + +The final step after deploying the MultiGov Staking Program is configuring it for proper operation. This includes running a series of deployment scripts to initialize key components and set important governance parameters. These steps ensure that staking, governance, and cross-chain communication function as expected. + +### Run Deployment Scripts + +After deploying the program and initializing the IDL, execute the following scripts **in order** to set up the staking environment and necessary accounts. + +1. Initialize the MultiGov Staking Program with default settings: + + ```bash + npx ts-node app/deploy/01_init_staking.ts + ``` + +2. Create an Account Lookup Table (ALT) to optimize transaction processing: + + ```bash + npx ts-node app/deploy/02_create_account_lookup_table.ts + ``` + +3. Set up airlock accounts: + + ```bash + npx ts-node app/deploy/03_create_airlock.ts + ``` + +4. Deploy a metadata collector: + + ```bash + npx ts-node app/deploy/04_create_spoke_metadata_collector.ts + ``` + +5. Configure vote weight window lengths: + + ```bash + npx ts-node app/deploy/05_initializeVoteWeightWindowLengths.ts + ``` + +6. Deploy the message executor for handling governance messages: + + ```bash + npx ts-node app/deploy/06_create_message_executor.ts + ``` + +### Set MultiGov Staking Program Key Parameters + +When deploying MultiGov on Solana, several key parameters need to be set. Here are the most important configuration points: + + - `maxCheckpointsAccountLimit` ++"u64"++ - the maximum number of checkpoints an account can have. For example, `654998` is used in production, while `15` might be used for testing + - `hubChainId` `u16` - the chain ID of the hub network where proposals are primarily managed. For example, `10002` for Sepolia testnet + - `hubProposalMetadata` ++"[u8; 20]"++ - an array of bytes representing the address of the Hub Proposal Metadata contract on Ethereum. This is used to identify proposals from the hub + - `voteWeightWindowLength` ++"u64"++ - specifies the length of the checkpoint window in seconds in which the minimum voting weight is taken. The window ends at the vote start for a proposal and begins at the vote start minus the vote weight window. The vote weight window helps solve problems such as manipulating votes in a chain + - `votingTokenMint` ++"Pubkey"++ - the mint address of the token used for voting + - `governanceAuthority` ++"Pubkey"++ - the account's public key with the authority to govern the staking system. The `governanceAuthority` should not be the default Pubkey, as this would indicate an uninitialized or incorrectly configured setup + - `vestingAdmin` ++"Pubkey"++ - the account's public key for managing vesting operations. The `vestingAdmin` should not be the default Pubkey, as this would indicate an uninitialized or incorrectly configured setup + - `hubDispatcher` ++"Pubkey"++ - the Solana public key derived from an Ethereum address on the hub chain that dispatches messages to the spoke chains. This is crucial for ensuring that only authorized messages from the hub are executed on the spoke +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/multigov/faq/ --- BEGIN CONTENT --- --- title: MultiGov Technical FAQs @@ -1031,7 +1231,7 @@ MultiGov includes several mechanisms to handle network issues or temporary chain However, prolonged outages on the hub chain or critical spoke chains could potentially disrupt governance activities. Projects should have contingency plans for such scenarios. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/multigov/index +Doc-Content: https://wormhole.com/docs/build/multigov/ --- BEGIN CONTENT --- --- title: Getting Started with MultiGov @@ -1053,21 +1253,37 @@ Take the following steps to get started with a MultiGov integration:
-- :octicons-rocket-16:{ .lg .middle } **Deployment** +- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM** --- - Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. + Set up and deploy MultiGov on EVM with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. - [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deployment/) + [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deploy-to-evm/) + +- :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** -- :octicons-file-code-16:{ .lg .middle } **Upgrade Contracts** + --- + + Set up and deploy the MultiGov Staking Program on Solana with step-by-step instructions for configuring, funding, deploying, and initializing the program. + + [:custom-arrow: Discover how to deploy MultiGov on Solana](/docs/build/multigov/deploy-to-solana/) + +- :octicons-file-code-16:{ .lg .middle } **Upgrade MultiGov on EVM** --- Learn the process and key considerations for upgrading MultiGov contracts, ensuring system integrity and careful planning across cross-chain components. - [:custom-arrow: Discover how to upgrade MultiGov](/docs/build/multigov/upgrade/) + [:custom-arrow: Discover how to upgrade MultiGov on EVM Chains](/docs/build/multigov/upgrade-evm/) + +- :octicons-file-code-16:{ .lg .middle } **Upgrade MultiGov on Solana** + + --- + + Learn how to upgrade the MultiGov Staking Program on Solana, including updating the program binary, IDL, and more. + + [:custom-arrow: Discover how to upgrade MultiGov on Solana](/docs/build/multigov/upgrade-solana/) - :octicons-question-16:{ .lg .middle } **Technical FAQs** @@ -1102,16 +1318,16 @@ Take the following steps to get started with a MultiGov integration:
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/multigov/upgrade +Doc-Content: https://wormhole.com/docs/build/multigov/upgrade-evm/ --- BEGIN CONTENT --- --- -title: Upgrading MultiGov -description: Learn the process and key considerations for upgrading MultiGov, ensuring system integrity and careful planning across cross-chain components. +title: Upgrading MultiGov on EVM +description: Learn the process and key considerations for upgrading MultiGov on EVM, ensuring system integrity and careful planning across cross-chain components. --- -# Upgrade MultiGov Contracts +# Upgrade MultiGov Contracts on EVM -MultiGov is designed to be flexible but stable. Upgrades should be rare and carefully considered due to the system's complexity and cross-chain nature. When upgrades are necessary, they must be meticulously planned and executed to ensure system integrity and continuity. +MultiGov is designed to be flexible but stable. Due to the system's complexity and cross-chain nature, upgrades should be rare and carefully considered. When upgrades are necessary, they must be meticulously planned and executed to ensure system integrity and continuity. ## Key Considerations for Upgrades @@ -1171,7 +1387,77 @@ MultiGov is designed to be flexible but stable. Upgrades should be rare and care - Always test upgrades extensively on testnets before implementing in production --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/queries/faqs +Doc-Content: https://wormhole.com/docs/build/multigov/upgrade-solana/ +--- BEGIN CONTENT --- +--- +title: Upgrading MultiGov on Solana +description: Learn the process and key considerations for upgrading MultiGov on Solana, ensuring system integrity and careful planning across cross-chain components. +--- + +# Upgrade MultiGov Contracts on Solana + +The MultiGov Staking Program on Solana is designed to be upgradeable while maintaining stability. Upgrades introduce improvements, bug fixes, and new features but must be carefully planned and executed to prevent disruptions. + +This guide covers the key considerations and step-by-step process for upgrading the MultiGov Staking Program, including updating the program binary, Interface Description Language (IDL), and `HubProposalMetadata` while ensuring cross-chain compatibility. + +## Key Considerations for Upgrades + +- **Program upgradeability** - you can upgrade the MultiGov Staking Program on Solana using the `anchor upgrade` command + - You need the program's new bytecode (`.so` file) and an updated IDL file to reflect any changes in the program's interface to complete an upgrade + - The program's authority (deployer) must execute the upgrade + +- **`HubProposalMetadata`** - can be updated without redeploying the entire program. You can do this by invoking the `updateHubProposalMetadata` instruction + - You must carefully validate updates to `HubProposalMetadata` to ensure compatibility with the existing system + +- **Cross-chain compatibility** - ensure any changes to the Solana program do not break compatibility with the Ethereum-based `HubGovernor` + - Test upgrades thoroughly on devnet before deploying to mainnet + +## Upgrade the MultiGov Program + +Follow these steps to upgrade the MultiGov Staking Program on Solana. + +1. **Prepare the new program binary** - build the updated program using the provided script + + ```bash + ./scripts/build_verifiable_staking_program.sh + ``` + + The new program binary will be located at: + + ```bash + target/deploy/staking.so + ``` + +2. **Upgrade the program** - use the anchor upgrade command to deploy the new program binary + + ```bash + anchor upgrade --program-id INSERT_PROGRAM_ID --provider.cluster INSERT_CLUSTER_URL INSERT_PATH_TO_PROGRAM_BINARY + ``` + + Your completed anchor upgrade command should resemble the following: + ```bash + anchor upgrade --program-id DgCSKsLDXXufYeEkvf21YSX5DMnFK89xans5WdSsUbeY --provider.cluster https://api.devnet.solana.com ./target/deploy/staking.so + ``` + +3. **Update the IDL** - after upgrading the program, update the IDL to reflect any changes in the program's interface + + ```bash + anchor idl upgrade INSERT_PROGRAM_ID --filepath INSERT_PATH_TO_IDL_FILE + ``` + + Your completed IDL upgrade command should resemble the following: + ```bash + anchor idl upgrade --provider.cluster https://api.devnet.solana.com --filepath ./target/idl/staking.json DgCSKsLDXXufYeEkvf21YSX5DMnFK89xans5WdSsUbeY + ``` + +4. **Update `HubProposalMetadata`** - if `HubProposalMetadata` requires an update, run the following script to invoke the `updateHubProposalMetadata` instruction and apply the changes + + ```bash + npx ts-node app/deploy/07_update_HubProposalMetadata.ts + ``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/queries/faqs/ --- BEGIN CONTENT --- --- title: Queries FAQs @@ -1224,7 +1510,7 @@ It is also important to note that the proxies don't impact the verifiability of Wormhole Queries provides on-demand, attested, on-chain, verifiable RPC results. Each Guardian independently executes the specified query and returns the result and their signature. The proxy handles aggregating the results and signatures, giving you a single result (all within one REST call) with a quorum of signatures suitable for on-chain submission, parsing, and verification using one of our examples or SDKs. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/queries/index +Doc-Content: https://wormhole.com/docs/build/queries/ --- BEGIN CONTENT --- --- title: Wormhole Queries @@ -1266,7 +1552,7 @@ Wormhole Queries offers on-demand access to Guardian-attested on-chain data via --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/queries/overview +Doc-Content: https://wormhole.com/docs/build/queries/overview/ --- BEGIN CONTENT --- --- title: Queries Overview @@ -1369,7 +1655,7 @@ You can also check out the following examples of applications that make use of W - [Solana Queries Verification](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/queries/use-queries +Doc-Content: https://wormhole.com/docs/build/queries/use-queries/ --- BEGIN CONTENT --- --- title: Use Queries @@ -1788,7 +2074,7 @@ const tx = await contract.updateCounters( ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/reference/chain-ids +Doc-Content: https://wormhole.com/docs/build/reference/chain-ids/ --- BEGIN CONTENT --- --- title: Chain IDs @@ -1807,16 +2093,16 @@ The following table documents the chain IDs used by Wormhole and places them alo === "Mainnet" -
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Hyperliquid50000998
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Monad48
Moonbeam161284
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Rootstock3330
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
+
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Monad48
Moonbeam161284
Movement49
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
=== "Testnet" -
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Hyperliquid50000
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Rootstock3331
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
+
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
Movement49250
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/reference/consistency-levels +Doc-Content: https://wormhole.com/docs/build/reference/consistency-levels/ --- BEGIN CONTENT --- --- title: Consistency Levels @@ -1829,11 +2115,11 @@ The following table documents each chain's `consistencyLevel` values (i.e., fina -
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 1095sDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 1066sDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 1026s
Blast200201finalized~ 1026s
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 1026s
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 1026s
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 903s
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 1025s
World Chain0~ 1026s
X Layer200201finalized~ 903s
XPLA0~ 5s
+
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 19minDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 18minDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 18min
Berachain200finalized~ 4s
Blast200201finalized~ 18min
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Ink0~ 9min
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 18min
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
Movement0~ 4s
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 18min
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 16min
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 18min
World Chain0~ 18min
X Layer200201finalized~ 16min
XPLA0~ 5s
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/reference/contract-addresses +Doc-Content: https://wormhole.com/docs/build/reference/contract-addresses/ --- BEGIN CONTENT --- --- title: Contract Addresses @@ -1849,11 +2135,11 @@ description: This page documents the deployed contract addresses of the Wormhole === "Mainnet" -
Chain NameContract Address
Ethereum0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Solanaworm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
Acala0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Algorand842125965
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum0xa5f208e072434bC67592E4C49C1B991BA79BCA46
Avalanche0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c
Base0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Berachain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Blast0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
BNB Smart Chain0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Celo0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Fantom0x126783A6Cb203a3E35344528B26ca3a0489a1485
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Injectiveinj17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9l2q74d
Kaia0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7
Karura0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Mantle0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Moonbeam0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3
NEARcontract.wormhole_crypto.near
Neutronneutron16rerygcpahqcxx5t8vjla46ym8ccn7xz7rtc6ju5ujcd36cmc7zs9zrunh
Oasis0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
Optimism0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722
Polygon0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7
PythnetH3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Scroll0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Seisei1gjrrme22cyha4ht2xapn3f08zzw6z3d4uxx6fyy9zd5dyr3yxgzqqncdqn
SNAXchain0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4
Sui0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c
Terraterra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5
Terra 2.0terra12mrnzvhx3rpej6843uge2yyfppfyd3u9c3uq223q8sl48huz9juqffcnhp
Unichain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
World Chain0xcbcEe4e081464A15d8Ad5f58BB493954421eB506
X Layer0x194B123c5E96B9b2E49763619985790Dc241CAC0
XPLAxpla1jn8qmdda5m6f6fqu9qv46rt7ajhklg40ukpqchkejcvy8x7w26cqxamv3w
+
Chain NameContract Address
Ethereum0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Solanaworm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
Acala0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Algorand842125965
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum0xa5f208e072434bC67592E4C49C1B991BA79BCA46
Avalanche0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c
Base0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Berachain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Blast0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
BNB Smart Chain0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Celo0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Fantom0x126783A6Cb203a3E35344528B26ca3a0489a1485
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Injectiveinj17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9l2q74d
Ink0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Kaia0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7
Karura0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Mantle0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Moonbeam0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3
NEARcontract.wormhole_crypto.near
Neutronneutron16rerygcpahqcxx5t8vjla46ym8ccn7xz7rtc6ju5ujcd36cmc7zs9zrunh
Oasis0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
Optimism0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722
Polygon0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7
PythnetH3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU
Scroll0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Seisei1gjrrme22cyha4ht2xapn3f08zzw6z3d4uxx6fyy9zd5dyr3yxgzqqncdqn
SNAXchain0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4
Sui0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c
Terraterra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5
Terra 2.0terra12mrnzvhx3rpej6843uge2yyfppfyd3u9c3uq223q8sl48huz9juqffcnhp
Unichain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
World Chain0xcbcEe4e081464A15d8Ad5f58BB493954421eB506
X Layer0x194B123c5E96B9b2E49763619985790Dc241CAC0
XPLAxpla1jn8qmdda5m6f6fqu9qv46rt7ajhklg40ukpqchkejcvy8x7w26cqxamv3w
=== "Testnet" -
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
+
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
Movement0xa7b37796439f725373fe4835793cd2eed7a1db639bbb220c72be8904ec5e2a7a
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
=== "Devnet" @@ -1868,11 +2154,11 @@ description: This page documents the deployed contract addresses of the Wormhole === "Mainnet" -
Chain NameContract Address
Ethereum0x3ee18B2214AFF97000D974cf647E7C347E8fa585
SolanawormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
Acala0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Algorand842126029
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum0x0b2402144Bb366A632D14B83F244D2e0e21bD39c
Avalanche0x0e082F06FF657D94310cB8cE8B0D9a04541d8052
Base0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627
Berachain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Blast0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
BNB Smart Chain0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7
Celo0x796Dff6D74F3E27060B71255Fe517BFb23C93eed
Fantom0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
Injectiveinj1ghd753shjuwexxywmgs4xz7x2q732vcnxxynfn
Kaia0x5b08ac39EAED75c0439FC750d9FE7E1F9dD0193F
Karura0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Mantle0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Moonbeam0xb1731c586ca89a23809861c6103f0b96b3f57d92
NEARcontract.portalbridge.near
Oasis0x5848C791e09901b40A9Ef749f2a6735b418d7564
Optimism0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b
Polygon0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE
Scroll0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Seisei1smzlm9t79kur392nu9egl8p8je9j92q4gzguewj56a05kyxxra0qy0nuf3
SNAXchain0x8B94bfE456B48a6025b92E11Be393BAa86e68410
Sui0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9
Terraterra10nmmwe8r3g99a9newtqa7a75xfgs2e8z87r2sf
Terra 2.0terra153366q50k7t8nn7gec00hg66crnhkdggpgdtaxltaq6xrutkkz3s992fw9
Unichain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
World Chain0xc309275443519adca74c9136b02A38eF96E3a1f6
X Layer0x5537857664B0f9eFe38C9f320F75fEf23234D904
XPLAxpla137w0wfch2dfmz7jl2ap8pcmswasj8kg06ay4dtjzw7tzkn77ufxqfw7acv
+
Chain NameContract Address
Ethereum0x3ee18B2214AFF97000D974cf647E7C347E8fa585
SolanawormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
Acala0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Algorand842126029
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum0x0b2402144Bb366A632D14B83F244D2e0e21bD39c
Avalanche0x0e082F06FF657D94310cB8cE8B0D9a04541d8052
Base0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627
Berachain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Blast0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
BNB Smart Chain0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7
Celo0x796Dff6D74F3E27060B71255Fe517BFb23C93eed
Fantom0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
Injectiveinj1ghd753shjuwexxywmgs4xz7x2q732vcnxxynfn
Ink0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Kaia0x5b08ac39EAED75c0439FC750d9FE7E1F9dD0193F
Karura0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Mantle0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Moonbeam0xb1731c586ca89a23809861c6103f0b96b3f57d92
NEARcontract.portalbridge.near
Oasis0x5848C791e09901b40A9Ef749f2a6735b418d7564
Optimism0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b
Polygon0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE
Scroll0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Seisei1smzlm9t79kur392nu9egl8p8je9j92q4gzguewj56a05kyxxra0qy0nuf3
SNAXchain0x8B94bfE456B48a6025b92E11Be393BAa86e68410
Sui0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9
Terraterra10nmmwe8r3g99a9newtqa7a75xfgs2e8z87r2sf
Terra 2.0terra153366q50k7t8nn7gec00hg66crnhkdggpgdtaxltaq6xrutkkz3s992fw9
Unichain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
World Chain0xc309275443519adca74c9136b02A38eF96E3a1f6
X Layer0x5537857664B0f9eFe38C9f320F75fEf23234D904
XPLAxpla137w0wfch2dfmz7jl2ap8pcmswasj8kg06ay4dtjzw7tzkn77ufxqfw7acv
=== "Testnet" -
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
+
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
Movement0xda075f9cb681e291c17e65562bdd6d4196c7d2f86da1aa3917f2809ff8edb03d
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
=== "Devnet" @@ -1891,7 +2177,7 @@ description: This page documents the deployed contract addresses of the Wormhole === "Testnet" -
Chain NameContract Address
Ethereum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Arbitrum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Avalanche0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB
Base Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Berachain0x362fca37E45fe1096b42021b543f462D49a5C8df
BNB Smart Chain0x80aC94316391752A193C1c47E27D382b507c93F3
Celo0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84
Fantom0x9563a59c15842a6f322b10f69d1dd88b41f2e97b
Ink0x362fca37E45fe1096b42021b543f462D49a5C8df
Monad0x362fca37E45fe1096b42021b543f462D49a5C8df
Moonbeam0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0
Optimism Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Seievm0x362fca37E45fe1096b42021b543f462D49a5C8df
Unichain0x362fca37E45fe1096b42021b543f462D49a5C8df
+
Chain NameContract Address
Ethereum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Arbitrum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Avalanche0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB
Base Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Berachain0x362fca37E45fe1096b42021b543f462D49a5C8df
BNB Smart Chain0x80aC94316391752A193C1c47E27D382b507c93F3
Celo0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84
Fantom0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Ink0x362fca37E45fe1096b42021b543f462D49a5C8df
Monad0x362fca37E45fe1096b42021b543f462D49a5C8df
Moonbeam0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0
Optimism Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Seievm0x362fca37E45fe1096b42021b543f462D49a5C8df
Unichain0x362fca37E45fe1096b42021b543f462D49a5C8df
=== "Devnet" @@ -1922,13 +2208,13 @@ description: This page documents the deployed contract addresses of the Wormhole === "Mainnet" -
Chain NameContract Address
Corn0xa683c66045ad16abb1bCE5ad46A64d95f9A25785
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Sonic0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Telos0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
+
Chain NameContract Address
Corn0xa683c66045ad16abb1bCE5ad46A64d95f9A25785
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Goat0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
LightLink0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Sonic0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Telos0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
!!!note Read-only deployments allow Wormhole messages to be received on chains not fully integrated with Wormhole Guardians. These deployments support cross-chain data verification but cannot originate messages. For example, a governance message can be sent from a fully integrated chain and processed on a read-only chain, but the read-only chain cannot send messages back. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/reference/index +Doc-Content: https://wormhole.com/docs/build/reference/ --- BEGIN CONTENT --- --- title: Reference @@ -1951,7 +2237,7 @@ In this section, you'll find reference information that is essential for develop [:custom-arrow: View list of chain IDs](/docs/build/reference/chain-ids/) -- :material-timer-sand:{ .lg .middle } **Consistency Levels** +- :octicons-clock-16:{ .lg .middle } **Consistency Levels** --- @@ -1975,11 +2261,11 @@ In this section, you'll find reference information that is essential for develop [:custom-arrow: View list of contract addresses](/docs/build/reference/contract-addresses/) -- :material-code-braces:{ .lg .middle } **Wormhole Formatted Addresses** +- :octicons-checkbox-16:{ .lg .middle } **Wormhole Formatted Addresses** --- - Learn how Wormhole formats addresses into a 32-byte hex format for cross-chain compatibility. + Learn how Wormhole formats addresses into a 32-byte hex format for cross-chain compatibility. This includes converting addresses between their native formats and the Wormhole format across multiple blockchains. @@ -1988,7 +2274,7 @@ In this section, you'll find reference information that is essential for develop --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses +Doc-Content: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses/ --- BEGIN CONTENT --- --- title: Wormhole Formatted Addresses @@ -2141,7 +2427,7 @@ For cross-chain dApp development, Wormhole formatted addresses simplify handling Finally, relayers and infrastructure components, such as Wormhole Guardians, rely on the standardized format to efficiently process and relay cross-chain messages. A uniform address format simplifies operations, ensuring smooth interoperability across multiple blockchains. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/start-building/index +Doc-Content: https://wormhole.com/docs/build/start-building/ --- BEGIN CONTENT --- --- title: Start Building @@ -2199,7 +2485,66 @@ Wormhole's role as a Generic Message Passing (GMP) protocol means it facilitates --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/start-building/supported-networks +Doc-Content: https://wormhole.com/docs/build/start-building/products/ +--- BEGIN CONTENT --- +--- +title: Compare Wormhole's Cross-Chain Solutions +description: Compare Wormhole’s cross-chain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. +--- + +# Products + +Wormhole provides a comprehensive suite of cross-chain solutions, enabling seamless asset transfers, data retrieval, and governance across blockchain ecosystems. + +Wormhole provides multiple options for asset transfers: Connect for a plug-and-play bridging UI, Native Token Transfers (NTT) for moving native assets without wrapped representations, and Token Bridge for a secure lock-and-mint mechanism. + +Beyond transfers, Wormhole extends interoperability with tools for cross-chain data access, decentralized governance, and an intent-based protocol through Wormhole Settlement. + +## Transfer Products + +Wormhole offers different solutions for cross-chain asset transfer, each designed for various use cases and integration requirements. + +- [**Connect**](/docs/build/transfers/connect/overview/){target=\_blank} - a pre-built bridging UI for cross-chain token transfers, requiring minimal setup. Best for projects seeking an easy-to-integrate UI for bridging without modifying contracts +- [**Native Token Transfers (NTT)**](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} - a mechanism to transfer native tokens cross-chain seamlessly without conversion to wrapped asset. Best for projects that require maintaining token fungibility and native chain functionality across multiple networks +- [**Token Bridge**](/docs/learn/transfers/token-bridge/){target=\_blank} - a bridging solution that uses a lock and mint mechanism. Best for projects that need cross-chain liquidity using wrapped assets and the ability to send messages +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - a next-generation suite of intent protocols enabling fast multichain transfers, optimizing liquidity flows and interoperability without relying on traditional bridging methods. Best for institutional-scale volume and chain abstraction for application developers + +
+ +::spantable:: + +| | Criteria | Connect | NTT | Token Bridge | +|--------------------------------|---------------------------------------|--------------------|--------------------|----------------------| +| Supported Transfer Types @span | Token Transfers | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| | Token Transfers with Message Payloads | :x: | :x: | :white_check_mark: | +| Supported Assets @span | Wrapped Assets | :white_check_mark: | :x: | :white_check_mark: | +| | Native Assets | :white_check_mark: | :white_check_mark: | :x: | +| | ERC-721s (NFTs) | :white_check_mark: | :x: | :white_check_mark: | +| Features @span | Out-of-the-Box UI | :white_check_mark: | :x: | :x: | +| | Event-Based Actions | :x: | :white_check_mark: | :white_check_mark: | +| Integration Details @span | | | | | +| Requirements @span | Contract Deployment | :x: | :white_check_mark: | :x: | +| | User-Owned Contracts | :x: | :white_check_mark: | :x: | +| Ecosystem Support | Integrates with Other Products | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Ease of Integration | Implementation Complexity | :green_circle: :white_circle: :white_circle:
Low | :green_circle: :green_circle: :white_circle:
Moderate | :green_circle: :green_circle: :white_circle:
Moderate | +| Technology @span | Supported Languages | JavaScript, TypeScript | Solidity (Ethereum), Rust (Solana) | Solidity (Ethereum), Rust (Solana), TypeScript | + +::end-spantable:: + +
+ +Beyond asset transfers, Wormhole provides additional tools for cross-chain data and governance. + +## Real-time Data + +[**Queries**](/docs/build/queries/overview/){target=\_blank} is a data retrieval service to fetch on-chain data from multiple networks. Best for applications that need multichain analytics, reporting, and data aggregation. + +## Multichain Governance + +[**MultiGov**](/docs/learn/governance/overview/){target=\_blank} is a unified governance framework that manages multichain protocol governance through a single mechanism. Best for projects managing multichain governance and protocol updates. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/start-building/supported-networks/ --- BEGIN CONTENT --- --- title: Supported Networks @@ -2263,7 +2608,7 @@ Wormhole supports several different blockchains and environments. Since many of :material-file-document:
Developer Docs
:octicons-package-16: Block ExplorerHyperEVMEVM:x::white_check_mark: :material-web: Website
- :material-file-document: Developer Docs
InkEVM:x::white_check_mark: + :material-file-document: Developer Docs
InkEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerKaiaEVM:white_check_mark::white_check_mark: @@ -2294,10 +2639,7 @@ Wormhole supports several different blockchains and environments. Since many of :octicons-package-16: Block ExplorerPolygonEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerRootstockEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerScrollEVM:white_check_mark::white_check_mark: + :octicons-package-16: Block ExplorerScrollEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerSeievmEVM:x::white_check_mark:SNAXchainEVM:white_check_mark::white_check_mark: @@ -2356,82 +2698,364 @@ Wormhole supports several different blockchains and environments. Since many of :material-file-document: Developer Docs
:octicons-package-16: Block Explorer -### Move VM +### Move VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MovementMove VM:x::white_check_mark:
+ +### NEAR VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
NEARNEAR VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### Sui Move VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
SuiSui Move VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ + + +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/start-building/testnet-faucets/ +--- BEGIN CONTENT --- +--- +title: Testnet Faucets +description: This page includes resources to quickly find the Testnet tokens you need to deploy and test applications and contracts on Wormhole's supported networks. +--- + +# Testnet Faucets + +## Get Started + +Don't let the need for testnet tokens get in the way of buildling your next great idea with Wormhole. Use this guide to quickly locate the testnet token faucets you need to deploy and test applications and contracts on Wormhole's supported networks. + + + + +
+ +### EVM + +
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
+ +### SVM + +
TestnetEnvironmentTokenFaucet
PythnetSVMETHSuperchain Faucet
+ +### AVM + +
TestnetEnvironmentTokenFaucet
AlgorandAVMALGOOfficial Algorand Faucet
+ +### CosmWasm + +
TestnetEnvironmentTokenFaucet
CelestiaCosmWasmTIADiscord Faucet
Cosmos HubCosmWasmATOMDiscord Faucet
EvmosCosmWasmTEVMOSOfficial Evmos Faucet
InjectiveCosmWasmINJOfficial Injective Faucet
KujiraCosmWasmKUJIDiscord Faucet
NeutronCosmWasmNTRNList of Faucets
NobleCosmWasmUSDCCircle Faucet
OsmosisCosmWasmOSMOOfficial Osmosis Faucet
SEDACosmWasmSEDAOfficial SEDA Faucet
SeiCosmWasmSEISei Atlantic-2 Faucet
TerraCosmWasmLUNATerra Official Faucet
Terra 2.0CosmWasmLUNATerra Official Faucet
XPLACosmWasmXPLAXPLA Official Faucet
+ +### Move VM + +
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
+ +### NEAR VM + +
TestnetEnvironmentTokenFaucet
NEARNEAR VMNEAROfficial NEAR Faucet
+ +### Sui Move VM + +
TestnetEnvironmentTokenFaucet
SuiSui Move VMSUIList of Faucets
+ +
+ +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/start-building/use-cases/ +--- BEGIN CONTENT --- +--- +title: Use Cases +description: Explore Wormhole's use cases, from cross-chain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. +--- + +# Wormhole Use Cases + +
+
+ +## Cross-Chain Swaps and Liquidity Aggregation + +Enable seamless swaps between chains with real-time liquidity routing. + +
+
+ +🛠 **Wormhole products used:** + +- [**Wormhole Connect**](/docs/build/transfers/connect/overview/){target=\_blank} – handles user-friendly asset transfers +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – moves native assets across chains +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time prices for optimal trade execution + +🔗 **Used in:** Decentralized exchanges (DEXs) and liquidity aggregators
🏗️ **Used by:** [StellaSwap](https://app.stellaswap.com/exchange/swap){target=\_blank} + +
+
+ + +
+
+ +## Borrowing and Lending Across Chains + +Let users borrow assets on one chain using collateral from another. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – moves loan requests and liquidations across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers collateral as native assets +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches interest rates and asset prices in real-time + +🔗 **Used in:** Lending protocols and yield platforms
🏗️ **Used by:** [Folks Finance](https://wormhole.com/case-studies/folks-finance){target=\_blank} + +
+
+ + +
+
+ +## Real-Time Price Feeds and Trading Strategies + +Fetch price feeds across multiple chains for DeFi applications. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches price feeds from oracles and trading platforms +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – sends signals to execute trades + +🔗 **Used in:** Trading bots, arbitrage platforms, and oracles
🏗️ **Used by:** [Infinex](https://wormhole.com/case-studies/infinex){target=\_blank} + +
+
+ + +
+
+ +## Asset Movement Between Bitcoin and Other Chains + +Enable direct BTC transfers without wrapped assets. + +
+
+ +🛠 **Wormhole products used:** + +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers BTC across chains + +🔗 **Used in:** Bitcoin DeFi and lightning network integrations
🏗️ **Used by:** [Synonym](https://wormhole.com/case-studies/synonym){target=\_blank} + +
+
+ +
+
+ +## Decentralized Social Platforms + +Enable seamless communication and asset transfer across decentralized social networks. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – facilitates decentralized interactions +- [**Token Bridge**](/docs/build/transfers/token-bridge/){target=\_blank} – enables cross-chain tokenized rewards + +🔗 **Used in:** Web3 social networks and content monetization
🏗️ **Used by:** [Chingari](https://chingari.io/){target=\_blank} + +
+
+ + +
+
+ +## Memecoin Launchpads + +Launch and distribute memecoins across multiple chains, enabling cross-chain fundraising and liquidity access. + +
+
+ +🛠 **Wormhole products used:** + +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – enables native asset transfers for seamless fundraising +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – facilitates cross-chain token distribution and claim processes + +🔗 **Used in:** Token launchpads, IDOs, and meme token ecosystems + +
+
+ + +
+
+ +## Cross-Chain Perpetuals + +Enable leveraged perpetual trading across chains with seamless collateral and liquidity management. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time asset prices and manages position state across chains +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - for quick cross-chain token execution, providing efficient and seamless user experiences + +🔗 **Used in:** Perpetual DEXs, trading platforms and cross-chain derivatives + +
+
+ + +
+
+ +## Gas Abstraction + +Allow users to pay gas fees with any token across different networks, removing friction in multichain interactions. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – routes gas fee payments across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – facilitates native token conversion for gas payments + +🔗 **Used in:** Wallets, dApps, and multichain user experience improvements + +
+
+ + +
+
+ +## Bridging Intent Library -
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+Provide developers with a library of bridging intents and automation functions, enabling plug-and-play interoperability logic. -### NEAR VM +
+
-
BlockchainEnvironmentMainnetTestnetQuick Links
NEARNEAR VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+🛠 **Wormhole products used:** -### Sui Move VM +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – enables predefined cross-chain actions and triggers. +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - provides a framework for executing user-defined bridging intents -
BlockchainEnvironmentMainnetTestnetQuick Links
SuiSui Move VM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+🔗 **Used in:** Bridging protocols, DeFi automation, and smart contract libraries
- ---- END CONTENT --- +
-Doc-Content: https://wormhole.com/docs/build/start-building/testnet-faucets ---- BEGIN CONTENT --- ---- -title: Testnet Faucets -description: This page includes resources to quickly find the Testnet tokens you need to deploy and test applications and contracts on Wormhole's supported networks. ---- -# Testnet Faucets +
+
-## Get Started +## Multichain Prediction Markets -Don't let the need for testnet tokens get in the way of buildling your next great idea with Wormhole. Use this guide to quickly locate the testnet token faucets you need to deploy and test applications and contracts on Wormhole's supported networks. +Allow users to place bets, manage positions, and receive payouts seamlessly across different networks. - +
+
- -
+🛠 **Wormhole products used:** -### EVM +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time market data, tracks collateral, and manages odds across chains +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} – automates token execution for efficient and seamless cross-chain prediction market interactions -
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
HyperliquidEVMHYPEHyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
RootstockEVMRBTCOfficial Rootstock Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
+🔗 **Used in:** Decentralized betting, prediction markets, and cross-chain gaming -### SVM +
+
-
TestnetEnvironmentTokenFaucet
PythnetSVMETHSuperchain Faucet
-### AVM +
+
-
TestnetEnvironmentTokenFaucet
AlgorandAVMALGOOfficial Algorand Faucet
+## Cross-Chain Payment Widgets -### CosmWasm +Allow merchants and platforms to accept payments in any token, auto-converting them into a desired asset. -
TestnetEnvironmentTokenFaucet
CelestiaCosmWasmTIADiscord Faucet
Cosmos HubCosmWasmATOMDiscord Faucet
EvmosCosmWasmTEVMOSOfficial Evmos Faucet
InjectiveCosmWasmINJOfficial Injective Faucet
KujiraCosmWasmKUJIDiscord Faucet
NeutronCosmWasmNTRNList of Faucets
NobleCosmWasmUSDCCircle Faucet
OsmosisCosmWasmOSMOOfficial Osmosis Faucet
SEDACosmWasmSEDAOfficial SEDA Faucet
SeiCosmWasmSEISei Atlantic-2 Faucet
TerraCosmWasmLUNATerra Official Faucet
Terra 2.0CosmWasmLUNATerra Official Faucet
XPLACosmWasmXPLAXPLA Official Faucet
+
+
-### Move VM +🛠 **Wormhole products used:** -
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
+- [**Wormhole Connect**](/docs/build/transfers/connect/overview/){target=\_blank} – facilitates seamless payments in various tokens +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – ensures direct, native asset transfers -### NEAR VM +🔗 **Used in:** E-commerce, Web3 payments, and subscription models -
TestnetEnvironmentTokenFaucet
NEARNEAR VMNEAROfficial NEAR Faucet
+
+
-### Sui Move VM -
TestnetEnvironmentTokenFaucet
SuiSui Move VMSUIList of Faucets
+
+
+ +## Oracle Networks + +Fetch and verify cross-chain data, enabling reliable, decentralized Oracle services for multichain applications.
- +
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches data from multiple chains and Oracle providers +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – ensures tamper-proof data relay across networks + +🔗 **Used in:** Price feeds, DeFi protocols, and smart contract automation
🏗️ **Used by:** [Pyth](https://wormhole.com/case-studies/pyth){target=\_blank} + +
+
+ + +
+
+ +## Cross-Chain Staking + +Enable users to stake assets on one chain while earning rewards or securing networks on another. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – moves staking rewards and governance signals across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers staked assets natively between networks + +🔗 **Used in:** Liquid staking, cross-chain governance, and PoS networks
🏗️ **Used by:** [Lido](https://lido.fi/){target=\_blank} + +
+
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/cli +Doc-Content: https://wormhole.com/docs/build/toolkit/cli/ --- BEGIN CONTENT --- --- title: Wormhole CLI @@ -3195,7 +3819,7 @@ worm info rpc mainnet bsc ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/dev-env +Doc-Content: https://wormhole.com/docs/build/toolkit/dev-env/ --- BEGIN CONTENT --- --- title: Local Dev Environment @@ -3259,7 +3883,7 @@ https://api.wormholescan.io ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/faqs +Doc-Content: https://wormhole.com/docs/build/toolkit/faqs/ --- BEGIN CONTENT --- --- title: Toolkit FAQs @@ -3315,7 +3939,7 @@ To manually submit a VAA (Verifiable Action Approval) to a destination chain, fo Following these steps, you can manually submit a VAA in the proper format to a destination chain. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/index +Doc-Content: https://wormhole.com/docs/build/toolkit/ --- BEGIN CONTENT --- --- title: Wormhole Tooling @@ -3405,7 +4029,7 @@ Regardless of which network development environment you are using, there are a f
--- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/solidity-sdk +Doc-Content: https://wormhole.com/docs/build/toolkit/solidity-sdk/ --- BEGIN CONTENT --- --- title: Solidity SDK @@ -3718,7 +4342,7 @@ For a detailed example, check out the below repositories: - [Cross chain token transfer](/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/){target=\_blank} --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/index +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/ --- BEGIN CONTENT --- --- title: Wormhole SDK @@ -3752,7 +4376,7 @@ The Wormhole SDK provides developers with essential tools for cross-chain commun --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/protocols-payloads +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/protocols-payloads/ --- BEGIN CONTENT --- --- title: Building Protocols and Payloads @@ -4069,7 +4693,7 @@ While this guide focuses on the `TokenBridge` protocol, other protocols, like NT For more details, you can explore the [NTT implementation in the SDK](https://github.com/wormhole-foundation/example-native-token-transfers/blob/00f83aa215338b1b8fd66f522bd0f45be3e98a5a/sdk/definitions/src/ntt.ts){target=\_blank}. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/sdk-layout +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/sdk-layout/ --- BEGIN CONTENT --- --- title: Data Layouts @@ -4777,7 +5401,7 @@ For further learning and practical experience, explore the following resources: - **Layout tests repository** - for hands-on experimentation, check out this [layout package repository](https://github.com/nonergodic/layout){target=\_blank}, which provides examples and unit tests to help you better understand serialization, deserialization, and the strong typing mechanism. Running these tests locally is a great way to deepen your understanding of how layouts function in real-world scenarios --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/vaas-protocols +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/vaas-protocols/ --- BEGIN CONTENT --- --- title: VAAs and Protocols @@ -4897,7 +5521,7 @@ contract EnvelopeParser { ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/wormhole-sdk +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/wormhole-sdk/ --- BEGIN CONTENT --- --- title: Wormhole TS SDK @@ -6298,7 +6922,7 @@ A noteworthy example of a route exported from a separate npm package is Wormhole The TSdoc is available [on GitHub](https://wormhole-foundation.github.io/wormhole-sdk-ts/){target=\_blank}. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/cctp +Doc-Content: https://wormhole.com/docs/build/transfers/cctp/ --- BEGIN CONTENT --- --- title: Interacting with CCTP Contracts @@ -8921,7 +9545,7 @@ function receivePayloadAndUSDC( To view a complete example of creating a contract that integrates with Wormhole's CCTP contracts to send and receive USDC cross-chain, check out the [Hello USDC](https://github.com/wormhole-foundation/hello-usdc){target=\_blank} repository on GitHub. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration-v0 +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration-v0/ --- BEGIN CONTENT --- --- title: Configure Your Connect Widget: v0 @@ -9655,7 +10279,7 @@ Enable the explorer button to allow users to search for their transactions on a | `target` | `href` target. Defaults to `_blank` | --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/configure-data +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/configure-data/ --- BEGIN CONTENT --- --- title: Connect Data Configuration @@ -10037,7 +10661,7 @@ function App() { ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/configure-theme +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/configure-theme/ --- BEGIN CONTENT --- --- title: Connect Theme & UI Customization @@ -10156,7 +10780,7 @@ function App() { ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/index +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/ --- BEGIN CONTENT --- --- title: Wormhole Connect @@ -10198,7 +10822,7 @@ This guide provides detailed instructions on configuring Wormhole Connect and hi --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/faqs +Doc-Content: https://wormhole.com/docs/build/transfers/connect/faqs/ --- BEGIN CONTENT --- --- title: Connect FAQs @@ -10271,7 +10895,7 @@ Additional notes: The TypeScript SDK was previously referred to as the "Connect SDK," but this naming has since been discontinued. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/features +Doc-Content: https://wormhole.com/docs/build/transfers/connect/features/ --- BEGIN CONTENT --- --- title: Features @@ -10357,7 +10981,7 @@ This route appears if all of the following conditions are satisfied: - The relayer accepts the selected token to swap into the gas token --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/index +Doc-Content: https://wormhole.com/docs/build/transfers/connect/ --- BEGIN CONTENT --- --- title: Wormhole Connect @@ -10421,7 +11045,7 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/overview +Doc-Content: https://wormhole.com/docs/build/transfers/connect/overview/ --- BEGIN CONTENT --- --- title: Overview @@ -10535,7 +11159,7 @@ The default configuration of Wormhole Connect may not be exactly what you're loo For additional information on the preceding options, check the [configuration options](/docs/build/transfers/connect/configuration/){target=\_blank} and customize your widget however you like. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/routes +Doc-Content: https://wormhole.com/docs/build/transfers/connect/routes/ --- BEGIN CONTENT --- --- title: Routes @@ -10615,7 +11239,7 @@ Note that if native tBTC is transferred out of these chains to any other outside This transfer method requires two transactions: one on the origin chain to burn or lock the tokens and one on the destination chain to mint them. To provide this option, enable the `tbtc` route in the configuration. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/connect/upgrade +Doc-Content: https://wormhole.com/docs/build/transfers/connect/upgrade/ --- BEGIN CONTENT --- --- title: Wormhole Connect v1.0 Migration Guide @@ -11186,7 +11810,7 @@ wormholeConnectHosted(container, { In this example, the `config` object defines the routes (in this case, using the Mayan route), while the `theme` object allows customization of the Connect interface (e.g., background color). --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/index +Doc-Content: https://wormhole.com/docs/build/transfers/ --- BEGIN CONTENT --- --- title: Multichain Transfers @@ -11196,7 +11820,7 @@ description: This section guides you through using Wormhole products to securely # Multichain Transfers --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands/ --- BEGIN CONTENT --- --- title: NTT CLI Commands @@ -11247,7 +11871,7 @@ The following table lists the available NTT CLI commands, descriptions, and exam | `ntt solana ata `| print the token authority address for a given program ID| `ntt solana ata Mint123... Owner123... token22`| --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control/ --- BEGIN CONTENT --- --- title: Native Token Transfers Access Control @@ -11290,7 +11914,7 @@ The `Owner` and the `Pauser` addresses can each pause the contract. Since the co Consider separating `Owner` and `Pauser` roles for your multichain deployment. `Owner` and `Pauser` roles are defined directly on the `NttManager` contract. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/index +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/ --- BEGIN CONTENT --- --- title: Native Token Transfers (NTT) - Configuration @@ -11324,7 +11948,7 @@ This section contains information on configuring Native Token Transfers (NTT), i --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/rate-limiting +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/rate-limiting/ --- BEGIN CONTENT --- --- title: Native Token Transfers Rate Limiting @@ -11422,7 +12046,7 @@ Queuing is configured dynamically during each transfer by passing the `shouldQue If users bridge frequently between a given source chain and destination chain, the capacity could be exhausted quickly. Loss of capacity can leave other users rate-limited, potentially delaying their transfers. The outbound transfer cancels the inbound rate limit on the source chain to avoid unintentional delays. This allows for refilling the inbound rate limit by an amount equal to the outbound transfer amount and vice-versa, with the inbound transfer canceling the outbound rate limit on the destination chain and refilling the outbound rate limit with an amount. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/ --- BEGIN CONTENT --- --- title: Native Token Transfers EVM Deployment @@ -11611,7 +12235,7 @@ By default, NTT transfers to EVM blockchains support automatic relaying via the To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/ --- BEGIN CONTENT --- --- title: Native Token Transfers Solana Deployment @@ -11812,7 +12436,190 @@ By default, NTT transfers to Solana support manual relaying, which requires the To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/index +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ +--- BEGIN CONTENT --- +--- +title: Deploy Native Token Transfers with Launchpad +description: Deploy a new token or extend an existing one across multiple chains with the NTT Launchpad. Manage transfers, supply, and settings—all from a single platform. +--- + +# Deploy Native Token Transfers with Launchpad + +## Introduction + +The [Native Token Transfers (NTT) Launchpad](https://ntt.wormhole.com/){target=\_blank} is a Wormhole-managed UI application that provides a step-by-step interface for deploying NTT across multiple blockchains. + +Instead of manually deploying contracts on each chain, configuring relayers, and managing cross-chain communication, you can quickly launch or expand tokens with just a few clicks. + +The Launchpad automates deployment, reducing complexity and saving time. + +This guide covers: + + - Launching a new cross-chain token + - Expanding an existing token for NTT + - Managing tokens via the dashboard and settings + +## Prerequisites + + - An EVM-compatible wallet (e.g., [MetaMask](https://metamask.io/){target=\_blank}, [Phantom](https://phantom.com/){target=\_blank}, etc.) + - Minimum ETH (or equivalent) for gas fees per deployment + +## Supported Blockchains + +The NTT Launchpad currently supports deployments on the following mainnet chains: + + - Ethereum + - Optimism Mainnet + - Arbitrum One + - Base + +## Choose Your Path + +Once ready, choose an option to proceed: + + - [**Launch a Cross-Chain Token**](#launch-a-cross-chain-token) - deploy a brand-new token that is NTT-ready from day one, enabling seamless transfers across multiple blockchains + - [**Expand Your Existing Token**](#expand-your-existing-token) - if you already have a token deployed on different chains, integrate it with NTT to enable NTT without modifying its original contract + +## Launch a Cross-Chain Token + +Deploy a new NTT-compatible token that can be transferred across multiple chains. This process sets up your token on a home network and deploys it to additional blockchains. Follow the below steps to get started: + +1. Open the [NTT Launchpad](https://ntt.wormhole.com/){target=\_blank}, connect your wallet, and click **Get Started** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp) + +2. Select **Launch a Cross-Chain Token** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-2.webp) + +3. Set the token details: + 1. Select the **home network** from the dropdown menu + 2. Enter the **name** for the token + 3. Enter the **symbol** of the token + 4. Provide the **initial supply** + 5. To the token details, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-3.webp) + +4. Select the deployment chains: + 1. The home network where your token will be deployed will be populated (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 3. To continue, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-4.webp) + +5. To deploy on the first chain (Optimism), click on **Deploy**; if prompted, switch your wallet to the correct network and confirm the transaction + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp) + +6. Once deployed, you can view the transaction in a block explorer and add the token to your wallet + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp) + +7. Repeat the previous step to deploy the token on the second chain (Base). The supply of tokens on Base will be zero since the tokens were all minted on Optimism in the previous step + +8. Once both deployments are completed, proceed to the [**Dashboard**](#explore-the-launchpad-dashboard) to manage your token. + +## Expand Your Existing Token + +Expand an existing token to support NTT across multiple chains. This process integrates your deployed token with NTT without modifying its original contract. Follow the steps below to get started: + +1. Open the [NTT Launchpad](https://ntt.wormhole.com/){target=\_blank}, connect your wallet, and click **Get Started** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp) + +2. Select **Expand Your Existing Token** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-7.webp) + +3. Enter the token details: + 1. Choose the home network where your token is already deployed (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 3. To continue, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-8.webp) + +4. Select the chains to deploy your token to: + 1. The home network where your token is already deployed will be populated (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 1. Click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-9.webp) + +5. To deploy on the first chain (Optimism), click on **Deploy**; if prompted, switch your wallet to the correct network and confirm the transaction + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp) + +6. Once deployed, you can view the transaction in a block explorer and add the token to your wallet + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp) + +7. Repeat the previous step to deploy the token on the second chain (Base). The supply of tokens on Base will be zero since the tokens were all minted on Optimism in the previous step + +8. Now that your token has been deployed on multiple chains click [**Dashboard**](#explore-the-launchpad-dashboard) to review its details + +## Explore the Launchpad Dashboard + +To access the **Dashboard** from the [Launchpad home page](https://ntt.wormhole.com/){target=\_blank}, click on **Manage Deployment**. Here, you can view deployment status, monitor supply across chains, and configure transfer settings. + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-10.webp) + +The dashboard provides a high-level view of your token across all deployed chains, including: + + - Token addresses for each chain + - Supply distribution visualization + - List of deployed chains, including inbound and outbound transfer limits, which can be modified in [**Settings**](#settings) + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-11.webp) + +## Settings + +The **Settings** page allows you to configure security parameters, role management, and transfer limits for your deployed token. You can switch between chains to manage these settings independently for each deployment. + +### Chain Management + +Use the drop-down menu at the top to select the chain you want to configure. The available options correspond to the chains where your token has already been deployed. Once selected, the page displays token details specific to that chain. + +From this section, you can also: + + - **Pause the token** – temporarily turn off transfers on the selected chain + - **Deploy to a new chain** – expand your token by deploying it to an additional chain + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-12.webp) + +### Role Management + +This section displays key [roles](/docs/build/transfers/native-token-transfers/configuration/access-control/){target=\_blank} involved in token governance. You can view and modify these roles by selecting a new address and confirming the update. + + - **Manager’s Owner** – the owner through the `NTTOwner` proxy + - **Pauser** – the address authorized to pause transfers + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-13.webp) + +### Security Threshold + +Determine and update how transceivers interact with the token. [Transceivers](/docs/build/transfers/native-token-transfers/managers-transceivers/#transceivers){target=\_blank} route NTT transfers between blockchains, ensuring tokens are correctly sent and received across networks. + +A higher transceiver threshold increases security by requiring more approvals before processing a transfer, but it may also slow down transactions. A lower threshold allows faster transfers but reduces redundancy in message verification. + + - **Registered Transceivers** – displays the number of registered transceivers and their addresses + - **Transceivers Threshold** – a configurable value that must be less than or equal to the number of transceivers + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-14.webp) + +### Peer Chains Limits + +Define the transfer restrictions for each connected network. You can adjust: + + - **Sending Limits** – the maximum amount of tokens that can be sent from the home chain + - **Receiving Limits** – the maximum amount of tokens that can be received for each of the supported peer chains + +Enter a new value to adjust limits and click **Update**. The changes will take effect immediately. + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-15.webp) +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/ --- BEGIN CONTENT --- --- title: Native Token Transfers (NTT) - Deployment @@ -11843,6 +12650,14 @@ This section provides information on installing Wormhole's Native Token Transfer [:custom-arrow: Deploy token and NTT contracts](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/) +- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM Chains via Launchpad** + + --- + + Deploy a new token or extend an existing one across multiple chains with the NTT Launchpad. Manage transfers, supply, and settings—all from a single platform. + + [:custom-arrow: Deploy via Launchpad](/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/) + - :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** --- @@ -11870,7 +12685,7 @@ This section provides information on installing Wormhole's Native Token Transfer --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/installation +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/installation/ --- BEGIN CONTENT --- --- title: Native Token Transfers Installation @@ -11929,7 +12744,7 @@ ntt update --path path/to/ntt/repo Git branch and local installations enable a fast iteration loop as changes to the CLI code will immediately be reflected in the running binary without having to run any build steps. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/ --- BEGIN CONTENT --- --- title: Native Token Transfers Post Deployment @@ -11972,7 +12787,7 @@ To offer the best user experience and ensure the most robust deployment, Wormhol --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting/ --- BEGIN CONTENT --- --- title: Troubleshooting NTT Deployment @@ -12080,7 +12895,7 @@ If you encounter issues during the NTT deployment process, check the following c ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs/ --- BEGIN CONTENT --- --- title: Native Token Transfers FAQs @@ -12209,7 +13024,7 @@ While xERC20 is an extension of the ERC20 standard, NTT is designed as a framewo To begin transferring tokens to a chain in burning mode when no tokens are locked, you must first send tokens to the NTT manager to back the supply. The address of the NTT manager can be found in the `deployment.json` file. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/index +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/ --- BEGIN CONTENT --- --- title: Native Token Transfers (NTT) @@ -12251,7 +13066,7 @@ This section provides comprehensive guidance on configuring, deploying, and mana --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers/ --- BEGIN CONTENT --- --- title: Managers and Transceivers @@ -12548,7 +13363,7 @@ Program log: Instruction: ReleaseInboundUnlock ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/settlement/faqs +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/faqs/ --- BEGIN CONTENT --- --- title: Wormhole Settlement FAQs @@ -12572,7 +13387,7 @@ After the user receives the token upfront, the execution of additional contract If the slippage tolerance is set too low, the user may receive USDC on the destination chain instead of the intended swap outcome. However, the four basis points (bps) fee is non-refundable, as the service provided by Liquidity Layer (LL) solvers (ensuring front-finality) is separate from the composing protocol's services, such as swaps or deposits. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/settlement/index +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/ --- BEGIN CONTENT --- --- title: Wormhole Settlement @@ -12606,7 +13421,7 @@ This section provides resources to build with Wormhole Settlement, including int --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer/ --- BEGIN CONTENT --- --- title: Wormhole Settlement Liquidity Layer @@ -12716,7 +13531,7 @@ function placeMarketOrder( The `placeMarketOrder` function returns a sequence number for the Wormhole Fill message. This function requires the caller to provide a `msg.value` equal to the amount returned by the `messageFee()` function on the `IWormhole.sol` interface. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/settlement/solver +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/solver/ --- BEGIN CONTENT --- --- title: Wormhole Settlement Solver @@ -12947,7 +13762,7 @@ This example solver does NOT do the following: - Add auctions to auction history. We recommend that after settling a complete auction (one that you have won), you write the auction pubkey to a database and have a separate process to add auction history entries to reclaim rent from these auction accounts. The auction history time delay is two hours after the VAA timestamp. This example does not prescribe any specific database, so add whichever you want --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/build/transfers/token-bridge +Doc-Content: https://wormhole.com/docs/build/transfers/token-bridge/ --- BEGIN CONTENT --- --- title: Get Started with Token Bridge @@ -13168,7 +13983,7 @@ For a deeper understanding of the Token Bridge implementation and to review the A practical implementation of the Wormhole Token Bridge can be seen in [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides an easy-to-use interface for transferring tokens across multiple blockchain networks. It leverages the Wormhole infrastructure to handle cross-chain asset transfers seamlessly, offering users a convenient way to bridge their assets while ensuring security and maintaining token integrity. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/index +Doc-Content: https://wormhole.com/docs/infrastructure/ --- BEGIN CONTENT --- --- title: Run Infrastructure Services @@ -13207,7 +14022,7 @@ Follow the guides in this section to learn how to run off-chain infrastructure s --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/relayers/index +Doc-Content: https://wormhole.com/docs/infrastructure/relayers/ --- BEGIN CONTENT --- --- title: Relayers @@ -13259,7 +14074,7 @@ description: Learn how to develop your own custom off-chain relaying service, gi [:custom-arrow: Learn more about relayers](/docs/learn/infrastructure/relayer/) -- :material-package-variant:{ .lg .middle } **Simplify the Development Process** +- :octicons-gear-16:{ .lg .middle } **Simplify the Development Process** --- @@ -13270,7 +14085,7 @@ description: Learn how to develop your own custom off-chain relaying service, gi --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/relayers/run-relayer +Doc-Content: https://wormhole.com/docs/infrastructure/relayers/run-relayer/ --- BEGIN CONTENT --- --- title: Run a Relayer @@ -13590,7 +14405,7 @@ await connection.confirmTransaction(txid); ``` --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/spy/index +Doc-Content: https://wormhole.com/docs/infrastructure/spy/ --- BEGIN CONTENT --- --- title: Spy @@ -13625,7 +14440,7 @@ description: Discover everything you need to about the Wormhole Spy, a daemon th [:custom-arrow: Learn more about Spies](/docs/learn/infrastructure/spy/) -- :material-package-variant:{ .lg .middle } **Interact with a Spy** +- :octicons-code-16:{ .lg .middle } **Interact with a Spy** --- @@ -13633,7 +14448,7 @@ description: Discover everything you need to about the Wormhole Spy, a daemon th [:custom-arrow: Use the Wormhole Spy SDK](https://github.com/wormhole-foundation/wormhole/blob/main/spydk/js/README.md){target=\_blank} -- :material-package-variant:{ .lg .middle } **Alternative Implementations** +- :octicons-bookmark-16:{ .lg .middle } **Alternative Implementations** --- @@ -13644,7 +14459,7 @@ description: Discover everything you need to about the Wormhole Spy, a daemon th --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/infrastructure/spy/run-spy +Doc-Content: https://wormhole.com/docs/infrastructure/spy/run-spy/ --- BEGIN CONTENT --- --- title: Run a Spy @@ -13728,7 +14543,7 @@ The Spy does not have a built-in persistence layer, so it is typically paired wi The persistence layer needs to implement the appropriate interface. For example, you can check out the [Redis interface](https://github.com/wormhole-foundation/relayer-engine/blob/main/relayer/storage/redis-storage.ts){target=\_blank} used by the Relayer Engine, a package that implements a client and persistence layer for messages received from a Spy subscription. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/glossary +Doc-Content: https://wormhole.com/docs/learn/glossary/ --- BEGIN CONTENT --- --- title: Glossary @@ -13804,7 +14619,7 @@ A Spy is a daemon that eavesdrops on the messages passed between Guardians, typi A daemon configured to monitor a blockchain node and observe messages emitted by the Wormhole contracts. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/governance/architecture +Doc-Content: https://wormhole.com/docs/learn/governance/architecture/ --- BEGIN CONTENT --- --- title: MultiGov Architecture @@ -13835,28 +14650,87 @@ Spoke chains handle local voting, forward votes to the hub, and execute approved - **`SpokeVoteAggregator`** - collects votes on the spoke chain and forwards them to the hub - **`SpokeMessageExecutor`** - receives and executes approved proposals from the hub - **`SpokeMetadataCollector`** - fetches proposal metadata from the hub for spoke chain voters - - **`SpokeAirlock`** - acts as governance's "admin" on the spoke, has permissions and its treasury + - **`SpokeAirlock`** - acts as governance's "admin" on the spoke, has permissions, and its treasury + +### Spoke Solana Staking Program + +The Spoke Solana Staking Program handles local voting from users who have staked W tokens or are vested in the program, forwards votes to the hub, and executes approved proposals from the hub for decentralized governance. + +The program implements its functionality through instructions, using specialized PDA accounts where data is stored. Below are the key accounts in the program: + + - **`GlobalConfig`** - global program configuration + - **`StakeAccountMetadata`** - stores user's staking information + - **`CustodyAuthority`** - PDA account managing custody and overseeing token operations related to stake accounts + - **`StakeAccountCustody`** - token account associated with a stake account for securely storing staked tokens + - **`CheckpointData`** - tracks delegation history + - **`SpokeMetadataCollector`** - collects and updates proposal metadata from the hub chain + - **`GuardianSignatures`** - stores guardian signatures for message verification + - **`ProposalData`** - stores data about a specific proposal, including votes and start time + - **`ProposalVotersWeightCast`** - tracks individual voter's weight for a proposal + - **`SpokeMessageExecutor`** - processes messages from a spoke chain via the Wormhole protocol + - **`SpokeAirlock`** - manages PDA signing and seed validation for secure instruction execution + - **`VestingBalance`** - stores total vesting balance and related staking information of a vester + - **`VestingConfig`** - defines vesting configuration, including mint and admin details + - **`Vesting`** - represents individual vesting allocations with maturation data + - **`VoteWeightWindowLengths`** - tracks lengths of vote weight windows + +Each account is implemented as a Solana PDA (Program Derived Address) and utilizes Anchor's account framework for serialization and management. ## System Workflow -The MultiGov system workflow details the step-by-step process for creating, voting on and executing governance proposals across connected chains, from proposal creation to final cross-chain execution. +The MultiGov system workflow details the step-by-step process for creating, voting on, and executing governance proposals across connected chains, from proposal creation to final cross-chain execution. + +### EVM Governance Workflow + +The EVM-based MultiGov workflow follows these steps: + +1. **Proposal creation**: + 1. A user creates a proposal through the `HubEvmSpokeAggregateProposer`, which checks eligibility across chains, or directly on the `HubGovernor` via the `propose` method + 2. The proposal is submitted to the `HubGovernor` if the user meets the proposal threshold +2. **Proposal metadata distribution**: + 1. `HubProposalMetadata` creates a custom view method to be queried for use in the `SpokeMetadataCollector` + 2. `SpokeMetadataCollector` on each spoke chain queries `HubProposalMetadata` for proposal details +3. **Voting process**: + 1. Users on spoke chains vote through their respective `SpokeVoteAggregators` + 2. `SpokeVoteAggregators` send aggregated votes to the `HubVotePool` via Wormhole + 3. `HubVotePool` submits the aggregated votes to the `HubGovernor` +4. **Vote tallying and proposal execution**: + 1. `HubGovernor` tallies votes from all chains + 2. If a quorum is reached and there are more for votes than against votes, the vote passes and is queued for execution + 3. After the timelock delay, the proposal can be executed on the hub chain + 4. For cross-chain actions, a proposal should call the `dispatch` method in the `HubMessageDispatcher`, which sends execution messages to the relevant spoke chains + 5. `SpokeMessageExecutors` on each spoke chain receive and execute the approved actions through their respective `SpokeAirlocks` + +### Solana Governance Workflow + +The Solana-based MultiGov workflow follows these steps: 1. **Proposal creation**: - - A user creates a proposal through the `HubEvmSpokeAggregateProposer`, which checks eligibility across chains, or directly on the `HubGovernor` via the `propose` method - - The proposal is submitted to the `HubGovernor` if the user meets the proposal threshold -1. **Proposal metadata distribution**: - - `HubProposalMetadata` creates a custom view method to be queried for use in the `SpokeMetadataCollector` - - `SpokeMetadataCollector` on each spoke chain queries `HubProposalMetadata` for proposal details -1. **Voting process**: - - Users on spoke chains vote through their respective `SpokeVoteAggregators` - - `SpokeVoteAggregators` send aggregated votes to the `HubVotePool` via Wormhole - - `HubVotePool` submits the aggregated votes to the `HubGovernor` -1. **Vote tallying and proposal execution**: - - `HubGovernor` tallies votes from all chains - - If a quorum is reached and there are more for votes than against votes, the vote passes and is queued for execution - - After the timelock delay, the proposal can be executed on the hub chain - - For cross-chain actions, a proposal should call the `dispatch` method in the `HubMessageDispatcher`, which sends execution messages to the relevant spoke chains - - `SpokeMessageExecutors` on each spoke chain receive and execute the approved actions through their respective `SpokeAirlocks` + 1. A user creates a proposal on `HubGovernor` by calling the `propose` method, provided they meet the proposal threshold + 2. For the proposal to be executed on the Solana blockchain, a `SolanaPayload` must be generated and included in the `calldata` parameter of the `propose` function + 3. The `SolanaPayload` contains encoded details specifying which instructions will be executed and which Solana program is responsible for execution + +2. **Proposal metadata distribution**: + 1. A user queries `getProposalMetadata` from `HubProposalMetadata` via the Wormhole query system to create a proposal on the **Spoke Solana Chain Staking Program** + 2. The retrieved metadata is used in the `AddProposal` instruction in the Solana program + 3. The proposal data is verified to ensure it matches the expected format + 4. Guardian signatures are posted using the `PostSignatures` instruction + 5. Once validated, the proposal is stored on-chain + +3. **Voting process**: + 1. Users vote on proposals stored in the `ProposalData` account on Solana + 2. The `CastVote` instruction records their choice (`for_votes`, `against_votes`, or `abstain_votes`) + 3. Eligibility and vote weight are verified using historical voter checkpoint data + 4. A **Query Wormhole** request retrieves vote data from a Solana PDA + 5. The signed response from Wormhole guardians is submitted to the `HubVotePool` on Ethereum for verification + 6. The `crossChainVote` function in `HubVotePool` processes the validated response and forwards the aggregated vote data to the `HubGovernor` to finalize the decision + +4. **Vote tallying and proposal execution**: + 1. `HubGovernor` tallies votes from all chains + 2. If a quorum is reached with more **for votes** than **against votes**, the proposal passes and is queued for execution + 3. After the timelock delay, the proposal can be executed either on the hub chain or another chain + 4. For cross-chain execution involving Solana, the proposal calls the `dispatch` method in `HubSolanaMessageDispatcher`, which sends execution messages to Solana + 5. On Solana, the `ReceiveMessage` instruction processes the approved message, and the `SpokeAirlock` executes the corresponding instructions ## Cross-Chain Communication @@ -13877,7 +14751,7 @@ This architecture ensures that MultiGov can operate securely and efficiently acr ![detailed multigov architecture diagram](/docs/images/learn/governance/multigov-detailed.webp) --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/governance/faq +Doc-Content: https://wormhole.com/docs/learn/governance/faq/ --- BEGIN CONTENT --- --- title: MultiGov Theoretical FAQs @@ -13906,7 +14780,7 @@ The main components of MultiGov include: - **Governance token** - allows holders to participate in governance across all integrated chains --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/governance/index +Doc-Content: https://wormhole.com/docs/learn/governance/ --- BEGIN CONTENT --- --- title: Learn about MultiGov @@ -13933,7 +14807,7 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove --- - Discover an overview of MultiGov's hub-and-spoke architecture, including how it enables cross-chain governance by coordinating decision-making across blockchain. + Discover MultiGov's hub-and-spoke architecture, enabling EVM and Solana cross-chain governance through coordinated decision-making. [:custom-arrow: Learn about MultiGov architecture](/docs/learn/governance/architecture/) @@ -13986,7 +14860,7 @@ Discover everything you need to know about MultiGov, Wormhole's cross-chain gove --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/governance/overview +Doc-Content: https://wormhole.com/docs/learn/governance/overview/ --- BEGIN CONTENT --- --- title: MultiGov Overview @@ -14027,7 +14901,7 @@ For a deeper understanding of the system's structure and how the components inte ![High-level architecture diagram illustrating the hub-and-spoke structure of the MultiGov system. The diagram shows three key components: Hub Chain and two Spoke Chains, interconnected via Wormhole for cross-chain governance.](/docs/images/learn/governance/multigov-high-level.webp) --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/index +Doc-Content: https://wormhole.com/docs/learn/ --- BEGIN CONTENT --- --- title: Learn about Wormhole @@ -14062,7 +14936,7 @@ This section offers informational content on Wormhole, covering its architecture --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/infrastructure/architecture +Doc-Content: https://wormhole.com/docs/learn/infrastructure/architecture/ --- BEGIN CONTENT --- --- title: Architecture @@ -14105,7 +14979,7 @@ The diagram outlines the end-to-end flow of cross-chain communication through Wo - **Custom relayers** - relayers that only handle VAAs for a specific protocol or cross-chain application. They can execute custom logic off-chain, reducing gas costs and increasing cross-chain compatibility. Currently, cross-chain application developers are responsible for developing and hosting custom relayers --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/infrastructure/core-contracts +Doc-Content: https://wormhole.com/docs/learn/infrastructure/core-contracts/ --- BEGIN CONTENT --- --- title: Core Contracts @@ -14169,7 +15043,7 @@ This doesn't mean an application _cannot_ specify a destination address or cha Because the VAA creation is separate from relaying, the multicast model does not incur an additional cost when a single chain is targeted. If the data isn't needed on a certain blockchain, don't relay it there, and it won't cost anything. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/infrastructure/guardians +Doc-Content: https://wormhole.com/docs/learn/infrastructure/guardians/ --- BEGIN CONTENT --- --- title: Guardians @@ -14243,7 +15117,7 @@ However, once all the full nodes are running, the Guardian Network's actual comp Over time, the Guardian Set can be expanded beyond 19 using threshold signatures. Various relaying models will emerge, each with their own strengths and weaknesses. ZKPs can be used on chains where they are well-supported. The cross-chain application ecosystem will grow, and cross-chain applications will become increasingly intermingled. There are very few APIs in Wormhole, and most items are implementation details from the integrator perspective. This creates a clear pathway towards a fully trustless interoperability layer that spans decentralized computing. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/infrastructure/index +Doc-Content: https://wormhole.com/docs/learn/infrastructure/ --- BEGIN CONTENT --- --- title: Infrastructure Components @@ -14320,7 +15194,7 @@ This section provides a closer look at the core components that power Wormhole's --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/infrastructure/relayer +Doc-Content: https://wormhole.com/docs/learn/infrastructure/relayer/ --- BEGIN CONTENT --- --- title: Relayers @@ -14437,7 +15311,7 @@ The Wormhole relayer integration involves two key steps: - Support may not be available for all chains --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/infrastructure/spy +Doc-Content: https://wormhole.com/docs/learn/infrastructure/spy/ --- BEGIN CONTENT --- --- title: Spy @@ -14476,7 +15350,7 @@ For more information, you can check out the following resources: - To find out how to [start and run a Spy](/docs/infrastructure/spy/run-spy/){target=\_blank}, refer to the infrastructure section. This setup enables integrators to create a custom endpoint that applications can use to observe message flows in the Guardian Network, providing greater flexibility and control over cross-chain monitoring --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/infrastructure/vaas +Doc-Content: https://wormhole.com/docs/learn/infrastructure/vaas/ --- BEGIN CONTENT --- --- title: VAAs @@ -14670,7 +15544,7 @@ With the concepts now defined, it is possible to illustrate what a full flow for ![Lifetime of a message diagram](/docs/images/learn/infrastructure/vaas/lifetime-vaa-diagram.webp) --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/introduction +Doc-Content: https://wormhole.com/docs/learn/introduction/ --- BEGIN CONTENT --- --- title: Introduction to Wormhole @@ -14795,7 +15669,7 @@ Wormhole supports a growing number of blockchains. :material-file-document: Developer Docs
:octicons-package-16: Block ExplorerHyperEVMEVM:x::white_check_mark: :material-web: Website
- :material-file-document: Developer Docs
InkEVM:x::white_check_mark: + :material-file-document: Developer Docs
InkEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerKaiaEVM:white_check_mark::white_check_mark: @@ -14826,10 +15700,7 @@ Wormhole supports a growing number of blockchains. :octicons-package-16: Block ExplorerPolygonEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerRootstockEVM:white_check_mark::white_check_mark: - :material-web: Website
- :material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerScrollEVM:white_check_mark::white_check_mark: + :octicons-package-16: Block ExplorerScrollEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerSeievmEVM:x::white_check_mark:SNAXchainEVM:white_check_mark::white_check_mark: @@ -14893,7 +15764,7 @@ Wormhole supports a growing number of blockchains.
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
+ :octicons-package-16: Block ExplorerMovementMove VM:x::white_check_mark: ### NEAR VM @@ -14913,7 +15784,7 @@ Wormhole supports a growing number of blockchains. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/security +Doc-Content: https://wormhole.com/docs/learn/security/ --- BEGIN CONTENT --- --- title: Security @@ -15023,7 +15894,7 @@ For more information about submitting to the bug bounty programs, refer to the [ The [SECURITY.md](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md){target=\blank} from the official repository has the latest security policies and updates. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/cctp +Doc-Content: https://wormhole.com/docs/learn/transfers/cctp/ --- BEGIN CONTENT --- --- title: Circle's CCTP Bridge @@ -15072,7 +15943,7 @@ The ability to perform native gas drop off addresses the common issue where a us --> --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/index +Doc-Content: https://wormhole.com/docs/learn/transfers/ --- BEGIN CONTENT --- --- title: Messaging Protocols @@ -15111,10 +15982,18 @@ This section covers various aspects and services related to communication protoc [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/) +- :octicons-book-16:{ .lg .middle } **Settlement** + + --- + + Learn about Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. + + [:custom-arrow: Learn more about Settlement](/docs/learn/transfers/settlement/) + --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/architecture +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/architecture/ --- BEGIN CONTENT --- --- title: Native Token Transfers Architecture @@ -15236,7 +16115,7 @@ Finally, after the message is verified and attested to, the tokens can be either In both cases, once the tokens have been released, the transfer process is complete, and the recipient receives the tokens. Events are emitted to indicate that the transfer has been fully redeemed. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/deployment +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/deployment/ --- BEGIN CONTENT --- --- title: Native Token Transfers - Deployment Models @@ -15268,7 +16147,7 @@ This model best suits new token deployments or projects willing to upgrade exist - **Destination chain** - equivalent tokens are minted on the destination chain --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/index +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/ --- BEGIN CONTENT --- --- title: A Quick Look at Native Token Transfers @@ -15342,7 +16221,7 @@ Ready to dive in and start building? Check out the following resources to begin --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview/ --- BEGIN CONTENT --- --- title: Native Token Transfers Overview @@ -15414,7 +16293,7 @@ The Token Bridge offers a secure, low-effort integration suitable for applicatio Native Token Transfers (NTT) in Wormhole primarily support **ERC-20 tokens**, the most widely used standard for fungible tokens on the Ethereum network and other EVM-compatible blockchains. The NttManager contract leverages the IERC20 interface and SafeERC20 utility from OpenZeppelin to ensure secure and efficient token transfers. Additionally, it supports ERC-20 Burnable tokens, allowing tokens to be burned on the source chain when needed for cross-chain transfers. At this time, NTT focuses on ERC-20 tokens, and other token standards, such as ERC-721 (non-fungible tokens) or ERC-1155 (multi-token standard), are not natively supported. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/security +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/security/ --- BEGIN CONTENT --- --- title: Native Token Transfers Security @@ -15445,14 +16324,14 @@ The registry component of the NTT system is crucial for maintaining a trusted li This governance model ensures that the system remains secure while being adaptable to new requirements in any environment where it is deployed. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/architecture +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/architecture/ --- BEGIN CONTENT --- --- -title: Settlement Protocol Architectures +title: Settlement Protocol Architecture description: Explore Wormhole Settlement's native swap protocols—Liquidity Layer, Mayan Swift, and MCTP—for scalable, efficient cross-chain asset transfers. --- -# Settlement Protocol Architectures +# Settlement Protocol Architecture ## Introduction @@ -15468,7 +16347,7 @@ Wormhole Liquidity Layer is a cross-chain transfer protocol that enables faster- Solvers concentrate their liquidity entirely on Solana, where they participate in permissionless on-chain English auctions (open ascending-price auctions where bidders publicly raise bids until only one bidder remains) to fulfill each cross-chain transfer. Upon the conclusion of each auction, the winning solver initiates a transfer from Solana to the specified destination chain. The solver rebalances inventory once the originating source chain transaction reaches finality and arrives to Solana. -![Wormhole Settlments Liquidity layer architecture diagram: source chain to hub to destination chain](/docs/images/learn/transfers/settlement/settlement-overview.webp) +![Wormhole Settlments Liquidity layer architecture diagram: source chain to hub to destination chain](/docs/images/learn/transfers/settlement/architecture/architecture-1.webp) The Wormhole Liquidity Layer serves as the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems by enabling protocols to bundle call data containing arbitrary protocol actions, which can be executed atomically alongside each transfer. This feature allows developers to create fully chain-abstracted user experiences, including constructing natively cross-chain decentralized exchanges (DEXs), borrow-lend protocols, payment protocols, and other applications atop this layer. @@ -15510,7 +16389,7 @@ First, they lack a competitive price discovery mechanism as limit order prices a Mayan Swift addresses these limitations by implementing competitive on-chain English auctions on Solana as an embedded price discovery mechanism, fundamentally shifting solver competition from speed-based to price-based execution. Through this architecture, the solver offering the best possible price secures the right to fulfill the order within pre-specified deadline parameters. -![Mayan Swift - Intent-centric design](/docs/images/learn/transfers/settlement/mayan-swift.webp) +![Mayan Swift - Intent-centric design](/docs/images/learn/transfers/settlement/architecture/architecture-2.webp) ### Protocol Flow: How It Works @@ -15529,7 +16408,7 @@ Mayan Swift addresses these limitations by implementing competitive on-chain Eng Mayan MCTP is a cross-chain intents protocol that leverages Circle's CCTP (Cross-Chain Transfer Protocol) mechanism and Wormhole messaging to enable secure, fee-managed asset transfers across chains. -![Mayan MCTP diagram](/docs/images/learn/transfers/settlement/mayan-mctp.webp) +![Mayan MCTP diagram](/docs/images/learn/transfers/settlement/architecture/architecture-3.webp) ### Protocol Flow: How It Works @@ -15551,7 +16430,7 @@ The protocol provides mechanisms for unlocking the fee once the bridging process - To learn how ot integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/index +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/ --- BEGIN CONTENT --- --- title: Wormhole Settlement @@ -15585,7 +16464,7 @@ This section covers Wormhole Settlement, an intent-based solution enabling fast --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/overview +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/overview/ --- BEGIN CONTENT --- --- title: Wormhole Settlement Overview @@ -15632,7 +16511,7 @@ Due to the hub-spoke model of liquidity, new chains without proven traction can - To learn more about the architecture of Wormhole-native swap protocols, see the [Settlement Protocol Architectures](/docs/learn/transfers/settlement/architecture/){target=\_blank} page --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/learn/transfers/token-bridge +Doc-Content: https://wormhole.com/docs/learn/transfers/token-bridge/ --- BEGIN CONTENT --- --- title: Token Bridge @@ -15701,7 +16580,7 @@ The [Wormhole Guardian Network](/docs/learn/infrastructure/guardians/#guardian-n A real-world example of Wormhole's Token Bridge in action is the [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides users with a simple interface to transfer tokens across multiple blockchains. Using the Wormhole infrastructure, Portal Bridge guarantees secure and seamless cross-chain transfers, making it easier for users to move assets between different blockchain ecosystems. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/connect/index +Doc-Content: https://wormhole.com/docs/tutorials/by-product/connect/ --- BEGIN CONTENT --- --- title: Wormhole Connect Tutorials @@ -15739,7 +16618,7 @@ Wormhole Connect makes it simple to link your application to multiple blockchain --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/connect/react-dapp +Doc-Content: https://wormhole.com/docs/tutorials/by-product/connect/react-dapp/ --- BEGIN CONTENT --- --- title: Integrate Connect into a React DApp Tutorial @@ -15923,7 +16802,7 @@ By following these steps, you've learned how to: With these tools and knowledge, you’re now equipped to build powerful cross-chain applications using Wormhole Connect, opening up possibilities for users to move assets across ecosystems securely and efficiently. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-contracts +Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/ --- BEGIN CONTENT --- --- title: Create Cross-Chain Contracts @@ -16856,7 +17735,7 @@ You're now fully equipped to build cross-chain contracts using the Wormhole prot - Monitor the status of your cross-chain transactions using the Wormhole Explorer and Wormhole-Solidity-SDK --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts +Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/ --- BEGIN CONTENT --- --- title: Cross-Chain Token Transfers @@ -18464,7 +19343,7 @@ Congratulations! You've successfully built and deployed a cross-chain token tran - Write deployment scripts to manage and deploy contracts on different networks --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/index +Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/ --- BEGIN CONTENT --- --- title: Cross-Chain Contract Integration Tutorials @@ -18510,7 +19389,7 @@ Expand the reach of your decentralized applications by building smart contracts --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/index +Doc-Content: https://wormhole.com/docs/tutorials/by-product/ --- BEGIN CONTENT --- --- title: Tutorials by Product @@ -18566,7 +19445,7 @@ In this section, you'll find tutorials focused on individual Wormhole products. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/multichain-assets/index +Doc-Content: https://wormhole.com/docs/tutorials/by-product/multichain-assets/ --- BEGIN CONTENT --- --- title: Multichain Assets Tutorials @@ -18590,7 +19469,7 @@ Multichain assets, often represented as wrapped tokens, enable seamless cross-ch --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/multichain-assets/multichain-token +Doc-Content: https://wormhole.com/docs/tutorials/by-product/multichain-assets/multichain-token/ --- BEGIN CONTENT --- --- title: Create Multichain Tokens @@ -18686,7 +19565,7 @@ It is recommended that you update your token’s metadata on blockchain explorer 5. Once the step above is completed, follow the [instructions to update token information](https://info.etherscan.com/how-to-update-token-information-on-token-page/){target=\_blank} --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/multigov/index +Doc-Content: https://wormhole.com/docs/tutorials/by-product/multigov/ --- BEGIN CONTENT --- --- title: Step-by-Step MultiGov Tutorials @@ -18735,7 +19614,7 @@ Welcome to the MultiGov tutorials section. In this section, you will find tutori --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/multigov/treasury-proposal +Doc-Content: https://wormhole.com/docs/tutorials/by-product/multigov/treasury-proposal/ --- BEGIN CONTENT --- --- title: MultiGov Guides @@ -18951,7 +19830,190 @@ governor.execute(targets, values, calldatas, descriptionHash); Once the proposal is executed, the encoded messages will be dispatched via Wormhole to the spoke chains, where the Optimism and Arbitrum treasuries will receive their respective funds. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/index +Doc-Content: https://wormhole.com/docs/tutorials/by-product/settlements/.index/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlements +description: Follow step-by-step tutorials to integrate Wormhole Settlement Routes using the SDK for seamless cross-chain swaps and efficient asset transfers. +--- + +# Wormhole Settlements + +This section provides hands-on tutorials to help you integrate Wormhole Settlement Routes into your application. Learn how to use the SDK to manage cross-chain swaps, optimize fees, and streamline transaction execution. + +
+ +- :octicons-repo-16:{ .lg .middle } **Integrate Wormhole Settlement Routes using the SDK** + + --- + + Learn how to integrate Wormhole Settlement Routes using the SDK to simplify cross-chain swaps, manage fees, and execute seamless transactions. + + [:custom-arrow: Integrate Settlement Routes](/docs/tutorials/by-product/settlements/settlement-routes/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/settlements/.settlement-routes/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlements +description: Learn how to integrate Wormhole Settlement Routes using the SDK to simplify cross-chain swaps, manage fees, and execute seamless transactions. +--- + +# Integrate Wormhole Settlement Routes Using the SDK + +## Introduction + +This guide explains integrating Wormhole Settlement Routes from the Wormhole SDK into your application. These Routes abstract the complexity of cross-chain token swaps by handling route discovery, fee estimation, and transaction construction, all useful for dApps seeking to embed cross-chain swaps. By following this tutorial you will install the Wormhole SDK Route package, configure and execute a swap, and explore error handling and troubleshooting. + +## Prerequisites + +Before beginning this project, make sure you have the following: + +- **Wormhole SDK Route package** - installed using your preferred package manager + + To install the package with npm, run the following command in your terminal: + + ```sh + npm install @mayan-finance/wormhole-sdk-route + ``` + + Alternatively, clone the repository and install dependencies: + + ```sh + git clone https://github.com/mayan-finance/wormhole-sdk-route.git + cd wormhole-sdk-route + npm install + ``` + +- **Data for parameters** - you will need: + + - [Chain IDs](/docs/build/reference/chain-ids/){target=\_blank} for the source and destination chains + - An contract address for the token you want to swap and the token you want to receive on the destination chain + +## Configure and Setup + +To initiate a swap, you must create a configuration object that specifies all required parameters. These typically include: + +- `sourceChain` - identifier for the chain where the swap begins +- `destinationChain` - identifier for the target chain +- `inputTokenAddress` - address of the token you want to swap +- `outputTokenAddress` - identifier/address of the desired token on the destination chain +- `amount` - the amount to swap (expressed in the smallest unit, e.g., wei for Ethereum) +- `slippageTolerance` - acceptable percentage of slippage (e.g., 0.005 for 0.5%) + +```ts +import { SwapRoute, SwapRouteConfig } from '@mayan-finance/wormhole-sdk-route'; + +const config: SwapRouteConfig = { + sourceChain: 'ethereum', + destinationChain: 'solana', + inputTokenAddress: '0xYourInputTokenAddress', + outputTokenAddress: 'So11111111111111111111111111111111111111112', // Example token on Solana + amount: '1000000000000000000', // For instance, 1 token in wei + slippageTolerance: 0.005, // 0.5% slippage tolerance + // Additional parameters may be included as needed +}; + +const swapRoute = new SwapRoute(config); +``` + +## Execute a Swap + +Once the configuration is complete, the next steps are to retrieve the optimal swap route and execute the transaction. + +### Fetch the Swap Route + +Before sending a transaction, fetch the optimal swap route to review details such as fees and expected outputs: + +```ts +async function getSwapDetails() { + try { + const routeDetails = await swapRoute.getRoute(); + console.log('Optimal Swap Route:', routeDetails); + return routeDetails; + } catch (error) { + console.error('Error fetching swap route:', error); + throw error; + } +} + +getSwapDetails(); +``` + +### Execute the Swap Transaction + +Once the route is confirmed, execute the swap: + +```ts +async function executeSwap() { + try { + const txResponse = await swapRoute.executeSwap(); + console.log('Swap executed successfully:', txResponse); + // Further transaction handling (e.g., waiting for confirmation) can be added here. + } catch (error) { + console.error('Swap execution failed:', error); + } +} + +executeSwap(); +``` + +## Complete Example Integration + +Below is a complete example that puts together configuration, route fetching, and swap execution: + +```ts +import { SwapRoute, SwapRouteConfig } from '@mayan-finance/wormhole-sdk-route'; + +async function performSwap() { + // Configure the swap parameters + const config: SwapRouteConfig = { + sourceChain: 'ethereum', + destinationChain: 'solana', + inputTokenAddress: '0xYourInputTokenAddress', + outputTokenAddress: 'So11111111111111111111111111111111111111112', + amount: '1000000000000000000', + slippageTolerance: 0.005, + // Include additional settings as needed + }; + + // Initialize the swap route + const swapRoute = new SwapRoute(config); + + try { + // Retrieve the optimal swap route details + const routeDetails = await swapRoute.getRoute(); + console.log('Optimal Swap Route:', routeDetails); + + // Execute the swap transaction + const txResponse = await swapRoute.executeSwap(); + console.log('Swap Transaction Response:', txResponse); + } catch (error) { + console.error('An error occurred during the swap process:', error); + } +} + +performSwap(); +``` + +## Error Handling and Troubleshooting + +- **Route fetching errors** - ensure all configuration parameters (chain IDs, token addresses, amounts) are correct and that network endpoints are reachable +- **Transaction execution errors** - verify that the connected wallet has sufficient funds and that transaction parameters meet the network’s requirements. Detailed logging can assist with troubleshooting +- **Miscellaneous** - to pass a `ReferrerAddress` to the initiation functions, you can create a class that extends the `MayanRoute` class. Override the `referrerAddress` method to return addresses by platform, as shown in this example: + + ```ts + class MayanRefRoute extends MayanRoute { + override referrerAddress(): ReferrerAddresses | undefined { + return { evm: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbe" }; + } + } + ``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/ --- BEGIN CONTENT --- --- title: Wormhole SDK Tutorials @@ -18997,7 +20059,7 @@ The Wormhole SDK provides the essential building blocks for creating robust cros --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge +Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/ --- BEGIN CONTENT --- --- title: Transfer Tokens via Token Bridge Tutorial @@ -19805,7 +20867,7 @@ You've successfully built a cross-chain token transfer application using Wormhol The same transfer logic will apply if you’d like to extend this application to different chain combinations, including EVM-compatible chains. --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp +Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp/ --- BEGIN CONTENT --- --- title: Transfer USDC via CCTP and Wormhole SDK @@ -20319,7 +21381,7 @@ By following these steps, you've learned how to: - Recover and complete incomplete transfers using the transaction hash and the destination chain’s signer --- END CONTENT --- -Doc-Content: https://wormhole.com/docs/tutorials/index +Doc-Content: https://wormhole.com/docs/tutorials/ --- BEGIN CONTENT --- --- title: Tutorials diff --git a/scripts/generate_llms.py b/scripts/generate_llms.py index 9f32c7a6f..020252c99 100644 --- a/scripts/generate_llms.py +++ b/scripts/generate_llms.py @@ -1,19 +1,21 @@ -import os -import re - # Wormhole-specific input docs_repo = 'wormhole-docs' docs_url = 'https://wormhole.com/docs/' +import yaml +import os +import re +import requests + # Set the base directory to the root of docs base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) docs_dir = os.path.join(base_dir, docs_repo) +yaml_dir = os.path.join(base_dir, docs_repo, 'variables.yml') output_file = os.path.join(docs_dir, 'llms.txt') snippet_dir = os.path.join(docs_dir, '.snippets') -# Regex to find lines like: --8<-- 'code/build/applications/...' -SNIPPET_REGEX = r"--8<--\s*['\"]([^'\"]+)['\"]" - +# Regex to find lines like: --8<-- 'code/build/applications/...' and --8<-- 'http....' +SNIPPET_REGEX = r"--8<--\s*['\"](https?://[^'\"]+|[^'\"]+)['\"]" def get_all_markdown_files(directory): """ @@ -34,6 +36,10 @@ def get_all_markdown_files(directory): if '.github' in root.split(os.sep): continue + # Skip 'node_modules' + if 'node_modules' in root.split(os.sep): + continue + for file in files: if file.endswith(('.md', '.mdx')): results.append(os.path.join(root, file)) @@ -55,7 +61,12 @@ def build_index_section(files): doc_url_path = re.sub(r'\.(md|mdx)$', '', relative_path) doc_url = f"{docs_url}{doc_url_path}" - section += f"Doc-Page: {doc_url}\n" + + # Remove trailing /index from doc_url + if doc_url.endswith('/index'): + doc_url = doc_url[:-6] + + section += f"Doc-Page: {doc_url}/\n" return section @@ -70,29 +81,100 @@ def parse_line_range(snippet_path): return file_only, line_start, line_end -def replace_snippet_placeholders(markdown, snippet_directory): +def replace_snippet_placeholders(markdown, snippet_directory, yaml_file): def replacement(match): snippet_ref = match.group(1) - file_only, line_start, line_end = parse_line_range(snippet_ref) - absolute_snippet_path = os.path.join(snippet_directory, file_only) - if not os.path.exists(absolute_snippet_path): - print(f"Snippet file not found: {absolute_snippet_path}. Leaving placeholder unchanged.") - return match.group(0) + # Handle local file or remote GitHub snippet + if snippet_ref.startswith("http"): + return fetch_remote_snippet(snippet_ref, yaml_file) + else: + return fetch_local_snippet(snippet_ref, snippet_directory) - with open(absolute_snippet_path, 'r', encoding='utf-8') as snippet_file: - snippet_content = snippet_file.read() + return re.sub(SNIPPET_REGEX, replacement, markdown) - if line_start is not None and line_end is not None: - lines = snippet_content.split('\n') - snippet_content = '\n'.join(lines[line_start:line_end]) - return snippet_content.strip() +def fetch_local_snippet(snippet_ref, snippet_directory): + file_only, line_start, line_end = parse_line_range(snippet_ref) + absolute_snippet_path = os.path.join(snippet_directory, file_only) - return re.sub(SNIPPET_REGEX, replacement, markdown) + if not os.path.exists(absolute_snippet_path): + print(f"Snippet file not found: {absolute_snippet_path}. Leaving placeholder unchanged.") + return snippet_ref + + with open(absolute_snippet_path, 'r', encoding='utf-8') as snippet_file: + snippet_content = snippet_file.read() + + if line_start is not None and line_end is not None: + lines = snippet_content.split('\n') + snippet_content = '\n'.join(lines[line_start:line_end]) + + return snippet_content.strip() + +def fetch_remote_snippet(snippet_ref, yaml_data): + # Match URL with optional line range (start:end) + match = re.match(r'^(https?://[^:]+)(?::(\d+))?(?::(\d+))?$', snippet_ref) + + if not match: + print(f"Invalid snippet reference format: {snippet_ref}") + return f"Invalid snippet reference: {snippet_ref}" + + url = match.group(1) + line_start = int(match.group(2)) if match.group(2) else None + line_end = int(match.group(3)) if match.group(3) else None + + # Resolve any template placeholders using the yaml_data + url = resolve_placeholders(url, yaml_data) + #print(f"{url}") + #print(f"{line_start}") + #print(f"{line_end}") -def build_content_section(files): + # Skip URLs containing unresolved template placeholders + if "{{" in url: + print(f"Skipping snippet with unresolved template: {url}") + return f"Unresolved template: {url}" + + try: + response = requests.get(url) + response.raise_for_status() + snippet_content = response.text + + # Extract specific lines if requested + if line_start is not None and line_end is not None: + lines = snippet_content.split('\n') + snippet_content = '\n'.join(lines[line_start-1:line_end]) + + return snippet_content.strip() + except requests.RequestException as e: + print(f"Failed to fetch snippet from {url}: {e}") + return f"Error fetching snippet from {url}" + +def resolve_placeholders(text, data): + # Replace placeholders like {{dependencies.asset_transfer_api.version}} + while True: + match = re.search(r'{{(.*?)}}', text) + if not match: + break + key_path = match.group(1).strip() + value = get_value_from_path(data, key_path) + if value is None: + print(f"Warning: Unresolved key path {key_path} in {text}") + break + text = text.replace(match.group(0), str(value)) + return text + + +def get_value_from_path(data, path): + keys = path.split('.') + value = data + for key in keys: + if key not in value: + return None + value = value[key] + return value + +def build_content_section(files,yaml_file): section = "\n# Full content for each doc page\n\n" for file in files: @@ -105,22 +187,30 @@ def build_content_section(files): doc_url_path = re.sub(r'\.(md|mdx)$', '', relative_path) doc_url = f"{docs_url}{doc_url_path}" + # Remove trailing /index from doc_url + if doc_url.endswith('/index'): + doc_url = doc_url[:-6] + with open(file, 'r', encoding='utf-8') as file_content: content = file_content.read() # Replace snippet placeholders - content = replace_snippet_placeholders(content, snippet_dir) + content = replace_snippet_placeholders(content, snippet_dir, yaml_file) - section += f"Doc-Content: {doc_url}\n" + section += f"Doc-Content: {doc_url}/\n" section += "--- BEGIN CONTENT ---\n" section += content.strip() section += "\n--- END CONTENT ---\n\n" return section +def load_yaml(yaml_file): + with open(yaml_file, "r", encoding="utf-8") as file: + return yaml.safe_load(file) def main(): files = get_all_markdown_files(docs_dir) + yaml_file = load_yaml(yaml_dir) # Header llms_content = "# llms.txt\n" @@ -131,7 +221,7 @@ def main(): llms_content += build_index_section(files) # Add the full content - llms_content += build_content_section(files) + llms_content += build_content_section(files, yaml_file) # Write to llms.txt with open(output_file, 'w', encoding='utf-8') as output: diff --git a/tutorials/by-product/.pages b/tutorials/by-product/.pages index 17cd53b8f..8dd5acf14 100644 --- a/tutorials/by-product/.pages +++ b/tutorials/by-product/.pages @@ -7,3 +7,4 @@ nav: - multigov - wormhole-sdk - multichain-assets +# - settlements diff --git a/tutorials/by-product/settlements/.index.md b/tutorials/by-product/settlements/.index.md new file mode 100644 index 000000000..fc7ab10af --- /dev/null +++ b/tutorials/by-product/settlements/.index.md @@ -0,0 +1,20 @@ +--- +title: Wormhole Settlements +description: Follow step-by-step tutorials to integrate Wormhole Settlement Routes using the SDK for seamless cross-chain swaps and efficient asset transfers. +--- + +# Wormhole Settlements + +This section provides hands-on tutorials to help you integrate Wormhole Settlement Routes into your application. Learn how to use the SDK to manage cross-chain swaps, optimize fees, and streamline transaction execution. + +
+ +- :octicons-repo-16:{ .lg .middle } **Integrate Wormhole Settlement Routes using the SDK** + + --- + + Learn how to integrate Wormhole Settlement Routes using the SDK to simplify cross-chain swaps, manage fees, and execute seamless transactions. + + [:custom-arrow: Integrate Settlement Routes](/docs/tutorials/by-product/settlements/settlement-routes/) + +
\ No newline at end of file diff --git a/tutorials/by-product/settlements/.pages b/tutorials/by-product/settlements/.pages new file mode 100644 index 000000000..33d1ec4a3 --- /dev/null +++ b/tutorials/by-product/settlements/.pages @@ -0,0 +1,5 @@ +title: Wormhole Settlements +nav: + - index.md + - 'Integrate Settlement Routes using the SDK': 'settlement-routes.md' + diff --git a/tutorials/by-product/settlements/.settlement-routes.md b/tutorials/by-product/settlements/.settlement-routes.md new file mode 100644 index 000000000..9a0fd7fa3 --- /dev/null +++ b/tutorials/by-product/settlements/.settlement-routes.md @@ -0,0 +1,156 @@ +--- +title: Wormhole Settlements +description: Learn how to integrate Wormhole Settlement Routes using the SDK to simplify cross-chain swaps, manage fees, and execute seamless transactions. +--- + +# Integrate Wormhole Settlement Routes Using the SDK + +## Introduction + +This guide explains integrating Wormhole Settlement Routes from the Wormhole SDK into your application. These Routes abstract the complexity of cross-chain token swaps by handling route discovery, fee estimation, and transaction construction, all useful for dApps seeking to embed cross-chain swaps. By following this tutorial you will install the Wormhole SDK Route package, configure and execute a swap, and explore error handling and troubleshooting. + +## Prerequisites + +Before beginning this project, make sure you have the following: + +- **Wormhole SDK Route package** - installed using your preferred package manager + + To install the package with npm, run the following command in your terminal: + + ```sh + npm install @mayan-finance/wormhole-sdk-route + ``` + + Alternatively, clone the repository and install dependencies: + + ```sh + git clone https://github.com/mayan-finance/wormhole-sdk-route.git + cd wormhole-sdk-route + npm install + ``` + +- **Data for parameters** - you will need: + + - [Chain IDs](/docs/build/reference/chain-ids/){target=\_blank} for the source and destination chains + - An contract address for the token you want to swap and the token you want to receive on the destination chain + +## Configure and Setup + +To initiate a swap, you must create a configuration object that specifies all required parameters. These typically include: + +- `sourceChain` - identifier for the chain where the swap begins +- `destinationChain` - identifier for the target chain +- `inputTokenAddress` - address of the token you want to swap +- `outputTokenAddress` - identifier/address of the desired token on the destination chain +- `amount` - the amount to swap (expressed in the smallest unit, e.g., wei for Ethereum) +- `slippageTolerance` - acceptable percentage of slippage (e.g., 0.005 for 0.5%) + +```ts +import { SwapRoute, SwapRouteConfig } from '@mayan-finance/wormhole-sdk-route'; + +const config: SwapRouteConfig = { + sourceChain: 'ethereum', + destinationChain: 'solana', + inputTokenAddress: '0xYourInputTokenAddress', + outputTokenAddress: 'So11111111111111111111111111111111111111112', // Example token on Solana + amount: '1000000000000000000', // For instance, 1 token in wei + slippageTolerance: 0.005, // 0.5% slippage tolerance + // Additional parameters may be included as needed +}; + +const swapRoute = new SwapRoute(config); +``` + +## Execute a Swap + +Once the configuration is complete, the next steps are to retrieve the optimal swap route and execute the transaction. + +### Fetch the Swap Route + +Before sending a transaction, fetch the optimal swap route to review details such as fees and expected outputs: + +```ts +async function getSwapDetails() { + try { + const routeDetails = await swapRoute.getRoute(); + console.log('Optimal Swap Route:', routeDetails); + return routeDetails; + } catch (error) { + console.error('Error fetching swap route:', error); + throw error; + } +} + +getSwapDetails(); +``` + +### Execute the Swap Transaction + +Once the route is confirmed, execute the swap: + +```ts +async function executeSwap() { + try { + const txResponse = await swapRoute.executeSwap(); + console.log('Swap executed successfully:', txResponse); + // Further transaction handling (e.g., waiting for confirmation) can be added here. + } catch (error) { + console.error('Swap execution failed:', error); + } +} + +executeSwap(); +``` + +## Complete Example Integration + +Below is a complete example that puts together configuration, route fetching, and swap execution: + +```ts +import { SwapRoute, SwapRouteConfig } from '@mayan-finance/wormhole-sdk-route'; + +async function performSwap() { + // Configure the swap parameters + const config: SwapRouteConfig = { + sourceChain: 'ethereum', + destinationChain: 'solana', + inputTokenAddress: '0xYourInputTokenAddress', + outputTokenAddress: 'So11111111111111111111111111111111111111112', + amount: '1000000000000000000', + slippageTolerance: 0.005, + // Include additional settings as needed + }; + + // Initialize the swap route + const swapRoute = new SwapRoute(config); + + try { + // Retrieve the optimal swap route details + const routeDetails = await swapRoute.getRoute(); + console.log('Optimal Swap Route:', routeDetails); + + // Execute the swap transaction + const txResponse = await swapRoute.executeSwap(); + console.log('Swap Transaction Response:', txResponse); + } catch (error) { + console.error('An error occurred during the swap process:', error); + } +} + +performSwap(); +``` + +## Error Handling and Troubleshooting + +- **Route fetching errors** - ensure all configuration parameters (chain IDs, token addresses, amounts) are correct and that network endpoints are reachable +- **Transaction execution errors** - verify that the connected wallet has sufficient funds and that transaction parameters meet the network’s requirements. Detailed logging can assist with troubleshooting +- **Miscellaneous** - to pass a `ReferrerAddress` to the initiation functions, you can create a class that extends the `MayanRoute` class. Override the `referrerAddress` method to return addresses by platform, as shown in this example: + + ```ts + class MayanRefRoute extends MayanRoute { + override referrerAddress(): ReferrerAddresses | undefined { + return { evm: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbe" }; + } + } + ``` + diff --git a/variables.yml b/variables.yml index e2b798118..af1bfa402 100644 --- a/variables.yml +++ b/variables.yml @@ -4,4 +4,7 @@ ntt: repositories: wormhole_sdk: repository_url: https://github.com/wormhole-foundation/wormhole-sdk-ts - version: 1.10.0 + version: 1.13.2 + wormhole: + repository_url: https://github.com/wormhole-foundation/wormhole + version: 2.31.0 From 8ae0a30253ac9ce204a81eea86a50704a42cd997 Mon Sep 17 00:00:00 2001 From: Dawn Kelly <83190195+dawnkelly09@users.noreply.github.com> Date: Tue, 18 Mar 2025 11:12:34 -0400 Subject: [PATCH 08/40] Add build/transfers/index page (#275) * adds connect index page to new IA * tweaks admonition usage on /docs/build/transfers/connect/overview/ * moves timeline into snippet, left aligned * feedback per review * llms * edits per feedback * improve intro * edits per feedback * adds build/transfers/index page * llms * updates per review feedback * llms * change cross-chain to multichain, update llms * updates llms * Apply suggestions from code review Co-authored-by: Erin Shaben * adds back supported feature card per feedback, updates llms * Update build/transfers/index.md Co-authored-by: Erin Shaben * Update build/transfers/index.md Co-authored-by: Erin Shaben * Update build/transfers/index.md Co-authored-by: Erin Shaben --------- Co-authored-by: Erin Shaben Co-authored-by: Ilaria <43253244+ilariae@users.noreply.github.com> Co-authored-by: Ilaria Enache --- .../transfers/connect/connect-timeline.json | 7 +- build/transfers/connect/index.md | 25 ++--- build/transfers/index.md | 73 ++++++++++++++ llms.txt | 98 ++++++++++++++++--- 4 files changed, 174 insertions(+), 29 deletions(-) diff --git a/.snippets/text/build/transfers/connect/connect-timeline.json b/.snippets/text/build/transfers/connect/connect-timeline.json index b42a8a78c..d7ebbda71 100644 --- a/.snippets/text/build/transfers/connect/connect-timeline.json +++ b/.snippets/text/build/transfers/connect/connect-timeline.json @@ -2,15 +2,12 @@ { "title": "[Integrate Connect](/docs/build/transfers/connect/overview/#integrate-connect)", "content": "How-to install via npm package or use hosted CDN.", - "icon": ":fontawesome-solid-1:", - "sub_title": "" + "icon": ":fontawesome-solid-1:" }, { "title": "[Configure data](/docs/build/transfers/connect/configuration/configure-data/)", "content": "How-to specify networks, RPCs, supported tokens, and more.", - "icon": ":fontawesome-solid-2:", - "key": "cyan" - + "icon": ":fontawesome-solid-2:" }, { "title": "[Customize styling](/docs/build/transfers/connect/configuration/configure-theme/)", diff --git a/build/transfers/connect/index.md b/build/transfers/connect/index.md index 1ab0ae541..1ff90d004 100644 --- a/build/transfers/connect/index.md +++ b/build/transfers/connect/index.md @@ -1,6 +1,6 @@ --- title: Wormhole Connect -description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. +description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate multichain asset transfers via Wormhole directly in a web application. --- # Wormhole Connect @@ -31,24 +31,17 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag Follow this series of how-to guides to integrate Connect into your React dApp and configure options to fit your user's needs. - [:custom-arrow: Get started](/docs/build/transfers/connect/overview/) + [:custom-arrow: Get started](/docs/build/transfers/connect/overview/#integrate-connect) -- :octicons-tools-16:{ .lg .middle} **Supported Features by Chain** +- :octicons-tools-16:{ .lg .middle } **Multichain Swap** --- - Get a more detailed look at Wormhole Connect features with a breakdown of supported features by chain. - - [:custom-arrow: Supported Features](/docs/build/transfers/connect/features/) - -- :octicons-tools-16:{ .lg .middle } **Cross-chain Swap with Connect** - - --- - - This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/). + This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/){target=\_blank}. [:custom-arrow: Get started](/docs/tutorials/by-product/connect/react-dapp/) + - :octicons-tools-16:{ .lg .middle } **Connect FAQs** --- @@ -57,6 +50,14 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag [:custom-arrow: Visit FAQs](/docs/build/transfers/connect/faqs/) +- :octicons-tools-16:{ .lg .middle } **Supported Features by Chain** + + --- + + Get a more detailed look at Wormhole Connect features with a breakdown of supported features by chain. + + [:custom-arrow: Supported Features](/docs/build/transfers/connect/features/) + diff --git a/build/transfers/index.md b/build/transfers/index.md index a9d6d19e2..d7c9efc09 100644 --- a/build/transfers/index.md +++ b/build/transfers/index.md @@ -4,3 +4,76 @@ description: This section guides you through using Wormhole products to securely --- # Multichain Transfers + +Wormhole transfer products offer multiple asset transfer options to meet developer needs and use cases. These sections include guides to integrate and use Wormhole transfer products to securely and efficiently transfer assets and messages across multiple blockchains. + +Use the following links to jump directly to each Wormhole transfer product page or continue on for a feature-based product comparison. + +- [**Connect**](/docs/build/transfers/connect/) - a pre-built bridging UI for cross-chain token transfers, requiring minimal setup +- [**Native Token Transfers (NTT)**](/docs/build/transfers/native-token-transfers/) - a mechanism to transfer native tokens cross-chain seamlessly without converting to a wrapped asset +- [**Token Bridge**](/docs/learn/transfers/token-bridge/) - a bridging solution that uses a lock and mint mechanism +- [**Settlement**](/docs/build/transfers/settlement/) - an intent protocol suite for fast multichain transfers, optimizing liquidity flows and interoperability without relying on traditional bridging methods + +## Products By Feature + +While all of these products handle token transfers, there are additional features to consider when selecting the best fit for your project needs. + +
+ +- :octicons-file-code-16:{ .lg .middle } **Message Payload** + + --- + + Send message payloads for social platforms, NFTs, and more with Token Bridge's lock and mint wrapped token mechanism. + + [:custom-arrow: Discover Token Bridge](/docs/build/transfers/token-bridge/) + +- :octicons-file-code-16:{ .lg .middle } **Native Assets** + + --- + + Eliminate the need for wrapped tokens and issue native multichain assets with Native Token Transfers (NTT). + + [:custom-arrow: Discover Native Token Transfers](/docs/build/transfers/native-token-transfers/) + + +- :octicons-file-code-16:{ .lg .middle } **Speed at Scale** + + --- + + Unleash institutional-scale digital asset settlement with Wormhole Settlement's intent-based asset transfers and liquidity layer. + + [:custom-arrow: Discover Settlement](/docs/build/transfers/settlement/) + +- :octicons-gear-16:{ .lg .middle } **Plug-and-Play UI** + + --- + + Add Wormhole's bridge UI to your dApp, no smart contract development required, with Connect. + + [:custom-arrow: Discover Connect](/docs/build/transfers/connect/) + +
+ +## Additional Resources + +
+ +- :octicons-tools-16:{ .lg .middle } **Product Comparison** + + --- + + Compare Wormhole's cross-chain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. + + [:custom-arrow: Compare Products](/docs/build/start-building/products/) + +- :octicons-book-16:{ .lg .middle } **Use Cases** + + --- + + Explore Wormhole's use cases, from cross-chain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. + + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) + + +
\ No newline at end of file diff --git a/llms.txt b/llms.txt index c37454a7c..22c208206 100644 --- a/llms.txt +++ b/llms.txt @@ -10985,7 +10985,7 @@ Doc-Content: https://wormhole.com/docs/build/transfers/connect/ --- BEGIN CONTENT --- --- title: Wormhole Connect -description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. +description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate multichain asset transfers via Wormhole directly in a web application. --- # Wormhole Connect @@ -11016,24 +11016,17 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag Follow this series of how-to guides to integrate Connect into your React dApp and configure options to fit your user's needs. - [:custom-arrow: Get started](/docs/build/transfers/connect/overview/) - -- :octicons-tools-16:{ .lg .middle} **Supported Features by Chain** - - --- - - Get a more detailed look at Wormhole Connect features with a breakdown of supported features by chain. - - [:custom-arrow: Supported Features](/docs/build/transfers/connect/features/) + [:custom-arrow: Get started](/docs/build/transfers/connect/overview/#integrate-connect) -- :octicons-tools-16:{ .lg .middle } **Cross-chain Swap with Connect** +- :octicons-tools-16:{ .lg .middle } **Multichain Swap** --- - This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/). + This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/){target=\_blank}. [:custom-arrow: Get started](/docs/tutorials/by-product/connect/react-dapp/) + - :octicons-tools-16:{ .lg .middle } **Connect FAQs** --- @@ -11042,6 +11035,14 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag [:custom-arrow: Visit FAQs](/docs/build/transfers/connect/faqs/) +- :octicons-tools-16:{ .lg .middle } **Supported Features by Chain** + + --- + + Get a more detailed look at Wormhole Connect features with a breakdown of supported features by chain. + + [:custom-arrow: Supported Features](/docs/build/transfers/connect/features/) + --- END CONTENT --- @@ -11818,6 +11819,79 @@ description: This section guides you through using Wormhole products to securely --- # Multichain Transfers + +Wormhole transfer products offer multiple asset transfer options to meet developer needs and use cases. These sections include guides to integrate and use Wormhole transfer products to securely and efficiently transfer assets and messages across multiple blockchains. + +Use the following links to jump directly to each Wormhole transfer product page or continue on for a feature-based product comparison. + +- [**Connect**](/docs/build/transfers/connect/) - a pre-built bridging UI for cross-chain token transfers, requiring minimal setup +- [**Native Token Transfers (NTT)**](/docs/build/transfers/native-token-transfers/) - a mechanism to transfer native tokens cross-chain seamlessly without converting to a wrapped asset +- [**Token Bridge**](/docs/learn/transfers/token-bridge/) - a bridging solution that uses a lock and mint mechanism +- [**Settlement**](/docs/build/transfers/settlement/) - an intent protocol suite for fast multichain transfers, optimizing liquidity flows and interoperability without relying on traditional bridging methods + +## Products By Feature + +While all of these products handle token transfers, there are additional features to consider when selecting the best fit for your project needs. + +
+ +- :octicons-file-code-16:{ .lg .middle } **Message Payload** + + --- + + Send message payloads for social platforms, NFTs, and more with Token Bridge's lock and mint wrapped token mechanism. + + [:custom-arrow: Discover Token Bridge](/docs/build/transfers/token-bridge/) + +- :octicons-file-code-16:{ .lg .middle } **Native Assets** + + --- + + Eliminate the need for wrapped tokens and issue native multichain assets with Native Token Transfers (NTT). + + [:custom-arrow: Discover Native Token Transfers](/docs/build/transfers/native-token-transfers/) + + +- :octicons-file-code-16:{ .lg .middle } **Speed at Scale** + + --- + + Unleash institutional-scale digital asset settlement with Wormhole Settlement's intent-based asset transfers and liquidity layer. + + [:custom-arrow: Discover Settlement](/docs/build/transfers/settlement/) + +- :octicons-gear-16:{ .lg .middle } **Plug-and-Play UI** + + --- + + Add Wormhole's bridge UI to your dApp, no smart contract development required, with Connect. + + [:custom-arrow: Discover Connect](/docs/build/transfers/connect/) + +
+ +## Additional Resources + +
+ +- :octicons-tools-16:{ .lg .middle } **Product Comparison** + + --- + + Compare Wormhole's cross-chain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. + + [:custom-arrow: Compare Products](/docs/build/start-building/products/) + +- :octicons-book-16:{ .lg .middle } **Use Cases** + + --- + + Explore Wormhole's use cases, from cross-chain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. + + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) + + +
--- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands/ From 76e3feaf86380cec12e00fe74309b934b9f05634 Mon Sep 17 00:00:00 2001 From: Dawn Kelly <83190195+dawnkelly09@users.noreply.github.com> Date: Tue, 18 Mar 2025 11:27:51 -0400 Subject: [PATCH 09/40] Updates learn infra index page (#282) * adds connect index page to new IA * tweaks admonition usage on /docs/build/transfers/connect/overview/ * moves timeline into snippet, left aligned * feedback per review * llms * edits per feedback * improve intro * edits per feedback * applies review feedback * updates learn/infra index page * moves spy to timeline, removes additional resources * removes spy from timeline, adds next steps section * small edit, llms * Update learn/infrastructure/index.md Co-authored-by: Erin Shaben * Update .snippets/text/learn/infrastructure/infrastructure-index-timeline.json Co-authored-by: Erin Shaben --------- Co-authored-by: Ilaria <43253244+ilariae@users.noreply.github.com> Co-authored-by: Erin Shaben Co-authored-by: Ilaria Enache --- .../transfers/connect/connect-timeline.json | 4 +- .../infrastructure-index-timeline.json | 22 +++++++ learn/infrastructure/index.md | 57 ++++++++----------- llms.txt | 57 ++++++++----------- 4 files changed, 70 insertions(+), 70 deletions(-) create mode 100644 .snippets/text/learn/infrastructure/infrastructure-index-timeline.json diff --git a/.snippets/text/build/transfers/connect/connect-timeline.json b/.snippets/text/build/transfers/connect/connect-timeline.json index d7ebbda71..140b04685 100644 --- a/.snippets/text/build/transfers/connect/connect-timeline.json +++ b/.snippets/text/build/transfers/connect/connect-timeline.json @@ -2,12 +2,12 @@ { "title": "[Integrate Connect](/docs/build/transfers/connect/overview/#integrate-connect)", "content": "How-to install via npm package or use hosted CDN.", - "icon": ":fontawesome-solid-1:" + "icon": ":fontawesome-solid-1:" }, { "title": "[Configure data](/docs/build/transfers/connect/configuration/configure-data/)", "content": "How-to specify networks, RPCs, supported tokens, and more.", - "icon": ":fontawesome-solid-2:" + "icon": ":fontawesome-solid-2:" }, { "title": "[Customize styling](/docs/build/transfers/connect/configuration/configure-theme/)", diff --git a/.snippets/text/learn/infrastructure/infrastructure-index-timeline.json b/.snippets/text/learn/infrastructure/infrastructure-index-timeline.json new file mode 100644 index 000000000..ed8a8091f --- /dev/null +++ b/.snippets/text/learn/infrastructure/infrastructure-index-timeline.json @@ -0,0 +1,22 @@ +[ + { + "title": "[Core Contracts](/docs/learn/infrastructure/core-contracts/)", + "content": "Messages are sent from a source contract to the Wormhole Core Contract on the source chain, which publishes them on-chain.", + "icon": ":fontawesome-solid-1:" + }, + { + "title": "[Guardians](/docs/learn/infrastructure/guardians/)", + "content": "Guardians validate these messages before forwarding them to the target chain.", + "icon": ":fontawesome-solid-2:" + }, + { + "title": "[Verifiable Action Approval (VAA)](/docs/learn/infrastructure/vaas/)", + "content": "The validated message is encapsulated in a VAA (Verifiable Action Approval), combining the message with Guardian signatures to create a proof.", + "icon": ":fontawesome-solid-3:" + }, + { + "title": "[Relayers](/docs/learn/infrastructure/relayer/)", + "content": "A relayer relays the VAA to the target chain, which the Wormhole Core Contract then verifies on the target chain.", + "icon": ":fontawesome-solid-4:" + } +] \ No newline at end of file diff --git a/learn/infrastructure/index.md b/learn/infrastructure/index.md index 1d21d63d6..415f1d525 100644 --- a/learn/infrastructure/index.md +++ b/learn/infrastructure/index.md @@ -1,73 +1,62 @@ --- title: Infrastructure Components -description: Explore Wormhole's infrastructure, including the key components that enable secure cross-chain communication and asset transfers across blockchain networks. +description: Explore Wormhole's infrastructure, including the key components that enable secure multichain communication and asset transfers across blockchain networks. --- # Infrastructure Components +This section examines the core components that power Wormhole's infrastructure, including Guardians, relayers, VAAs, and the Spy. + ## Get Started -This section provides a closer look at the core components that power Wormhole's infrastructure, including Guardians, relayers, VAAs, and the Spy. +Start here for an overview of Wormhole architecture components and security mechanisms:
-- :octicons-question-16:{ .lg .middle } **How Do Wormhole’s Infrastructure Components Work Together?** +- :octicons-book-16:{ .lg .middle } **Architecture Overview** --- - A simplified flow of a cross-chain message from a source-chain contract to a target-chain contract can be summarized as follows: - - 1. Messages are sent from a source contract to the Wormhole Core Contract on the source chain, which publishes them on-chain - 2. Guardians then validate these messages before forwarding them to the target chain - 3. The validated message is encapsulated in a VAA (Verifiable Action Approval), combining the message with Guardian signatures to create a proof - 4. A relayer relays the VAA to the target chain, which is then verified by the Wormhole Core Contract on the target chain - - You can find more information about the infrastructure components and how they work together on the [Architecture Overview](/docs/learn/infrastructure/architecture/) page. - -
- -### Components + Overview of Wormhole's architecture, detailing key on-chain and off-chain components like the Core Contract, Guardian Network, and relayers. -
+ [:custom-arrow: Learn About Architecture](/docs/learn/infrastructure/architecture/) -- :octicons-book-16:{ .lg .middle } **Wormhole Core Contracts** +- :octicons-book-16:{ .lg .middle } **Security** --- - The Core Contracts are responsible for publishing and verifying all cross-chain messages. - - [:custom-arrow: Learn more about Core Contracts](/docs/learn/infrastructure/core-contracts/) + Explore Wormhole's security features, including the Guardian network, governance, and monitoring. -- :octicons-book-16:{ .lg .middle } **Verifiable Action Approvals (VAAs)** + [:custom-arrow: Learn About Security](/docs/learn/security/) - --- +
- VAAs are Wormhole's core messaging primitive, consisting of cross-chain data packets. +## Explore Components - [:custom-arrow: Learn more about VAAs](/docs/learn/infrastructure/vaas/) +The relationship between individual components can be demonstrated through the simplified flow of a multichain message from a source-chain contract to a target-chain contract. Select the title of each step to learn more about that component: -- :octicons-book-16:{ .lg .middle } **Guardians** +[timeline left(wormhole-docs/.snippets/text/learn/infrastructure/infrastructure-index-timeline.json)] - --- +The [Spy](/docs/learn/infrastructure/spy/) continuously runs in the background to subscribe to gossiped messages across the Guardian Network and enable real-time network activity monitoring. - Guardians are nodes responsible for observing messages and signing the corresponding payloads. +## Next Steps - [:custom-arrow: Learn more about Guardians](/docs/learn/infrastructure/guardians/) +
-- :octicons-book-16:{ .lg .middle } **Relayers** +- :octicons-book-16:{ .lg .middle } **Messaging Components** --- - Relayers are processes that handle the delivery of VAAs to their intended destination. + Learn more about individual messaging components such as Core Contracts, VAAs, Guardians, and relayers - [:custom-arrow: Learn more about relayers](/docs/learn/infrastructure/relayer/) + [:custom-arrow: Explore Core Contracts](/docs/learn/infrastructure/core-contracts/) -- :octicons-book-16:{ .lg .middle } **Spy** +- :octicons-people-16:{ .lg .middle } **Core Messaging Guides** --- - A Spy watches the messages published by the Guardian Network and can forward network traffic. + Explore this section for guides to using Wormhole Relayer and Core Contracts in your project. - [:custom-arrow: Learn more about the Spy](/docs/learn/infrastructure/spy/) + [:custom-arrow: Build with Core Messaging](/docs/build/core-messaging/)
diff --git a/llms.txt b/llms.txt index 22c208206..9037d41e6 100644 --- a/llms.txt +++ b/llms.txt @@ -15195,75 +15195,64 @@ Doc-Content: https://wormhole.com/docs/learn/infrastructure/ --- BEGIN CONTENT --- --- title: Infrastructure Components -description: Explore Wormhole's infrastructure, including the key components that enable secure cross-chain communication and asset transfers across blockchain networks. +description: Explore Wormhole's infrastructure, including the key components that enable secure multichain communication and asset transfers across blockchain networks. --- # Infrastructure Components +This section examines the core components that power Wormhole's infrastructure, including Guardians, relayers, VAAs, and the Spy. + ## Get Started -This section provides a closer look at the core components that power Wormhole's infrastructure, including Guardians, relayers, VAAs, and the Spy. +Start here for an overview of Wormhole architecture components and security mechanisms:
-- :octicons-question-16:{ .lg .middle } **How Do Wormhole’s Infrastructure Components Work Together?** +- :octicons-book-16:{ .lg .middle } **Architecture Overview** --- - A simplified flow of a cross-chain message from a source-chain contract to a target-chain contract can be summarized as follows: - - 1. Messages are sent from a source contract to the Wormhole Core Contract on the source chain, which publishes them on-chain - 2. Guardians then validate these messages before forwarding them to the target chain - 3. The validated message is encapsulated in a VAA (Verifiable Action Approval), combining the message with Guardian signatures to create a proof - 4. A relayer relays the VAA to the target chain, which is then verified by the Wormhole Core Contract on the target chain - - You can find more information about the infrastructure components and how they work together on the [Architecture Overview](/docs/learn/infrastructure/architecture/) page. - -
- -### Components + Overview of Wormhole's architecture, detailing key on-chain and off-chain components like the Core Contract, Guardian Network, and relayers. -
+ [:custom-arrow: Learn About Architecture](/docs/learn/infrastructure/architecture/) -- :octicons-book-16:{ .lg .middle } **Wormhole Core Contracts** +- :octicons-book-16:{ .lg .middle } **Security** --- - The Core Contracts are responsible for publishing and verifying all cross-chain messages. - - [:custom-arrow: Learn more about Core Contracts](/docs/learn/infrastructure/core-contracts/) + Explore Wormhole's security features, including the Guardian network, governance, and monitoring. -- :octicons-book-16:{ .lg .middle } **Verifiable Action Approvals (VAAs)** + [:custom-arrow: Learn About Security](/docs/learn/security/) - --- +
- VAAs are Wormhole's core messaging primitive, consisting of cross-chain data packets. +## Explore Components - [:custom-arrow: Learn more about VAAs](/docs/learn/infrastructure/vaas/) +The relationship between individual components can be demonstrated through the simplified flow of a multichain message from a source-chain contract to a target-chain contract. Select the title of each step to learn more about that component: -- :octicons-book-16:{ .lg .middle } **Guardians** +[timeline left(wormhole-docs/.snippets/text/learn/infrastructure/infrastructure-index-timeline.json)] - --- +The [Spy](/docs/learn/infrastructure/spy/) continuously runs in the background to subscribe to gossiped messages across the Guardian Network and enable real-time network activity monitoring. - Guardians are nodes responsible for observing messages and signing the corresponding payloads. +## Next Steps - [:custom-arrow: Learn more about Guardians](/docs/learn/infrastructure/guardians/) +
-- :octicons-book-16:{ .lg .middle } **Relayers** +- :octicons-book-16:{ .lg .middle } **Messaging Components** --- - Relayers are processes that handle the delivery of VAAs to their intended destination. + Learn more about individual messaging components such as Core Contracts, VAAs, Guardians, and relayers - [:custom-arrow: Learn more about relayers](/docs/learn/infrastructure/relayer/) + [:custom-arrow: Explore Core Contracts](/docs/learn/infrastructure/core-contracts/) -- :octicons-book-16:{ .lg .middle } **Spy** +- :octicons-people-16:{ .lg .middle } **Core Messaging Guides** --- - A Spy watches the messages published by the Guardian Network and can forward network traffic. + Explore this section for guides to using Wormhole Relayer and Core Contracts in your project. - [:custom-arrow: Learn more about the Spy](/docs/learn/infrastructure/spy/) + [:custom-arrow: Build with Core Messaging](/docs/build/core-messaging/)
--- END CONTENT --- From 2e21892588919928b24b3b1e1e7895a148464e5c Mon Sep 17 00:00:00 2001 From: Dawn Kelly <83190195+dawnkelly09@users.noreply.github.com> Date: Tue, 18 Mar 2025 11:31:26 -0400 Subject: [PATCH 10/40] updates learn transfers index (#283) * adds connect index page to new IA * tweaks admonition usage on /docs/build/transfers/connect/overview/ * moves timeline into snippet, left aligned * feedback per review * llms * edits per feedback * improve intro * edits per feedback * applies review feedback * updates learn/infra index page * updates learn/transfers/index page * Delete .snippets/text/build/transfers/connect/connect-timeline.json not needed in this PR * Delete build/transfers/connect/index.md * add placeholder connect index page * updates links on cards * moves spy to timeline, removes additional resources * removes spy from timeline, adds next steps section * change cross-chain to multichain, update llms * removes use case based copy, adds comparison NTT & TB, has TODOs * settlement section and ntt vs token bridge * applies updates from review feedback, updates llms * removes settlement table, displays NTTvsTB table, adds YT video embed, updates llms * Delete learn/infrastructure/index.md * small edit, llms * Update learn/infrastructure/index.md Co-authored-by: Erin Shaben * Update .snippets/text/learn/infrastructure/infrastructure-index-timeline.json Co-authored-by: Erin Shaben * Update learn/transfers/index.md Co-authored-by: Erin Shaben * Update learn/transfers/index.md Co-authored-by: Erin Shaben * Update learn/transfers/index.md Co-authored-by: Erin Shaben --------- Co-authored-by: Ilaria Enache Co-authored-by: Ilaria <43253244+ilariae@users.noreply.github.com> Co-authored-by: Erin Shaben --- learn/transfers/index.md | 67 +++++++++++++++++++++++++++------------- llms.txt | 65 ++++++++++++++++++++++++++------------ 2 files changed, 91 insertions(+), 41 deletions(-) diff --git a/learn/transfers/index.md b/learn/transfers/index.md index aed224ea0..fe3de701b 100644 --- a/learn/transfers/index.md +++ b/learn/transfers/index.md @@ -1,46 +1,71 @@ --- -title: Messaging Protocols -description: This section introduces the core messaging protocols that power seamless cross-chain communication and asset transfer within the Wormhole ecosystem. +title: Multichain Transfers +description: This section introduces the core messaging protocols that power seamless multichain communication and asset transfer within the Wormhole ecosystem. --- -# Messaging Protocols +# Multichain Transfers -## Get Started +These sections include information about Wormhole's transfer products to help you learn how they work and determine the best transfer product to fit your needs. -This section covers various aspects and services related to communication protocols and systems within the Wormhole platform. Each subsection provides detailed information on key components, contracts, and bridges for messaging and data transfer. +Use the following links to jump directly to each Wormhole transfer product information page or continue for a product comparison: -
+- [**Native Token Transfers (NTT)**](/docs/learn/transfers/native-token-transfers/) - a mechanism to transfer native tokens multichain seamlessly without converting to a wrapped asset +- [**Settlement**](/docs/learn/transfers/settlement/) - intent-based protocols enabling fast multichain transfers, optimized liquidity flows, and interoperability without relying on traditional bridging methods +- [**Token Bridge**](/docs/learn/transfers/token-bridge/) - a bridging solution that uses a lock and mint mechanism -- :octicons-book-16:{ .lg .middle } **Token Bridge** +## Compare Transfer Products - --- +A few key comparisons can help you readily differentiate between Wormhole transfer product offerings. Use the following sections to help compare and select products: - The Token Bridge provides a secure, low-lift integration for cross-chain transfers of fungible tokens. +### NTT vs. Token Bridge - [:custom-arrow: Learn more about Token Bridges](/docs/learn/transfers/token-bridge/) +Understand the key differences between Native Token Transfers (NTT) and Token Bridge to determine which solution best fits your needs. -- :octicons-book-16:{ .lg .middle } **Circle's CCTP Bridge** +- Native Token Transfers (NTT) move tokens in their original form without wrapping them, ensuring compatibility with on-chain applications but requiring custom contracts on both the source and destination chains +- Token Bridge locks tokens on the source chain and mints wrapped versions on the destination chain. This method does not require changes to existing token contracts and supports additional message payloads for more complex use cases - --- +
+ +| Supports | NTT | Token Bridge | +|---------------------------|--------------------|--------------------| +| Message Payload | :white_check_mark: | :white_check_mark: | +| Wrapped Assets | :x: | :white_check_mark: | +| Native Assets | :white_check_mark: | :x: | +| Contract-Free Development | :x: | :white_check_mark: | +| User-Owned Contracts | :white_check_mark: | :x: | + +
+ +In the following video, Wormhole Foundation DevRel Pauline Barnades walks you through the key differences between Wormhole’s Native Token Transfers (NTT) and Token Bridge and how to select the best option for your use case: + +
- The CCTP Bridge supports fast and cost-effective native USDC transfers across blockchains using Circle's Cross Chain Transfer Protocol (CCTP). - [:custom-arrow: Learn more about CCTP](/docs/learn/transfers/cctp/) +### Settlement -- :octicons-book-16:{ .lg .middle } **Native Token Transfers** +Settlement enables fast and efficient multichain transfers by optimizing liquidity without relying on traditional bridging methods. Unlike NTT, which moves native assets directly between chains, and Token Bridge, which locks tokens and mints wrapped versions, Settlement uses intent-based execution. Users specify the desired transfer outcome, and solvers compete to fulfill it most efficiently. + +By leveraging a decentralized solver network, Settlement ensures efficient cross-chain liquidity without locking assets or requiring asset wrapping, providing a seamless and capital-efficient solution for multichain transactions. + +## Additional Resources + +
+ +- :octicons-tools-16:{ .lg .middle } **Product Comparison** --- - Wormhole's Native Token Transfers (NTT) offers an open source and flexible framework for cross-chain token transfers, providing full control over token behavior on each blockchain. + Compare Wormhole's multichain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. - [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/) + [:custom-arrow: Compare Products](/docs/build/start-building/products/#transfer-products) -- :octicons-book-16:{ .lg .middle } **Settlement** +- :octicons-book-16:{ .lg .middle } **Use Cases** --- - Learn about Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. + Explore Wormhole's use cases, from multichain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. - [:custom-arrow: Learn more about Settlement](/docs/learn/transfers/settlement/) + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) -
+ +
\ No newline at end of file diff --git a/llms.txt b/llms.txt index 9037d41e6..f1803a8c6 100644 --- a/llms.txt +++ b/llms.txt @@ -16009,49 +16009,74 @@ The ability to perform native gas drop off addresses the common issue where a us Doc-Content: https://wormhole.com/docs/learn/transfers/ --- BEGIN CONTENT --- --- -title: Messaging Protocols -description: This section introduces the core messaging protocols that power seamless cross-chain communication and asset transfer within the Wormhole ecosystem. +title: Multichain Transfers +description: This section introduces the core messaging protocols that power seamless multichain communication and asset transfer within the Wormhole ecosystem. --- -# Messaging Protocols +# Multichain Transfers -## Get Started +These sections include information about Wormhole's transfer products to help you learn how they work and determine the best transfer product to fit your needs. -This section covers various aspects and services related to communication protocols and systems within the Wormhole platform. Each subsection provides detailed information on key components, contracts, and bridges for messaging and data transfer. +Use the following links to jump directly to each Wormhole transfer product information page or continue for a product comparison: -
+- [**Native Token Transfers (NTT)**](/docs/learn/transfers/native-token-transfers/) - a mechanism to transfer native tokens multichain seamlessly without converting to a wrapped asset +- [**Settlement**](/docs/learn/transfers/settlement/) - intent-based protocols enabling fast multichain transfers, optimized liquidity flows, and interoperability without relying on traditional bridging methods +- [**Token Bridge**](/docs/learn/transfers/token-bridge/) - a bridging solution that uses a lock and mint mechanism -- :octicons-book-16:{ .lg .middle } **Token Bridge** +## Compare Transfer Products - --- +A few key comparisons can help you readily differentiate between Wormhole transfer product offerings. Use the following sections to help compare and select products: - The Token Bridge provides a secure, low-lift integration for cross-chain transfers of fungible tokens. +### NTT vs. Token Bridge - [:custom-arrow: Learn more about Token Bridges](/docs/learn/transfers/token-bridge/) +Understand the key differences between Native Token Transfers (NTT) and Token Bridge to determine which solution best fits your needs. -- :octicons-book-16:{ .lg .middle } **Circle's CCTP Bridge** +- Native Token Transfers (NTT) move tokens in their original form without wrapping them, ensuring compatibility with on-chain applications but requiring custom contracts on both the source and destination chains +- Token Bridge locks tokens on the source chain and mints wrapped versions on the destination chain. This method does not require changes to existing token contracts and supports additional message payloads for more complex use cases - --- +
+ +| Supports | NTT | Token Bridge | +|---------------------------|--------------------|--------------------| +| Message Payload | :white_check_mark: | :white_check_mark: | +| Wrapped Assets | :x: | :white_check_mark: | +| Native Assets | :white_check_mark: | :x: | +| Contract-Free Development | :x: | :white_check_mark: | +| User-Owned Contracts | :white_check_mark: | :x: | + +
+ +In the following video, Wormhole Foundation DevRel Pauline Barnades walks you through the key differences between Wormhole’s Native Token Transfers (NTT) and Token Bridge and how to select the best option for your use case: - The CCTP Bridge supports fast and cost-effective native USDC transfers across blockchains using Circle's Cross Chain Transfer Protocol (CCTP). +
- [:custom-arrow: Learn more about CCTP](/docs/learn/transfers/cctp/) -- :octicons-book-16:{ .lg .middle } **Native Token Transfers** +### Settlement + +Settlement enables fast and efficient multichain transfers by optimizing liquidity without relying on traditional bridging methods. Unlike NTT, which moves native assets directly between chains, and Token Bridge, which locks tokens and mints wrapped versions, Settlement uses intent-based execution. Users specify the desired transfer outcome, and solvers compete to fulfill it most efficiently. + +By leveraging a decentralized solver network, Settlement ensures efficient cross-chain liquidity without locking assets or requiring asset wrapping, providing a seamless and capital-efficient solution for multichain transactions. + +## Additional Resources + +
+ +- :octicons-tools-16:{ .lg .middle } **Product Comparison** --- - Wormhole's Native Token Transfers (NTT) offers an open source and flexible framework for cross-chain token transfers, providing full control over token behavior on each blockchain. + Compare Wormhole's multichain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. - [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/) + [:custom-arrow: Compare Products](/docs/build/start-building/products/#transfer-products) -- :octicons-book-16:{ .lg .middle } **Settlement** +- :octicons-book-16:{ .lg .middle } **Use Cases** --- - Learn about Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. + Explore Wormhole's use cases, from multichain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. + + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) - [:custom-arrow: Learn more about Settlement](/docs/learn/transfers/settlement/)
--- END CONTENT --- From 49119d7f065e6706ed320b6b2d2d45f1d318a2c1 Mon Sep 17 00:00:00 2001 From: Dawn Kelly <83190195+dawnkelly09@users.noreply.github.com> Date: Tue, 18 Mar 2025 11:31:59 -0400 Subject: [PATCH 11/40] new content: build index page (#289) * adds new content for build/index page * moves timeline to snippets * converts timeline to cards per feedback * adds sections for multigov & queries, updates cross-chain to multichain, updates llms * updates from review feedback, updates llms * Update build/index.md Co-authored-by: Erin Shaben * Update build/index.md --------- Co-authored-by: Ilaria <43253244+ilariae@users.noreply.github.com> Co-authored-by: Erin Shaben Co-authored-by: Ilaria Enache --- build/index.md | 94 ++++++++++++++++++++++++++++++++++++++++++++------ llms.txt | 93 +++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 165 insertions(+), 22 deletions(-) diff --git a/build/index.md b/build/index.md index b7ee17b70..1fe755734 100644 --- a/build/index.md +++ b/build/index.md @@ -6,34 +6,106 @@ template: root-index-page.html # Build -## Get Started +## Quick Start: Step-by-Step Tutorials -Whether you’re developing front-end applications using Wormhole's application-layer tools or building smart contract integrations on top of Wormhole’s messaging protocols, learn how Wormhole can help you achieve seamless, multichain interoperability. +If you learn best by building, start here to build with the Wormhole TypeScript SDK: + +- [**Transfer Tokens via the Token Bridge**](/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/){target=\_blank} - use the [Wormhole SDK's](/docs/build/toolkit/typescript-sdk/){target=\_blank} Token Bridge method to move wrapped assets across networks + +- [**Transfer USDC via CCTP and Wormhole SDK**](/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp/){target=\_blank} - combine the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} and Circle's Cross-Chain Transfer Protocol (CCTP) to bridge native USDC across networks + +Alternatively, start here to work with Wormhole contracts directly: + +- [**Create Multichain Messaging Contracts**](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/) - create mulitchain contracts using Wormhole's Solidity SDK. You will deploy smart contracts and send messages across chains + +- [**Create Multichain Token Transfer Contracts**](/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/) - create multichain token transfers using Wormhole's Solidity SDK. You will build and deploy smart contracts to send tokens from one blockchain to another + +## Builder Essentials + +Access essential information and tools quickly:
-- :octicons-tools-16:{ .lg .middle } **Start Building** +- :octicons-tools-16:{ .lg .middle } **Supported Networks** + + --- + + Supported blockchains by environment - main or testnet availability and quick links to the website, documentation, and block explorer for each network. + + [:custom-arrow: Supported Networks](/docs/build/start-building/supported-networks/) + +- :octicons-tools-16:{ .lg .middle } **Testnet Faucets** + + --- + + Links to testnet token faucets for supported networks. + + [:custom-arrow: Get Testnet Tokens](/docs/build/start-building/testnet-faucets/) + +- :octicons-tools-16:{ .lg .middle } **Wormhole TypeScript SDK** --- - Get equipped with everything you need to start developing with Wormhole, including an overview of supported networks and a list of demo projects. + Your guide to Wormhole SDK installation and usage, concepts overview, and code samples. - [:custom-arrow: Get started](/docs/build/start-building/) + [:custom-arrow: Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/wormhole-sdk/) -- :octicons-gear-16:{ .lg .middle } **Toolkit** +- :octicons-tools-16:{ .lg .middle } **Reference** --- - Discover essential developer tools for managing and sending cross-chain transfers, including the Wormholescan explorer, Wormhole CLI, Wormhole SDKs, and more. + Wormhole chain ID, contract address, address formatting and conversion, and consistency information. - [:custom-arrow: Discover tools](/docs/build/toolkit/) + [:custom-arrow: Reference](/docs/build/reference/) + +
+ +## Integrate Transfer Products + +
-- :octicons-book-16:{ .lg .middle } **Reference** +- :octicons-tools-16:{ .lg .middle } **Multichain Transfers** --- - Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and consistency levels for Guardians. + - **Connect UI widget** - easy-to-use UI for multichain asset transfers via Wormhole in a web application + - **Native Token Transfers (NTT)** - native asset transfer, without the need for wrapped assets + - **Token Bridge** - transfer wrapped assets with optional message payloads + - **Settlement** - intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more - [:custom-arrow: Explore reference](/docs/build/reference/) + [:custom-arrow: Build Multichain Transfers](/docs/build/transfers/)
+ +## Access Real-Time Data + +
+ +- :octicons-tools-16:{ .lg .middle } **Real-Time Data** + + --- + + - **Wormhole Queries** - on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy + - **Supported query types** - includes query equivalents for `eth_call` (with options for timestamp and finality), `sol_account`, and `sol_pda` + - **Use familiar endpoints** - make calls against the RPC provider endpoints you already know and use + + [:custom-arrow: Build with Queries](/docs/build/queries/) + +
+ +## Multichain Governance + +
+ +- :octicons-tools-16:{ .lg .middle } **MultiGov** + + --- + + - **Wormhole's MultiGov** - a multichain governance system using Wormhole for seamless voting and proposal execution across multiple blockchain networks + - **Hub-and-spoke model** - spoke chain contracts handle local voting and proposals with results sent to the hub for vote aggregation and tallying, proposal management, and coordinating governance across connected chains + - **Wormhole security** - moving vote weight checkpoints, timelocks, and Wormhole verification keep governance activity secure + + [:custom-arrow: Build with MultiGov](/docs/build/multigov/) + +
+ diff --git a/llms.txt b/llms.txt index f1803a8c6..9e02f9f6c 100644 --- a/llms.txt +++ b/llms.txt @@ -812,35 +812,106 @@ template: root-index-page.html # Build -## Get Started +## Quick Start: Step-by-Step Tutorials + +If you learn best by building, start here to build with the Wormhole TypeScript SDK: + +- [**Transfer Tokens via the Token Bridge**](/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/){target=\_blank} - use the [Wormhole SDK's](/docs/build/toolkit/typescript-sdk/){target=\_blank} Token Bridge method to move wrapped assets across networks + +- [**Transfer USDC via CCTP and Wormhole SDK**](/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp/){target=\_blank} - combine the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} and Circle's Cross-Chain Transfer Protocol (CCTP) to bridge native USDC across networks + +Alternatively, start here to work with Wormhole contracts directly: + +- [**Create Multichain Messaging Contracts**](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/) - create mulitchain contracts using Wormhole's Solidity SDK. You will deploy smart contracts and send messages across chains -Whether you’re developing front-end applications using Wormhole's application-layer tools or building smart contract integrations on top of Wormhole’s messaging protocols, learn how Wormhole can help you achieve seamless, multichain interoperability. +- [**Create Multichain Token Transfer Contracts**](/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/) - create multichain token transfers using Wormhole's Solidity SDK. You will build and deploy smart contracts to send tokens from one blockchain to another + +## Builder Essentials + +Access essential information and tools quickly:
-- :octicons-tools-16:{ .lg .middle } **Start Building** +- :octicons-tools-16:{ .lg .middle } **Supported Networks** --- - Get equipped with everything you need to start developing with Wormhole, including an overview of supported networks and a list of demo projects. + Supported blockchains by environment - main or testnet availability and quick links to the website, documentation, and block explorer for each network. - [:custom-arrow: Get started](/docs/build/start-building/) + [:custom-arrow: Supported Networks](/docs/build/start-building/supported-networks/) -- :octicons-gear-16:{ .lg .middle } **Toolkit** +- :octicons-tools-16:{ .lg .middle } **Testnet Faucets** --- - Discover essential developer tools for managing and sending cross-chain transfers, including the Wormholescan explorer, Wormhole CLI, Wormhole SDKs, and more. + Links to testnet token faucets for supported networks. + + [:custom-arrow: Get Testnet Tokens](/docs/build/start-building/testnet-faucets/) + +- :octicons-tools-16:{ .lg .middle } **Wormhole TypeScript SDK** + + --- - [:custom-arrow: Discover tools](/docs/build/toolkit/) + Your guide to Wormhole SDK installation and usage, concepts overview, and code samples. + + [:custom-arrow: Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/wormhole-sdk/) + +- :octicons-tools-16:{ .lg .middle } **Reference** + + --- + + Wormhole chain ID, contract address, address formatting and conversion, and consistency information. + + [:custom-arrow: Reference](/docs/build/reference/) + +
+ +## Integrate Transfer Products + +
-- :octicons-book-16:{ .lg .middle } **Reference** +- :octicons-tools-16:{ .lg .middle } **Multichain Transfers** --- - Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and consistency levels for Guardians. + - **Connect UI widget** - easy-to-use UI for multichain asset transfers via Wormhole in a web application + - **Native Token Transfers (NTT)** - native asset transfer, without the need for wrapped assets + - **Token Bridge** - transfer wrapped assets with optional message payloads + - **Settlement** - intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more - [:custom-arrow: Explore reference](/docs/build/reference/) + [:custom-arrow: Build Multichain Transfers](/docs/build/transfers/) + +
+ +## Access Real-Time Data + +
+ +- :octicons-tools-16:{ .lg .middle } **Real-Time Data** + + --- + + - **Wormhole Queries** - on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy + - **Supported query types** - includes query equivalents for `eth_call` (with options for timestamp and finality), `sol_account`, and `sol_pda` + - **Use familiar endpoints** - make calls against the RPC provider endpoints you already know and use + + [:custom-arrow: Build with Queries](/docs/build/queries/) + +
+ +## Multichain Governance + +
+ +- :octicons-tools-16:{ .lg .middle } **MultiGov** + + --- + + - **Wormhole's MultiGov** - a multichain governance system using Wormhole for seamless voting and proposal execution across multiple blockchain networks + - **Hub-and-spoke model** - spoke chain contracts handle local voting and proposals with results sent to the hub for vote aggregation and tallying, proposal management, and coordinating governance across connected chains + - **Wormhole security** - moving vote weight checkpoints, timelocks, and Wormhole verification keep governance activity secure + + [:custom-arrow: Build with MultiGov](/docs/build/multigov/)
--- END CONTENT --- From cd8006522147fcb4cecf6cffdd649e359832ad21 Mon Sep 17 00:00:00 2001 From: Dawn Kelly <83190195+dawnkelly09@users.noreply.github.com> Date: Tue, 18 Mar 2025 11:32:24 -0400 Subject: [PATCH 12/40] Dawn/learn index (#290) * adds connect index page to new IA * tweaks admonition usage on /docs/build/transfers/connect/overview/ * moves timeline into snippet, left aligned * feedback per review * llms * edits per feedback * improve intro * edits per feedback * applies review feedback * starts learn index page * removes placeholder * updates * learn/index page updates * adds settlement section, replaces cross-chain with multichain, updates LLMs * applies review feedback, updates llms * Update learn/index.md --------- Co-authored-by: Ilaria <43253244+ilariae@users.noreply.github.com> Co-authored-by: Ilaria Enache --- build/transfers/connect/index.md | 1 + learn/index.md | 115 ++++++++++++++++++++++++++++-- llms.txt | 116 +++++++++++++++++++++++++++++-- 3 files changed, 218 insertions(+), 14 deletions(-) diff --git a/build/transfers/connect/index.md b/build/transfers/connect/index.md index 1ff90d004..d3b86fdc3 100644 --- a/build/transfers/connect/index.md +++ b/build/transfers/connect/index.md @@ -39,6 +39,7 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/){target=\_blank}. + [:custom-arrow: Get started](/docs/tutorials/by-product/connect/react-dapp/) diff --git a/learn/index.md b/learn/index.md index 226299153..1f89c3859 100644 --- a/learn/index.md +++ b/learn/index.md @@ -1,31 +1,132 @@ --- title: Learn about Wormhole -description: Learn the basics of Wormhole, covering its architecture, messaging protocols, and how it enables cross-chain communication and asset transfers. +description: Learn the basics of Wormhole, covering its architecture, messaging protocols, and how it enables multichain communication and asset transfers. template: root-index-page.html --- # Learn -## Get Started +These informational sections will help you get to know Wormhole. Start with the fundamentals, then discover Wormhole's multichain transfer products and governance system. -This section offers informational content on Wormhole, covering its architecture, messaging protocols, and the fundamentals of how it enables cross-chain communication and asset transfers. +## Fundamentals + +To understand Wormhole from the ground up, visit the following sections.
-- :octicons-inbox-16:{ .lg .middle } **Infrastructure Components** +- :octicons-book-16:{ .lg .middle } **Introduction to Wormhole** + + --- + + Learn more about the problems Wormhole solves, explore use cases, and view a list of supported blockchains. + + [:custom-arrow: Introduction to Wormhole](/docs/learn/introduction/) + +- :octicons-book-16:{ .lg .middle } **Messaging Infrastructure** --- - Explore Wormhole's core infrastructure components and the unique roles each plays in enabling seamless message delivery across chains. + Investigate the messaging protocol architecture with an in-depth exploration of the individual components powering Wormhole's infrastructure. [:custom-arrow: Understand Wormhole's infrastructure](/docs/learn/infrastructure/) -- :octicons-people-16:{ .lg .middle } **Multichain Governance** +
+ +## Multichain Transfers + +Wormhole transfer products offer multiple options to meet your project's needs. Which product is best for your use depends upon the asset transfer type you want to add to your dApp. + +### Wrapped Tokens + +This method is likely familiar to you if you've previously built bridging projects. + +
+ +- :octicons-book-16:{ .lg .middle } **Token Bridge** + + --- + + - Use Wormhole deployed contracts to simplify development + - Multichain token transfers through lock-and-mint-mechanism + - Option to include message payload for uses like social platforms + + [:custom-arrow: Learn about Token Bridge](/docs/learn/transfers/token-bridge/) + +
+ +### Native Tokens + +Eliminate wrapped assets to preserve your token's native properties across chains. + +
+ +- :octicons-book-16:{ .lg .middle } **Native Token Transfers** + + --- + + - Deploy custom smart contracts to retain token ownership and upgrade authority with complete customizability + - No wrapped tokens or liquidity pools to avoid slippage and MEV risk + - Custom attestation is available by adding external verifiers + + [:custom-arrow: Learn about Native Token Transfers](/docs/learn/transfers/native-token-transfers/) + +
+ +### Intent-Based Transfers + +Institutional-scale digital asset settlement for individual users and insitutions. + +
+ +- :octicons-book-16:{ .lg .middle } **Settlement** + + --- + + - Leverages three protocols, providing flexibility and redundancy + - Chain-agnostic to liquidity on chains, enabling broader chain support + - English auction determines the winning solver for settlement + - USDC as the shuttle asset for seamless cross-chain settlement + + [:custom-arrow: Learn about Settlement](/docs/learn/transfers/settlement/) + +
+ +## Governance + +Explore MultiGov, Wormhole's multichain governance solution. + +
+ +- :octicons-book-16:{ .lg .middle } **Multichain Governance** --- - Explore this section to gain a foundational understanding of MultiGov, Wormhole's approach to multichain governance. + - Multichain voting and proposal execution + - Aggregates votes from all chains + - Can integrate with any Wormhole-supported blockchain [:custom-arrow: Learn about MultiGov](/docs/learn/governance/)
+ +## Additional Resources + +
+ +- :octicons-book-16:{ .lg .middle } **Product Comparison** + + --- + + Compare Wormhole's multichain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. + + [:custom-arrow: Compare Products](/docs/build/start-building/products/){target=\_blank} + +- :octicons-book-16:{ .lg .middle } **Use Cases** + + --- + + Explore Wormhole's use cases, from multichain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. + + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) + +
\ No newline at end of file diff --git a/llms.txt b/llms.txt index 9e02f9f6c..677f6d683 100644 --- a/llms.txt +++ b/llms.txt @@ -11095,6 +11095,7 @@ Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} pag This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/){target=\_blank}. + [:custom-arrow: Get started](/docs/tutorials/by-product/connect/react-dapp/) @@ -15050,34 +15051,135 @@ Doc-Content: https://wormhole.com/docs/learn/ --- BEGIN CONTENT --- --- title: Learn about Wormhole -description: Learn the basics of Wormhole, covering its architecture, messaging protocols, and how it enables cross-chain communication and asset transfers. +description: Learn the basics of Wormhole, covering its architecture, messaging protocols, and how it enables multichain communication and asset transfers. template: root-index-page.html --- # Learn -## Get Started +These informational sections will help you get to know Wormhole. Start with the fundamentals, then discover Wormhole's multichain transfer products and governance system. -This section offers informational content on Wormhole, covering its architecture, messaging protocols, and the fundamentals of how it enables cross-chain communication and asset transfers. +## Fundamentals + +To understand Wormhole from the ground up, visit the following sections.
-- :octicons-inbox-16:{ .lg .middle } **Infrastructure Components** +- :octicons-book-16:{ .lg .middle } **Introduction to Wormhole** + + --- + + Learn more about the problems Wormhole solves, explore use cases, and view a list of supported blockchains. + + [:custom-arrow: Introduction to Wormhole](/docs/learn/introduction/) + +- :octicons-book-16:{ .lg .middle } **Messaging Infrastructure** --- - Explore Wormhole's core infrastructure components and the unique roles each plays in enabling seamless message delivery across chains. + Investigate the messaging protocol architecture with an in-depth exploration of the individual components powering Wormhole's infrastructure. [:custom-arrow: Understand Wormhole's infrastructure](/docs/learn/infrastructure/) -- :octicons-people-16:{ .lg .middle } **Multichain Governance** +
+ +## Multichain Transfers + +Wormhole transfer products offer multiple options to meet your project's needs. Which product is best for your use depends upon the asset transfer type you want to add to your dApp. + +### Wrapped Tokens + +This method is likely familiar to you if you've previously built bridging projects. + +
+ +- :octicons-book-16:{ .lg .middle } **Token Bridge** + + --- + + - Use Wormhole deployed contracts to simplify development + - Multichain token transfers through lock-and-mint-mechanism + - Option to include message payload for uses like social platforms + + [:custom-arrow: Learn about Token Bridge](/docs/learn/transfers/token-bridge/) + +
+ +### Native Tokens + +Eliminate wrapped assets to preserve your token's native properties across chains. + +
+ +- :octicons-book-16:{ .lg .middle } **Native Token Transfers** + + --- + + - Deploy custom smart contracts to retain token ownership and upgrade authority with complete customizability + - No wrapped tokens or liquidity pools to avoid slippage and MEV risk + - Custom attestation is available by adding external verifiers + + [:custom-arrow: Learn about Native Token Transfers](/docs/learn/transfers/native-token-transfers/) + +
+ +### Intent-Based Transfers + +Institutional-scale digital asset settlement for individual users and insitutions. + +
+ +- :octicons-book-16:{ .lg .middle } **Settlement** + + --- + + - Leverages three protocols, providing flexibility and redundancy + - Chain-agnostic to liquidity on chains, enabling broader chain support + - English auction determines the winning solver for settlement + - USDC as the shuttle asset for seamless cross-chain settlement + + [:custom-arrow: Learn about Settlement](/docs/learn/transfers/settlement/) + +
+ +## Governance + +Explore MultiGov, Wormhole's multichain governance solution. + +
+ +- :octicons-book-16:{ .lg .middle } **Multichain Governance** --- - Explore this section to gain a foundational understanding of MultiGov, Wormhole's approach to multichain governance. + - Multichain voting and proposal execution + - Aggregates votes from all chains + - Can integrate with any Wormhole-supported blockchain [:custom-arrow: Learn about MultiGov](/docs/learn/governance/) +
+ +## Additional Resources + +
+ +- :octicons-book-16:{ .lg .middle } **Product Comparison** + + --- + + Compare Wormhole's multichain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. + + [:custom-arrow: Compare Products](/docs/build/start-building/products/){target=\_blank} + +- :octicons-book-16:{ .lg .middle } **Use Cases** + + --- + + Explore Wormhole's use cases, from multichain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. + + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) +
--- END CONTENT --- From 1be8067c04d70413503274be260f2da2ada962f5 Mon Sep 17 00:00:00 2001 From: Martin Hofmann Date: Tue, 18 Mar 2025 18:57:24 +0100 Subject: [PATCH 13/40] Martinh/new product ia (#303) * Split contract integration faqs to new pages (#300) * split out FAQs from contract integrations section * add links * llm check --------- Co-authored-by: martin0995 * update consistency level references (#299) * update consistency level references * fix link * fix link * remove duplicate text * updates for consistency * llm check --------- Co-authored-by: Martin Hofmann * update link * llm check --------- Co-authored-by: Erin Shaben --- build/contract-integrations/faqs.md | 55 ------- build/core-messaging/core-contracts.md | 8 +- build/reference/consistency-levels.md | 4 +- build/reference/index.md | 8 +- build/toolkit/typescript-sdk/sdk-layout.md | 2 +- .../toolkit/typescript-sdk/vaas-protocols.md | 2 +- build/toolkit/typescript-sdk/wormhole-sdk.md | 2 +- .../transfers/native-token-transfers/faqs.md | 9 ++ build/transfers/token-bridge.md | 33 ++++- learn/glossary.md | 2 +- learn/infrastructure/core-contracts.md | 2 +- learn/infrastructure/vaas.md | 4 +- .../native-token-transfers/overview.md | 2 +- learn/transfers/settlement/architecture.md | 2 +- llms.txt | 139 ++++++++---------- 15 files changed, 120 insertions(+), 154 deletions(-) delete mode 100644 build/contract-integrations/faqs.md diff --git a/build/contract-integrations/faqs.md b/build/contract-integrations/faqs.md deleted file mode 100644 index 3911faa87..000000000 --- a/build/contract-integrations/faqs.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Contract Integrations FAQs -description: Frequently asked questions about integrating contracts with Wormhole, including ownership of wrapped tokens and developing custom relayers. ---- - -# Contract Integrations FAQs - -## Can ownership of wrapped tokens be transferred from the Token Bridge? - -No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. - - - **On EVM chains** - when you attest a token, the Token Bridge deploys a new ERC-20 contract as a beacon proxy. The upgrade authority for these contracts is the Token Bridge contract itself - - **On Solana** - the Token Bridge deploys a new SPL token, where the upgrade authority is a Program Derived Address (PDA) controlled by the Token Bridge - -The logic behind deploying these token contracts involves submitting an attestation VAA, which allows the Token Bridge to verify and deploy the wrapped token contract on the destination chain. - -Relevant contracts: - - - [Ethereum ERC-20](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/token/Token.sol){target=\_blank} - - [Solana SPL](https://github.com/wormhole-foundation/wormhole/blob/main/solana/modules/token_bridge/program/src/api/create_wrapped.rs#L128-L145){target=\_blank} - - [Attestation VAA and Token Contract Deployment Logic](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol#L385-L431){target=\_blank} - -## How do I start developing a custom relayer? - -Previously referred to as specialized relayers, custom relayers allow you to build and tailor relayers to fit your specific use case. To get started, refer to the following resources: - - - [Custom Relayers documentation](/docs/learn/infrastructure/relayer/#custom-relayers){target=\_blank} - - [Relayer Engine](/docs/infrastructure/relayers/run-relayer/#get-started-with-the-relayer-engine){target=\_blank} - - [Run a Custom Relayer](/docs/infrastructure/relayers/run-relayer/){target=\_blank} - -These resources will guide you through building and deploying custom relayers tailored to your use case. - -## Is there a way to use NTT tokens with chains that don't currently support NTT? - -Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank}. For example: - -- **Wrapped token scenario** - a token, such as the W token, can be bridged to non-NTT networks using the Token Bridge. When the token is bridged to a chain like Sui, a wrapped version of the token is created (e.g., Wrapped W token) -- **Unwrapping requirement** - tokens bridged using the Token Bridge cannot be directly transferred to NTT-supported chains. To transfer them, they must first be unwrapped on the non-NTT chain and then transferred via the appropriate mechanism -- **Messaging consistency** - the Token Bridge exclusively uses Wormhole messaging, ensuring consistent communication across all chains, whether or not they support NTT - -This approach ensures interoperability while maintaining the integrity of the token's cross-chain movement. - -## How do I update the metadata of a wrapped token? - -Because wrapped tokens are deployed and controlled by the Token Bridge program, which is under the authority of the Wormhole Guardians, there is no direct way for you to update their metadata. Instead, you must coordinate with the respective block explorer teams to request and apply metadata changes. - -## How do I calculate the current gas costs for Ethereum Mainnet VAA verification? - -You can refer to the [core-bridge repository](https://github.com/nonergodic/core-bridge){target=\_blank} for guidance on how to calculate the current gas costs associated with verifying VAAs on Ethereum Mainnet. This repository provides up-to-date references and examples to help you gauge costs accurately. - -## How can I update my wrapped token image on Solscan? - -Updating the metadata (such as the token image, name, or symbol) of a wrapped token on Solscan requires contacting the Solscan team directly. Wormhole cannot make these updates for you because the wrapped token contracts are owned and controlled by the Token Bridge, not individual developers or projects. - -To request an update, contact Solscan via [support@solscan.io](mailto:support@solscan.io) or their [contact form](https://solscan.io/contactus){target=\_blank}. \ No newline at end of file diff --git a/build/core-messaging/core-contracts.md b/build/core-messaging/core-contracts.md index 63cd8e29d..18f1c5936 100644 --- a/build/core-messaging/core-contracts.md +++ b/build/core-messaging/core-contracts.md @@ -17,9 +17,9 @@ This guide will walk you through the variations and key methods of the Core Cont To interact with the Wormhole Core Contract, you'll need the following: -- [The address of the Core Contract](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on the chains you're deploying your contract on -- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on -- [The consistency levels](/docs/build/reference/consistency-levels/){target=\_blank} (required finality) for the chains you're deploying your contract on +- The [address of the Core Contract](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on the chains you're deploying your contract on +- The [Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on +- The [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} (consistency) levels (required finality) for the chains you're deploying your contract on ## How to Interact with Core Contracts @@ -276,7 +276,7 @@ This check can be applied after the VAA is parsed, ensuring only authorized send In addition to environment-specific checks that should be performed, a contract should take care to check other [fields in the body](/docs/learn/infrastructure/vaas/){target=\_blank}, including: - **Sequence** - is this the expected sequence number? How should out-of-order deliveries be handled? -- **Consistency level** - for the chain this message came from, is the [consistency level](/docs/build/reference/consistency-levels/){target=\_blank} enough to guarantee the transaction won't be reverted after taking some action? +- **Consistency level** - for the chain this message came from, is the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} level enough to guarantee the transaction won't be reverted after taking some action? The VAA digest is separate from the VAA body but is also relevant. It can be used for replay protection by checking if the digest has already been seen. Since the payload itself is application-specific, there may be other elements to check to ensure safety. diff --git a/build/reference/consistency-levels.md b/build/reference/consistency-levels.md index 1079bb576..3c3642ad9 100644 --- a/build/reference/consistency-levels.md +++ b/build/reference/consistency-levels.md @@ -1,9 +1,9 @@ --- -title: Consistency Levels +title: Wormhole Finality | Consistency Levels description: This page documents how long to wait for finality before signing, based on each chain’s consistency (finality) level and consensus mechanism. --- -# Consistency Levels +# Wormhole Finality The following table documents each chain's `consistencyLevel` values (i.e., finality reached before signing). The consistency level defines how long the Guardians should wait before signing a VAA. The finalization time depends on the specific chain's consensus mechanism. The consistency level is a `u8`, so any single byte may be used. However, a small subset has particular meanings. If the `consistencyLevel` isn't one of those specific values, the `Otherwise` column describes how it's interpreted. diff --git a/build/reference/index.md b/build/reference/index.md index 8c50f92e7..518d2dbb4 100644 --- a/build/reference/index.md +++ b/build/reference/index.md @@ -1,13 +1,13 @@ --- title: Reference -description: Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and consistency levels for Guardians. +description: Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and Wormhole finality levels for Guardians. --- # Reference ## Get Started -In this section, you'll find reference information that is essential for development. This includes Wormhole chain IDs, canonical contract addresses, and consistency levels for Guardians for each of the supported blockchains in the Wormhole ecosystem. +In this section, you'll find reference information that is essential for development. This includes Wormhole chain IDs, canonical contract addresses, and finality levels for Guardians for each of the supported blockchains in the Wormhole ecosystem.
@@ -19,13 +19,13 @@ In this section, you'll find reference information that is essential for develop [:custom-arrow: View list of chain IDs](/docs/build/reference/chain-ids/) -- :octicons-clock-16:{ .lg .middle } **Consistency Levels** +- :material-timer-sand:{ .lg .middle } **Wormhole Finality** --- See the levels of finality (consistency) a transaction should meet before being signed by a Guardian for each network. - [:custom-arrow: View list of consistency levels](/docs/build/reference/consistency-levels/) + [:custom-arrow: View list of finality levels](/docs/build/reference/consistency-levels/) - :octicons-file-code-16:{ .lg .middle } **Contract Addresses** diff --git a/build/toolkit/typescript-sdk/sdk-layout.md b/build/toolkit/typescript-sdk/sdk-layout.md index d6e336c7c..1e2717422 100644 --- a/build/toolkit/typescript-sdk/sdk-layout.md +++ b/build/toolkit/typescript-sdk/sdk-layout.md @@ -315,7 +315,7 @@ VAAs are the backbone of Wormhole’s cross-chain communication. Each VAA is a s The Wormhole SDK organizes the VAA structure into three key components: - [**Header**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L37-L41){target=\_blank} - contains metadata such as the Guardian set index and an array of Guardian signatures - - [**Envelope**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} - includes chain-specific details such as the emitter chain, address, sequence, and consistency level + - [**Envelope**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} - includes chain-specific details such as the emitter chain, address, sequence, and [consistency (finality) level](/build/reference/consistency-levels/){target=\_blank} - **Payload** - provides application-specific data, such as the actual message or operation being performed **Header layout:** diff --git a/build/toolkit/typescript-sdk/vaas-protocols.md b/build/toolkit/typescript-sdk/vaas-protocols.md index f00cb3a96..185a04f47 100644 --- a/build/toolkit/typescript-sdk/vaas-protocols.md +++ b/build/toolkit/typescript-sdk/vaas-protocols.md @@ -53,7 +53,7 @@ Each protocol integrates its payload format into the VAA structure, ensuring con The TypeScript SDK is designed for off-chain operations like reading, validating, and manipulating VAAs before submitting them to a chain. Developers can easily deserialize VAAs to extract protocol payloads and prepare actions such as initiating token transfers or constructing delivery instructions. -In the example below, we use the real [`envelopeLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dd6bd2463264680597519285ff559f9e92e85ca7/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} from Wormhole's TS SDK to deserialize and extract essential information like the emitter chain, sequence, and consistency level: +In the example below, we use the real [`envelopeLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dd6bd2463264680597519285ff559f9e92e85ca7/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} from Wormhole's TS SDK to deserialize and extract essential information like the emitter chain, sequence, and [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}: ```typescript --8<-- "code/build/toolkit/typescript-sdk/vaas-protocols/ts-sdk.ts" diff --git a/build/toolkit/typescript-sdk/wormhole-sdk.md b/build/toolkit/typescript-sdk/wormhole-sdk.md index 9611a09f0..b78ccf630 100644 --- a/build/toolkit/typescript-sdk/wormhole-sdk.md +++ b/build/toolkit/typescript-sdk/wormhole-sdk.md @@ -246,7 +246,7 @@ The code then prepares a message for publication. This message includes: - The sender's address - The message payload (in this case, the encoded string `lol`) - A nonce (set to `0` here, but can be any user-defined value to uniquely identify the message) -- A consistency level (set to `0`, which determines the finality requirements for the message) +- A [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank} (set to `0`, which determines the finality requirements for the message) After preparing the message, the next steps are to generate, sign, and send the transaction or transactions required to publish the message on the Solana blockchain. Once the transaction is confirmed, the Wormhole message ID is extracted from the transaction logs. This ID is crucial for tracking the message across chains. diff --git a/build/transfers/native-token-transfers/faqs.md b/build/transfers/native-token-transfers/faqs.md index 9d72f20ce..2669fbdf2 100644 --- a/build/transfers/native-token-transfers/faqs.md +++ b/build/transfers/native-token-transfers/faqs.md @@ -124,3 +124,12 @@ While xERC20 is an extension of the ERC20 standard, NTT is designed as a framewo To begin transferring tokens to a chain in burning mode when no tokens are locked, you must first send tokens to the NTT manager to back the supply. The address of the NTT manager can be found in the `deployment.json` file. +## Is there a way to use NTT tokens with chains that don't currently support NTT? + +Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank}. For example: + +- **Wrapped token scenario** - a token, such as the W token, can be bridged to non-NTT networks using the Token Bridge. When the token is bridged to a chain like Sui, a wrapped version of the token is created (e.g., Wrapped W token) +- **Unwrapping requirement** - tokens bridged using the Token Bridge cannot be directly transferred to NTT-supported chains. To transfer them, they must first be unwrapped on the non-NTT chain and then transferred via the appropriate mechanism +- **Messaging consistency** - the Token Bridge exclusively uses Wormhole messaging, ensuring consistent communication across all chains, whether or not they support NTT + +This approach ensures interoperability while maintaining the integrity of the token's cross-chain movement. \ No newline at end of file diff --git a/build/transfers/token-bridge.md b/build/transfers/token-bridge.md index 743c8d915..252da3d7b 100644 --- a/build/transfers/token-bridge.md +++ b/build/transfers/token-bridge.md @@ -214,4 +214,35 @@ For a deeper understanding of the Token Bridge implementation and to review the ## Portal Bridge -A practical implementation of the Wormhole Token Bridge can be seen in [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides an easy-to-use interface for transferring tokens across multiple blockchain networks. It leverages the Wormhole infrastructure to handle cross-chain asset transfers seamlessly, offering users a convenient way to bridge their assets while ensuring security and maintaining token integrity. \ No newline at end of file +A practical implementation of the Wormhole Token Bridge can be seen in [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides an easy-to-use interface for transferring tokens across multiple blockchain networks. It leverages the Wormhole infrastructure to handle cross-chain asset transfers seamlessly, offering users a convenient way to bridge their assets while ensuring security and maintaining token integrity. + +## FAQs + +### Can ownership of wrapped tokens be transferred from the Token Bridge? + +No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. + + - **On EVM chains** - when you attest a token, the Token Bridge deploys a new ERC-20 contract as a beacon proxy. The upgrade authority for these contracts is the Token Bridge contract itself + - **On Solana** - the Token Bridge deploys a new SPL token, where the upgrade authority is a Program Derived Address (PDA) controlled by the Token Bridge + +The logic behind deploying these token contracts involves submitting an attestation VAA, which allows the Token Bridge to verify and deploy the wrapped token contract on the destination chain. + +Relevant contracts: + + - [Ethereum ERC-20](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/token/Token.sol){target=\_blank} + - [Solana SPL](https://github.com/wormhole-foundation/wormhole/blob/main/solana/modules/token_bridge/program/src/api/create_wrapped.rs#L128-L145){target=\_blank} + - [Attestation VAA and Token Contract Deployment Logic](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol#L385-L431){target=\_blank} + +### How do I update the metadata of a wrapped token? + +Because wrapped tokens are deployed and controlled by the Token Bridge program, which is under the authority of the Wormhole Guardians, there is no direct way for you to update their metadata. Instead, you must coordinate with the respective block explorer teams to request and apply metadata changes. + +### How do I calculate the current gas costs for Ethereum Mainnet VAA verification? + +You can refer to the [core-bridge repository](https://github.com/nonergodic/core-bridge){target=\_blank} for guidance on how to calculate the current gas costs associated with verifying VAAs on Ethereum Mainnet. This repository provides up-to-date references and examples to help you gauge costs accurately. + +### How can I update my wrapped token image on Solscan? + +Updating the metadata (such as the token image, name, or symbol) of a wrapped token on [Solscan](https://solscan.io/){target=\_blank} requires [contacting the Solscan team](https://solscan.io/contactus){target=\_blank} directly. Wormhole cannot make these updates for you because the wrapped token contracts are owned and controlled by the Token Bridge, not individual developers or projects. + +To request an update, contact Solscan via [support@solscan.io](mailto:support@solscan.io) or their [contact form](https://solscan.io/contactus){target=\_blank}. \ No newline at end of file diff --git a/learn/glossary.md b/learn/glossary.md index 253177e35..bb407061a 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -15,7 +15,7 @@ You can find each chain ID documented on the [Wormhole Chain IDs](/docs/build/re ## Consistency Level -The level of finality (consistency) a transaction should meet before being signed by a Guardian. See the [Consistency Levels](/docs/build/reference/consistency-levels/){target=\_blank} reference page for details. +The level of finality (consistency) a transaction should meet before being signed by a Guardian. See the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} reference page for details. ## Delivery Provider diff --git a/learn/infrastructure/core-contracts.md b/learn/infrastructure/core-contracts.md index 3ae4e8947..5af9058a1 100644 --- a/learn/infrastructure/core-contracts.md +++ b/learn/infrastructure/core-contracts.md @@ -39,7 +39,7 @@ When sending a cross-chain message from the source chain Core Contract, you'll c - `emitterAddress` - the contract which made the call to publish the message - `sequenceNumber` - a unique number that increments for every message for a given emitter (and implicitly chain) -- `consistencyLevel`- the level of finality to reach before the Guardians will observe and attest the emitted event. This is a defense against reorgs and rollbacks since a transaction, once considered "final," is guaranteed not to have the state changes it caused rolled back. Since different chains use different consensus mechanisms, each one has different finality assumptions, so this value is treated differently on a chain-by-chain basis. See the options for finality for each chain in the [Consistency Levels](/docs/build/reference/consistency-levels/){target=\_blank} reference page +- `consistencyLevel`- the level of finality to reach before the Guardians will observe and attest the emitted event. This is a defense against reorgs and rollbacks since a transaction, once considered "final," is guaranteed not to have the state changes it caused rolled back. Since different chains use different consensus mechanisms, each one has different finality assumptions, so this value is treated differently on a chain-by-chain basis. See the options for finality for each chain in the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} reference page There are no fees to publish a message except when publishing on Solana, but this is subject to change in the future. diff --git a/learn/infrastructure/vaas.md b/learn/infrastructure/vaas.md index bf15a4457..709447ff6 100644 --- a/learn/infrastructure/vaas.md +++ b/learn/infrastructure/vaas.md @@ -50,7 +50,7 @@ The body is _deterministically_ derived from an on-chain message. Any two Guardi - `emitter_chain` ++"u16"++ - the id of the chain that emitted the message - `emitter_address` ++"[32]byte"++ - the contract address (Wormhole formatted) that called the Core Contract - `sequence` ++"u64"++ - the auto-incrementing integer that represents the number of messages published by this emitter -- `consistency_level` ++"u8"++ - the consistency level (finality) required by this emitter +- `consistency_level` ++"u8"++ - the [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}, required by this emitter - `payload` ++"[]byte"++ - arbitrary bytes containing the data to be acted on The body contains relevant information for entities, such as contracts, or other systems, that process or utilize VAAs. When a function like `parseAndVerifyVAA` is called, the body is returned, allowing verification of the `emitterAddress` to determine if the VAA originated from a trusted contract. @@ -60,7 +60,7 @@ The body contains relevant information for entities, such as contracts, or other ## Consistency and Finality -The consistency level determines whether Guardians wait for a chain’s final commitment state or issue a VAA sooner under less-final conditions. This choice is especially relevant for blockchains without instant finality, where the risk of reorganization remains until a block is deeply confirmed. +The [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}, determines whether Guardians wait for a chain’s final commitment state or issue a VAA sooner under less-final conditions. This choice is especially relevant for blockchains without instant finality, where the risk of reorganization remains until a block is deeply confirmed. Guardian watchers are specialized processes that monitor each blockchain in real time. They enforce the selected consistency level by deciding whether enough commitment has been reached before signing and emitting a VAA. Some chains allow only one commitment level (effectively final), while others let integrators pick between near-final or fully finalized states. Choosing a faster option speeds up VAA production but increases reorg risk; choosing a more conservative option takes longer but reduces the likelihood of rollback. diff --git a/learn/transfers/native-token-transfers/overview.md b/learn/transfers/native-token-transfers/overview.md index 3f796e511..cad4688af 100644 --- a/learn/transfers/native-token-transfers/overview.md +++ b/learn/transfers/native-token-transfers/overview.md @@ -9,7 +9,7 @@ description: Explore Wormhole's Native Token Transfers for flexible cross-chain If you're ready to deploy NTT or access the CLI, follow the detailed [NTT Deployment Section](/docs/build/transfers/native-token-transfers/deployment-process/){target=\_blank}. - For deployment steps on EVM, visit the [Deploy to EVM page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} - - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} + - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/){target=\_blank} ## Introduction diff --git a/learn/transfers/settlement/architecture.md b/learn/transfers/settlement/architecture.md index 8475f6f9d..ab4710e96 100644 --- a/learn/transfers/settlement/architecture.md +++ b/learn/transfers/settlement/architecture.md @@ -91,7 +91,7 @@ Mayan MCTP is a cross-chain intents protocol that leverages Circle's CCTP (Cross The contract constructs a `BridgeWithFeeMsg` structure, which includes parameters such as the action type, payload type, nonce, destination address, gas drop, redeem fee, and an optional custom payload hash -2. **Intent submission** - the contract calls the CCTP messenger to deposit the tokens for bridging. A unique nonce is generated, and a corresponding fee-lock record is created in the contract's storage. This record includes the locked fee, gas drop parameters, and destination details. The constructed message is hashed and published through Wormhole. The protocol fee is deducted during this step, and the Wormhole message is broadcast with the specified consistency level +2. **Intent submission** - the contract calls the CCTP messenger to deposit the tokens for bridging. A unique nonce is generated, and a corresponding fee-lock record is created in the contract's storage. This record includes the locked fee, gas drop parameters, and destination details. The constructed message is hashed and published through Wormhole. The protocol fee is deducted during this step, and the Wormhole message is broadcast with the specified [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank} 3. **Fulfillment** - on the destination chain, the protocol receives a CCTP message with corresponding signatures and verifies the payload using Wormhole's verification mechanism. Once validated, the redeemed tokens are transferred to the intended recipient, deducting the redeem fee as per protocol rules The protocol provides mechanisms for unlocking the fee once the bridging process is completed. This can occur immediately upon fulfillment or be batched for efficiency. In the fee unlock flow, the contract verifies the unlock message via Wormhole and then releases the locked fee to the designated unlocker address. diff --git a/llms.txt b/llms.txt index 677f6d683..1ee709b2d 100644 --- a/llms.txt +++ b/llms.txt @@ -4,7 +4,6 @@ Documentation: https://wormhole.com/docs/ # List of doc pages: -Doc-Page: https://wormhole.com/docs/build/contract-integrations/faqs/ Doc-Page: https://wormhole.com/docs/build/core-messaging/core-contracts/ Doc-Page: https://wormhole.com/docs/build/core-messaging/ Doc-Page: https://wormhole.com/docs/build/core-messaging/wormhole-relayers/ @@ -120,65 +119,6 @@ Doc-Page: https://wormhole.com/docs/tutorials/ # Full content for each doc page -Doc-Content: https://wormhole.com/docs/build/contract-integrations/faqs/ ---- BEGIN CONTENT --- ---- -title: Contract Integrations FAQs -description: Frequently asked questions about integrating contracts with Wormhole, including ownership of wrapped tokens and developing custom relayers. ---- - -# Contract Integrations FAQs - -## Can ownership of wrapped tokens be transferred from the Token Bridge? - -No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. - - - **On EVM chains** - when you attest a token, the Token Bridge deploys a new ERC-20 contract as a beacon proxy. The upgrade authority for these contracts is the Token Bridge contract itself - - **On Solana** - the Token Bridge deploys a new SPL token, where the upgrade authority is a Program Derived Address (PDA) controlled by the Token Bridge - -The logic behind deploying these token contracts involves submitting an attestation VAA, which allows the Token Bridge to verify and deploy the wrapped token contract on the destination chain. - -Relevant contracts: - - - [Ethereum ERC-20](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/token/Token.sol){target=\_blank} - - [Solana SPL](https://github.com/wormhole-foundation/wormhole/blob/main/solana/modules/token_bridge/program/src/api/create_wrapped.rs#L128-L145){target=\_blank} - - [Attestation VAA and Token Contract Deployment Logic](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol#L385-L431){target=\_blank} - -## How do I start developing a custom relayer? - -Previously referred to as specialized relayers, custom relayers allow you to build and tailor relayers to fit your specific use case. To get started, refer to the following resources: - - - [Custom Relayers documentation](/docs/learn/infrastructure/relayer/#custom-relayers){target=\_blank} - - [Relayer Engine](/docs/infrastructure/relayers/run-relayer/#get-started-with-the-relayer-engine){target=\_blank} - - [Run a Custom Relayer](/docs/infrastructure/relayers/run-relayer/){target=\_blank} - -These resources will guide you through building and deploying custom relayers tailored to your use case. - -## Is there a way to use NTT tokens with chains that don't currently support NTT? - -Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank}. For example: - -- **Wrapped token scenario** - a token, such as the W token, can be bridged to non-NTT networks using the Token Bridge. When the token is bridged to a chain like Sui, a wrapped version of the token is created (e.g., Wrapped W token) -- **Unwrapping requirement** - tokens bridged using the Token Bridge cannot be directly transferred to NTT-supported chains. To transfer them, they must first be unwrapped on the non-NTT chain and then transferred via the appropriate mechanism -- **Messaging consistency** - the Token Bridge exclusively uses Wormhole messaging, ensuring consistent communication across all chains, whether or not they support NTT - -This approach ensures interoperability while maintaining the integrity of the token's cross-chain movement. - -## How do I update the metadata of a wrapped token? - -Because wrapped tokens are deployed and controlled by the Token Bridge program, which is under the authority of the Wormhole Guardians, there is no direct way for you to update their metadata. Instead, you must coordinate with the respective block explorer teams to request and apply metadata changes. - -## How do I calculate the current gas costs for Ethereum Mainnet VAA verification? - -You can refer to the [core-bridge repository](https://github.com/nonergodic/core-bridge){target=\_blank} for guidance on how to calculate the current gas costs associated with verifying VAAs on Ethereum Mainnet. This repository provides up-to-date references and examples to help you gauge costs accurately. - -## How can I update my wrapped token image on Solscan? - -Updating the metadata (such as the token image, name, or symbol) of a wrapped token on Solscan requires contacting the Solscan team directly. Wormhole cannot make these updates for you because the wrapped token contracts are owned and controlled by the Token Bridge, not individual developers or projects. - -To request an update, contact Solscan via [support@solscan.io](mailto:support@solscan.io) or their [contact form](https://solscan.io/contactus){target=\_blank}. ---- END CONTENT --- - Doc-Content: https://wormhole.com/docs/build/core-messaging/core-contracts/ --- BEGIN CONTENT --- --- @@ -200,9 +140,9 @@ This guide will walk you through the variations and key methods of the Core Cont To interact with the Wormhole Core Contract, you'll need the following: -- [The address of the Core Contract](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on the chains you're deploying your contract on -- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on -- [The consistency levels](/docs/build/reference/consistency-levels/){target=\_blank} (required finality) for the chains you're deploying your contract on +- The [address of the Core Contract](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on the chains you're deploying your contract on +- The [Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on +- The [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} (consistency) levels (required finality) for the chains you're deploying your contract on ## How to Interact with Core Contracts @@ -538,7 +478,7 @@ await tx.wait(); In addition to environment-specific checks that should be performed, a contract should take care to check other [fields in the body](/docs/learn/infrastructure/vaas/){target=\_blank}, including: - **Sequence** - is this the expected sequence number? How should out-of-order deliveries be handled? -- **Consistency level** - for the chain this message came from, is the [consistency level](/docs/build/reference/consistency-levels/){target=\_blank} enough to guarantee the transaction won't be reverted after taking some action? +- **Consistency level** - for the chain this message came from, is the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} level enough to guarantee the transaction won't be reverted after taking some action? The VAA digest is separate from the VAA body but is also relevant. It can be used for replay protection by checking if the digest has already been seen. Since the payload itself is application-specific, there may be other elements to check to ensure safety. @@ -2176,11 +2116,11 @@ The following table documents the chain IDs used by Wormhole and places them alo Doc-Content: https://wormhole.com/docs/build/reference/consistency-levels/ --- BEGIN CONTENT --- --- -title: Consistency Levels +title: Wormhole Finality | Consistency Levels description: This page documents how long to wait for finality before signing, based on each chain’s consistency (finality) level and consensus mechanism. --- -# Consistency Levels +# Wormhole Finality The following table documents each chain's `consistencyLevel` values (i.e., finality reached before signing). The consistency level defines how long the Guardians should wait before signing a VAA. The finalization time depends on the specific chain's consensus mechanism. The consistency level is a `u8`, so any single byte may be used. However, a small subset has particular meanings. If the `consistencyLevel` isn't one of those specific values, the `Otherwise` column describes how it's interpreted. @@ -2289,14 +2229,14 @@ Doc-Content: https://wormhole.com/docs/build/reference/ --- BEGIN CONTENT --- --- title: Reference -description: Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and consistency levels for Guardians. +description: Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and Wormhole finality levels for Guardians. --- # Reference ## Get Started -In this section, you'll find reference information that is essential for development. This includes Wormhole chain IDs, canonical contract addresses, and consistency levels for Guardians for each of the supported blockchains in the Wormhole ecosystem. +In this section, you'll find reference information that is essential for development. This includes Wormhole chain IDs, canonical contract addresses, and finality levels for Guardians for each of the supported blockchains in the Wormhole ecosystem.
@@ -2308,13 +2248,13 @@ In this section, you'll find reference information that is essential for develop [:custom-arrow: View list of chain IDs](/docs/build/reference/chain-ids/) -- :octicons-clock-16:{ .lg .middle } **Consistency Levels** +- :material-timer-sand:{ .lg .middle } **Wormhole Finality** --- See the levels of finality (consistency) a transaction should meet before being signed by a Guardian for each network. - [:custom-arrow: View list of consistency levels](/docs/build/reference/consistency-levels/) + [:custom-arrow: View list of finality levels](/docs/build/reference/consistency-levels/) - :octicons-file-code-16:{ .lg .middle } **Contract Addresses** @@ -5189,7 +5129,7 @@ VAAs are the backbone of Wormhole’s cross-chain communication. Each VAA is a s The Wormhole SDK organizes the VAA structure into three key components: - [**Header**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L37-L41){target=\_blank} - contains metadata such as the Guardian set index and an array of Guardian signatures - - [**Envelope**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} - includes chain-specific details such as the emitter chain, address, sequence, and consistency level + - [**Envelope**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} - includes chain-specific details such as the emitter chain, address, sequence, and [consistency (finality) level](/build/reference/consistency-levels/){target=\_blank} - **Payload** - provides application-specific data, such as the actual message or operation being performed **Header layout:** @@ -5529,7 +5469,7 @@ Each protocol integrates its payload format into the VAA structure, ensuring con The TypeScript SDK is designed for off-chain operations like reading, validating, and manipulating VAAs before submitting them to a chain. Developers can easily deserialize VAAs to extract protocol payloads and prepare actions such as initiating token transfers or constructing delivery instructions. -In the example below, we use the real [`envelopeLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dd6bd2463264680597519285ff559f9e92e85ca7/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} from Wormhole's TS SDK to deserialize and extract essential information like the emitter chain, sequence, and consistency level: +In the example below, we use the real [`envelopeLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dd6bd2463264680597519285ff559f9e92e85ca7/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} from Wormhole's TS SDK to deserialize and extract essential information like the emitter chain, sequence, and [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}: ```typescript import { deserializeLayout } from '@wormhole-foundation/sdk-base'; @@ -6101,7 +6041,7 @@ The code then prepares a message for publication. This message includes: - The sender's address - The message payload (in this case, the encoded string `lol`) - A nonce (set to `0` here, but can be any user-defined value to uniquely identify the message) -- A consistency level (set to `0`, which determines the finality requirements for the message) +- A [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank} (set to `0`, which determines the finality requirements for the message) After preparing the message, the next steps are to generate, sign, and send the transaction or transactions required to publish the message on the Solana blockchain. Once the transaction is confirmed, the Wormhole message ID is extracted from the transaction logs. This ID is crucial for tracking the message across chains. @@ -13168,6 +13108,16 @@ While xERC20 is an extension of the ERC20 standard, NTT is designed as a framewo ## How can I start transferring tokens to a chain that is in burning mode, if no tokens are locked yet? To begin transferring tokens to a chain in burning mode when no tokens are locked, you must first send tokens to the NTT manager to back the supply. The address of the NTT manager can be found in the `deployment.json` file. + +## Is there a way to use NTT tokens with chains that don't currently support NTT? + +Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank}. For example: + +- **Wrapped token scenario** - a token, such as the W token, can be bridged to non-NTT networks using the Token Bridge. When the token is bridged to a chain like Sui, a wrapped version of the token is created (e.g., Wrapped W token) +- **Unwrapping requirement** - tokens bridged using the Token Bridge cannot be directly transferred to NTT-supported chains. To transfer them, they must first be unwrapped on the non-NTT chain and then transferred via the appropriate mechanism +- **Messaging consistency** - the Token Bridge exclusively uses Wormhole messaging, ensuring consistent communication across all chains, whether or not they support NTT + +This approach ensures interoperability while maintaining the integrity of the token's cross-chain movement. --- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/ @@ -14127,6 +14077,37 @@ For a deeper understanding of the Token Bridge implementation and to review the ## Portal Bridge A practical implementation of the Wormhole Token Bridge can be seen in [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides an easy-to-use interface for transferring tokens across multiple blockchain networks. It leverages the Wormhole infrastructure to handle cross-chain asset transfers seamlessly, offering users a convenient way to bridge their assets while ensuring security and maintaining token integrity. + +## FAQs + +### Can ownership of wrapped tokens be transferred from the Token Bridge? + +No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. + + - **On EVM chains** - when you attest a token, the Token Bridge deploys a new ERC-20 contract as a beacon proxy. The upgrade authority for these contracts is the Token Bridge contract itself + - **On Solana** - the Token Bridge deploys a new SPL token, where the upgrade authority is a Program Derived Address (PDA) controlled by the Token Bridge + +The logic behind deploying these token contracts involves submitting an attestation VAA, which allows the Token Bridge to verify and deploy the wrapped token contract on the destination chain. + +Relevant contracts: + + - [Ethereum ERC-20](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/token/Token.sol){target=\_blank} + - [Solana SPL](https://github.com/wormhole-foundation/wormhole/blob/main/solana/modules/token_bridge/program/src/api/create_wrapped.rs#L128-L145){target=\_blank} + - [Attestation VAA and Token Contract Deployment Logic](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol#L385-L431){target=\_blank} + +### How do I update the metadata of a wrapped token? + +Because wrapped tokens are deployed and controlled by the Token Bridge program, which is under the authority of the Wormhole Guardians, there is no direct way for you to update their metadata. Instead, you must coordinate with the respective block explorer teams to request and apply metadata changes. + +### How do I calculate the current gas costs for Ethereum Mainnet VAA verification? + +You can refer to the [core-bridge repository](https://github.com/nonergodic/core-bridge){target=\_blank} for guidance on how to calculate the current gas costs associated with verifying VAAs on Ethereum Mainnet. This repository provides up-to-date references and examples to help you gauge costs accurately. + +### How can I update my wrapped token image on Solscan? + +Updating the metadata (such as the token image, name, or symbol) of a wrapped token on [Solscan](https://solscan.io/){target=\_blank} requires [contacting the Solscan team](https://solscan.io/contactus){target=\_blank} directly. Wormhole cannot make these updates for you because the wrapped token contracts are owned and controlled by the Token Bridge, not individual developers or projects. + +To request an update, contact Solscan via [support@solscan.io](mailto:support@solscan.io) or their [contact form](https://solscan.io/contactus){target=\_blank}. --- END CONTENT --- Doc-Content: https://wormhole.com/docs/infrastructure/ @@ -14708,7 +14689,7 @@ You can find each chain ID documented on the [Wormhole Chain IDs](/docs/build/re ## Consistency Level -The level of finality (consistency) a transaction should meet before being signed by a Guardian. See the [Consistency Levels](/docs/build/reference/consistency-levels/){target=\_blank} reference page for details. +The level of finality (consistency) a transaction should meet before being signed by a Guardian. See the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} reference page for details. ## Delivery Provider @@ -15269,7 +15250,7 @@ When sending a cross-chain message from the source chain Core Contract, you'll c - `emitterAddress` - the contract which made the call to publish the message - `sequenceNumber` - a unique number that increments for every message for a given emitter (and implicitly chain) -- `consistencyLevel`- the level of finality to reach before the Guardians will observe and attest the emitted event. This is a defense against reorgs and rollbacks since a transaction, once considered "final," is guaranteed not to have the state changes it caused rolled back. Since different chains use different consensus mechanisms, each one has different finality assumptions, so this value is treated differently on a chain-by-chain basis. See the options for finality for each chain in the [Consistency Levels](/docs/build/reference/consistency-levels/){target=\_blank} reference page +- `consistencyLevel`- the level of finality to reach before the Guardians will observe and attest the emitted event. This is a defense against reorgs and rollbacks since a transaction, once considered "final," is guaranteed not to have the state changes it caused rolled back. Since different chains use different consensus mechanisms, each one has different finality assumptions, so this value is treated differently on a chain-by-chain basis. See the options for finality for each chain in the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} reference page There are no fees to publish a message except when publishing on Solana, but this is subject to change in the future. @@ -15640,7 +15621,7 @@ The body is _deterministically_ derived from an on-chain message. Any two Guardi - `emitter_chain` ++"u16"++ - the id of the chain that emitted the message - `emitter_address` ++"[32]byte"++ - the contract address (Wormhole formatted) that called the Core Contract - `sequence` ++"u64"++ - the auto-incrementing integer that represents the number of messages published by this emitter -- `consistency_level` ++"u8"++ - the consistency level (finality) required by this emitter +- `consistency_level` ++"u8"++ - the [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}, required by this emitter - `payload` ++"[]byte"++ - arbitrary bytes containing the data to be acted on The body contains relevant information for entities, such as contracts, or other systems, that process or utilize VAAs. When a function like `parseAndVerifyVAA` is called, the body is returned, allowing verification of the `emitterAddress` to determine if the VAA originated from a trusted contract. @@ -15650,7 +15631,7 @@ The body contains relevant information for entities, such as contracts, or other ## Consistency and Finality -The consistency level determines whether Guardians wait for a chain’s final commitment state or issue a VAA sooner under less-final conditions. This choice is especially relevant for blockchains without instant finality, where the risk of reorganization remains until a block is deeply confirmed. +The [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}, determines whether Guardians wait for a chain’s final commitment state or issue a VAA sooner under less-final conditions. This choice is especially relevant for blockchains without instant finality, where the risk of reorganization remains until a block is deeply confirmed. Guardian watchers are specialized processes that monitor each blockchain in real time. They enforce the selected consistency level by deciding whether enough commitment has been reached before signing and emitting a VAA. Some chains allow only one commitment level (effectively final), while others let integrators pick between near-final or fully finalized states. Choosing a faster option speeds up VAA production but increases reorg risk; choosing a more conservative option takes longer but reduces the likelihood of rollback. @@ -16495,7 +16476,7 @@ description: Explore Wormhole's Native Token Transfers for flexible cross-chain If you're ready to deploy NTT or access the CLI, follow the detailed [NTT Deployment Section](/docs/build/transfers/native-token-transfers/deployment-process/){target=\_blank}. - For deployment steps on EVM, visit the [Deploy to EVM page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} - - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} + - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/){target=\_blank} ## Introduction @@ -16680,7 +16661,7 @@ Mayan MCTP is a cross-chain intents protocol that leverages Circle's CCTP (Cross The contract constructs a `BridgeWithFeeMsg` structure, which includes parameters such as the action type, payload type, nonce, destination address, gas drop, redeem fee, and an optional custom payload hash -2. **Intent submission** - the contract calls the CCTP messenger to deposit the tokens for bridging. A unique nonce is generated, and a corresponding fee-lock record is created in the contract's storage. This record includes the locked fee, gas drop parameters, and destination details. The constructed message is hashed and published through Wormhole. The protocol fee is deducted during this step, and the Wormhole message is broadcast with the specified consistency level +2. **Intent submission** - the contract calls the CCTP messenger to deposit the tokens for bridging. A unique nonce is generated, and a corresponding fee-lock record is created in the contract's storage. This record includes the locked fee, gas drop parameters, and destination details. The constructed message is hashed and published through Wormhole. The protocol fee is deducted during this step, and the Wormhole message is broadcast with the specified [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank} 3. **Fulfillment** - on the destination chain, the protocol receives a CCTP message with corresponding signatures and verifies the payload using Wormhole's verification mechanism. Once validated, the redeemed tokens are transferred to the intended recipient, deducting the redeem fee as per protocol rules The protocol provides mechanisms for unlocking the fee once the bridging process is completed. This can occur immediately upon fulfillment or be batched for efficiency. In the fee unlock flow, the contract verifies the unlock message via Wormhole and then releases the locked fee to the designated unlocker address. From 09cb3b99db9b18be972d85909d2c41005babf96a Mon Sep 17 00:00:00 2001 From: martin0995 Date: Wed, 19 Mar 2025 11:38:49 +0100 Subject: [PATCH 14/40] migrate reshape ntt sol page --- .../deployment-process/deploy-to-solana.md | 247 +++++++++++------- 1 file changed, 147 insertions(+), 100 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index ee42dd2cb..6194935fa 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -3,195 +3,242 @@ title: Native Token Transfers Solana Deployment description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. --- -# Native Token Transfers (NTT) Solana Deployment +# Deploy Native Token Transfers on Solana -## Install Dependencies +## Introduction -Ensure you have the following dependencies installed: +[Native Token Transfers (NTT)](/docs/learn/messaging/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole’s messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. + +This guide walks you through deploying NTT on Solana, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. + +By the end, a fully deployed NTT will be set up, allowing your token to transfer between Solana and other supported chains. + +## Prerequisites + +Before deploying NTT on Solana, ensure you have the following: - [Rust](https://www.rust-lang.org/tools/install){target=\_blank} - [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** - [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** !!!Warning - Ensure you are using the above versions of Solana and Anchor. Running the deployment with a different version may cause issues. + Ensure to use the Solana and Anchor versions listed above to avoid compatibility issues. -## Deploy NTT +## Overview of the Deployment Process -Create a new NTT project (or use an existing NTT project): +There are two ways to deploy NTT on Solana: -```bash -ntt new my-ntt-deployment -cd my-ntt-deployment -``` + - **Using an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section + - **Creating a new SPL token** - if you don’t already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT -Initialize a new `deployment.json` file specifying the network: +Additionally, the NTT CLI supports two [deployment models](/docs/learn/messaging/native-token-transfers/deployment/){target=\_blank}: -=== "Testnet" + - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required + - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token’s minting authority to the Program Derived Address (PDA) controlled by the NTT program - ```bash - ntt init Testnet - ``` +By default, NTT transfers to Solana require manual [relaying](/docs/learn/infrastructure/relayer/){target=\_blank}, meaning users must complete a transaction on Solana to finalize the transfer. For automatic relaying, where transactions are completed without user intervention, additional setup is required. [Contact Wormhole contributors](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to enable automatic relaying support for your deployment. -=== "Mainnet" +## Create and Mint Tokens - ```bash - ntt init Mainnet - ``` +This section walks you through generating a Solana wallet, deploying an SPL token, creating a token account, and minting tokens. -## Deploy Your Solana Token +If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). -???- interface "Deploy an SPL Token" +1. **Generate a Solana key pair** - create a new wallet - 1. Generate a new Solana key pair to create a wallet: ```bash solana-keygen grind --starts-with w:1 --ignore-case ``` - 2. Set Solana configuration to use the new key pair created in step 1: +2. **Set Solana configuration** - configure the Solana CLI to use the generated key pair + ```bash solana config set --keypair INSERT_PATH_TO_KEYPAIR_JSON ``` - 3. Set the Solana configuration to use the default RPC URL for Devnet: - ```bash - solana config set -ud - ``` +3. **Select an RPC URL** - configure Solana to use the appropriate network + + === "Mainnet" + ```bash + solana config set -um + ``` + + === "Testnet" + ```bash + solana config set -ut + ``` + + === "Devnet" + ```bash + solana config set -ud + ``` + +4. **Fund your wallet** - ensure you have enough SOL to create a token. If deploying on devnet, request an airdrop - 4. Request an airdrop of two SOL and check the balance: ```bash - solana airdrop 2 & solana balance + solana airdrop 2 + solana balance ``` - 5. Install or update the SPL Token CLI: +5. **Install SPL Token CLI** - install or update the required [CLI tool](https://spl.solana.com/token){target=\_blank} + ```bash cargo install spl-token-cli ``` - 6. Create a new token with the SPL Token CLI (make sure you have enough balance to pay for the transaction): +6. **Create a new SPL token** - initialize the token on Solana + ```bash spl-token create-token ``` - 7. Create a new account for the token created in step 6: +7. **Create a token account** - generate an account to hold the token + ```bash spl-token create-account INSERT_TOKEN_ADDRESS ``` - 8. Mint `1000` tokens to the created account: +8. **Mint tokens** - send 1000 tokens to the created account + ```bash spl-token mint INSERT_TOKEN_ADDRESS 1000 ``` !!! note - NTT versions `>=v2.0.0+solana` support SPL tokens with transfer hooks. + NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https://spl.solana.com/transfer-hook-interface){target=\_blank}. + +## Set Up NTT -### Deployment Mode Requirements +To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don’t exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. -The NTT CLI supports two deployment models: **Hub-and-Spoke** and **Burn-and-Mint**. -For a detailed explanation of these models, see the [Deployment Models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank} page. +The [NTT CLI](/docs/build/contract-integrations/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. -#### Hub-and-Spoke +1. **Create a new NTT project** - set up a deployment workspace -No additional configuration is required for hub-and-spoke deployments. Tokens retain their original mint authority, so the steps below are not necessary. You can [generate a new NTT program key pair](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#generate-ntt-program-key-pair) and [deploy the NTT program](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#__tabbed_2_2) directly. + ```bash + ntt new INSERT_PROJECT_NAME + cd INSERT_PROJECT_NAME + ``` -#### Burn-and-Mint +2. **Initialize the deployment** - generate a `deployment.json` file with your deployment settings -For burn-and-mint deployments, you must configure the token's mint authority to enable cross-chain transfers. To complete the required setup, follow the steps in the following sections. + === "Mainnet" -## Configuration and Deployment + ```bash + ntt init Mainnet + ``` -### Generate NTT Program Key Pair + === "Testnet" -When you deploy a Solana program, you need to hardcode the program ID (a Pubkey) into the program code. The NTT CLI allows you to do this seamlessly. + ```bash + ntt init Testnet + ``` + + === "Devnet" -Generate a new NTT program key pair using: + ```bash + ntt init Devnet + ``` -```bash -solana-keygen grind --starts-with ntt:1 --ignore-case -``` +### Set Mint Authority -### Derive Token Authority +If you use burn-and-mint mode, follow these steps to enable the NTT program to mint tokens on Solana. This involves deriving the PDA as the token authority and updating the SPL token’s minting permissions. -In this step, you'll derive the token authority Program Derived Address (PDA) of the newly generated NTT program ID: +If you want to use hub-and-spoke, skip this section and proceed to [Deploy and Configure NTT](#deploy-and-configure-ntt). -```bash -ntt solana token-authority INSERT_YOUR_NTT_PROGRAM_KEY_PAIR -``` +Before updating the mint authority, you must create metadata for your SPL token. [View an example of how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata/blob/main/src/token-metadata.ts){target=\_blank}. -This script will output the derived PDA, which you will use in the next step. +1. **Generate an NTT program key pair** - create a unique key pair for the NTT program. The key pair must start with "ntt" to identify it as belonging to the NTT deployment -### Set SPL Token Mint Authority + ```bash + solana-keygen grind --starts-with ntt:1 --ignore-case + ``` -!!!Warning - You must create your token's metadata before delegating mint authority. [See an example on how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata){target=\_blank}. +2. **Derive the token authority** - generate the PDA, which will manage token minting -If deploying in `burning` mode, you'll set the SPL token mint authority to the newly generated token authority PDA: + ```bash + ntt solana token-authority INSERT_YOUR_NTT_PROGRAM_KEY_PAIR + ``` -```bash -spl-token authorize INSERT_TOKEN_ADDRESS mint INSERT_DERIVED_PDA -``` +3. **Set SPL token mint authority** - delegate minting control to the derived PDA -!!! note - Please ensure that you are using Anchor CLI version `0.29.0`. Running the deployment with a different version may cause compatibility issues. + ```bash + spl-token authorize INSERT_TOKEN_ADDRESS mint INSERT_DERIVED_PDA + ``` +## Deploy and Configure NTT -### Deploy NTT +After setting up your deployment, finalize the configuration and deploy the NTT program on Solana. -Generate or export your payer key pair, then run: +1. **Deploy NTT to Solana** - run the appropriate command based on your deployment mode: -=== "Burn-and-Mint" + === "Burn-and-Mint" + + ```bash + ntt add-chain Solana --latest --mode burning --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ``` + + === "Hub-and-Spoke" + + ```bash + ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ``` + + !!! note + The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. + +2. **Verify deployment status** - after deployment, check if your deployment.json file matches the on-chain configuration ```bash - ntt add-chain Solana --latest --mode burning --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ntt status ``` -=== "Hub-and-Spoke" + If needed, sync your local configuration with the on-chain state: ```bash - ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ntt pull ``` -!!! note - The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. - -The NTT Solana program will then compile and deploy, returning the program ID. +3. **Configure inbound and outbound rate limits** - by default, the inbound and outbound limits are set to `0`. You must update them before pushing the deployment. -!!! note - Refer to the [Solana docs](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for failed deployments, which provide instructions on finding buffer accounts and closing them to reclaim allocated SOL. + For EVM chains, values must be set using 18 decimals, while Solana uses 9 decimals. -### Configure NTT + Open your `deployment.json` file and adjust the values based on your use case: -The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. You can run: + === "Solana (9 decimals)" -- `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain -- `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and sets up rate limits with the appropriate number of decimals, depending on the specific chain. For example: + ```json + "inbound": { + "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana + }, + "outbound": { + "Sepolia": "1000.000000000" // outbound limit from Solana to Sepolia + } + ``` - For Solana, the limits are set with 9 decimal places: - ```json - "inbound": { - "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana - } - ``` + === "Sepolia (18 decimals)" - For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: - ```json - "inbound": { - "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia - } - ``` + ```json + "inbound": { + "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia + }, + "outbound": { + "Solana": "1000.000000000000000000" // outbound limit from Sepolia to Solana + } + ``` - This initial configuration ensures that the rate limits are correctly represented for each chain's token precision. +4. **Push the final deployment** - once rate limits are set, push the deployment to Solana using the specified key pair to cover gas fees -### Deploy NTT to Solana + ```bash + ntt push --payer INSERT_YOUR_KEYPAIR_JSON + ``` -You can now push the deployment to the Solana network, specifying the key pair that will cover the gas fees: +!!! note "Troubleshoot Deployment Issues" + If your deployment fails, it may be due to leftover program buffer accounts taking up storage on Solana. These temporary accounts are created during deployment but may persist if interrupted. To free up space and allow redeployment, refer to the [Solana program deployment guide](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for instructions on finding and closing them. -```bash -ntt push --payer INSERT_YOUR_KEYPAIR_JSON -``` +## Next Steps and Resources -By default, NTT transfers to Solana support manual relaying, which requires the user to perform a transaction on Solana to complete the transfer. UI components such as Wormhole Connect support this out of the box. For automatic Wormhole relaying support on Solana, [contact](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} Wormhole contributors. +Your NTT deployment on Solana is now complete! To proceed, explore the following: -!!!important - To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. \ No newline at end of file + - **Test your deployment** – follow the [NTT Post Deployment Guide](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/){target=\_blank} for integration examples and testing instructions + - **Integrate NTT into your application** – configure [Wormhole Connect](/docs/build/applications/connect/){target=\_blank} a plug-and-play bridging UI, to enable multichain transfers for your token \ No newline at end of file From da50181659d1003e319ef33797dda641431b698d Mon Sep 17 00:00:00 2001 From: martin0995 Date: Wed, 19 Mar 2025 11:45:03 +0100 Subject: [PATCH 15/40] update links --- .../deployment-process/deploy-to-solana.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index 6194935fa..39f1e9bff 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -7,7 +7,7 @@ description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for ## Introduction -[Native Token Transfers (NTT)](/docs/learn/messaging/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole’s messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. +[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole’s messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. This guide walks you through deploying NTT on Solana, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. @@ -31,7 +31,7 @@ There are two ways to deploy NTT on Solana: - **Using an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section - **Creating a new SPL token** - if you don’t already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT -Additionally, the NTT CLI supports two [deployment models](/docs/learn/messaging/native-token-transfers/deployment/){target=\_blank}: +Additionally, the NTT CLI supports two [deployment models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token’s minting authority to the Program Derived Address (PDA) controlled by the NTT program @@ -111,7 +111,7 @@ If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don’t exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. -The [NTT CLI](/docs/build/contract-integrations/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. +The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. 1. **Create a new NTT project** - set up a deployment workspace @@ -240,5 +240,5 @@ After setting up your deployment, finalize the configuration and deploy the NTT Your NTT deployment on Solana is now complete! To proceed, explore the following: - - **Test your deployment** – follow the [NTT Post Deployment Guide](/docs/build/contract-integrations/native-token-transfers/deployment-process/post-deployment/){target=\_blank} for integration examples and testing instructions - - **Integrate NTT into your application** – configure [Wormhole Connect](/docs/build/applications/connect/){target=\_blank} a plug-and-play bridging UI, to enable multichain transfers for your token \ No newline at end of file + - **Test your deployment** – follow the [NTT Post Deployment Guide](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} for integration examples and testing instructions + - **Integrate NTT into your application** – configure [Wormhole Connect](/docs/build/transfers/connect/){target=\_blank} a plug-and-play bridging UI, to enable multichain transfers for your token \ No newline at end of file From 7a5e86ffa13b4f745272642cd825c159bfca1e75 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Wed, 19 Mar 2025 11:49:21 +0100 Subject: [PATCH 16/40] manual relaying details --- .../deployment-process/post-deployment.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/build/transfers/native-token-transfers/deployment-process/post-deployment.md b/build/transfers/native-token-transfers/deployment-process/post-deployment.md index 6fd1b8477..5d6f5746a 100644 --- a/build/transfers/native-token-transfers/deployment-process/post-deployment.md +++ b/build/transfers/native-token-transfers/deployment-process/post-deployment.md @@ -16,6 +16,14 @@ To offer the best user experience and ensure the most robust deployment, Wormhol - Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment +## Manual Relaying for Solana Transfers + +By default, NTT transfers to Solana require manual relaying, meaning that after initiating a cross-chain transfer, the recipient must submit an on-chain transaction to claim the tokens. + +This step ensures that tokens are properly minted or unlocked on Solana and prevents unauthorized claims. + +UI components such as [Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. + ## Post Deployment Integration Demos
From 7ab341a8e3f106ca25d7e68503d38d30bacb03f0 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Wed, 19 Mar 2025 11:51:12 +0100 Subject: [PATCH 17/40] update cli links --- .../native-token-transfers/deployment-process/installation.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build/transfers/native-token-transfers/deployment-process/installation.md b/build/transfers/native-token-transfers/deployment-process/installation.md index dce8946a9..42ae554d3 100644 --- a/build/transfers/native-token-transfers/deployment-process/installation.md +++ b/build/transfers/native-token-transfers/deployment-process/installation.md @@ -7,7 +7,7 @@ description: Learn how to Install Wormhole’s Native Token Transfers (NTT) fram ## Installation -In this video, the Wormhole team walks you through installing the Native Token Transfers (NTT) CLI. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide. +In this video, the Wormhole team walks you through installing the [Native Token Transfers (NTT) CLI](https://github.com/wormhole-foundation/native-token-transfers/tree/main/cli){target=\_blank}. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide.
@@ -28,6 +28,8 @@ Verify the NTT CLI is installed: ntt --version ``` +Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI. + ### Updating To update an existing NTT CLI installation, run: From 2c620c77d9a73950615e68ee8a623ccb26688ed7 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Wed, 19 Mar 2025 11:53:42 +0100 Subject: [PATCH 18/40] cli installation link --- build/transfers/native-token-transfers/cli-commands.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/transfers/native-token-transfers/cli-commands.md b/build/transfers/native-token-transfers/cli-commands.md index b85cc5dc5..7e2de4c0d 100644 --- a/build/transfers/native-token-transfers/cli-commands.md +++ b/build/transfers/native-token-transfers/cli-commands.md @@ -9,6 +9,8 @@ description: A comprehensive guide to the Native Token Transfers (NTT) CLI, deta The NTT Command-Line Interface (CLI) is a powerful tool for managing native token transfers across multiple blockchain networks within the Wormhole ecosystem. This page provides a comprehensive list of available commands, their descriptions, and examples to help you interact with and configure the NTT system effectively. Whether initializing deployments, updating configurations, or working with specific chains, the NTT CLI simplifies these operations through its intuitive commands. +If you haven't installed the NTT CLI yet, follow the [NTT Installation Guide](/docs/build/transfers/native-token-transfers/deployment-process/installation/#installation){target=\_blank} to set it up before proceeding. + ## Table of Commands The following table lists the available NTT CLI commands, descriptions, and examples. From 608ccc23812c675b2ba2226abb2bb01836a9e4e6 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Wed, 19 Mar 2025 11:55:02 +0100 Subject: [PATCH 19/40] llm check --- llms.txt | 261 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 160 insertions(+), 101 deletions(-) diff --git a/llms.txt b/llms.txt index 1ee709b2d..6b9413118 100644 --- a/llms.txt +++ b/llms.txt @@ -11919,6 +11919,8 @@ description: A comprehensive guide to the Native Token Transfers (NTT) CLI, deta The NTT Command-Line Interface (CLI) is a powerful tool for managing native token transfers across multiple blockchain networks within the Wormhole ecosystem. This page provides a comprehensive list of available commands, their descriptions, and examples to help you interact with and configure the NTT system effectively. Whether initializing deployments, updating configurations, or working with specific chains, the NTT CLI simplifies these operations through its intuitive commands. +If you haven't installed the NTT CLI yet, follow the [NTT Installation Guide](/docs/build/transfers/native-token-transfers/deployment-process/installation/#installation){target=\_blank} to set it up before proceeding. + ## Table of Commands The following table lists the available NTT CLI commands, descriptions, and examples. @@ -12328,198 +12330,245 @@ title: Native Token Transfers Solana Deployment description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. --- -# Native Token Transfers (NTT) Solana Deployment +# Deploy Native Token Transfers on Solana + +## Introduction + +[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole’s messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. -## Install Dependencies +This guide walks you through deploying NTT on Solana, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. + +By the end, a fully deployed NTT will be set up, allowing your token to transfer between Solana and other supported chains. + +## Prerequisites -Ensure you have the following dependencies installed: +Before deploying NTT on Solana, ensure you have the following: - [Rust](https://www.rust-lang.org/tools/install){target=\_blank} - [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** - [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** !!!Warning - Ensure you are using the above versions of Solana and Anchor. Running the deployment with a different version may cause issues. + Ensure to use the Solana and Anchor versions listed above to avoid compatibility issues. -## Deploy NTT +## Overview of the Deployment Process -Create a new NTT project (or use an existing NTT project): +There are two ways to deploy NTT on Solana: -```bash -ntt new my-ntt-deployment -cd my-ntt-deployment -``` + - **Using an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section + - **Creating a new SPL token** - if you don’t already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT -Initialize a new `deployment.json` file specifying the network: +Additionally, the NTT CLI supports two [deployment models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: -=== "Testnet" + - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required + - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token’s minting authority to the Program Derived Address (PDA) controlled by the NTT program - ```bash - ntt init Testnet - ``` +By default, NTT transfers to Solana require manual [relaying](/docs/learn/infrastructure/relayer/){target=\_blank}, meaning users must complete a transaction on Solana to finalize the transfer. For automatic relaying, where transactions are completed without user intervention, additional setup is required. [Contact Wormhole contributors](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to enable automatic relaying support for your deployment. -=== "Mainnet" +## Create and Mint Tokens - ```bash - ntt init Mainnet - ``` +This section walks you through generating a Solana wallet, deploying an SPL token, creating a token account, and minting tokens. -## Deploy Your Solana Token +If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). -???- interface "Deploy an SPL Token" +1. **Generate a Solana key pair** - create a new wallet - 1. Generate a new Solana key pair to create a wallet: ```bash solana-keygen grind --starts-with w:1 --ignore-case ``` - 2. Set Solana configuration to use the new key pair created in step 1: +2. **Set Solana configuration** - configure the Solana CLI to use the generated key pair + ```bash solana config set --keypair INSERT_PATH_TO_KEYPAIR_JSON ``` - 3. Set the Solana configuration to use the default RPC URL for Devnet: - ```bash - solana config set -ud - ``` +3. **Select an RPC URL** - configure Solana to use the appropriate network + + === "Mainnet" + ```bash + solana config set -um + ``` + + === "Testnet" + ```bash + solana config set -ut + ``` + + === "Devnet" + ```bash + solana config set -ud + ``` + +4. **Fund your wallet** - ensure you have enough SOL to create a token. If deploying on devnet, request an airdrop - 4. Request an airdrop of two SOL and check the balance: ```bash - solana airdrop 2 & solana balance + solana airdrop 2 + solana balance ``` - 5. Install or update the SPL Token CLI: +5. **Install SPL Token CLI** - install or update the required [CLI tool](https://spl.solana.com/token){target=\_blank} + ```bash cargo install spl-token-cli ``` - 6. Create a new token with the SPL Token CLI (make sure you have enough balance to pay for the transaction): +6. **Create a new SPL token** - initialize the token on Solana + ```bash spl-token create-token ``` - 7. Create a new account for the token created in step 6: +7. **Create a token account** - generate an account to hold the token + ```bash spl-token create-account INSERT_TOKEN_ADDRESS ``` - 8. Mint `1000` tokens to the created account: +8. **Mint tokens** - send 1000 tokens to the created account + ```bash spl-token mint INSERT_TOKEN_ADDRESS 1000 ``` !!! note - NTT versions `>=v2.0.0+solana` support SPL tokens with transfer hooks. + NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https://spl.solana.com/transfer-hook-interface){target=\_blank}. -### Deployment Mode Requirements +## Set Up NTT -The NTT CLI supports two deployment models: **Hub-and-Spoke** and **Burn-and-Mint**. -For a detailed explanation of these models, see the [Deployment Models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank} page. +To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don’t exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. -#### Hub-and-Spoke +The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. -No additional configuration is required for hub-and-spoke deployments. Tokens retain their original mint authority, so the steps below are not necessary. You can [generate a new NTT program key pair](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#generate-ntt-program-key-pair) and [deploy the NTT program](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#__tabbed_2_2) directly. +1. **Create a new NTT project** - set up a deployment workspace -#### Burn-and-Mint + ```bash + ntt new INSERT_PROJECT_NAME + cd INSERT_PROJECT_NAME + ``` -For burn-and-mint deployments, you must configure the token's mint authority to enable cross-chain transfers. To complete the required setup, follow the steps in the following sections. +2. **Initialize the deployment** - generate a `deployment.json` file with your deployment settings -## Configuration and Deployment + === "Mainnet" -### Generate NTT Program Key Pair + ```bash + ntt init Mainnet + ``` -When you deploy a Solana program, you need to hardcode the program ID (a Pubkey) into the program code. The NTT CLI allows you to do this seamlessly. + === "Testnet" -Generate a new NTT program key pair using: + ```bash + ntt init Testnet + ``` + + === "Devnet" -```bash -solana-keygen grind --starts-with ntt:1 --ignore-case -``` + ```bash + ntt init Devnet + ``` -### Derive Token Authority +### Set Mint Authority -In this step, you'll derive the token authority Program Derived Address (PDA) of the newly generated NTT program ID: +If you use burn-and-mint mode, follow these steps to enable the NTT program to mint tokens on Solana. This involves deriving the PDA as the token authority and updating the SPL token’s minting permissions. -```bash -ntt solana token-authority INSERT_YOUR_NTT_PROGRAM_KEY_PAIR -``` +If you want to use hub-and-spoke, skip this section and proceed to [Deploy and Configure NTT](#deploy-and-configure-ntt). -This script will output the derived PDA, which you will use in the next step. +Before updating the mint authority, you must create metadata for your SPL token. [View an example of how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata/blob/main/src/token-metadata.ts){target=\_blank}. -### Set SPL Token Mint Authority +1. **Generate an NTT program key pair** - create a unique key pair for the NTT program. The key pair must start with "ntt" to identify it as belonging to the NTT deployment -!!!Warning - You must create your token's metadata before delegating mint authority. [See an example on how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata){target=\_blank}. + ```bash + solana-keygen grind --starts-with ntt:1 --ignore-case + ``` -If deploying in `burning` mode, you'll set the SPL token mint authority to the newly generated token authority PDA: +2. **Derive the token authority** - generate the PDA, which will manage token minting -```bash -spl-token authorize INSERT_TOKEN_ADDRESS mint INSERT_DERIVED_PDA -``` + ```bash + ntt solana token-authority INSERT_YOUR_NTT_PROGRAM_KEY_PAIR + ``` -!!! note - Please ensure that you are using Anchor CLI version `0.29.0`. Running the deployment with a different version may cause compatibility issues. +3. **Set SPL token mint authority** - delegate minting control to the derived PDA + + ```bash + spl-token authorize INSERT_TOKEN_ADDRESS mint INSERT_DERIVED_PDA + ``` + +## Deploy and Configure NTT +After setting up your deployment, finalize the configuration and deploy the NTT program on Solana. -### Deploy NTT +1. **Deploy NTT to Solana** - run the appropriate command based on your deployment mode: -Generate or export your payer key pair, then run: + === "Burn-and-Mint" -=== "Burn-and-Mint" + ```bash + ntt add-chain Solana --latest --mode burning --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ``` + + === "Hub-and-Spoke" + + ```bash + ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ``` + + !!! note + The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. + +2. **Verify deployment status** - after deployment, check if your deployment.json file matches the on-chain configuration ```bash - ntt add-chain Solana --latest --mode burning --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ntt status ``` -=== "Hub-and-Spoke" + If needed, sync your local configuration with the on-chain state: ```bash - ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ntt pull ``` -!!! note - The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. +3. **Configure inbound and outbound rate limits** - by default, the inbound and outbound limits are set to `0`. You must update them before pushing the deployment. -The NTT Solana program will then compile and deploy, returning the program ID. + For EVM chains, values must be set using 18 decimals, while Solana uses 9 decimals. -!!! note - Refer to the [Solana docs](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for failed deployments, which provide instructions on finding buffer accounts and closing them to reclaim allocated SOL. + Open your `deployment.json` file and adjust the values based on your use case: -### Configure NTT + === "Solana (9 decimals)" -The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. You can run: + ```json + "inbound": { + "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana + }, + "outbound": { + "Sepolia": "1000.000000000" // outbound limit from Solana to Sepolia + } + ``` -- `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain -- `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and sets up rate limits with the appropriate number of decimals, depending on the specific chain. For example: + === "Sepolia (18 decimals)" - For Solana, the limits are set with 9 decimal places: - ```json - "inbound": { - "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana - } - ``` - - For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: - ```json - "inbound": { - "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia - } - ``` + ```json + "inbound": { + "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia + }, + "outbound": { + "Solana": "1000.000000000000000000" // outbound limit from Sepolia to Solana + } + ``` - This initial configuration ensures that the rate limits are correctly represented for each chain's token precision. +4. **Push the final deployment** - once rate limits are set, push the deployment to Solana using the specified key pair to cover gas fees -### Deploy NTT to Solana + ```bash + ntt push --payer INSERT_YOUR_KEYPAIR_JSON + ``` -You can now push the deployment to the Solana network, specifying the key pair that will cover the gas fees: +!!! note "Troubleshoot Deployment Issues" + If your deployment fails, it may be due to leftover program buffer accounts taking up storage on Solana. These temporary accounts are created during deployment but may persist if interrupted. To free up space and allow redeployment, refer to the [Solana program deployment guide](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for instructions on finding and closing them. -```bash -ntt push --payer INSERT_YOUR_KEYPAIR_JSON -``` +## Next Steps and Resources -By default, NTT transfers to Solana support manual relaying, which requires the user to perform a transaction on Solana to complete the transfer. UI components such as Wormhole Connect support this out of the box. For automatic Wormhole relaying support on Solana, [contact](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} Wormhole contributors. +Your NTT deployment on Solana is now complete! To proceed, explore the following: -!!!important - To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. + - **Test your deployment** – follow the [NTT Post Deployment Guide](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} for integration examples and testing instructions + - **Integrate NTT into your application** – configure [Wormhole Connect](/docs/build/transfers/connect/){target=\_blank} a plug-and-play bridging UI, to enable multichain transfers for your token --- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ @@ -12782,7 +12831,7 @@ description: Learn how to Install Wormhole’s Native Token Transfers (NTT) fram ## Installation -In this video, the Wormhole team walks you through installing the Native Token Transfers (NTT) CLI. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide. +In this video, the Wormhole team walks you through installing the [Native Token Transfers (NTT) CLI](https://github.com/wormhole-foundation/native-token-transfers/tree/main/cli){target=\_blank}. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide.
@@ -12803,6 +12852,8 @@ Verify the NTT CLI is installed: ntt --version ``` +Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI. + ### Updating To update an existing NTT CLI installation, run: @@ -12850,6 +12901,14 @@ To offer the best user experience and ensure the most robust deployment, Wormhol - Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment +## Manual Relaying for Solana Transfers + +By default, NTT transfers to Solana require manual relaying, meaning that after initiating a cross-chain transfer, the recipient must submit an on-chain transaction to claim the tokens. + +This step ensures that tokens are properly minted or unlocked on Solana and prevents unauthorized claims. + +UI components such as [Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. + ## Post Deployment Integration Demos
From fa05cb6d004292ce102391ad475e35fca77f8d54 Mon Sep 17 00:00:00 2001 From: Ilaria <43253244+ilariae@users.noreply.github.com> Date: Wed, 19 Mar 2025 13:49:55 +0100 Subject: [PATCH 20/40] typo fix (#308) Co-authored-by: Ilaria Enache --- learn/transfers/settlement/architecture.md | 2 +- llms.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/learn/transfers/settlement/architecture.md b/learn/transfers/settlement/architecture.md index ab4710e96..864fcd67e 100644 --- a/learn/transfers/settlement/architecture.md +++ b/learn/transfers/settlement/architecture.md @@ -98,5 +98,5 @@ The protocol provides mechanisms for unlocking the fee once the bridging process ## Where to Go Next -- To learn more about available EVM functions, see the [Build on the Wormhole Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide +- To learn more about available EVM functions, see the [Build on the Wormhole Liquidity Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide - To learn how ot integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial \ No newline at end of file diff --git a/llms.txt b/llms.txt index 1ee709b2d..7819afda2 100644 --- a/llms.txt +++ b/llms.txt @@ -16668,7 +16668,7 @@ The protocol provides mechanisms for unlocking the fee once the bridging process ## Where to Go Next -- To learn more about available EVM functions, see the [Build on the Wormhole Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide +- To learn more about available EVM functions, see the [Build on the Wormhole Liquidity Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide - To learn how ot integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial --- END CONTENT --- From 09866876952fae1ed409a7c4c54c1216162409bc Mon Sep 17 00:00:00 2001 From: Ilaria <43253244+ilariae@users.noreply.github.com> Date: Wed, 19 Mar 2025 13:50:17 +0100 Subject: [PATCH 21/40] temporarily lower needed solana cli version for NTT (#306) Co-authored-by: Ilaria Enache --- variables.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variables.yml b/variables.yml index af1bfa402..bcc3d6dc5 100644 --- a/variables.yml +++ b/variables.yml @@ -1,6 +1,6 @@ ntt: anchor_version: v0.29.0 - solana_cli_version: v1.18.26 + solana_cli_version: v1.18.10 repositories: wormhole_sdk: repository_url: https://github.com/wormhole-foundation/wormhole-sdk-ts From b997b016db108e83f51488c1083ed4af8dabd2f6 Mon Sep 17 00:00:00 2001 From: DAWN KELLY Date: Wed, 19 Mar 2025 10:36:05 -0400 Subject: [PATCH 22/40] some edits to admonitions, headings, steps, etc. --- .../native-token-transfers/cli-commands.md | 26 +++- .../deployment-process/deploy-to-evm.md | 122 +++++++++++------- .../deployment-process/deploy-to-solana.md | 42 ++++-- .../deployment-process/installation.md | 54 +++++--- 4 files changed, 167 insertions(+), 77 deletions(-) diff --git a/build/transfers/native-token-transfers/cli-commands.md b/build/transfers/native-token-transfers/cli-commands.md index 7e2de4c0d..339b23f75 100644 --- a/build/transfers/native-token-transfers/cli-commands.md +++ b/build/transfers/native-token-transfers/cli-commands.md @@ -15,8 +15,7 @@ If you haven't installed the NTT CLI yet, follow the [NTT Installation Guide](/d The following table lists the available NTT CLI commands, descriptions, and examples. -!!! note - To explore detailed information about any NTT CLI command, including its options and examples, you can append `--help` to the command. This will display a comprehensive guide for the specific command. +To explore detailed information about any NTT CLI command, including its options and examples, you can append `--help` to the command. This will display a comprehensive guide for the specific command. ### General Commands @@ -47,3 +46,26 @@ The following table lists the available NTT CLI commands, descriptions, and exam | `ntt solana key-base58 ` | print private key in base58 | `ntt solana key-base58 /path/to/keypair.json`| | `ntt solana token-authority ` | print the token authority address for a given program ID| `ntt solana token-authority Sol1234...`| | `ntt solana ata `| print the token authority address for a given program ID| `ntt solana ata Mint123... Owner123... token22`| + +## Where to Go Next + +
+ + +- :octicons-gear-16:{ .lg .middle } **Configure NTT** + + --- + + Find information on configuring NTT, including guidance on setting Owner and Pauser access control roles and management of rate-limiting. + + [:custom-arrow: Configure your NTT deployment](/docs/build/transfers/native-token-transfers/configuration/) + +- :octicons-question-16:{ .lg .middle } **NTT FAQs** + + --- + + Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. + + [:custom-arrow: Check out the FAQs](/docs/build/transfers/native-token-transfers/faqs/) + +
diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md index cd3c67ec4..d0c3e5e54 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md @@ -3,17 +3,22 @@ title: Native Token Transfers EVM Deployment description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. --- -# Native Token Transfers (NTT) EVM Development +# Deploy Native Token Transfers (NTT) on EVM Chains -## Deploy Your Token and Ensure Compatibility +Follow this guide to deploy Wormhole’s Native Token Transfers (NTT) on EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. -If you still need to do so, deploy the token contract to the destination or spoke chains. +## Prerequisites -### Requirements for Token Deployment +To get the most from this guide, ensure you have the following: -Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports two deployment modes: burn-and-mint and hub-and-spoke. These modes differ in how tokens are managed across chains. +- Installed the NTT CLI tool. If you have not already done so, see the [Installation Guide](/docs/build/transfers/native-token-transfers/deployment-process/installation/){taraget=\_blank} +- Deployed token contract on the destination or spoke chains -#### Burn-and-Mint Mode +## Deployment Modes + +Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports burn-and-mint and hub-and-spoke deployment modes. The following sections compare differences in how the two modes manage tokens across chains while demonstrating how to deploy NTT on EVM chains. + +### Burn-and-Mint Mode Tokens integrated with `NttManager` in `burning` mode require the following two functions to be present: @@ -29,17 +34,22 @@ These functions aren't part of the standard ERC-20 interface. The [`INttToken` i Later, you set mint authority to the corresponding `NttManager` contract. You can also follow the scripts in the [example NTT token](https://github.com/wormhole-foundation/example-ntt-token){target=\_blank} repository to deploy a token contract. -#### Hub-and-Spoke Mode +### Hub-and-Spoke Mode A central hub chain (e.g., Ethereum) manages the total token supply in hub-and-spoke mode. Other chains (spokes) mint or burn tokens during cross-chain transfers, ensuring consistency with the locked tokens on the hub chain. - **Hub chain** - tokens are locked on the hub chain when transferring to spoke chains - **Spoke chains** - tokens are native to the spoke chains and are either minted or burned during cross-chain transfers -!!! note - The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. +The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager follows these steps: + +1. Lock tokens on Ethereum +2. The corresponding amount is minted on Polygon + +When it is time to transfer tokens back from Polygon to Ethereum the NTT Manager follows these steps: -For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager locks tokens on Ethereum, and the corresponding amount is minted on Polygon. Similarly, transferring tokens back from Polygon to Ethereum burns the tokens on Polygon and unlocks the equivalent tokens on Ethereum. +1. Burn the tokens on Polygon +2. Unlocks the equivalent tokens on Ethereum This process ensures that the total token supply remains consistent across all chains, with the hub chain acting as the source of truth. @@ -52,47 +62,49 @@ For more detailed information, see the [Deployment Models](/docs/learn/transfers ## Deploy NTT -Create a new NTT project: +Follow these steps to deploy NTT to EVM chains. -```bash -ntt new my-ntt-deployment -cd my-ntt-deployment -``` - -Initialize a new `deployment.json` file specifying the network: - -=== "Testnet" +1. Create a new NTT project using the following commands: ```bash - ntt init Testnet + ntt new my-ntt-deployment + cd my-ntt-deployment ``` -=== "Mainnet" +2. Initialize a new `deployment.json` file specifying the network: + + === "Testnet" - ```bash - ntt init Mainnet - ``` + ```bash + ntt init Testnet + ``` + + === "Mainnet" -Ensure you have set up your environment correctly: + ```bash + ntt init Mainnet + ``` -```bash -export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY -``` +3. Ensure you have set up your environment correctly: -Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: + ```bash + export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY + ``` -```bash ---8<-- 'code/build/transfers/native-token-transfers/deployment-process/initialize.txt' -``` +4. Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: -While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. + ```bash + --8<-- 'code/build/transfers/native-token-transfers/deployment-process/initialize.txt' + ``` -The `ntt add-chain` command takes the following parameters: + While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. -- Name of each chain -- Version of NTT to deploy (use `--latest` for the latest contract versions) -- Mode (either `burning` or `locking`) -- Your token contract address + The `ntt add-chain` command takes the following parameters: + + - Name of each chain + - Version of NTT to deploy (use `--latest` for the latest contract versions) + - Mode (either `burning` or `locking`) + - Your token contract address The NTT CLI prints detailed logs and transaction hashes, so you can see exactly what's happening under the hood. @@ -103,21 +115,21 @@ The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. - `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain - `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and set up rate limits with the appropriate number of decimals, depending on the specific chain. For example: - For Solana, the limits are set with 9 decimal places: + - **Solana** - the limits are set with 9 decimal places: ```json "inbound": { "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana } ``` - For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: + - **Sepolia (Ethereum Testnet)** - the limits are set with 18 decimal places: ```json "inbound": { "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia } ``` - This initial configuration ensures that the rate limits are correctly represented for each chain's token precision + This initial configuration ensures that the rate limits are correctly represented for each chain's token precision - `ntt push` - syncs the on-chain configuration with local changes made to your `deployment.json` file @@ -125,10 +137,7 @@ After you deploy the NTT contracts, ensure that the deployment is properly confi ## Set Token Minter to NTT Manager -The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. - -!!! note - The required NTT Manager address can be found in the `deployment.json` file. +The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. The required NTT Manager address can be found in the `deployment.json` file. - If you followed the [`INttToken`](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} interface, you can execute the `setMinter(address newMinter)` function ```json @@ -139,5 +148,24 @@ The final step in the deployment process is to set the NTT Manager as a minter o By default, NTT transfers to EVM blockchains support automatic relaying via the Wormhole relayer, which doesn't require the user to perform a transaction on the destination chain to complete the transfer. -!!!important - To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. \ No newline at end of file +## Where to Go Next + +
+ +- :octicons-tools-16:{ .lg .middle } **Test Your Deployment** + + --- + + Follow the NTT Post Deployment Guide for integration examples and testing instructions. + + [:custom-arrow: Test Your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} + +- :octicons-tools-16:{ .lg .middle } **Add NTT to Your dApp** + + --- + + Configure Wormhole Connect, a plug-and-play bridging UI, to enable multichain transfers for your token. + + [:custom-arrow: Use Connect to Integrate NTT](/docs/build/transfers/connect/){target=\_blank} + +
diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index 39f1e9bff..ad32b5f71 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -1,13 +1,13 @@ --- title: Native Token Transfers Solana Deployment -description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. +description: Deploy and configure Wormhole's Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. --- # Deploy Native Token Transfers on Solana ## Introduction -[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole’s messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. +[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole's messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. This guide walks you through deploying NTT on Solana, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. @@ -29,12 +29,12 @@ Before deploying NTT on Solana, ensure you have the following: There are two ways to deploy NTT on Solana: - **Using an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section - - **Creating a new SPL token** - if you don’t already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT + - **Creating a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT Additionally, the NTT CLI supports two [deployment models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required - - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token’s minting authority to the Program Derived Address (PDA) controlled by the NTT program + - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program By default, NTT transfers to Solana require manual [relaying](/docs/learn/infrastructure/relayer/){target=\_blank}, meaning users must complete a transaction on Solana to finalize the transfer. For automatic relaying, where transactions are completed without user intervention, additional setup is required. [Contact Wormhole contributors](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to enable automatic relaying support for your deployment. @@ -109,7 +109,7 @@ If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). ## Set Up NTT -To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don’t exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. +To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don't exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. @@ -142,7 +142,7 @@ The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/in ### Set Mint Authority -If you use burn-and-mint mode, follow these steps to enable the NTT program to mint tokens on Solana. This involves deriving the PDA as the token authority and updating the SPL token’s minting permissions. +If you use burn-and-mint mode, follow these steps to enable the NTT program to mint tokens on Solana. This involves deriving the PDA as the token authority and updating the SPL token's minting permissions. If you want to use hub-and-spoke, skip this section and proceed to [Deploy and Configure NTT](#deploy-and-configure-ntt). @@ -201,7 +201,7 @@ After setting up your deployment, finalize the configuration and deploy the NTT 3. **Configure inbound and outbound rate limits** - by default, the inbound and outbound limits are set to `0`. You must update them before pushing the deployment. - For EVM chains, values must be set using 18 decimals, while Solana uses 9 decimals. + For EVM chains, values must be set using 18 decimals, while Solana uses nine decimals. Open your `deployment.json` file and adjust the values based on your use case: @@ -233,12 +233,28 @@ After setting up your deployment, finalize the configuration and deploy the NTT ntt push --payer INSERT_YOUR_KEYPAIR_JSON ``` -!!! note "Troubleshoot Deployment Issues" - If your deployment fails, it may be due to leftover program buffer accounts taking up storage on Solana. These temporary accounts are created during deployment but may persist if interrupted. To free up space and allow redeployment, refer to the [Solana program deployment guide](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for instructions on finding and closing them. +### Troubleshoot Deployment Issues + +If your deployment fails, it may be due to leftover program buffer accounts taking up storage on Solana. These temporary accounts are created during deployment but may persist if interrupted. Refer to the [Solana program deployment guide](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for instructions on finding and closing these buffer accounts to free up space and allow redeployment. + +## Where to Go Next + +
+ +- :octicons-tools-16:{ .lg .middle } **Test Your Deployment** + + --- + + Follow the NTT Post Deployment Guide for integration examples and testing instructions. + + [:custom-arrow: Test Your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} + +- :octicons-tools-16:{ .lg .middle } **Add NTT to Your dApp** + + --- -## Next Steps and Resources + Configure Wormhole Connect, a plug-and-play bridging UI, to enable multichain transfers for your token. -Your NTT deployment on Solana is now complete! To proceed, explore the following: + [:custom-arrow: Use Connect to Integrate NTT](/docs/build/transfers/connect/){target=\_blank} - - **Test your deployment** – follow the [NTT Post Deployment Guide](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} for integration examples and testing instructions - - **Integrate NTT into your application** – configure [Wormhole Connect](/docs/build/transfers/connect/){target=\_blank} a plug-and-play bridging UI, to enable multichain transfers for your token \ No newline at end of file +
diff --git a/build/transfers/native-token-transfers/deployment-process/installation.md b/build/transfers/native-token-transfers/deployment-process/installation.md index 42ae554d3..8c5dbe21c 100644 --- a/build/transfers/native-token-transfers/deployment-process/installation.md +++ b/build/transfers/native-token-transfers/deployment-process/installation.md @@ -5,41 +5,42 @@ description: Learn how to Install Wormhole’s Native Token Transfers (NTT) fram # Install the Native Token Transfers CLI -## Installation - In this video, the Wormhole team walks you through installing the [Native Token Transfers (NTT) CLI](https://github.com/wormhole-foundation/native-token-transfers/tree/main/cli){target=\_blank}. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide.
+## Install NTT CLI + The fastest way to deploy Native Token Transfers (NTT) is using the NTT CLI. As prerequisites, ensure you have the following installed: - Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} - Install [Bun](https://bun.sh/){target=\_blank} -Install the NTT CLI: +Follow these steps to install the NTT CLI: -```bash -curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash -``` +1. Run the installation command in your terminal: -Verify the NTT CLI is installed: + ```bash + curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash + ``` -```bash -ntt --version -``` +2. Verify the NTT CLI is installed: + + ```bash + ntt --version + ``` -Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI. +3. Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI. -### Updating +## Update NTT CLI -To update an existing NTT CLI installation, run: +To update an existing NTT CLI installation, run the following command in your terminal: ```bash ntt update ``` -!!! note - NTT CLI installations and updates will always pick up the latest tag with name vX.Y.Z+cli and verify that the underlying commit is included in main. +NTT CLI installations and updates will always pick up the latest tag with name vX.Y.Z+cli and verify that the underlying commit is included in main. For local development, you can update your CLI version from a specific branch or install from a local path. @@ -55,3 +56,26 @@ ntt update --path path/to/ntt/repo ``` Git branch and local installations enable a fast iteration loop as changes to the CLI code will immediately be reflected in the running binary without having to run any build steps. + +## Where to Go Next + +
+ + +- :octicons-tools-16:{ .lg .middle } **Deploy to EVM Chains** + + --- + + Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. + + [:custom-arrow: Deploy NTT to EVM chains](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/) + +- :octicons-tools-16:{ .lg .middle } **Deploy to Solana** + + --- + + Deploy and configure Wormhole's Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. + + [:custom-arrow: Deploy NTT to Solana](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/) + +
From 56a86e44f591fcfe2bbbafabbd55df129da56a72 Mon Sep 17 00:00:00 2001 From: DAWN KELLY Date: Wed, 19 Mar 2025 11:10:15 -0400 Subject: [PATCH 23/40] additional formatting tweaks --- .../deployment-process/deploy-to-evm.md | 8 +++-- .../deployment-process/deploy-to-solana.md | 32 ++++++++----------- .../deployment-process/post-deployment.md | 14 ++++---- 3 files changed, 26 insertions(+), 28 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md index d0c3e5e54..6751c8c4f 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md @@ -3,9 +3,13 @@ title: Native Token Transfers EVM Deployment description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. --- -# Deploy Native Token Transfers (NTT) on EVM Chains +# Deploy Native Token Transfers on EVM Chains -Follow this guide to deploy Wormhole’s Native Token Transfers (NTT) on EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. +[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of ERC-20 tokens on EVM chains using Wormhole's messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. + +This guide walks you through deploying NTT on EVM chains, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. + +By the end, a fully deployed NTT will be set up, allowing your token to transfer between EVM chains and other supported chains. ## Prerequisites diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index ad32b5f71..3d00dc132 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -5,8 +5,6 @@ description: Deploy and configure Wormhole's Native Token Transfers (NTT) for So # Deploy Native Token Transfers on Solana -## Introduction - [Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole's messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. This guide walks you through deploying NTT on Solana, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. @@ -21,8 +19,7 @@ Before deploying NTT on Solana, ensure you have the following: - [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** - [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** -!!!Warning - Ensure to use the Solana and Anchor versions listed above to avoid compatibility issues. +Use the Solana and Anchor versions listed above to avoid compatibility issues while following this guide. ## Overview of the Deployment Process @@ -44,19 +41,19 @@ This section walks you through generating a Solana wallet, deploying an SPL toke If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). -1. **Generate a Solana key pair** - create a new wallet +1. **Generate a Solana key pair** - run the following command to create a new wallet: ```bash solana-keygen grind --starts-with w:1 --ignore-case ``` -2. **Set Solana configuration** - configure the Solana CLI to use the generated key pair +2. **Set Solana configuration** - configure the Solana CLI to use the generated key pair using the following command: ```bash solana config set --keypair INSERT_PATH_TO_KEYPAIR_JSON ``` -3. **Select an RPC URL** - configure Solana to use the appropriate network +3. **Select an RPC URL** - configure Solana to use the appropriate network using one of the following commands: === "Mainnet" ```bash @@ -73,7 +70,7 @@ If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). solana config set -ud ``` -4. **Fund your wallet** - ensure you have enough SOL to create a token. If deploying on devnet, request an airdrop +4. **Fund your wallet** - ensure you have enough SOL to create a token. If deploying on devnet, request an airdrop with the following commands: ```bash solana airdrop 2 @@ -104,14 +101,13 @@ If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). spl-token mint INSERT_TOKEN_ADDRESS 1000 ``` -!!! note - NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https://spl.solana.com/transfer-hook-interface){target=\_blank}. +NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https://spl.solana.com/transfer-hook-interface){target=\_blank}. ## Set Up NTT To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don't exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. -The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. +The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. Follow these steps to set up NTT using the CLI tool: 1. **Create a new NTT project** - set up a deployment workspace @@ -146,7 +142,9 @@ If you use burn-and-mint mode, follow these steps to enable the NTT program to m If you want to use hub-and-spoke, skip this section and proceed to [Deploy and Configure NTT](#deploy-and-configure-ntt). -Before updating the mint authority, you must create metadata for your SPL token. [View an example of how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata/blob/main/src/token-metadata.ts){target=\_blank}. +Before updating the mint authority, you must create metadata for your SPL token. You can visit this repository to see an example of [how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata/blob/main/src/token-metadata.ts){target=\_blank}. + +Follow these steps to set the mint authority using the NTT CLI: 1. **Generate an NTT program key pair** - create a unique key pair for the NTT program. The key pair must start with "ntt" to identify it as belonging to the NTT deployment @@ -168,7 +166,7 @@ Before updating the mint authority, you must create metadata for your SPL token. ## Deploy and Configure NTT -After setting up your deployment, finalize the configuration and deploy the NTT program on Solana. +After setting up your deployment, finalize the configuration and deploy the NTT program on Solana by following these steps: 1. **Deploy NTT to Solana** - run the appropriate command based on your deployment mode: @@ -184,10 +182,10 @@ After setting up your deployment, finalize the configuration and deploy the NTT ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON ``` - !!! note + !!! tip The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. -2. **Verify deployment status** - after deployment, check if your deployment.json file matches the on-chain configuration +2. **Verify deployment status** - after deployment, check if your `deployment.json` file matches the on-chain configuration using the following command: ```bash ntt status @@ -199,9 +197,7 @@ After setting up your deployment, finalize the configuration and deploy the NTT ntt pull ``` -3. **Configure inbound and outbound rate limits** - by default, the inbound and outbound limits are set to `0`. You must update them before pushing the deployment. - - For EVM chains, values must be set using 18 decimals, while Solana uses nine decimals. +3. **Configure inbound and outbound rate limits** - by default, the inbound and outbound limits are set to `0` and must be updated before deployment. For EVM chains, values must be set using 18 decimals, while Solana uses nine decimals. Open your `deployment.json` file and adjust the values based on your use case: diff --git a/build/transfers/native-token-transfers/deployment-process/post-deployment.md b/build/transfers/native-token-transfers/deployment-process/post-deployment.md index 5d6f5746a..422f2e360 100644 --- a/build/transfers/native-token-transfers/deployment-process/post-deployment.md +++ b/build/transfers/native-token-transfers/deployment-process/post-deployment.md @@ -3,17 +3,15 @@ title: Native Token Transfers Post Deployment description: Learn post-deployment guidelines for optimizing Wormhole NTT, which include testing, security, frontend integration, ecosystem coordination, and monitoring. --- -# Native Token Transfers (NTT) Post Deployment +# Native Token Transfers Post Deployment -## Post Deployment Recommendations - -To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed NTT: +To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed Native Token Transfers (NTT): - Implement a robust testing plan for your multichain token before launching -- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits +- Ensure comprehensive, documented security measures are followed for custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits - Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience -- Alternatively the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure -- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately +- Alternatively, the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), and wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment ## Manual Relaying for Solana Transfers @@ -24,7 +22,7 @@ This step ensures that tokens are properly minted or unlocked on Solana and prev UI components such as [Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. -## Post Deployment Integration Demos +## Where to Go Next
From 4a484f0cf52021abeb5eed4f4868f02846b814d8 Mon Sep 17 00:00:00 2001 From: DAWN KELLY Date: Wed, 19 Mar 2025 11:13:44 -0400 Subject: [PATCH 24/40] update llms --- llms.txt | 292 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 190 insertions(+), 102 deletions(-) diff --git a/llms.txt b/llms.txt index e25d92d82..3953a72bd 100644 --- a/llms.txt +++ b/llms.txt @@ -11925,8 +11925,7 @@ If you haven't installed the NTT CLI yet, follow the [NTT Installation Guide](/d The following table lists the available NTT CLI commands, descriptions, and examples. -!!! note - To explore detailed information about any NTT CLI command, including its options and examples, you can append `--help` to the command. This will display a comprehensive guide for the specific command. +To explore detailed information about any NTT CLI command, including its options and examples, you can append `--help` to the command. This will display a comprehensive guide for the specific command. ### General Commands @@ -11957,6 +11956,29 @@ The following table lists the available NTT CLI commands, descriptions, and exam | `ntt solana key-base58 ` | print private key in base58 | `ntt solana key-base58 /path/to/keypair.json`| | `ntt solana token-authority ` | print the token authority address for a given program ID| `ntt solana token-authority Sol1234...`| | `ntt solana ata `| print the token authority address for a given program ID| `ntt solana ata Mint123... Owner123... token22`| + +## Where to Go Next + +
+ + +- :octicons-gear-16:{ .lg .middle } **Configure NTT** + + --- + + Find information on configuring NTT, including guidance on setting Owner and Pauser access control roles and management of rate-limiting. + + [:custom-arrow: Configure your NTT deployment](/docs/build/transfers/native-token-transfers/configuration/) + +- :octicons-question-16:{ .lg .middle } **NTT FAQs** + + --- + + Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. + + [:custom-arrow: Check out the FAQs](/docs/build/transfers/native-token-transfers/faqs/) + +
--- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control/ @@ -12141,17 +12163,26 @@ title: Native Token Transfers EVM Deployment description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. --- -# Native Token Transfers (NTT) EVM Development +# Deploy Native Token Transfers on EVM Chains -## Deploy Your Token and Ensure Compatibility +[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of ERC-20 tokens on EVM chains using Wormhole's messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. -If you still need to do so, deploy the token contract to the destination or spoke chains. +This guide walks you through deploying NTT on EVM chains, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. -### Requirements for Token Deployment +By the end, a fully deployed NTT will be set up, allowing your token to transfer between EVM chains and other supported chains. -Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports two deployment modes: burn-and-mint and hub-and-spoke. These modes differ in how tokens are managed across chains. +## Prerequisites + +To get the most from this guide, ensure you have the following: + +- Installed the NTT CLI tool. If you have not already done so, see the [Installation Guide](/docs/build/transfers/native-token-transfers/deployment-process/installation/){taraget=\_blank} +- Deployed token contract on the destination or spoke chains + +## Deployment Modes -#### Burn-and-Mint Mode +Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports burn-and-mint and hub-and-spoke deployment modes. The following sections compare differences in how the two modes manage tokens across chains while demonstrating how to deploy NTT on EVM chains. + +### Burn-and-Mint Mode Tokens integrated with `NttManager` in `burning` mode require the following two functions to be present: @@ -12202,17 +12233,22 @@ interface INttToken { Later, you set mint authority to the corresponding `NttManager` contract. You can also follow the scripts in the [example NTT token](https://github.com/wormhole-foundation/example-ntt-token){target=\_blank} repository to deploy a token contract. -#### Hub-and-Spoke Mode +### Hub-and-Spoke Mode A central hub chain (e.g., Ethereum) manages the total token supply in hub-and-spoke mode. Other chains (spokes) mint or burn tokens during cross-chain transfers, ensuring consistency with the locked tokens on the hub chain. - **Hub chain** - tokens are locked on the hub chain when transferring to spoke chains - **Spoke chains** - tokens are native to the spoke chains and are either minted or burned during cross-chain transfers -!!! note - The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. +The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager follows these steps: + +1. Lock tokens on Ethereum +2. The corresponding amount is minted on Polygon + +When it is time to transfer tokens back from Polygon to Ethereum the NTT Manager follows these steps: -For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager locks tokens on Ethereum, and the corresponding amount is minted on Polygon. Similarly, transferring tokens back from Polygon to Ethereum burns the tokens on Polygon and unlocks the equivalent tokens on Ethereum. +1. Burn the tokens on Polygon +2. Unlocks the equivalent tokens on Ethereum This process ensures that the total token supply remains consistent across all chains, with the hub chain acting as the source of truth. @@ -12225,37 +12261,39 @@ For more detailed information, see the [Deployment Models](/docs/learn/transfers ## Deploy NTT -Create a new NTT project: +Follow these steps to deploy NTT to EVM chains. -```bash -ntt new my-ntt-deployment -cd my-ntt-deployment -``` - -Initialize a new `deployment.json` file specifying the network: - -=== "Testnet" +1. Create a new NTT project using the following commands: ```bash - ntt init Testnet + ntt new my-ntt-deployment + cd my-ntt-deployment ``` -=== "Mainnet" +2. Initialize a new `deployment.json` file specifying the network: + + === "Testnet" - ```bash - ntt init Mainnet - ``` + ```bash + ntt init Testnet + ``` -Ensure you have set up your environment correctly: + === "Mainnet" -```bash -export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY -``` + ```bash + ntt init Mainnet + ``` -Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: +3. Ensure you have set up your environment correctly: -```bash -# Set scanner API Keys as environment variables + ```bash + export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY + ``` + +4. Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: + + ```bash + # Set scanner API Keys as environment variables export SEPOLIA_SCAN_API_KEY=INSERT_ETHERSCAN_SEPOLIA_API_KEY export ARBITRUMSEPOLIA_SCAN_API_KEY=INSERT_ARBISCAN_SEPOLIA_API_KEY @@ -12263,16 +12301,16 @@ export ARBITRUMSEPOLIA_SCAN_API_KEY=INSERT_ARBISCAN_SEPOLIA_API_KEY # The contracts will be automatically verified using the scanner API keys above ntt add-chain Sepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS ntt add-chain ArbitrumSepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS -``` + ``` -While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. + While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. -The `ntt add-chain` command takes the following parameters: + The `ntt add-chain` command takes the following parameters: -- Name of each chain -- Version of NTT to deploy (use `--latest` for the latest contract versions) -- Mode (either `burning` or `locking`) -- Your token contract address + - Name of each chain + - Version of NTT to deploy (use `--latest` for the latest contract versions) + - Mode (either `burning` or `locking`) + - Your token contract address The NTT CLI prints detailed logs and transaction hashes, so you can see exactly what's happening under the hood. @@ -12283,21 +12321,21 @@ The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. - `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain - `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and set up rate limits with the appropriate number of decimals, depending on the specific chain. For example: - For Solana, the limits are set with 9 decimal places: + - **Solana** - the limits are set with 9 decimal places: ```json "inbound": { "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana } ``` - For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: + - **Sepolia (Ethereum Testnet)** - the limits are set with 18 decimal places: ```json "inbound": { "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia } ``` - This initial configuration ensures that the rate limits are correctly represented for each chain's token precision + This initial configuration ensures that the rate limits are correctly represented for each chain's token precision - `ntt push` - syncs the on-chain configuration with local changes made to your `deployment.json` file @@ -12305,10 +12343,7 @@ After you deploy the NTT contracts, ensure that the deployment is properly confi ## Set Token Minter to NTT Manager -The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. - -!!! note - The required NTT Manager address can be found in the `deployment.json` file. +The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. The required NTT Manager address can be found in the `deployment.json` file. - If you followed the [`INttToken`](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} interface, you can execute the `setMinter(address newMinter)` function ```json @@ -12319,22 +12354,39 @@ The final step in the deployment process is to set the NTT Manager as a minter o By default, NTT transfers to EVM blockchains support automatic relaying via the Wormhole relayer, which doesn't require the user to perform a transaction on the destination chain to complete the transfer. -!!!important - To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. +## Where to Go Next + +
+ +- :octicons-tools-16:{ .lg .middle } **Test Your Deployment** + + --- + + Follow the NTT Post Deployment Guide for integration examples and testing instructions. + + [:custom-arrow: Test Your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} + +- :octicons-tools-16:{ .lg .middle } **Add NTT to Your dApp** + + --- + + Configure Wormhole Connect, a plug-and-play bridging UI, to enable multichain transfers for your token. + + [:custom-arrow: Use Connect to Integrate NTT](/docs/build/transfers/connect/){target=\_blank} + +
--- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/ --- BEGIN CONTENT --- --- title: Native Token Transfers Solana Deployment -description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. +description: Deploy and configure Wormhole's Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. --- # Deploy Native Token Transfers on Solana -## Introduction - -[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole’s messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. +[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole's messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. This guide walks you through deploying NTT on Solana, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. @@ -12348,20 +12400,19 @@ Before deploying NTT on Solana, ensure you have the following: - [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** - [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** -!!!Warning - Ensure to use the Solana and Anchor versions listed above to avoid compatibility issues. +Use the Solana and Anchor versions listed above to avoid compatibility issues while following this guide. ## Overview of the Deployment Process There are two ways to deploy NTT on Solana: - **Using an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section - - **Creating a new SPL token** - if you don’t already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT + - **Creating a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT Additionally, the NTT CLI supports two [deployment models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required - - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token’s minting authority to the Program Derived Address (PDA) controlled by the NTT program + - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program By default, NTT transfers to Solana require manual [relaying](/docs/learn/infrastructure/relayer/){target=\_blank}, meaning users must complete a transaction on Solana to finalize the transfer. For automatic relaying, where transactions are completed without user intervention, additional setup is required. [Contact Wormhole contributors](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to enable automatic relaying support for your deployment. @@ -12371,19 +12422,19 @@ This section walks you through generating a Solana wallet, deploying an SPL toke If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). -1. **Generate a Solana key pair** - create a new wallet +1. **Generate a Solana key pair** - run the following command to create a new wallet: ```bash solana-keygen grind --starts-with w:1 --ignore-case ``` -2. **Set Solana configuration** - configure the Solana CLI to use the generated key pair +2. **Set Solana configuration** - configure the Solana CLI to use the generated key pair using the following command: ```bash solana config set --keypair INSERT_PATH_TO_KEYPAIR_JSON ``` -3. **Select an RPC URL** - configure Solana to use the appropriate network +3. **Select an RPC URL** - configure Solana to use the appropriate network using one of the following commands: === "Mainnet" ```bash @@ -12400,7 +12451,7 @@ If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). solana config set -ud ``` -4. **Fund your wallet** - ensure you have enough SOL to create a token. If deploying on devnet, request an airdrop +4. **Fund your wallet** - ensure you have enough SOL to create a token. If deploying on devnet, request an airdrop with the following commands: ```bash solana airdrop 2 @@ -12431,14 +12482,13 @@ If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). spl-token mint INSERT_TOKEN_ADDRESS 1000 ``` -!!! note - NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https://spl.solana.com/transfer-hook-interface){target=\_blank}. +NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https://spl.solana.com/transfer-hook-interface){target=\_blank}. ## Set Up NTT -To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don’t exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. +To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don't exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. -The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. +The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. Follow these steps to set up NTT using the CLI tool: 1. **Create a new NTT project** - set up a deployment workspace @@ -12469,11 +12519,13 @@ The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/in ### Set Mint Authority -If you use burn-and-mint mode, follow these steps to enable the NTT program to mint tokens on Solana. This involves deriving the PDA as the token authority and updating the SPL token’s minting permissions. +If you use burn-and-mint mode, follow these steps to enable the NTT program to mint tokens on Solana. This involves deriving the PDA as the token authority and updating the SPL token's minting permissions. If you want to use hub-and-spoke, skip this section and proceed to [Deploy and Configure NTT](#deploy-and-configure-ntt). -Before updating the mint authority, you must create metadata for your SPL token. [View an example of how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata/blob/main/src/token-metadata.ts){target=\_blank}. +Before updating the mint authority, you must create metadata for your SPL token. You can visit this repository to see an example of [how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata/blob/main/src/token-metadata.ts){target=\_blank}. + +Follow these steps to set the mint authority using the NTT CLI: 1. **Generate an NTT program key pair** - create a unique key pair for the NTT program. The key pair must start with "ntt" to identify it as belonging to the NTT deployment @@ -12495,7 +12547,7 @@ Before updating the mint authority, you must create metadata for your SPL token. ## Deploy and Configure NTT -After setting up your deployment, finalize the configuration and deploy the NTT program on Solana. +After setting up your deployment, finalize the configuration and deploy the NTT program on Solana by following these steps: 1. **Deploy NTT to Solana** - run the appropriate command based on your deployment mode: @@ -12511,10 +12563,10 @@ After setting up your deployment, finalize the configuration and deploy the NTT ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON ``` - !!! note + !!! tip The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. -2. **Verify deployment status** - after deployment, check if your deployment.json file matches the on-chain configuration +2. **Verify deployment status** - after deployment, check if your `deployment.json` file matches the on-chain configuration using the following command: ```bash ntt status @@ -12526,9 +12578,7 @@ After setting up your deployment, finalize the configuration and deploy the NTT ntt pull ``` -3. **Configure inbound and outbound rate limits** - by default, the inbound and outbound limits are set to `0`. You must update them before pushing the deployment. - - For EVM chains, values must be set using 18 decimals, while Solana uses 9 decimals. +3. **Configure inbound and outbound rate limits** - by default, the inbound and outbound limits are set to `0` and must be updated before deployment. For EVM chains, values must be set using 18 decimals, while Solana uses nine decimals. Open your `deployment.json` file and adjust the values based on your use case: @@ -12560,15 +12610,31 @@ After setting up your deployment, finalize the configuration and deploy the NTT ntt push --payer INSERT_YOUR_KEYPAIR_JSON ``` -!!! note "Troubleshoot Deployment Issues" - If your deployment fails, it may be due to leftover program buffer accounts taking up storage on Solana. These temporary accounts are created during deployment but may persist if interrupted. To free up space and allow redeployment, refer to the [Solana program deployment guide](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for instructions on finding and closing them. +### Troubleshoot Deployment Issues + +If your deployment fails, it may be due to leftover program buffer accounts taking up storage on Solana. These temporary accounts are created during deployment but may persist if interrupted. Refer to the [Solana program deployment guide](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for instructions on finding and closing these buffer accounts to free up space and allow redeployment. + +## Where to Go Next + +
+ +- :octicons-tools-16:{ .lg .middle } **Test Your Deployment** -## Next Steps and Resources + --- + + Follow the NTT Post Deployment Guide for integration examples and testing instructions. + + [:custom-arrow: Test Your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} + +- :octicons-tools-16:{ .lg .middle } **Add NTT to Your dApp** -Your NTT deployment on Solana is now complete! To proceed, explore the following: + --- + + Configure Wormhole Connect, a plug-and-play bridging UI, to enable multichain transfers for your token. - - **Test your deployment** – follow the [NTT Post Deployment Guide](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} for integration examples and testing instructions - - **Integrate NTT into your application** – configure [Wormhole Connect](/docs/build/transfers/connect/){target=\_blank} a plug-and-play bridging UI, to enable multichain transfers for your token + [:custom-arrow: Use Connect to Integrate NTT](/docs/build/transfers/connect/){target=\_blank} + +
--- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ @@ -12829,41 +12895,42 @@ description: Learn how to Install Wormhole’s Native Token Transfers (NTT) fram # Install the Native Token Transfers CLI -## Installation - In this video, the Wormhole team walks you through installing the [Native Token Transfers (NTT) CLI](https://github.com/wormhole-foundation/native-token-transfers/tree/main/cli){target=\_blank}. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide.
+## Install NTT CLI + The fastest way to deploy Native Token Transfers (NTT) is using the NTT CLI. As prerequisites, ensure you have the following installed: - Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} - Install [Bun](https://bun.sh/){target=\_blank} -Install the NTT CLI: +Follow these steps to install the NTT CLI: -```bash -curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash -``` +1. Run the installation command in your terminal: -Verify the NTT CLI is installed: + ```bash + curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash + ``` -```bash -ntt --version -``` +2. Verify the NTT CLI is installed: + + ```bash + ntt --version + ``` -Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI. +3. Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI. -### Updating +## Update NTT CLI -To update an existing NTT CLI installation, run: +To update an existing NTT CLI installation, run the following command in your terminal: ```bash ntt update ``` -!!! note - NTT CLI installations and updates will always pick up the latest tag with name vX.Y.Z+cli and verify that the underlying commit is included in main. +NTT CLI installations and updates will always pick up the latest tag with name vX.Y.Z+cli and verify that the underlying commit is included in main. For local development, you can update your CLI version from a specific branch or install from a local path. @@ -12879,6 +12946,29 @@ ntt update --path path/to/ntt/repo ``` Git branch and local installations enable a fast iteration loop as changes to the CLI code will immediately be reflected in the running binary without having to run any build steps. + +## Where to Go Next + +
+ + +- :octicons-tools-16:{ .lg .middle } **Deploy to EVM Chains** + + --- + + Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. + + [:custom-arrow: Deploy NTT to EVM chains](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/) + +- :octicons-tools-16:{ .lg .middle } **Deploy to Solana** + + --- + + Deploy and configure Wormhole's Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. + + [:custom-arrow: Deploy NTT to Solana](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/) + +
--- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/ @@ -12888,17 +12978,15 @@ title: Native Token Transfers Post Deployment description: Learn post-deployment guidelines for optimizing Wormhole NTT, which include testing, security, frontend integration, ecosystem coordination, and monitoring. --- -# Native Token Transfers (NTT) Post Deployment +# Native Token Transfers Post Deployment -## Post Deployment Recommendations - -To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed NTT: +To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed Native Token Transfers (NTT): - Implement a robust testing plan for your multichain token before launching -- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits +- Ensure comprehensive, documented security measures are followed for custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits - Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience -- Alternatively the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure -- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately +- Alternatively, the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), and wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment ## Manual Relaying for Solana Transfers @@ -12909,7 +12997,7 @@ This step ensures that tokens are properly minted or unlocked on Solana and prev UI components such as [Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. -## Post Deployment Integration Demos +## Where to Go Next
From 8bda922979420abcef7b9e4bbf635c13a578107b Mon Sep 17 00:00:00 2001 From: Martin Hofmann Date: Wed, 19 Mar 2025 16:17:23 +0100 Subject: [PATCH 25/40] Martinh/update sdk v1.13.3 new ia (#309) * update tables with new sdk version * llm check --- .../build/reference/chain-ids/chain-ids.md | 4 +- .../consistency-levels/consistency-levels.md | 2 +- .../contract-addresses/core-contracts.md | 2 +- .../reference/contract-addresses/relayer.md | 2 +- .../contract-addresses/token-bridge.md | 2 +- .../testnet-faucets/testnet-faucets.md | 4 +- .snippets/text/supported-networks.md | 13 ++++-- llms.txt | 42 ++++++++++++------- 8 files changed, 46 insertions(+), 25 deletions(-) diff --git a/.snippets/text/build/reference/chain-ids/chain-ids.md b/.snippets/text/build/reference/chain-ids/chain-ids.md index 02a96ddb2..ded67e58e 100644 --- a/.snippets/text/build/reference/chain-ids/chain-ids.md +++ b/.snippets/text/build/reference/chain-ids/chain-ids.md @@ -3,10 +3,10 @@ === "Mainnet" -
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Monad48
Moonbeam161284
Movement49
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
+
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Mezo50
Monad48
Moonbeam161284
Movement49126
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
=== "Testnet" -
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
Movement49250
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
+
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Mezo5031611
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
Movement49250
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
\ No newline at end of file diff --git a/.snippets/text/build/reference/consistency-levels/consistency-levels.md b/.snippets/text/build/reference/consistency-levels/consistency-levels.md index 533ede24f..3f0f01321 100644 --- a/.snippets/text/build/reference/consistency-levels/consistency-levels.md +++ b/.snippets/text/build/reference/consistency-levels/consistency-levels.md @@ -1,4 +1,4 @@ -
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 19minDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 18minDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 18min
Berachain200finalized~ 4s
Blast200201finalized~ 18min
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Ink0~ 9min
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 18min
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
Movement0~ 4s
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 18min
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 16min
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 18min
World Chain0~ 18min
X Layer200201finalized~ 16min
XPLA0~ 5s
+
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 19minDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 18minDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 18min
Berachain200finalized~ 4s
Blast200201finalized~ 18min
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Ink0~ 9min
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 18min
Mezo0~ 8s
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
Movement0~ 4s
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 18min
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 16min
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 18min
World Chain0~ 18min
X Layer200201finalized~ 16min
XPLA0~ 5s
diff --git a/.snippets/text/build/reference/contract-addresses/core-contracts.md b/.snippets/text/build/reference/contract-addresses/core-contracts.md index 13c751b7b..e94bec14f 100644 --- a/.snippets/text/build/reference/contract-addresses/core-contracts.md +++ b/.snippets/text/build/reference/contract-addresses/core-contracts.md @@ -7,7 +7,7 @@ === "Testnet" -
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
Movement0xa7b37796439f725373fe4835793cd2eed7a1db639bbb220c72be8904ec5e2a7a
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
+
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Mezo0x268557122Ffd64c85750d630b716471118F323c8
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
Movement0xa7b37796439f725373fe4835793cd2eed7a1db639bbb220c72be8904ec5e2a7a
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
=== "Devnet" diff --git a/.snippets/text/build/reference/contract-addresses/relayer.md b/.snippets/text/build/reference/contract-addresses/relayer.md index b2aed7018..cc692eed9 100644 --- a/.snippets/text/build/reference/contract-addresses/relayer.md +++ b/.snippets/text/build/reference/contract-addresses/relayer.md @@ -3,7 +3,7 @@ === "Mainnet" -
Chain NameContract Address
Ethereum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Arbitrum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Avalanche0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Base0x706f82e9bb5b0813501714ab5974216704980e31
Blast0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
BNB Smart Chain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Celo0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Fantom0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Kaia0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Mantle0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Moonbeam0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Optimism0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Polygon0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Scroll0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
SNAXchain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
World Chain0x1520cc9e779c56dab5866bebfb885c86840c33d3
X Layer0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
+
Chain NameContract Address
Ethereum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Arbitrum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Avalanche0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Base0x706f82e9bb5b0813501714ab5974216704980e31
Berachain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Blast0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
BNB Smart Chain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Celo0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Fantom0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Ink0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Kaia0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Mantle0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Moonbeam0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Optimism0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Polygon0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Scroll0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
SNAXchain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Unichain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
World Chain0x1520cc9e779c56dab5866bebfb885c86840c33d3
X Layer0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
=== "Testnet" diff --git a/.snippets/text/build/reference/contract-addresses/token-bridge.md b/.snippets/text/build/reference/contract-addresses/token-bridge.md index efe2b1dc4..410f3aa9c 100644 --- a/.snippets/text/build/reference/contract-addresses/token-bridge.md +++ b/.snippets/text/build/reference/contract-addresses/token-bridge.md @@ -7,7 +7,7 @@ === "Testnet" -
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
Movement0xda075f9cb681e291c17e65562bdd6d4196c7d2f86da1aa3917f2809ff8edb03d
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
+
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Mezo0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
Movement0xda075f9cb681e291c17e65562bdd6d4196c7d2f86da1aa3917f2809ff8edb03d
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
=== "Devnet" diff --git a/.snippets/text/build/start-building/testnet-faucets/testnet-faucets.md b/.snippets/text/build/start-building/testnet-faucets/testnet-faucets.md index 16df2992a..a3b04cf67 100644 --- a/.snippets/text/build/start-building/testnet-faucets/testnet-faucets.md +++ b/.snippets/text/build/start-building/testnet-faucets/testnet-faucets.md @@ -5,7 +5,7 @@ ### EVM -
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
+
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MonadEVMMONOfficial Monad Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
### SVM @@ -21,7 +21,7 @@ ### Move VM -
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
+
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
MovementMove VMundefinedOfficial Movement Faucet
### NEAR VM diff --git a/.snippets/text/supported-networks.md b/.snippets/text/supported-networks.md index 4065c288a..c1ff231ff 100644 --- a/.snippets/text/supported-networks.md +++ b/.snippets/text/supported-networks.md @@ -53,9 +53,13 @@ :octicons-package-16: Block ExplorerMantleEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerMonadEVM:x::white_check_mark: + :octicons-package-16: Block ExplorerMezoEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block ExplorerMonadEVM:x::white_check_mark: :material-web: Website
- :material-file-document: Developer Docs
MoonbeamEVM:white_check_mark::white_check_mark: + :material-file-document: Developer Docs
+ :octicons-package-16: Block ExplorerMoonbeamEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerNeonEVM:x::white_check_mark: @@ -134,7 +138,10 @@
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
MovementMove VM:x::white_check_mark:
+ :octicons-package-16: Block ExplorerMovementMove VM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer ### NEAR VM diff --git a/llms.txt b/llms.txt index 7819afda2..7158e94ac 100644 --- a/llms.txt +++ b/llms.txt @@ -2104,11 +2104,11 @@ The following table documents the chain IDs used by Wormhole and places them alo === "Mainnet" -
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Monad48
Moonbeam161284
Movement49
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
+
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Mezo50
Monad48
Moonbeam161284
Movement49126
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
=== "Testnet" -
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
Movement49250
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
+
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Mezo5031611
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
Movement49250
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
--- END CONTENT --- @@ -2126,7 +2126,7 @@ The following table documents each chain's `consistencyLevel` values (i.e., fina -
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 19minDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 18minDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 18min
Berachain200finalized~ 4s
Blast200201finalized~ 18min
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Ink0~ 9min
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 18min
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
Movement0~ 4s
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 18min
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 16min
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 18min
World Chain0~ 18min
X Layer200201finalized~ 16min
XPLA0~ 5s
+
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 19minDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 18minDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 18min
Berachain200finalized~ 4s
Blast200201finalized~ 18min
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Ink0~ 9min
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 18min
Mezo0~ 8s
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
Movement0~ 4s
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 18min
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 16min
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 18min
World Chain0~ 18min
X Layer200201finalized~ 16min
XPLA0~ 5s
--- END CONTENT --- @@ -2150,7 +2150,7 @@ description: This page documents the deployed contract addresses of the Wormhole === "Testnet" -
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
Movement0xa7b37796439f725373fe4835793cd2eed7a1db639bbb220c72be8904ec5e2a7a
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
+
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Mezo0x268557122Ffd64c85750d630b716471118F323c8
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
Movement0xa7b37796439f725373fe4835793cd2eed7a1db639bbb220c72be8904ec5e2a7a
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
=== "Devnet" @@ -2169,7 +2169,7 @@ description: This page documents the deployed contract addresses of the Wormhole === "Testnet" -
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
Movement0xda075f9cb681e291c17e65562bdd6d4196c7d2f86da1aa3917f2809ff8edb03d
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
+
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Mezo0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
Movement0xda075f9cb681e291c17e65562bdd6d4196c7d2f86da1aa3917f2809ff8edb03d
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
=== "Devnet" @@ -2184,7 +2184,7 @@ description: This page documents the deployed contract addresses of the Wormhole === "Mainnet" -
Chain NameContract Address
Ethereum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Arbitrum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Avalanche0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Base0x706f82e9bb5b0813501714ab5974216704980e31
Blast0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
BNB Smart Chain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Celo0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Fantom0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Kaia0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Mantle0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Moonbeam0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Optimism0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Polygon0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Scroll0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
SNAXchain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
World Chain0x1520cc9e779c56dab5866bebfb885c86840c33d3
X Layer0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
+
Chain NameContract Address
Ethereum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Arbitrum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Avalanche0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Base0x706f82e9bb5b0813501714ab5974216704980e31
Berachain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Blast0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
BNB Smart Chain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Celo0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Fantom0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Ink0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Kaia0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Mantle0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Moonbeam0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Optimism0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Polygon0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Scroll0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
SNAXchain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Unichain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
World Chain0x1520cc9e779c56dab5866bebfb885c86840c33d3
X Layer0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
=== "Testnet" @@ -2633,9 +2633,13 @@ Wormhole supports several different blockchains and environments. Since many of :octicons-package-16: Block ExplorerMantleEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerMonadEVM:x::white_check_mark: + :octicons-package-16: Block ExplorerMezoEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block ExplorerMonadEVM:x::white_check_mark: :material-web: Website
- :material-file-document: Developer Docs
MoonbeamEVM:white_check_mark::white_check_mark: + :material-file-document: Developer Docs
+ :octicons-package-16: Block ExplorerMoonbeamEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerNeonEVM:x::white_check_mark: @@ -2714,7 +2718,10 @@ Wormhole supports several different blockchains and environments. Since many of
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
MovementMove VM:x::white_check_mark:
+ :octicons-package-16: Block ExplorerMovementMove VM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer ### NEAR VM @@ -2754,7 +2761,7 @@ Don't let the need for testnet tokens get in the way of buildling your next grea ### EVM -
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
+
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MonadEVMMONOfficial Monad Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
### SVM @@ -2770,7 +2777,7 @@ Don't let the need for testnet tokens get in the way of buildling your next grea ### Move VM -
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
+
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
MovementMove VMundefinedOfficial Movement Faucet
### NEAR VM @@ -15900,9 +15907,13 @@ Wormhole supports a growing number of blockchains. :octicons-package-16: Block ExplorerMantleEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block ExplorerMonadEVM:x::white_check_mark: + :octicons-package-16: Block ExplorerMezoEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block ExplorerMonadEVM:x::white_check_mark: :material-web: Website
- :material-file-document: Developer Docs
MoonbeamEVM:white_check_mark::white_check_mark: + :material-file-document: Developer Docs
+ :octicons-package-16: Block ExplorerMoonbeamEVM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
:octicons-package-16: Block ExplorerNeonEVM:x::white_check_mark: @@ -15981,7 +15992,10 @@ Wormhole supports a growing number of blockchains.
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: :material-web: Website
:material-file-document: Developer Docs
- :octicons-package-16: Block Explorer
MovementMove VM:x::white_check_mark:
+ :octicons-package-16: Block ExplorerMovementMove VM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer ### NEAR VM From 36505ee610ef637bf50e369bfea01a8f4928cd71 Mon Sep 17 00:00:00 2001 From: Erin Shaben Date: Wed, 19 Mar 2025 12:16:49 -0400 Subject: [PATCH 26/40] merge conflicts (#311) --- learn/transfers/settlement/architecture.md | 2 +- llms.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/learn/transfers/settlement/architecture.md b/learn/transfers/settlement/architecture.md index 864fcd67e..9f35a01fd 100644 --- a/learn/transfers/settlement/architecture.md +++ b/learn/transfers/settlement/architecture.md @@ -99,4 +99,4 @@ The protocol provides mechanisms for unlocking the fee once the bridging process ## Where to Go Next - To learn more about available EVM functions, see the [Build on the Wormhole Liquidity Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide -- To learn how ot integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial \ No newline at end of file +- To learn how to integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial \ No newline at end of file diff --git a/llms.txt b/llms.txt index 7158e94ac..47d64226f 100644 --- a/llms.txt +++ b/llms.txt @@ -16683,7 +16683,7 @@ The protocol provides mechanisms for unlocking the fee once the bridging process ## Where to Go Next - To learn more about available EVM functions, see the [Build on the Wormhole Liquidity Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide -- To learn how ot integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial +- To learn how to integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial --- END CONTENT --- Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/ From 6d8396606aff693e096447d6e90d4e2f8a26b1e2 Mon Sep 17 00:00:00 2001 From: Martin Hofmann Date: Thu, 20 Mar 2025 13:21:00 +0100 Subject: [PATCH 27/40] Apply suggestions from code review Co-authored-by: Erin Shaben --- .../deployment-process/deploy-to-solana.md | 2 +- .../deployment-process/installation.md | 2 +- .../deployment-process/post-deployment.md | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index 3d00dc132..d47fb4213 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -107,7 +107,7 @@ NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https:// To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don't exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. -The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. Follow these steps to set up NTT using the CLI tool: +The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/){target=\_blank} manages deployments, configures settings, and interacts with the NTT system. Follow these steps to set up NTT using the CLI tool: 1. **Create a new NTT project** - set up a deployment workspace diff --git a/build/transfers/native-token-transfers/deployment-process/installation.md b/build/transfers/native-token-transfers/deployment-process/installation.md index 8c5dbe21c..57ca70933 100644 --- a/build/transfers/native-token-transfers/deployment-process/installation.md +++ b/build/transfers/native-token-transfers/deployment-process/installation.md @@ -30,7 +30,7 @@ Follow these steps to install the NTT CLI: ntt --version ``` -3. Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI. +3. Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI ## Update NTT CLI diff --git a/build/transfers/native-token-transfers/deployment-process/post-deployment.md b/build/transfers/native-token-transfers/deployment-process/post-deployment.md index 422f2e360..678cdf8de 100644 --- a/build/transfers/native-token-transfers/deployment-process/post-deployment.md +++ b/build/transfers/native-token-transfers/deployment-process/post-deployment.md @@ -9,8 +9,8 @@ To offer the best user experience and ensure the most robust deployment, Wormhol - Implement a robust testing plan for your multichain token before launching - Ensure comprehensive, documented security measures are followed for custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits -- Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience -- Alternatively, the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Consider a streamlined, customizable frontend such as [Wormhole Connect](/docs/build/transfers/connect/){target=\_blank} for an optimized user experience +- Alternatively, the [Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure - Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), and wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment @@ -20,7 +20,7 @@ By default, NTT transfers to Solana require manual relaying, meaning that after This step ensures that tokens are properly minted or unlocked on Solana and prevents unauthorized claims. -UI components such as [Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. +[Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. ## Where to Go Next From 837747851b932effc2837b217f32632c9910df42 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 13:31:41 +0100 Subject: [PATCH 28/40] remove foundry from requirements --- .../native-token-transfers/deployment-process/installation.md | 1 - 1 file changed, 1 deletion(-) diff --git a/build/transfers/native-token-transfers/deployment-process/installation.md b/build/transfers/native-token-transfers/deployment-process/installation.md index 57ca70933..32953738a 100644 --- a/build/transfers/native-token-transfers/deployment-process/installation.md +++ b/build/transfers/native-token-transfers/deployment-process/installation.md @@ -13,7 +13,6 @@ In this video, the Wormhole team walks you through installing the [Native Token The fastest way to deploy Native Token Transfers (NTT) is using the NTT CLI. As prerequisites, ensure you have the following installed: -- Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} - Install [Bun](https://bun.sh/){target=\_blank} Follow these steps to install the NTT CLI: From aff10f2a4a6dbbc4a4c534e3cd8a8d849043fe52 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 14:24:53 +0100 Subject: [PATCH 29/40] add deployment on evm step --- .../deployment-process/deploy-to-solana.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index d47fb4213..c278c1cbc 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -237,6 +237,14 @@ If your deployment fails, it may be due to leftover program buffer accounts taki
+- :octicons-globe-16:{ .lg .middle } **Deploy NTT on EVM Chains** + + --- + + After deploying NTT on Solana, deploy and integrate it on EVM chains to enable seamless multichain transfers. + + [:custom-arrow: Deploy NTT on EVM](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} + - :octicons-tools-16:{ .lg .middle } **Test Your Deployment** --- From 0536780254c561e99bc2bdeac0bc6b376a4dd7cd Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 15:26:36 +0100 Subject: [PATCH 30/40] reshape overview section --- .../deployment-process/deploy-to-solana.md | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index c278c1cbc..d98e08dd8 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -23,15 +23,23 @@ Use the Solana and Anchor versions listed above to avoid compatibility issues wh ## Overview of the Deployment Process -There are two ways to deploy NTT on Solana: +Deploying NTT with the CLI on Solana follows a structured process: - - **Using an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section - - **Creating a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT +1. Choose Your Token Setup: -Additionally, the NTT CLI supports two [deployment models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: + - **Use an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section + - **Create a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT - - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required - - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program +2. Choose your [deployment model](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: + + - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required + - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program + +3. Deploy and Configure NTT on Solana: + + - Use the NTT CLI to initialize and deploy the NTT program, specifying your SPL token and deployment mode. + +Following this process, your token will fully integrate with NTT, enabling seamless transfers between Solana and other chains. By default, NTT transfers to Solana require manual [relaying](/docs/learn/infrastructure/relayer/){target=\_blank}, meaning users must complete a transaction on Solana to finalize the transfer. For automatic relaying, where transactions are completed without user intervention, additional setup is required. [Contact Wormhole contributors](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to enable automatic relaying support for your deployment. From 9e0aec61aa3be7cdad14e094c75f1833f0152f73 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 15:26:56 +0100 Subject: [PATCH 31/40] llm check --- llms.txt | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/llms.txt b/llms.txt index 9bdff439e..fa2dcc227 100644 --- a/llms.txt +++ b/llms.txt @@ -12411,15 +12411,23 @@ Use the Solana and Anchor versions listed above to avoid compatibility issues wh ## Overview of the Deployment Process -There are two ways to deploy NTT on Solana: +Deploying NTT with the CLI on Solana follows a structured process: - - **Using an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section - - **Creating a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT +1. Choose Your Token Setup: -Additionally, the NTT CLI supports two [deployment models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: + - **Use an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section + - **Create a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT - - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required - - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program +2. Choose your [deployment model](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: + + - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required + - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program + +3. Deploy and Configure NTT on Solana: + + - Use the NTT CLI to initialize and deploy the NTT program, specifying your SPL token and deployment mode. + +Following this process, your token will fully integrate with NTT, enabling seamless transfers between Solana and other chains. By default, NTT transfers to Solana require manual [relaying](/docs/learn/infrastructure/relayer/){target=\_blank}, meaning users must complete a transaction on Solana to finalize the transfer. For automatic relaying, where transactions are completed without user intervention, additional setup is required. [Contact Wormhole contributors](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to enable automatic relaying support for your deployment. @@ -12495,7 +12503,7 @@ NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https:// To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don't exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. -The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) manages deployments, configures settings, and interacts with the NTT system. Follow these steps to set up NTT using the CLI tool: +The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/){target=\_blank} manages deployments, configures settings, and interacts with the NTT system. Follow these steps to set up NTT using the CLI tool: 1. **Create a new NTT project** - set up a deployment workspace @@ -12625,6 +12633,14 @@ If your deployment fails, it may be due to leftover program buffer accounts taki
+- :octicons-globe-16:{ .lg .middle } **Deploy NTT on EVM Chains** + + --- + + After deploying NTT on Solana, deploy and integrate it on EVM chains to enable seamless multichain transfers. + + [:custom-arrow: Deploy NTT on EVM](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} + - :octicons-tools-16:{ .lg .middle } **Test Your Deployment** --- @@ -12910,7 +12926,6 @@ In this video, the Wormhole team walks you through installing the [Native Token The fastest way to deploy Native Token Transfers (NTT) is using the NTT CLI. As prerequisites, ensure you have the following installed: -- Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} - Install [Bun](https://bun.sh/){target=\_blank} Follow these steps to install the NTT CLI: @@ -12927,7 +12942,7 @@ Follow these steps to install the NTT CLI: ntt --version ``` -3. Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI. +3. Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI ## Update NTT CLI @@ -12991,8 +13006,8 @@ To offer the best user experience and ensure the most robust deployment, Wormhol - Implement a robust testing plan for your multichain token before launching - Ensure comprehensive, documented security measures are followed for custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits -- Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience -- Alternatively, the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Consider a streamlined, customizable frontend such as [Wormhole Connect](/docs/build/transfers/connect/){target=\_blank} for an optimized user experience +- Alternatively, the [Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure - Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), and wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment @@ -13002,7 +13017,7 @@ By default, NTT transfers to Solana require manual relaying, meaning that after This step ensures that tokens are properly minted or unlocked on Solana and prevents unauthorized claims. -UI components such as [Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. +[Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. ## Where to Go Next From 44554ee34ab7c8c007c6128f745db3abc6c92f1f Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 15:51:07 +0100 Subject: [PATCH 32/40] evm page --- .../deployment-process/deploy-to-evm.md | 126 +++++++----------- 1 file changed, 47 insertions(+), 79 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md index 6751c8c4f..cd3c67ec4 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-evm.md @@ -3,26 +3,17 @@ title: Native Token Transfers EVM Deployment description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. --- -# Deploy Native Token Transfers on EVM Chains +# Native Token Transfers (NTT) EVM Development -[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of ERC-20 tokens on EVM chains using Wormhole's messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. +## Deploy Your Token and Ensure Compatibility -This guide walks you through deploying NTT on EVM chains, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. +If you still need to do so, deploy the token contract to the destination or spoke chains. -By the end, a fully deployed NTT will be set up, allowing your token to transfer between EVM chains and other supported chains. +### Requirements for Token Deployment -## Prerequisites +Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports two deployment modes: burn-and-mint and hub-and-spoke. These modes differ in how tokens are managed across chains. -To get the most from this guide, ensure you have the following: - -- Installed the NTT CLI tool. If you have not already done so, see the [Installation Guide](/docs/build/transfers/native-token-transfers/deployment-process/installation/){taraget=\_blank} -- Deployed token contract on the destination or spoke chains - -## Deployment Modes - -Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports burn-and-mint and hub-and-spoke deployment modes. The following sections compare differences in how the two modes manage tokens across chains while demonstrating how to deploy NTT on EVM chains. - -### Burn-and-Mint Mode +#### Burn-and-Mint Mode Tokens integrated with `NttManager` in `burning` mode require the following two functions to be present: @@ -38,22 +29,17 @@ These functions aren't part of the standard ERC-20 interface. The [`INttToken` i Later, you set mint authority to the corresponding `NttManager` contract. You can also follow the scripts in the [example NTT token](https://github.com/wormhole-foundation/example-ntt-token){target=\_blank} repository to deploy a token contract. -### Hub-and-Spoke Mode +#### Hub-and-Spoke Mode A central hub chain (e.g., Ethereum) manages the total token supply in hub-and-spoke mode. Other chains (spokes) mint or burn tokens during cross-chain transfers, ensuring consistency with the locked tokens on the hub chain. - **Hub chain** - tokens are locked on the hub chain when transferring to spoke chains - **Spoke chains** - tokens are native to the spoke chains and are either minted or burned during cross-chain transfers -The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager follows these steps: +!!! note + The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. -1. Lock tokens on Ethereum -2. The corresponding amount is minted on Polygon - -When it is time to transfer tokens back from Polygon to Ethereum the NTT Manager follows these steps: - -1. Burn the tokens on Polygon -2. Unlocks the equivalent tokens on Ethereum +For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager locks tokens on Ethereum, and the corresponding amount is minted on Polygon. Similarly, transferring tokens back from Polygon to Ethereum burns the tokens on Polygon and unlocks the equivalent tokens on Ethereum. This process ensures that the total token supply remains consistent across all chains, with the hub chain acting as the source of truth. @@ -66,49 +52,47 @@ For more detailed information, see the [Deployment Models](/docs/learn/transfers ## Deploy NTT -Follow these steps to deploy NTT to EVM chains. - -1. Create a new NTT project using the following commands: +Create a new NTT project: - ```bash - ntt new my-ntt-deployment - cd my-ntt-deployment - ``` - -2. Initialize a new `deployment.json` file specifying the network: - - === "Testnet" - - ```bash - ntt init Testnet - ``` +```bash +ntt new my-ntt-deployment +cd my-ntt-deployment +``` - === "Mainnet" +Initialize a new `deployment.json` file specifying the network: - ```bash - ntt init Mainnet - ``` - -3. Ensure you have set up your environment correctly: +=== "Testnet" ```bash - export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY + ntt init Testnet ``` -4. Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: +=== "Mainnet" ```bash - --8<-- 'code/build/transfers/native-token-transfers/deployment-process/initialize.txt' + ntt init Mainnet ``` - While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. +Ensure you have set up your environment correctly: + +```bash +export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY +``` + +Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: - The `ntt add-chain` command takes the following parameters: +```bash +--8<-- 'code/build/transfers/native-token-transfers/deployment-process/initialize.txt' +``` - - Name of each chain - - Version of NTT to deploy (use `--latest` for the latest contract versions) - - Mode (either `burning` or `locking`) - - Your token contract address +While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. + +The `ntt add-chain` command takes the following parameters: + +- Name of each chain +- Version of NTT to deploy (use `--latest` for the latest contract versions) +- Mode (either `burning` or `locking`) +- Your token contract address The NTT CLI prints detailed logs and transaction hashes, so you can see exactly what's happening under the hood. @@ -119,21 +103,21 @@ The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. - `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain - `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and set up rate limits with the appropriate number of decimals, depending on the specific chain. For example: - - **Solana** - the limits are set with 9 decimal places: + For Solana, the limits are set with 9 decimal places: ```json "inbound": { "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana } ``` - - **Sepolia (Ethereum Testnet)** - the limits are set with 18 decimal places: + For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: ```json "inbound": { "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia } ``` - This initial configuration ensures that the rate limits are correctly represented for each chain's token precision + This initial configuration ensures that the rate limits are correctly represented for each chain's token precision - `ntt push` - syncs the on-chain configuration with local changes made to your `deployment.json` file @@ -141,7 +125,10 @@ After you deploy the NTT contracts, ensure that the deployment is properly confi ## Set Token Minter to NTT Manager -The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. The required NTT Manager address can be found in the `deployment.json` file. +The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. + +!!! note + The required NTT Manager address can be found in the `deployment.json` file. - If you followed the [`INttToken`](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} interface, you can execute the `setMinter(address newMinter)` function ```json @@ -152,24 +139,5 @@ The final step in the deployment process is to set the NTT Manager as a minter o By default, NTT transfers to EVM blockchains support automatic relaying via the Wormhole relayer, which doesn't require the user to perform a transaction on the destination chain to complete the transfer. -## Where to Go Next - -
- -- :octicons-tools-16:{ .lg .middle } **Test Your Deployment** - - --- - - Follow the NTT Post Deployment Guide for integration examples and testing instructions. - - [:custom-arrow: Test Your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} - -- :octicons-tools-16:{ .lg .middle } **Add NTT to Your dApp** - - --- - - Configure Wormhole Connect, a plug-and-play bridging UI, to enable multichain transfers for your token. - - [:custom-arrow: Use Connect to Integrate NTT](/docs/build/transfers/connect/){target=\_blank} - -
+!!!important + To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. \ No newline at end of file From 1532520a50d28563a7b9505b4653824c1c2127c7 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 15:51:17 +0100 Subject: [PATCH 33/40] llm check --- llms.txt | 126 +++++++++++++++++++++---------------------------------- 1 file changed, 47 insertions(+), 79 deletions(-) diff --git a/llms.txt b/llms.txt index fa2dcc227..8e3b7bb7d 100644 --- a/llms.txt +++ b/llms.txt @@ -12170,26 +12170,17 @@ title: Native Token Transfers EVM Deployment description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. --- -# Deploy Native Token Transfers on EVM Chains +# Native Token Transfers (NTT) EVM Development -[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of ERC-20 tokens on EVM chains using Wormhole's messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. +## Deploy Your Token and Ensure Compatibility -This guide walks you through deploying NTT on EVM chains, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. +If you still need to do so, deploy the token contract to the destination or spoke chains. -By the end, a fully deployed NTT will be set up, allowing your token to transfer between EVM chains and other supported chains. +### Requirements for Token Deployment -## Prerequisites - -To get the most from this guide, ensure you have the following: - -- Installed the NTT CLI tool. If you have not already done so, see the [Installation Guide](/docs/build/transfers/native-token-transfers/deployment-process/installation/){taraget=\_blank} -- Deployed token contract on the destination or spoke chains - -## Deployment Modes +Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports two deployment modes: burn-and-mint and hub-and-spoke. These modes differ in how tokens are managed across chains. -Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports burn-and-mint and hub-and-spoke deployment modes. The following sections compare differences in how the two modes manage tokens across chains while demonstrating how to deploy NTT on EVM chains. - -### Burn-and-Mint Mode +#### Burn-and-Mint Mode Tokens integrated with `NttManager` in `burning` mode require the following two functions to be present: @@ -12240,22 +12231,17 @@ interface INttToken { Later, you set mint authority to the corresponding `NttManager` contract. You can also follow the scripts in the [example NTT token](https://github.com/wormhole-foundation/example-ntt-token){target=\_blank} repository to deploy a token contract. -### Hub-and-Spoke Mode +#### Hub-and-Spoke Mode A central hub chain (e.g., Ethereum) manages the total token supply in hub-and-spoke mode. Other chains (spokes) mint or burn tokens during cross-chain transfers, ensuring consistency with the locked tokens on the hub chain. - **Hub chain** - tokens are locked on the hub chain when transferring to spoke chains - **Spoke chains** - tokens are native to the spoke chains and are either minted or burned during cross-chain transfers -The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager follows these steps: - -1. Lock tokens on Ethereum -2. The corresponding amount is minted on Polygon - -When it is time to transfer tokens back from Polygon to Ethereum the NTT Manager follows these steps: +!!! note + The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. -1. Burn the tokens on Polygon -2. Unlocks the equivalent tokens on Ethereum +For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager locks tokens on Ethereum, and the corresponding amount is minted on Polygon. Similarly, transferring tokens back from Polygon to Ethereum burns the tokens on Polygon and unlocks the equivalent tokens on Ethereum. This process ensures that the total token supply remains consistent across all chains, with the hub chain acting as the source of truth. @@ -12268,39 +12254,37 @@ For more detailed information, see the [Deployment Models](/docs/learn/transfers ## Deploy NTT -Follow these steps to deploy NTT to EVM chains. +Create a new NTT project: -1. Create a new NTT project using the following commands: - - ```bash - ntt new my-ntt-deployment - cd my-ntt-deployment - ``` - -2. Initialize a new `deployment.json` file specifying the network: - - === "Testnet" +```bash +ntt new my-ntt-deployment +cd my-ntt-deployment +``` - ```bash - ntt init Testnet - ``` +Initialize a new `deployment.json` file specifying the network: - === "Mainnet" +=== "Testnet" - ```bash - ntt init Mainnet - ``` + ```bash + ntt init Testnet + ``` -3. Ensure you have set up your environment correctly: +=== "Mainnet" ```bash - export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY + ntt init Mainnet ``` -4. Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: +Ensure you have set up your environment correctly: - ```bash - # Set scanner API Keys as environment variables +```bash +export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY +``` + +Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: + +```bash +# Set scanner API Keys as environment variables export SEPOLIA_SCAN_API_KEY=INSERT_ETHERSCAN_SEPOLIA_API_KEY export ARBITRUMSEPOLIA_SCAN_API_KEY=INSERT_ARBISCAN_SEPOLIA_API_KEY @@ -12308,16 +12292,16 @@ export ARBITRUMSEPOLIA_SCAN_API_KEY=INSERT_ARBISCAN_SEPOLIA_API_KEY # The contracts will be automatically verified using the scanner API keys above ntt add-chain Sepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS ntt add-chain ArbitrumSepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS - ``` +``` - While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. +While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. - The `ntt add-chain` command takes the following parameters: +The `ntt add-chain` command takes the following parameters: - - Name of each chain - - Version of NTT to deploy (use `--latest` for the latest contract versions) - - Mode (either `burning` or `locking`) - - Your token contract address +- Name of each chain +- Version of NTT to deploy (use `--latest` for the latest contract versions) +- Mode (either `burning` or `locking`) +- Your token contract address The NTT CLI prints detailed logs and transaction hashes, so you can see exactly what's happening under the hood. @@ -12328,21 +12312,21 @@ The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. - `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain - `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and set up rate limits with the appropriate number of decimals, depending on the specific chain. For example: - - **Solana** - the limits are set with 9 decimal places: + For Solana, the limits are set with 9 decimal places: ```json "inbound": { "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana } ``` - - **Sepolia (Ethereum Testnet)** - the limits are set with 18 decimal places: + For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: ```json "inbound": { "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia } ``` - This initial configuration ensures that the rate limits are correctly represented for each chain's token precision + This initial configuration ensures that the rate limits are correctly represented for each chain's token precision - `ntt push` - syncs the on-chain configuration with local changes made to your `deployment.json` file @@ -12350,7 +12334,10 @@ After you deploy the NTT contracts, ensure that the deployment is properly confi ## Set Token Minter to NTT Manager -The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. The required NTT Manager address can be found in the `deployment.json` file. +The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. + +!!! note + The required NTT Manager address can be found in the `deployment.json` file. - If you followed the [`INttToken`](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} interface, you can execute the `setMinter(address newMinter)` function ```json @@ -12361,27 +12348,8 @@ The final step in the deployment process is to set the NTT Manager as a minter o By default, NTT transfers to EVM blockchains support automatic relaying via the Wormhole relayer, which doesn't require the user to perform a transaction on the destination chain to complete the transfer. -## Where to Go Next - -
- -- :octicons-tools-16:{ .lg .middle } **Test Your Deployment** - - --- - - Follow the NTT Post Deployment Guide for integration examples and testing instructions. - - [:custom-arrow: Test Your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} - -- :octicons-tools-16:{ .lg .middle } **Add NTT to Your dApp** - - --- - - Configure Wormhole Connect, a plug-and-play bridging UI, to enable multichain transfers for your token. - - [:custom-arrow: Use Connect to Integrate NTT](/docs/build/transfers/connect/){target=\_blank} - -
+!!!important + To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. --- END CONTENT --- Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/ From c43790c37740418647be42c04391447dd7f2af88 Mon Sep 17 00:00:00 2001 From: Martin Hofmann Date: Thu, 20 Mar 2025 15:55:46 +0100 Subject: [PATCH 34/40] Apply suggestions from code review Co-authored-by: Erin Shaben --- .../deployment-process/deploy-to-solana.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index d98e08dd8..bb8858fc9 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -25,19 +25,18 @@ Use the Solana and Anchor versions listed above to avoid compatibility issues wh Deploying NTT with the CLI on Solana follows a structured process: -1. Choose Your Token Setup: +1. **Choose your token setup**: - **Use an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section - **Create a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT -2. Choose your [deployment model](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: +2. **Choose your [deployment model](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}**: - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program -3. Deploy and Configure NTT on Solana: +3. **Deploy and configure NTT** - use the NTT CLI to initialize and deploy the NTT program, specifying your SPL token and deployment mode - - Use the NTT CLI to initialize and deploy the NTT program, specifying your SPL token and deployment mode. Following this process, your token will fully integrate with NTT, enabling seamless transfers between Solana and other chains. From d1d08bc807f64b28979d262d7f32fb5b65616a29 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 16:10:14 +0100 Subject: [PATCH 35/40] update deploy configuration --- .../deployment-process/deploy-to-solana.md | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md index bb8858fc9..239c9fda1 100644 --- a/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md +++ b/build/transfers/native-token-transfers/deployment-process/deploy-to-solana.md @@ -208,27 +208,14 @@ After setting up your deployment, finalize the configuration and deploy the NTT Open your `deployment.json` file and adjust the values based on your use case: - === "Solana (9 decimals)" - - ```json - "inbound": { - "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana - }, - "outbound": { - "Sepolia": "1000.000000000" // outbound limit from Solana to Sepolia - } - ``` - - === "Sepolia (18 decimals)" - - ```json - "inbound": { - "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia - }, - "outbound": { - "Solana": "1000.000000000000000000" // outbound limit from Sepolia to Solana - } - ``` + ```json + "inbound": { + "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana + }, + "outbound": { + "Sepolia": "1000.000000000" // outbound limit from Solana to Sepolia + } + ``` 4. **Push the final deployment** - once rate limits are set, push the deployment to Solana using the specified key pair to cover gas fees From 7170c280f8efaa1376154879addb087b8ec59c82 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 16:10:20 +0100 Subject: [PATCH 36/40] llm check --- llms.txt | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/llms.txt b/llms.txt index 8e3b7bb7d..4da7ff05b 100644 --- a/llms.txt +++ b/llms.txt @@ -12565,27 +12565,14 @@ After setting up your deployment, finalize the configuration and deploy the NTT Open your `deployment.json` file and adjust the values based on your use case: - === "Solana (9 decimals)" - - ```json - "inbound": { - "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana - }, - "outbound": { - "Sepolia": "1000.000000000" // outbound limit from Solana to Sepolia - } - ``` - - === "Sepolia (18 decimals)" - - ```json - "inbound": { - "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia - }, - "outbound": { - "Solana": "1000.000000000000000000" // outbound limit from Sepolia to Solana - } - ``` + ```json + "inbound": { + "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana + }, + "outbound": { + "Sepolia": "1000.000000000" // outbound limit from Solana to Sepolia + } + ``` 4. **Push the final deployment** - once rate limits are set, push the deployment to Solana using the specified key pair to cover gas fees From e6394e885cc9c793467b3a8aa50e1f034fa5fb36 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 16:11:05 +0100 Subject: [PATCH 37/40] llm check --- llms.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/llms.txt b/llms.txt index 4da7ff05b..af4988617 100644 --- a/llms.txt +++ b/llms.txt @@ -12381,19 +12381,18 @@ Use the Solana and Anchor versions listed above to avoid compatibility issues wh Deploying NTT with the CLI on Solana follows a structured process: -1. Choose Your Token Setup: +1. **Choose your token setup**: - **Use an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section - **Create a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT -2. Choose your [deployment model](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}: +2. **Choose your [deployment model](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}**: - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program -3. Deploy and Configure NTT on Solana: +3. **Deploy and configure NTT** - use the NTT CLI to initialize and deploy the NTT program, specifying your SPL token and deployment mode - - Use the NTT CLI to initialize and deploy the NTT program, specifying your SPL token and deployment mode. Following this process, your token will fully integrate with NTT, enabling seamless transfers between Solana and other chains. From 47ea4abf566f7c8b77f80d5b49890c99c7955d4a Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 16:22:33 +0100 Subject: [PATCH 38/40] llm check --- llms.txt | 21782 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 21782 insertions(+) diff --git a/llms.txt b/llms.txt index e69de29bb..bcecbff9d 100644 --- a/llms.txt +++ b/llms.txt @@ -0,0 +1,21782 @@ +# llms.txt +# Generated automatically. Do not edit directly. + +Documentation: https://wormhole.com/docs/ + +# List of doc pages: +Doc-Page: https://wormhole.com/docs/build/core-messaging/core-contracts/ +Doc-Page: https://wormhole.com/docs/build/core-messaging/ +Doc-Page: https://wormhole.com/docs/build/core-messaging/wormhole-relayers/ +Doc-Page: https://wormhole.com/docs/build/ +Doc-Page: https://wormhole.com/docs/build/multigov/deploy-to-evm/ +Doc-Page: https://wormhole.com/docs/build/multigov/deploy-to-solana/ +Doc-Page: https://wormhole.com/docs/build/multigov/faq/ +Doc-Page: https://wormhole.com/docs/build/multigov/ +Doc-Page: https://wormhole.com/docs/build/multigov/upgrade-evm/ +Doc-Page: https://wormhole.com/docs/build/multigov/upgrade-solana/ +Doc-Page: https://wormhole.com/docs/build/queries/faqs/ +Doc-Page: https://wormhole.com/docs/build/queries/ +Doc-Page: https://wormhole.com/docs/build/queries/overview/ +Doc-Page: https://wormhole.com/docs/build/queries/use-queries/ +Doc-Page: https://wormhole.com/docs/build/reference/chain-ids/ +Doc-Page: https://wormhole.com/docs/build/reference/consistency-levels/ +Doc-Page: https://wormhole.com/docs/build/reference/contract-addresses/ +Doc-Page: https://wormhole.com/docs/build/reference/ +Doc-Page: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses/ +Doc-Page: https://wormhole.com/docs/build/start-building/ +Doc-Page: https://wormhole.com/docs/build/start-building/products/ +Doc-Page: https://wormhole.com/docs/build/start-building/supported-networks/ +Doc-Page: https://wormhole.com/docs/build/start-building/testnet-faucets/ +Doc-Page: https://wormhole.com/docs/build/start-building/use-cases/ +Doc-Page: https://wormhole.com/docs/build/toolkit/cli/ +Doc-Page: https://wormhole.com/docs/build/toolkit/dev-env/ +Doc-Page: https://wormhole.com/docs/build/toolkit/faqs/ +Doc-Page: https://wormhole.com/docs/build/toolkit/ +Doc-Page: https://wormhole.com/docs/build/toolkit/solidity-sdk/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/protocols-payloads/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/sdk-layout/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/vaas-protocols/ +Doc-Page: https://wormhole.com/docs/build/toolkit/typescript-sdk/wormhole-sdk/ +Doc-Page: https://wormhole.com/docs/build/transfers/cctp/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration-v0/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/configure-data/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/configure-theme/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/configuration/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/faqs/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/features/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/overview/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/routes/ +Doc-Page: https://wormhole.com/docs/build/transfers/connect/upgrade/ +Doc-Page: https://wormhole.com/docs/build/transfers/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/rate-limiting/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/installation/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/ +Doc-Page: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers/ +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/faqs/ +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/ +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer/ +Doc-Page: https://wormhole.com/docs/build/transfers/settlement/solver/ +Doc-Page: https://wormhole.com/docs/build/transfers/token-bridge/ +Doc-Page: https://wormhole.com/docs/infrastructure/ +Doc-Page: https://wormhole.com/docs/infrastructure/relayers/ +Doc-Page: https://wormhole.com/docs/infrastructure/relayers/run-relayer/ +Doc-Page: https://wormhole.com/docs/infrastructure/spy/ +Doc-Page: https://wormhole.com/docs/infrastructure/spy/run-spy/ +Doc-Page: https://wormhole.com/docs/learn/glossary/ +Doc-Page: https://wormhole.com/docs/learn/governance/architecture/ +Doc-Page: https://wormhole.com/docs/learn/governance/faq/ +Doc-Page: https://wormhole.com/docs/learn/governance/ +Doc-Page: https://wormhole.com/docs/learn/governance/overview/ +Doc-Page: https://wormhole.com/docs/learn/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/architecture/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/core-contracts/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/guardians/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/relayer/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/spy/ +Doc-Page: https://wormhole.com/docs/learn/infrastructure/vaas/ +Doc-Page: https://wormhole.com/docs/learn/introduction/ +Doc-Page: https://wormhole.com/docs/learn/security/ +Doc-Page: https://wormhole.com/docs/learn/transfers/cctp/ +Doc-Page: https://wormhole.com/docs/learn/transfers/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/architecture/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/deployment/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview/ +Doc-Page: https://wormhole.com/docs/learn/transfers/native-token-transfers/security/ +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/architecture/ +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/ +Doc-Page: https://wormhole.com/docs/learn/transfers/settlement/overview/ +Doc-Page: https://wormhole.com/docs/learn/transfers/token-bridge/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/connect/react-dapp/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/contract-integrations/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/multichain-assets/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/multichain-assets/multichain-token/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/multigov/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/multigov/treasury-proposal/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/settlements/.index/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/settlements/.settlement-routes/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/ +Doc-Page: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp/ +Doc-Page: https://wormhole.com/docs/tutorials/ + +# Full content for each doc page + +Doc-Content: https://wormhole.com/docs/build/core-messaging/core-contracts/ +--- BEGIN CONTENT --- +--- +title: Get Started with Core Contracts +description: This guide walks through the key methods of the Core Contracts, providing you with the knowledge needed to integrate them into your cross-chain contracts +--- + +# Get Started with Core Contracts + +## Introduction + +Wormhole's Core Contracts, deployed on each supported blockchain network, enable the fundamental operations of sending and receiving cross-chain messages. + +While the implementation details of the Core Contracts varies by network, the core functionality remains consistent across chains. Each version of the Core Contract facilitates secure and reliable cross-chain communication, ensuring that developers can effectively publish and verify messages. + +This guide will walk you through the variations and key methods of the Core Contracts, providing you with the knowledge needed to integrate them into your cross-chain contracts. To learn more about Core Contracts' features and how it works, please refer to the [Core Contracts](/docs/learn/infrastructure/core-contracts/){target=\_blank} page in the Learn section. + +## Prerequisites + +To interact with the Wormhole Core Contract, you'll need the following: + +- The [address of the Core Contract](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on the chains you're deploying your contract on +- The [Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on +- The [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} (consistency) levels (required finality) for the chains you're deploying your contract on + +## How to Interact with Core Contracts + +Before writing your own contracts, it's essential to understand the key functions and events of the Wormhole Core Contracts. The primary functionality revolves around: + +- **Sending messages** - submitting messages to the Wormhole network for cross-chain communication +- **Receiving and verifying messages** - validating messages received from other chains via the Wormhole network + +While the implementation details of the Core Contracts vary by network, the core functionality remains consistent across chains. + +### Sending Messages + +To send a message, regardless of the environment or chain, the Core Contract is invoked with a message argument from an [emitter](/docs/learn/glossary/#emitter){target=\_blank}. This emitter might be your contract or an existing application such as the [Token Bridge](/docs/learn/transfers/token-bridge/#token-bridge){target=\_blank}. + +=== "EVM" + + The `IWormhole.sol` interface provides the `publishMessage` function, which can be used to publish a message directly to the Core Contract: + + ```solidity + function publishMessage( + uint32 nonce, + bytes memory payload, + uint8 consistencyLevel +) external payable returns (uint64 sequence); + ``` + + ??? interface "Parameters" + + `nonce` ++"uint32"++ + + A free integer field that can be used however you like. Note that changing the `nonce` will result in a different digest. + + --- + + `payload` ++"bytes memory"++ + + The content of the emitted message. Due to the constraints of individual blockchains, it may be capped to a certain maximum length. + + --- + + `consistencyLevel` ++"uint8"++ + + A value that defines the required level of finality that must be reached before the Guardians will observe and attest to emitted events. + + ??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique number that increments for every message for a given emitter (and implicitly chain). This, combined with the emitter address and emitter chain ID, allows the VAA for this message to be queried from the [Wormholescan API](https://docs.wormholescan.io/){target=\_blank}. + + ??? interface "Example" + + ```solidity + IWormhole wormhole = IWormhole(wormholeAddr); + +// Get the fee for publishing a message +uint256 wormholeFee = wormhole.messageFee(); + +// Check fee and send parameters + +// Create the HelloWorldMessage struct +HelloWorldMessage memory parsedMessage = HelloWorldMessage({ + payloadID: uint8(1), + message: helloWorldMessage +}); + +// Encode the HelloWorldMessage struct into bytes +bytes memory encodedMessage = encodeMessage(parsedMessage); + +// Send the HelloWorld message by calling publishMessage on the +// wormhole core contract and paying the Wormhole protocol fee. +messageSequence = wormhole.publishMessage{value: wormholeFee}( + 0, // batchID + encodedMessage, + wormholeFinality() +); + ``` + + View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/evm/src/01_hello_world){target=\_blank} repository on GitHub. + +=== "Solana" + + The `wormhole_anchor_sdk::wormhole` module and the Wormhole program account can be used to pass a message directly to the Core Contract via the `wormhole::post_message` function: + + ```rs + pub fn post_message<'info>( + ctx: CpiContext<'_, '_, '_, 'info, PostMessage<'info>>, + batch_id: u32, + payload: Vec, + finality: Finality + ) -> Result<()> + ``` + + ??? interface "Parameters" + + `ctx` ++"CpiContext<'_, '_, '_, 'info, PostMessage<'info>>"++ + + Provides the necessary context for executing the function, including the accounts and program information required for the Cross-Program Invocation (CPI). + + ??? child "Type `pub struct CpiContext<'a, 'b, 'c, 'info, T>`" + + ```rs + pub struct CpiContext<'a, 'b, 'c, 'info, T> + where + T: ToAccountMetas + ToAccountInfos<'info>, + { + pub accounts: T, + pub remaining_accounts: Vec>, + pub program: AccountInfo<'info>, + pub signer_seeds: &'a [&'b [&'c [u8]]], + } + ``` + + For more information, please refer to the [`wormhole_anchor_sdk` Rust docs](https://docs.rs/anchor-lang/0.29.0/anchor_lang/context/struct.CpiContext.html){target=\_blank}. + + ??? child "Type `PostMessage<'info>`" + + ```rs + pub struct PostMessage<'info> { + pub config: AccountInfo<'info>, + pub message: AccountInfo<'info>, + pub emitter: AccountInfo<'info>, + pub sequence: AccountInfo<'info>, + pub payer: AccountInfo<'info>, + pub fee_collector: AccountInfo<'info>, + pub clock: AccountInfo<'info>, + pub rent: AccountInfo<'info>, + pub system_program: AccountInfo<'info>, + } + ``` + + For more information, please refer to the [`wormhole_anchor_sdk` Rust docs](https://docs.rs/wormhole-anchor-sdk/latest/wormhole_anchor_sdk/wormhole/instructions/struct.PostMessage.html){target=\_blank}. + + --- + + `batch_id` ++"u32"++ + + An identifier for the message batch. + + --- + + `payload` ++"Vec"++ + + The data being sent in the message. This is a variable-length byte array that contains the actual content or information being transmitted. To learn about the different types of payloads, check out the [VAAs](/docs/learn/infrastructure/vaas#payload-types){target=\_blank} page. + + --- + + `finality` ++"Finality"++ + + Specifies the level of finality or confirmation required for the message. + + ??? child "Type `Finality`" + + ```rs + pub enum Finality { + Confirmed, + Finalized, + } + ``` + + ??? interface "Returns" + + ++"Result<()>"++ + + The result of the function’s execution. If the function completes successfully, it returns `Ok(())`, otherwise it returns `Err(E)`, indicating that an error occurred along with the details about the error + + ??? interface "Example" + + ```rust + let fee = ctx.accounts.wormhole_bridge.fee(); +// ... Check fee and send parameters + +let config = &ctx.accounts.config; +let payload: Vec = HelloWorldMessage::Hello { message }.try_to_vec()?; + +// Invoke `wormhole::post_message`. +wormhole::post_message( + CpiContext::new_with_signer( + ctx.accounts.wormhole_program.to_account_info(), + wormhole::PostMessage { + // ... Set fields + }, + &[ + // ... Set seeds + ], + ), + config.batch_id, + payload, + config.finality.into(), +)?; + ``` + + View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/solana/programs/01_hello_world){target=\_blank} repository on GitHub. + +Once the message is emitted from the Core Contract, the [Guardian Network](/docs/learn/infrastructure/guardians/){target=\_blank} will observe the message and sign the digest of an Attestation [VAA](/docs/learn/infrastructure/vaas/){target=\_blank}. On EVM chains, the body of the VAA is hashed twice with keccak256 to produce the signed digest message. On Solana, the [Solana secp256k1 program](https://docs.solana.com/developing/runtime-facilities/programs#secp256k1-program){target=\_blank} will hash the message passed. In this case, the argument for the message should be a single hash of the body, not the twice-hashed body. + +VAAs are [multicast](/docs/learn/infrastructure/core-contracts/#multicast){target=\_blank} by default. This means there is no default target chain for a given message. The application developer decides on the format of the message and its treatment upon receipt. + +### Receiving Messages + +The way a message is received and handled depends on the environment. + +=== "EVM" + + On EVM chains, the message passed is the raw VAA encoded as binary. The `IWormhole.sol` interface provides the `parseAndVerifyVM` function, which can be used to parse and verify the received message. + + ```solidity + function parseAndVerifyVM( + bytes calldata encodedVM +) external view returns (VM memory vm, bool valid, string memory reason); + ``` + + ??? interface "Parameters" + + `encodedVM` ++"bytes calldata"++ + + The encoded message as a Verified Action Approval (VAA), which contains all necessary information for verification and processing. + + ??? interface "Returns" + + `vm` ++"VM memory"++ + + The valid parsed VAA, which will include the original `emitterAddress`, `sequenceNumber`, and `consistencyLevel`, among other fields outlined on the [VAAs](/docs/learn/infrastructure/vaas/) page. + + ??? child "Struct `VM`" + + ```solidity + struct VM { + uint8 version; + uint32 timestamp; + uint32 nonce; + uint16 emitterChainId; + bytes32 emitterAddress; + uint64 sequence; + uint8 consistencyLevel; + bytes payload; + uint32 guardianSetIndex; + Signature[] signatures; + bytes32 hash; + } + ``` + + For more information, refer to the [`IWormhole.sol` interface](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/interfaces/IWormhole.sol){target=\_blank}. + + --- + + `valid` ++"bool"++ + + A boolean indicating whether the VAA is valid or not. + + --- + + `reason` ++"string"++ + + If the VAA is not valid, a reason will be provided + + ??? interface "Example" + + ```solidity + function receiveMessage(bytes memory encodedMessage) public { + // Call the Wormhole core contract to parse and verify the encodedMessage + ( + IWormhole.VM memory wormholeMessage, + bool valid, + string memory reason + ) = wormhole().parseAndVerifyVM(encodedMessage); + + // Perform safety checks here + + // Decode the message payload into the HelloWorldMessage struct + HelloWorldMessage memory parsedMessage = decodeMessage( + wormholeMessage.payload + ); + + // Your custom application logic here +} + ``` + + View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/evm/src/01_hello_world){target=\_blank} repository on GitHub. + +=== "Solana" + + On Solana, the VAA is first posted and verified by the Core Contract, after which it can be read by the receiving contract and action taken. + + Retrieve the raw message data: + + ```rs + let posted_message = &ctx.accounts.posted; + posted_message.data() + ``` + + ??? interface "Example" + + ```rust + pub fn receive_message(ctx: Context, vaa_hash: [u8; 32]) -> Result<()> { + let posted_message = &ctx.accounts.posted; + + if let HelloWorldMessage::Hello { message } = posted_message.data() { + // Check message + // Your custom application logic here + Ok(()) + } else { + Err(HelloWorldError::InvalidMessage.into()) + } +} + ``` + + View the complete Hello World example in the [Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding/tree/main/solana/programs/01_hello_world){target=\_blank} repository on GitHub. + +#### Validating the Emitter + +When processing cross-chain messages, it's critical to ensure that the message originates from a trusted sender (emitter). This can be done by verifying the emitter address and chain ID in the parsed VAA. + +Typically, contracts should provide a method to register trusted emitters and check incoming messages against this list before processing them. For example, the following check ensures that the emitter is registered and authorized: + +```solidity +require(isRegisteredSender(emitterChainId, emitterAddress), "Invalid emitter"); +``` + +This check can be applied after the VAA is parsed, ensuring only authorized senders can interact with the receiving contract. Trusted emitters can be registered using a method like `setRegisteredSender` during contract deployment or initialization. + +```typescript +const tx = await receiverContract.setRegisteredSender( + sourceChain.chainId, + ethers.zeroPadValue(senderAddress as BytesLike, 32) +); + +await tx.wait(); +``` + +#### Additional Checks + +In addition to environment-specific checks that should be performed, a contract should take care to check other [fields in the body](/docs/learn/infrastructure/vaas/){target=\_blank}, including: + +- **Sequence** - is this the expected sequence number? How should out-of-order deliveries be handled? +- **Consistency level** - for the chain this message came from, is the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} level enough to guarantee the transaction won't be reverted after taking some action? + +The VAA digest is separate from the VAA body but is also relevant. It can be used for replay protection by checking if the digest has already been seen. Since the payload itself is application-specific, there may be other elements to check to ensure safety. + +## Source Code References + +For a deeper understanding of the Core Contract implementation for a specific blockchain environment and to review the actual source code, please refer to the following links: + +- [Algorand Core Contract source code](https://github.com/wormhole-foundation/wormhole/blob/main/algorand/wormhole_core.py){target=\_blank} +- [Aptos Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/aptos/wormhole){target=\_blank} +- [EVM Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/ethereum/contracts){target=\_blank} ([`IWormhole.sol` interface](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/interfaces/IWormhole.sol){target=\_blank}) +- [NEAR Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/near/contracts/wormhole){target=\_blank} +- [Solana Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/solana/bridge/program){target=\_blank} +- [Sui Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/sui/wormhole){target=\_blank} +- [Terra Core Contract source code](https://github.com/wormhole-foundation/wormhole/tree/main/terra/contracts/wormhole){target=\_blank} +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/core-messaging/ +--- BEGIN CONTENT --- +--- +title: Core Messaging Layer Contracts +description: Learn to use Wormhole’s foundational messaging contracts to build multichain apps with direct control over publishing, verifying, relaying, and more. +--- + +# Core Messaging + +Wormhole-deployed relayers and Core Contracts are essential for sending and receiving multichain messages. Learning to work directly with these building blocks offers a deeper understanding of Wormhole and increased control and customization options. + +Follow the links below for how-to guides about using Core Contracts and Wormhole-deployed relayers to send, receive, validate, and track multichain messages. + +## Simplified Message Flow + + +Wormhole-deployed relayer support is limited to EVM environments. For a complete list of supported EVM environment blockchains, see the [Supported Networks](/docs/build/start-building/supported-networks/){target=\_blank} page. + +[timeline(wormhole-docs/.snippets/text/build/core-messaging/core-messaging-timeline.json)] + +## Next Steps + +
+ +- :octicons-tools-16:{ .lg .middle} **Get Started with Core Contracts** + + --- + + Follow this series of how-to guides about interacting with Core Contracts to send, receive, and validate messages. + + [:custom-arrow: Get started](/docs/build/core-messaging/core-contracts/#prerequisites) + +- :octicons-tools-16:{ .lg .middle } **Get Started with Relayers** + + --- + + Follow this series of how-to guides about using Wormhole-deployed relayers to send, receive, and track the progress of messages. + + [:custom-arrow: Get started](/docs/build/core-messaging/wormhole-relayers/#get-started-with-the-wormhole-relayer) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/core-messaging/wormhole-relayers/ +--- BEGIN CONTENT --- +--- +title: Wormhole-Deployed Relayers +description: Learn about the Wormhole-deployed relayer configuration for seamless cross-chain messaging between contracts on different EVM blockchains without off-chain deployments. +--- + +# Wormhole Relayer + +## Introduction + +The Wormhole-deployed relayers provide a mechanism for contracts on one blockchain to send messages to contracts on another without requiring off-chain infrastructure. Through the Wormhole relayer module, developers can use an untrusted delivery provider to transport VAAs, saving the need to build and maintain custom relaying solutions. The option to [run a custom relayer](/docs/infrastructure/relayers/run-relayer/) is available for more complex needs. + +This section covers the components and interfaces involved in using the Wormhole relayer module, such as message sending and receiving, delivery guarantees, and considerations for building reliable and efficient cross-chain applications. Additionally, you'll find details on how to handle specific implementation scenarios and track message delivery progress using the Wormhole CLI tool. + +## Get Started with the Wormhole Relayer + +Before getting started, it's important to note that the Wormhole-deployed relayer configuration is currently **limited to EVM environments**. The complete list of EVM environment blockchains is on the [Supported Networks](/docs/build/start-building/supported-networks/) page. + +To interact with the Wormhole relayer, you'll need to create contracts on the source and target chains to handle the sending and receiving of messages. No off-chain logic needs to be implemented to take advantage of Wormhole-powered relaying. + +
+ ![Wormhole Relayer](/docs/images/build/core-messaging/wormhole-relayers/relayer-1.webp) +
The components outlined in blue must be implemented.
+
+ +### Wormhole Relayer Interfaces + +There are three relevant interfaces to discuss when utilizing the Wormhole relayer module: + +- [**`IWormholeRelayer`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IWormholeRelayer.sol){target=\_blank} - the primary interface by which you send and receive messages. It allows you to request the sending of messages and VAAs +- [**`IWormholeReceiver`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IWormholeReceiver.sol){target=\_blank} - this is the interface you are responsible for implementing. It allows the selected delivery provider to deliver messages/VAAs to your contract +- [**`IDeliveryProvider`**](https://github.com/wormhole-foundation/wormhole/blob/main/relayer/ethereum/contracts/interfaces/relayer/IDeliveryProvider.sol){target=\_blank} - this interface represents the delivery pricing information for a given relayer network. Each delivery provider implements this on every blockchain they support delivering from + +## Interact with the Wormhole Relayer + +To start interacting with the Wormhole relayer in your contracts, you'll need to import the `IWormholeRelayer` interface and set up a reference using the contract address to the Wormhole-deployed relayer on the supported network of your choice. + +To easily integrate with the Wormhole relayer interface, you can use the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank}. + +To retrieve the contract address of the Wormhole relayer, refer to the Wormhole relayer section on the [Contract Addresses](/docs/build/reference/contract-addresses/#wormhole-relayer) reference page. + +Your initial set up should resemble the following: + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import "wormhole-solidity-sdk/interfaces/IWormholeRelayer.sol"; + +contract Example { + IWormholeRelayer public wormholeRelayer; + + constructor(address _wormholeRelayer) { + wormholeRelayer = IWormholeRelayer(_wormholeRelayer); + } +} +``` + +The code provided sets up the basic structure for your contract to interact with the Wormhole relayer using the address supplied to the constructor. By leveraging methods from the `IWormholeRelayer` interface, you can implement message sending and receiving functionalities. The following sections will detail the specific methods you need to use for these tasks. + +### Send a Message + +To send a message to a contract on another EVM chain, you can call the `sendPayloadToEvm` method provided by the `IWormholeRelayer` interface. + +```solidity +function sendPayloadToEvm( + // Chain ID in Wormhole format + uint16 targetChain, + // Contract Address on target chain we're sending a message to + address targetAddress, + // The payload, encoded as bytes + bytes memory payload, + // How much value to attach to the delivery transaction + uint256 receiverValue, + // The gas limit to set on the delivery transaction + uint256 gasLimit +) external payable returns ( + // Unique, incrementing ID, used to identify a message + uint64 sequence +); +``` + +!!! tip + To reduce transaction confirmation time, you can lower the consistency level using the [`sendToEvm`](https://github.com/wormhole-foundation/wormhole/blob/{{repositories.wormhole.version}}/sdk/js/src/relayer/relayer/send.ts#L33){target=\_blank} method. + +The `sendPayloadToEvm` method is marked `payable` to receive fee payment for the transaction. The value to attach to the invocation is determined by calling the `quoteEVMDeliveryPrice`, which provides an estimate of the cost of gas on the target chain. + +```solidity +function quoteEVMDeliveryPrice( + // Chain ID in Wormhole format + uint16 targetChain, + // How much value to attach to delivery transaction + uint256 receiverValue, + // The gas limit to attach to the delivery transaction + uint256 gasLimit +) external view returns ( + // How much value to attach to the send call + uint256 nativePriceQuote, + uint256 targetChainRefundPerGasUnused +); +``` + +This method should be called before sending a message, and the value returned for `nativePriceQuote` should be attached to the call to send the payload to cover the transaction's cost on the target chain. + +In total, sending a message across EVM chains can be as simple as getting a fee quote and sending the message as follows: + +```solidity +// Get a quote for the cost of gas for delivery +(cost, ) = wormholeRelayer.quoteEVMDeliveryPrice( + targetChain, + valueToSend, + GAS_LIMIT +); + +// Send the message +wormholeRelayer.sendPayloadToEvm{value: cost}( + targetChain, + targetAddress, + abi.encode(payload), + valueToSend, + GAS_LIMIT +); +``` + +### Receive a Message + +To receive a message using a Wormhole relayer, the target contract must implement the [`IWormholeReceiver`](https://github.com/wormhole-foundation/wormhole-relayer-solidity-sdk/blob/main/src/interfaces/IWormholeReceiver.sol){target=\_blank} interface, as shown in the [previous section](#interacting-with-the-wormhole-relayer). + +```solidity +function receiveWormholeMessages( + bytes memory payload, // Message passed by source contract + bytes[] memory additionalVaas, // Any additional VAAs that are needed (Note: these are unverified) + bytes32 sourceAddress, // The address of the source contract + uint16 sourceChain, // The Wormhole chain ID + bytes32 deliveryHash // A hash of contents, useful for replay protection +) external payable; +``` + +The logic inside the function body may be whatever business logic is required to take action on the specific payload. + +## Delivery Guarantees + +The Wormhole relayer protocol is intended to create a service interface whereby mutually distrustful integrators and delivery providers can work together to provide a seamless dApp experience. You don't trust the delivery providers with your data, and the delivery providers don't trust your smart contract. The primary agreement between integrators and delivery providers is that when a delivery is requested, the provider will attempt to deliver the VAA within the provider's stated delivery timeframe. + +This creates a marketplace whereby providers can set different price levels and service guarantees. Delivery providers effectively accept the slippage risk premium of delivering your VAAs in exchange for a set fee rate. Thus, the providers agree to deliver your messages even if they do so at a loss. + +Delivery providers should set their prices such that they turn a profit on average but not necessarily on every single transfer. Thus, some providers may choose to set higher rates for tighter guarantees or lower rates for less stringent guarantees. + +## Delivery Statuses + +All deliveries result in one of the following four outcomes before the delivery provider's delivery timeframe. When they occur, these outcomes are emitted as EVM events from the Wormhole relayer contract. The four possible outcomes are: + +- (0) Delivery Success +- (1) Receiver Failure +- (2) Forward Request Success +- (3) Forward Request Failure + +A receiver failure is a scenario in which the selected provider attempted the delivery but it could not be completely successfully. The three possible causes for a delivery failure are: + +- The target contract does not implement the `IWormholeReceiver` interface +- The target contract threw an exception or reverted during the execution of `receiveWormholeMessages` +- The target contract exceeded the specified `gasLimit` while executing `receiveWormholeMessages` + +All three of these scenarios can be avoided with correct design by the integrator, and thus, it is up to the integrator to resolve them. Any other scenario that causes a delivery to not be performed should be considered an outage by some component of the system, including potentially the blockchains themselves. + +`Forward Request Success` and `Forward Failure` represent when the delivery succeeded and the user requested a forward during the delivery. If the user has enough funds left over as a refund to complete the forward, the forward will be executed, and the status will be `Forward Request Success`. Otherwise, it will be `Forward Request Failure`. + +## Other Considerations + +Some implementation details should be considered during development to ensure safety and a pleasant UX. Ensure that your engineering efforts have appropriately considered each of the following areas: + +- Receiving a message from a relayer +- Checking for expected emitter +- Calling `parseAndVerify` on any additional VAAs +- Replay protection +- Message ordering (no guarantees on order of messages delivered) +- Forwarding and call chaining +- Refunding overpayment of `gasLimit` +- Refunding overpayment of value sent + +## Track the Progress of Messages with the Wormhole CLI + +While no off-chain programs are required, a developer may want to track the progress of messages in flight. To track the progress of messages in flight, use the [Wormhole CLI](/docs/build/toolkit/cli/) tool's `status` subcommand. As an example, you can use the following commands to track the status of a transfer by providing the environment, origin network, and transaction hash to the `worm status` command: + +=== "Mainnet" + + ```bash + worm status mainnet ethereum INSERT_TRANSACTION_HASH + ``` + +=== "Testnet" + + ```bash + worm status testnet ethereum INSERT_TRANSACTION_HASH + ``` + +See the [Wormhole CLI tool docs](/docs/build/toolkit/cli/) for installation and usage. + +## Step-by-Step Tutorial + +For detailed, step-by-step guidance on creating cross-chain contracts that interact with the Wormhole relayer, refer to the [Create Cross-Chain Contracts](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/) tutorial. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/ +--- BEGIN CONTENT --- +--- +title: Build with Wormhole +description: Learn how to start building multichain solutions on Wormhole, with tips to get started, an overview of the toolkit, and an introduction to the protocols. +template: root-index-page.html +--- + +# Build + +## Quick Start: Step-by-Step Tutorials + +If you learn best by building, start here to build with the Wormhole TypeScript SDK: + +- [**Transfer Tokens via the Token Bridge**](/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/){target=\_blank} - use the [Wormhole SDK's](/docs/build/toolkit/typescript-sdk/){target=\_blank} Token Bridge method to move wrapped assets across networks + +- [**Transfer USDC via CCTP and Wormhole SDK**](/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp/){target=\_blank} - combine the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} and Circle's Cross-Chain Transfer Protocol (CCTP) to bridge native USDC across networks + +Alternatively, start here to work with Wormhole contracts directly: + +- [**Create Multichain Messaging Contracts**](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/) - create mulitchain contracts using Wormhole's Solidity SDK. You will deploy smart contracts and send messages across chains + +- [**Create Multichain Token Transfer Contracts**](/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/) - create multichain token transfers using Wormhole's Solidity SDK. You will build and deploy smart contracts to send tokens from one blockchain to another + +## Builder Essentials + +Access essential information and tools quickly: + +
+ +- :octicons-tools-16:{ .lg .middle } **Supported Networks** + + --- + + Supported blockchains by environment - main or testnet availability and quick links to the website, documentation, and block explorer for each network. + + [:custom-arrow: Supported Networks](/docs/build/start-building/supported-networks/) + +- :octicons-tools-16:{ .lg .middle } **Testnet Faucets** + + --- + + Links to testnet token faucets for supported networks. + + [:custom-arrow: Get Testnet Tokens](/docs/build/start-building/testnet-faucets/) + +- :octicons-tools-16:{ .lg .middle } **Wormhole TypeScript SDK** + + --- + + Your guide to Wormhole SDK installation and usage, concepts overview, and code samples. + + [:custom-arrow: Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/wormhole-sdk/) + +- :octicons-tools-16:{ .lg .middle } **Reference** + + --- + + Wormhole chain ID, contract address, address formatting and conversion, and consistency information. + + [:custom-arrow: Reference](/docs/build/reference/) + +
+ +## Integrate Transfer Products + +
+ +- :octicons-tools-16:{ .lg .middle } **Multichain Transfers** + + --- + + - **Connect UI widget** - easy-to-use UI for multichain asset transfers via Wormhole in a web application + - **Native Token Transfers (NTT)** - native asset transfer, without the need for wrapped assets + - **Token Bridge** - transfer wrapped assets with optional message payloads + - **Settlement** - intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more + + [:custom-arrow: Build Multichain Transfers](/docs/build/transfers/) + +
+ +## Access Real-Time Data + +
+ +- :octicons-tools-16:{ .lg .middle } **Real-Time Data** + + --- + + - **Wormhole Queries** - on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy + - **Supported query types** - includes query equivalents for `eth_call` (with options for timestamp and finality), `sol_account`, and `sol_pda` + - **Use familiar endpoints** - make calls against the RPC provider endpoints you already know and use + + [:custom-arrow: Build with Queries](/docs/build/queries/) + +
+ +## Multichain Governance + +
+ +- :octicons-tools-16:{ .lg .middle } **MultiGov** + + --- + + - **Wormhole's MultiGov** - a multichain governance system using Wormhole for seamless voting and proposal execution across multiple blockchain networks + - **Hub-and-spoke model** - spoke chain contracts handle local voting and proposals with results sent to the hub for vote aggregation and tallying, proposal management, and coordinating governance across connected chains + - **Wormhole security** - moving vote weight checkpoints, timelocks, and Wormhole verification keep governance activity secure + + [:custom-arrow: Build with MultiGov](/docs/build/multigov/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/multigov/deploy-to-evm/ +--- BEGIN CONTENT --- +--- +title: MultiGov Deployment to EVM +description: Set up and deploy MultiGov to EVM locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. +--- + +# Deploy MultiGov on EVM + +This guide provodes instructions to set up and deploy the MultiGov governance system locally. Before diving into the technical deployment, ensure that MultiGov is the right fit for your project’s governance needs by following the steps for the [integration process](/docs/build/multigov/){target=\_blank}. + +Once your project is approved through the intake process and you’ve collaborated with the Tally team to tailor MultiGov to your requirements, use this guide to configure, compile, and deploy the necessary smart contracts across your desired blockchain networks. This deployment will enable decentralized governance across your hub and spoke chains. + +## Prerequisites + +To interact with MultiGov, you'll need the following: + +- Install [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} +- Install [Git](https://git-scm.com/downloads){target=\_blank} +- Clone the repository: + ```bash + git clone https://github.com/wormhole-foundation/multigov + cd evm # for evm testing/deploying + ``` + +## Development Setup + +For developers looking to set up a local MultiGov environment: + +1. Install dependencies: + ```bash + forge install + ``` + +2. Set up environment variables: + ```bash + cp .env.example .env + ``` + + Edit `.env` with your specific [configuration](/docs/build/multigov/deployment/#configuration){target=\_blank} + +3. Compile contracts: + ```bash + forge build + ``` + +4. Deploy contracts (example for Sepolia testnet): + + For hub chains: + ```bash + forge script script/DeployHubContractsSepolia.s.sol --rpc-url $SEPOLIA_RPC_URL --broadcast + ``` + + For spoke chains (e.g., Optimism Sepolia): + ```bash + forge script script/DeploySpokeContractsOptimismSepolia.s.sol --rpc-url $OPTIMISM_SEPOLIA_RPC_URL --broadcast + ``` + +## Configuration + +When deploying MultiGov, several key parameters need to be set. Here are the most important configuration points: + +### Hub Governor Key Parameters + +- `initialVotingDelay` ++"uint256"++ - the delay measured in seconds before voting on a proposal begins. For example, `86400` is one day +- `initialProposalThreshold` ++"uint256"++ - the number of tokens needed to create a proposal +- `initialQuorum` ++"uint256"++ - the minimum number of votes needed for a proposal to be successful +- `initialVoteWeightWindow` ++"uint256"++ - a window where the minimum checkpointed voting weight is taken for a given address. The window ends at the vote start for a proposal and begins at the vote start minus the vote weight window. The voting window is measured in seconds, e.g., `86400` is one day + + !!! note + This helps mitigate cross-chain double voting. + +### Hub Proposal Extender Key Parameters + +- `extensionDuration` ++"uint256"++ - the amount of time, in seconds, for which target proposals will be extended. For example, `10800` is three hours +- `minimumExtensionDuration` ++"uint256"++ - lower time limit, in seconds, for extension duration. For example, `3600` is one hour + +### Spoke Vote Aggregator Key Parameters + +- `initialVoteWindow` ++"uint256"++ - the moving window in seconds for vote weight checkpoints. These checkpoints are taken whenever an address that is delegating sends or receives tokens. For example, `86400` is one day + + !!! note + This is crucial for mitigating cross-chain double voting + +### Hub Evm Spoke Vote Aggregator Key Parameters + +- `maxQueryTimestampOffset` ++"uint256"++ - the max timestamp difference, in seconds, between the requested target time in the query and the current block time on the hub. For example, `1800` is 30 minutes + +### Updateable Governance Parameters + +The following key parameters can be updated through governance proposals: + +- `votingDelay` - delay before voting starts (in seconds) +- `votingPeriod` - duration of the voting period (in seconds) +- `proposalThreshold` - threshold for creating proposals (in tokens) +- `quorum` - number of votes required for quorum +- `extensionDuration` - the amount of time for which target proposals will be extended (in seconds) +- `voteWeightWindow` - window for vote weight checkpoints (in seconds) +- `maxQueryTimestampOffset` - max timestamp difference allowed between a query's target time and the hub's block time + +These parameters can be queried using their respective getter functions on the applicable contract. + +To update these parameters, a governance proposal must be created, voted on, and executed through the standard MultiGov process. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/multigov/deploy-to-solana/ +--- BEGIN CONTENT --- +--- +title: MultiGov Deployment to Solana +description: Learn how to deploy the MultiGov Staking Program on Solana, including setup, funding, deployment, and configuration steps. +--- + +# Deploy MultiGov on Solana + +This guide provides instructions on how to set up and deploy the **MultiGov Staking Program** on Solana. Before proceeding with the deployment, ensure that MultiGov aligns with your project's governance needs by reviewing the system [architecture](/docs/learn/governance/architecture/){target=\_blank}. + +Once your project setup is complete, follow this guide to configure, compile, and deploy the necessary Solana programs and supporting accounts. This deployment enables decentralized governance participation on Solana as a spoke chain within the MultiGov system. + +## Prerequisites + +To deploy MultiGov on Solana, ensure you have the following installed: + + - Install [Git](https://git-scm.com/downloads){target=\_blank} + - Install [Node.js](https://nodejs.org/){target=\_blank} **`v20.10.0`** + - Install [Solana CLI](https://docs.anza.xyz/cli/install/){target=\_blank} **`v1.18.20`** + - Install [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`v0.30.1`** + - Install [Rust](https://www.rust-lang.org/tools/install){target=\_blank} **`v1.80.1`** + - Install [Docker](https://www.docker.com/get-started/){target=\_blank} + - Clone the repository: + ```bash + git clone https://github.com/wormhole-foundation/multigov.git + cd multigov/solana/ + ``` + +## Build the Project + +To create a verifiable build of the MultiGov Staking Program, run the following command: + +```bash +./scripts/build_verifiable_staking_program.sh +``` + +Once the build is complete, the compiled artifacts will be available in the `target` folder. + +## Set Up the Deployer Account + +For a successful deployment, you need a funded deployer account on Solana. This account will store the program and execute deployment transactions. + +In this section, you will create a new keypair, check the account balance, and ensure it has enough SOL tokens to cover deployment costs. If needed, you can fund the account using different methods before deploying. + +### Generate a New Keypair + +To create a new keypair and save it to a file, run the following command: + +```bash +solana-keygen new --outfile ./app/keypairs/deployer.json +``` + +### Check the Deployer Account Address + +To retrieve the public address of the newly created keypair, run the following command: + +```bash +solana address -k ./app/keypairs/deployer.json +``` + +### Check the Deployer Account Balance + +To verify the current balance of the deployer account, run the following command: + +```bash +solana balance -k ./app/keypairs/deployer.json +``` + +!!! important + When deploying the MultiGov Staking Program, the deployer account must have enough SOL to cover deployment costs and transaction fees. + + - 7.60219224 SOL for deployment costs + - 0.00542 SOL for transaction fees + +### Fund the Deployer Account + +If the account does not have enough SOL, use one of the following methods to add funds. + + - **Transfer SOL from another account** - if you already have SOL in another account, transfer it using a wallet (Phantom, Solflare, etc.) or in the terminal + + ```bash + solana transfer --from /path/to/funder.json + ``` + + - **Request an airdrop (devnet only)** - if deploying to devnet, you can request free SOL + + ```bash + solana airdrop 2 -k ./app/keypairs/deployer.json + ``` + + - **Use a Solana faucet (devnet only)** - you can use online faucets to receive 10 free SOL + + - [Solana Faucet](https://faucet.solana.com/){target=\_blank} + +## Deploy the MultiGov Staking Program + +With the deployer account set up and funded, you can deploy the MultiGov Staking Program to the Solana blockchain. This step involves deploying the program, verifying the deployment, and ensuring the necessary storage and metadata are correctly configured. Once the IDL is initialized, the program will be ready for further setup and interaction. + +### Deploy the Program + +Deploy the MultiGov Staking Program using **Anchor**: + +```bash +anchor deploy --provider.cluster https://api.devnet.solana.com --provider.wallet ./app/keypairs/deployer.json +``` + +### Verify the Deployment + +After deployment, check if the program is successfully deployed by running the following command: + +```bash +solana program show INSERT_PROGRAM_ID +``` + +### Extend Program Storage + +If the deployed program requires additional storage space for updates or functionality, extend the program storage using the following command: + +```bash +solana program extend INSERT_PROGRAM_ID 800000 +``` + +### Initialize the IDL + +To associate an IDL file with the deployed program, run the following command: + +```bash +anchor idl init --provider.cluster https://api.devnet.solana.com --filepath ./target/idl/staking.json INSERT_PROGRAM_ID +``` + +## Configure the Staking Program + +The final step after deploying the MultiGov Staking Program is configuring it for proper operation. This includes running a series of deployment scripts to initialize key components and set important governance parameters. These steps ensure that staking, governance, and cross-chain communication function as expected. + +### Run Deployment Scripts + +After deploying the program and initializing the IDL, execute the following scripts **in order** to set up the staking environment and necessary accounts. + +1. Initialize the MultiGov Staking Program with default settings: + + ```bash + npx ts-node app/deploy/01_init_staking.ts + ``` + +2. Create an Account Lookup Table (ALT) to optimize transaction processing: + + ```bash + npx ts-node app/deploy/02_create_account_lookup_table.ts + ``` + +3. Set up airlock accounts: + + ```bash + npx ts-node app/deploy/03_create_airlock.ts + ``` + +4. Deploy a metadata collector: + + ```bash + npx ts-node app/deploy/04_create_spoke_metadata_collector.ts + ``` + +5. Configure vote weight window lengths: + + ```bash + npx ts-node app/deploy/05_initializeVoteWeightWindowLengths.ts + ``` + +6. Deploy the message executor for handling governance messages: + + ```bash + npx ts-node app/deploy/06_create_message_executor.ts + ``` + +### Set MultiGov Staking Program Key Parameters + +When deploying MultiGov on Solana, several key parameters need to be set. Here are the most important configuration points: + + - `maxCheckpointsAccountLimit` ++"u64"++ - the maximum number of checkpoints an account can have. For example, `654998` is used in production, while `15` might be used for testing + - `hubChainId` `u16` - the chain ID of the hub network where proposals are primarily managed. For example, `10002` for Sepolia testnet + - `hubProposalMetadata` ++"[u8; 20]"++ - an array of bytes representing the address of the Hub Proposal Metadata contract on Ethereum. This is used to identify proposals from the hub + - `voteWeightWindowLength` ++"u64"++ - specifies the length of the checkpoint window in seconds in which the minimum voting weight is taken. The window ends at the vote start for a proposal and begins at the vote start minus the vote weight window. The vote weight window helps solve problems such as manipulating votes in a chain + - `votingTokenMint` ++"Pubkey"++ - the mint address of the token used for voting + - `governanceAuthority` ++"Pubkey"++ - the account's public key with the authority to govern the staking system. The `governanceAuthority` should not be the default Pubkey, as this would indicate an uninitialized or incorrectly configured setup + - `vestingAdmin` ++"Pubkey"++ - the account's public key for managing vesting operations. The `vestingAdmin` should not be the default Pubkey, as this would indicate an uninitialized or incorrectly configured setup + - `hubDispatcher` ++"Pubkey"++ - the Solana public key derived from an Ethereum address on the hub chain that dispatches messages to the spoke chains. This is crucial for ensuring that only authorized messages from the hub are executed on the spoke +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/multigov/faq/ +--- BEGIN CONTENT --- +--- +title: MultiGov Technical FAQs +description: Find answers to common questions about MultiGov, covering cross-chain governance, technical setup, security, proposal creation, and more. +--- + +# FAQs + +## Technical Questions + +### How does MultiGov ensure security in cross-chain communication? + +MultiGov leverages Wormhole's robust cross-chain communication protocol. It implements several security measures: + +- Message origin verification to prevent unauthorized governance actions +- Timely and consistent data checks to ensure vote aggregation is based on recent and synchronized chain states +- Authorized participant validation to maintain the integrity of the governance process +- Replay attack prevention by tracking executed messages + +### Can MultiGov integrate with any blockchain? + +MultiGov can potentially integrate with any blockchain supported by Wormhole. However, specific implementations may vary depending on the chain's compatibility with the Ethereum Virtual Machine (EVM) and its smart contract capabilities. [See the full list of supported networks](/docs/build/start-building/supported-networks/). The current implementation of MultiGov supports an EVM hub and both the EVM and SVM for spokes. + +### How are votes aggregated across different chains? + +Votes are collected on each spoke chain using each chain's `SpokeVoteAggregator`. These votes are then transmitted to the HubVotePool on the hub chain for aggregation and tabulation. The `HubEvmSpokeVoteDecoder` standardizes votes from different EVM chains to ensure consistent processing. + +### Can governance upgrade from a single chain to MultiGov? + +Yes! MultiGov can support progressively upgrading from a single-chain governance to MultiGov. Moving to MultiGov requires upgrading the token to NTT and adding Flexible Voting to the original Governor. + +## Usage Questions + +### How can I create a proposal in MultiGov? + +Proposals are created on the hub chain using the `HubEvmSpokeAggregateProposer` contract or by calling `propose` on the `HubGovernor`. You need to prepare the proposal details, including targets, values, and calldatas. The proposer's voting weight is aggregated across chains using Wormhole queries to determine eligibility. + +### How do I vote on a proposal if I hold tokens on a spoke chain? + +You can vote on proposals via the `SpokeVoteAggregator` contract on the respective spoke chain where you hold your tokens. The votes are then automatically forwarded to the hub chain for aggregation. + +### How are approved proposals executed across multiple chains? + +When a proposal is approved and the timelock period elapses, it's first executed on the hub chain. A proposal can include a cross-chain message by including a call to `dispatch` on the `HubMessageDispatcher`, which sends a message to the relevant spoke chains. On each spoke chain, the `SpokeMessageExecutor` receives, verifies, and automatically executes the instructions using the `SpokeAirlock` as the `msg.sender`. + +## Implementation Questions + +### What are the requirements for using MultiGov? + +To use MultiGov, your DAO must meet the following requirements: + +- **ERC20Votes token** - your DAO's token must implement the `ERC20Votes` standard and support `CLOCK_MODE` timestamps for compatibility with cross-chain governance +- **Flexible voting support** - your DAO's Governor must support Flexible Voting to function as the Hub Governor. If your existing Governor does not support Flexible Voting, you can upgrade it to enable this feature + +### What do I need to set up MultiGov for my project? + +Get started by filling out the form below: + +https://www.tally.xyz/get-started + +Tally will reach out to help get your DAO set up with MultiGov. + +To set up testing MultiGov for your DAO, you'll need: + +- [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} and [Git](https://git-scm.com/downloads){target=\_blank} installed +- Test ETH on the testnets you plan to use (e.g., Sepolia for hub, Optimism Sepolia for spoke) +- Modify and deploy the hub and spoke contracts using the provided scripts +- Set up the necessary environment variables and configurations + +### Can MultiGov be used with non-EVM chains? + +The current implementation is designed for EVM-compatible chains. However, Solana (non-EVM) voting is currently in development and expected to go live after the EVM contracts. + +### How can I customize voting parameters in MultiGov? + +Voting parameters such as voting delay, voting period, proposal threshold, and quorum (and others) can be customized in the deployment scripts (`DeployHubContractsSepolia.s.sol` and `DeploySpokeContractsOptimismSepolia.s.sol` as examples for their respective chains). Make sure to adjust these parameters according to your DAO's specific needs before deployment. + +Remember to thoroughly test your MultiGov implementation on testnets before deploying to Mainnet, and have your contracts audited for additional security. + +### How does MultiGov handle potential network issues or temporary chain unavailability? + +MultiGov includes several mechanisms to handle network issues or temporary chain unavailability: + +1. **Asynchronous vote aggregation** - votes are aggregated periodically, allowing the system to continue functioning even if one chain is temporarily unavailable +2. **Proposal extension** - the `HubGovernorProposalExtender` allows trusted actors to extend voting periods if needed, which can help mitigate issues caused by temporary network problems +3. **Wormhole retry mechanism** - Wormhole's infrastructure includes retry mechanisms for failed message deliveries, helping ensure cross-chain messages eventually get through +4. **Decentralized relayer network** - Wormhole's decentralized network of relayers helps maintain system availability even if some relayers are offline + +However, prolonged outages on the hub chain or critical spoke chains could potentially disrupt governance activities. Projects should have contingency plans for such scenarios. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/multigov/ +--- BEGIN CONTENT --- +--- +title: Getting Started with MultiGov +description: Learn how to get started with MultiGov, from evaluating cross-chain governance needs to deploying with help from the Tally team. +--- + +# MultiGov + +## Begin the MultiGov Integration Process + +Take the following steps to get started with a MultiGov integration: + +1. Evaluate if [MultiGov](/docs/learn/governance/) meets your cross-chain governance needs +2. Fill out the intake form on the [Tally website](https://www.tally.xyz/get-started){target=\_blank} +3. The Tally team will review your application and contact you to discuss implementation details +4. Work with the Tally team to customize and deploy MultiGov for your specific use case + +## Start Building + +
+ +- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM** + + --- + + Set up and deploy MultiGov on EVM with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. + + [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deploy-to-evm/) + +- :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** + + --- + + Set up and deploy the MultiGov Staking Program on Solana with step-by-step instructions for configuring, funding, deploying, and initializing the program. + + [:custom-arrow: Discover how to deploy MultiGov on Solana](/docs/build/multigov/deploy-to-solana/) + +- :octicons-file-code-16:{ .lg .middle } **Upgrade MultiGov on EVM** + + --- + + Learn the process and key considerations for upgrading MultiGov contracts, ensuring system integrity and careful planning across cross-chain components. + + [:custom-arrow: Discover how to upgrade MultiGov on EVM Chains](/docs/build/multigov/upgrade-evm/) + +- :octicons-file-code-16:{ .lg .middle } **Upgrade MultiGov on Solana** + + --- + + Learn how to upgrade the MultiGov Staking Program on Solana, including updating the program binary, IDL, and more. + + [:custom-arrow: Discover how to upgrade MultiGov on Solana](/docs/build/multigov/upgrade-solana/) + +- :octicons-question-16:{ .lg .middle } **Technical FAQs** + + --- + + Find answers to common technical questions about MultiGov, covering technical setup, security, proposal creation, and more. + + [:custom-arrow: Find the answer to your technical questions](/docs/build/multigov/faq/) + +
+ +## Additional Resources + +
+ +- :octicons-book-16:{ .lg .middle } **What is MultiGov?** + + --- + + Need to familiarize yourself with MultiGov? Discover everything you need to know about MultiGov, Wormhole's cross-chain governance solution. + + [:custom-arrow: Learn the basics](/docs/learn/governance/) + +- :octicons-checklist-16:{ .lg .middle } **Tutorials** + + --- + + Access step-by-step tutorials for executing cross-chain governance actions, including treasury management proposals with MultiGov. + + [:custom-arrow: Learn by building](/docs/tutorials/multigov/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/multigov/upgrade-evm/ +--- BEGIN CONTENT --- +--- +title: Upgrading MultiGov on EVM +description: Learn the process and key considerations for upgrading MultiGov on EVM, ensuring system integrity and careful planning across cross-chain components. +--- + +# Upgrade MultiGov Contracts on EVM + +MultiGov is designed to be flexible but stable. Due to the system's complexity and cross-chain nature, upgrades should be rare and carefully considered. When upgrades are necessary, they must be meticulously planned and executed to ensure system integrity and continuity. + +## Key Considerations for Upgrades + +- **`HubGovernor`**: + - Not upgradeable. A new deployment requires redeploying several components of the MultiGov system. Refer to the [Process for Major System Upgrade](/docs/build/multigov/upgrade/#process-for-major-system-upgrade) section for more details + +- **`HubVotePool`**: + - Can be replaced by setting a new `HubVotePool` on the `HubGovernor` + - Requires re-registering all spokes on the new `HubVotePool` + - Must register the query type and implementation for vote decoding by calling `registerQueryType` on the new `HubVotePool` + - A new proposal would have to authorize the governor to use the newly created hub vote pool and will also handle registering the appropriate query decoders and registering the appropriate spoke `SpokeVoteAggregators` + +- **`SpokeMessageExecutor`**: + - Upgradeable via [UUPS](https://www.rareskills.io/post/uups-proxy){target=\_blank} proxy pattern + - Stores critical parameters in `SpokeMessageExecutorStorage` + +- **`HubEvmSpokeAggregateProposer`**: + - Needs redeployment if `HubGovernor` changes + - Requires re-registering all spokes after redeployment + +- **`HubProposalMetadata`**: + - Needs redeployment if `HubGovernor` changes, as it references `HubGovernor` as a parameter + +- **`SpokeMetadataCollector`**: + - Requires redeployment if the hub chain ID changes or if `HubProposalMetadata` changes + +## Process for Major System Upgrade + +1. **New `HubGovernor` deployment**: + - Deploy the new `HubGovernor` contract +1. **Component redeployment**: + - Redeploy `HubEvmSpokeAggregateProposer` with the new `HubGovernor` address + - Redeploy `HubProposalMetadata` referencing the new `HubGovernor` + - If hub chain ID changes, redeploy `SpokeMetadataCollector` on all spoke chains +1. **`HubVotePool` update**: + - Set the new `HubVotePool` on the new `HubGovernor` + - Register all spokes on the new `HubVotePool` + - Register the query type and implementation for vote decoding (`HubEvmSpokeVoteDecoder`) +1. **Spoke re-registration**: + - Re-register all spokes on the new `HubEvmSpokeAggregateProposer` +1. **Verification and testing**: + - Conduct thorough testing of the new system setup + - Verify all cross-chain interactions are functioning correctly +1. **System transition and deprecation**: + - Create a proposal to switch the timelock to the new governor + - Communicate clearly to the community what changes were made +1. **Monitoring**: + - Implement a transition period where the new system is closely monitored + - Address any issues that arise promptly + +## Important Considerations + +- Always prioritize system stability, upgrades should only be performed when absolutely necessary +- Thoroughly audit all new contract implementations before proposing an upgrade +- Account for all affected components across all chains in the upgrade plan +- Provide comprehensive documentation for the community about the upgrade process and any changes in functionality +- Always test upgrades extensively on testnets before implementing in production +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/multigov/upgrade-solana/ +--- BEGIN CONTENT --- +--- +title: Upgrading MultiGov on Solana +description: Learn the process and key considerations for upgrading MultiGov on Solana, ensuring system integrity and careful planning across cross-chain components. +--- + +# Upgrade MultiGov Contracts on Solana + +The MultiGov Staking Program on Solana is designed to be upgradeable while maintaining stability. Upgrades introduce improvements, bug fixes, and new features but must be carefully planned and executed to prevent disruptions. + +This guide covers the key considerations and step-by-step process for upgrading the MultiGov Staking Program, including updating the program binary, Interface Description Language (IDL), and `HubProposalMetadata` while ensuring cross-chain compatibility. + +## Key Considerations for Upgrades + +- **Program upgradeability** - you can upgrade the MultiGov Staking Program on Solana using the `anchor upgrade` command + - You need the program's new bytecode (`.so` file) and an updated IDL file to reflect any changes in the program's interface to complete an upgrade + - The program's authority (deployer) must execute the upgrade + +- **`HubProposalMetadata`** - can be updated without redeploying the entire program. You can do this by invoking the `updateHubProposalMetadata` instruction + - You must carefully validate updates to `HubProposalMetadata` to ensure compatibility with the existing system + +- **Cross-chain compatibility** - ensure any changes to the Solana program do not break compatibility with the Ethereum-based `HubGovernor` + - Test upgrades thoroughly on devnet before deploying to mainnet + +## Upgrade the MultiGov Program + +Follow these steps to upgrade the MultiGov Staking Program on Solana. + +1. **Prepare the new program binary** - build the updated program using the provided script + + ```bash + ./scripts/build_verifiable_staking_program.sh + ``` + + The new program binary will be located at: + + ```bash + target/deploy/staking.so + ``` + +2. **Upgrade the program** - use the anchor upgrade command to deploy the new program binary + + ```bash + anchor upgrade --program-id INSERT_PROGRAM_ID --provider.cluster INSERT_CLUSTER_URL INSERT_PATH_TO_PROGRAM_BINARY + ``` + + Your completed anchor upgrade command should resemble the following: + ```bash + anchor upgrade --program-id DgCSKsLDXXufYeEkvf21YSX5DMnFK89xans5WdSsUbeY --provider.cluster https://api.devnet.solana.com ./target/deploy/staking.so + ``` + +3. **Update the IDL** - after upgrading the program, update the IDL to reflect any changes in the program's interface + + ```bash + anchor idl upgrade INSERT_PROGRAM_ID --filepath INSERT_PATH_TO_IDL_FILE + ``` + + Your completed IDL upgrade command should resemble the following: + ```bash + anchor idl upgrade --provider.cluster https://api.devnet.solana.com --filepath ./target/idl/staking.json DgCSKsLDXXufYeEkvf21YSX5DMnFK89xans5WdSsUbeY + ``` + +4. **Update `HubProposalMetadata`** - if `HubProposalMetadata` requires an update, run the following script to invoke the `updateHubProposalMetadata` instruction and apply the changes + + ```bash + npx ts-node app/deploy/07_update_HubProposalMetadata.ts + ``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/queries/faqs/ +--- BEGIN CONTENT --- +--- +title: Queries FAQs +description: Wormhole Queries FAQ covering available libraries, query examples, response formats, and details about running query proxy servers. +--- + +# Wormhole Queries FAQs + +## What libraries are available to handle queries? + + - The [Query TypeScript SDK](https://npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} can be used to create query requests, mock query responses for testing, and parse query responses. The SDK also includes utilities for posting query responses + +- The [Solidity `QueryResponseLib` library](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/libraries/QueryResponse.sol){target=\_blank} can be used to parse and verify query responses on EVM chains. See the [Solana Stake Pool](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} repository as an example use case + +- [`QueryRequestBuilder.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/testing/QueryRequestBuilder.sol){target=\_blank} can be used for mocking query requests and responses in Forge tests + +- The [Go query package](https://github.com/wormhole-foundation/wormhole/tree/main/node/pkg/query){target=\_blank} can also be used to create query requests and parse query responses + +!!! note + A Rust SDK for Solana is being actively investigated by the Wormhole contributors. See the [Solana Queries Verification](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} repository as a proof of concept. + +## Are there any query examples? + +Certainly. You can find a complete guide on the [Use Queries page](/docs/build/queries/use-queries/){target=\_blank}. Additionally, you can find full code examples in the following repositories: + +- [Basic Example Query Demo](https://github.com/wormholelabs-xyz/example-queries-demo/){target=\_blank} +- [Solana Stake Pool Example Query](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} +- [Solana Program Derived Address (PDA) / Token Account Balance Example Query](https://github.com/wormholelabs-xyz/example-queries-solana-pda){target=\_blank} +- [Solana Queries Verification Example](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} + +## What is the format of the response signature? + +The Guardian node calculates an ECDSA signature using [`Sign` function of the crypto package](https://pkg.go.dev/github.com/ethereum/go-ethereum@v1.10.21/crypto#Sign){target=\_blank} where the digest hash is: + +```keccak256("query_response_0000000000000000000|"+keccak256(responseBytes))``` + +See the [Guardian Key Usage](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0009_guardian_key.md){target=\_blank} white paper for more background. Once this signature is created, the Guardian's index in the Guardian set is appended to the end. + +!!! note + If you are used to `ecrecover` you will notice that the `v` byte is `0` or `1` as opposed to `27` or `28`. The `signaturesToEvmStruct` method in the [Query TypeScript SDK](https://npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} accounts for this as well as structuring the signatures into an `IWormhole.SignatureStruct[]`. + +## Can anyone run a query proxy server? + +Permissions for Query Proxy are managed by the Guardians. The Guardian nodes are configured to only listen to a set of allow-listed proxies. However, it is possible that this restriction may be lifted in the future and/or more proxies could be added. + +It is also important to note that the proxies don't impact the verifiability of the request or result, i.e., their role in the process is trustless. + +## What Does Queries Offer over an RPC Service + +Wormhole Queries provides on-demand, attested, on-chain, verifiable RPC results. Each Guardian independently executes the specified query and returns the result and their signature. The proxy handles aggregating the results and signatures, giving you a single result (all within one REST call) with a quorum of signatures suitable for on-chain submission, parsing, and verification using one of our examples or SDKs. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/queries/ +--- BEGIN CONTENT --- +--- +title: Wormhole Queries +description: Wormhole Queries offers on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy. +--- + +# Queries + +## Get Started + +Wormhole Queries offers on-demand access to Guardian-attested on-chain data via a simple REST endpoint to initiate an off-chain request via a proxy. + +
+ +- :octicons-book-16:{ .lg .middle } **Overview** + + --- + + Explore Wormhole Queries, offering real-time access to verified blockchain data via a REST API endpoint, enabling secure cross-chain interactions and verifications. + + [:custom-arrow: Learn about Queries](/docs/build/queries/overview/) + +- :octicons-code-16:{ .lg .middle } **Use Queries** + + --- + + Explore a simple demo of interacting with Wormhole Queries using an `eth_call` request to query the supply of wETH on Ethereum using a Wormhole query. + + [:custom-arrow: Get hands-on](/docs/build/queries/use-queries/) + +- :octicons-book-16:{ .lg .middle } **Query FAQs** + + --- + + Explore frequently asked questions about Wormhole Queries. + + [:custom-arrow: Check out the FAQs](/docs/build/queries/faqs/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/queries/overview/ +--- BEGIN CONTENT --- +--- +title: Queries Overview +description: Explore Wormhole Queries, offering real-time access to verified blockchain data via a REST endpoint, enabling secure cross-chain interactions and verifications. +--- + +# Queries Overview {: #queries-overview } + +Wormhole Guardians, who run full nodes for various connected chains, facilitate a new cross-chain query service that allows for on-demand attested responses to queries, bypassing the inefficiencies of traditional transaction-based data retrieval. This method is faster and cost-effective, eliminating the need for gas payments and transaction finality wait times. + +!!! note + Queries are currently in closed beta, though you can start developing today. Check out [Use Queries](/docs/build/queries/use-queries/){target=\_blank} and reach out to [Join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank}. + +Wormhole Queries offers on-demand access to Guardian-attested on-chain data. The current implementation provides integrators with a simple REST endpoint to initiate an off-chain request via a proxy. The proxy then forwards the request to the Guardians and gathers a quorum of responses. The result returns the encoded response, including the request details and the Guardian signatures. The request validation performed by the query module includes a three step process that involves verifying the signature to ensure it has the correct prefix, confirming that the signer is authorized to execute query requests, and validating the legitimacy of all per-chain requests contained in the query. You can read more about Queries in the [white paper](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0013_ccq.md){target=\_blank}. + +## The Flow of a Query {: #the-flow-of-a-query} + +The general overview of a query's flow is as follows: an off-chain process sends HTTPS query requests to a Query Proxy, which validates and forwards them to the Guardians; these Guardians independently validate, sign, and return the response, with the entire process typically taking less than a second. + +![The architecture flow of a query](/docs/images/build/queries/overview/overview-1.webp) + +The step-by-step flow of a query is as follows: + +1. An off-chain process initiates a query request via HTTPS to the query proxy (or Query Server) +2. The query proxy validates the request and forwards it to the Guardians via a gossip network +3. The Guardians independently validate the request, make the requisite RPC calls, verify the results, sign, and gossip a response back to the Query Proxy +4. The Query Proxy aggregates the results and returns a response when it reaches a quorum of two-thirds or more of the current Guardian set - the exact quorum requirements as the core bridge +5. The off-chain process can then submit these requests to an on-chain contract which should verify the signatures and validate the request before processing the result + +In this flow, the Query Proxy is a permissioned but trustless part of the protocol. In most cases, this entire process takes less than one second. If a request is invalid or cannot be processed by the Guardians, they will retry for up to one minute before timing out. Requests can be batched to have the Guardians make multiple calls to multiple networks. This can further reduce overhead for processing query responses on-chain. Up to 255 queries can be batched together, with certain types allowing for batching themselves. + +## Supported Query Types {: #supported-query-types} + +There are currently five supported types of queries. See [the white paper](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0013_ccq.md){target=\_blank} for more details on each. + +### eth_call {: #eth-call} + +This query type is effectively an equivalent of [eth_call](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call){target=\_blank} against a block specified by number or hash. + +Calls are batched to allow specifying multiple calls (even to multiple contracts) against the same block. These calls are included in a single batch RPC call, simplifying on-chain verification. Up to 255 calls may be batched in an single `eth_call` query. + +The result contains the specified block number, hash, timestamp, and the call result. + +### eth_call By Timestamp {: #eth-call-by-timestamp} + +This query type is similar to `eth_call` but targets a timestamp instead of a specific `block_id`. This can be useful when forming requests based on uncorrelated data, such as requiring data from another chain based on the block timestamp of a given chain. + +The result also contains the target and block details with the following enforced conditions: `target_block.timestamp <= target_time < following_block.timestamp` and `following_block_num - 1 == target_block_num`. + +### eth_call With Finality {: #eth-call-with-finality} + +This query type is similar to `eth_call` but ensures that the specified block has reached the specified finality before returning the query results. The finality may be `finalized` or `safe.` Note that if a chain doesn't natively support the `safe` tag, this will be equivalent to `finalized.` + +### sol_account {: #sol_account} + +This query is used to read data for one or more accounts on Solana, akin to [`getMultipleAccounts`](https://solana.com/docs/rpc/http/getmultipleaccounts){target=\_blank}. + +### sol_pda {: #sol_pda} + +This query is used to read data for one or more [Program Derived Addresses(PDA)](https://www.anchor-lang.com/docs/pdas){target=\_blank} on Solana, akin to calling [`getMultipleAccounts`](https://solana.com/docs/rpc/http/getmultipleaccounts){target=\_blank} on the result of `PublicKey.findProgramAddressSync(seeds, programId).` This query is helpful for times when you want to more generally read accounts owned by a program and verify the derivation on another chain, like how associated token accounts are all derived from the [Associated Token Account Program](https://spl.solana.com/associated-token-account){target=\_blank}. + +## Supported Chains {: #supported-chains} + +The following table provides expected support based on testing. However, the success of any given query is based on the success of the underlying call on each Guardian’s RPC node. + +For example, many chains have implementations forked from [Geth](https://github.com/ethereum/go-ethereum){target=\_blank}, which keeps 128 blocks of state in memory by default (without running in archive mode). While this is good for about 25 minutes of history on Ethereum Mainnet, it is only about three minutes on Optimism. While Guardian nodes can be expected to have access to recent state, there are currently no guarantees of how far back in history they have access to. + +### Mainnet {: #mainnet} + +| Chain | Wormhole Chain ID | eth_call | By Timestamp | With Finality | Expected History | +|:-------------:|:-----------------:|:--------:|:------------------:|:-------------:|:----------------:| +| Ethereum | 2 | ✅ | ✅ | ✅ | 128 blocks | +| BSC | 4 | ✅ | ✅ | ✅ | 128 blocks | +| Polygon | 5 | ✅ | ✅ | ✅ | 128 blocks | +| Avalanche | 6 | ✅ | ✅ | ✅ | 32 blocks | +| Oasis Emerald | 7 | ✅ | ✅ | ✅ | archive | +| Fantom | 10 | ✅ | ✅ | ✅ | 16 blocks | +| Karura | 11 | ✅ | ✅ | ✅ | archive | +| Acala | 12 | ✅ | ✅ | ✅ | archive | +| Kaia | 13 | ✅ | ✅ | ✅ | 128 blocks | +| Celo | 14 | ✅ | ℹ️ hints required\* | ✅ | 128 blocks | +| Moonbeam | 16 | ✅ | ℹ️ hints required\* | ✅ | 256 blocks | +| Arbitrum One | 23 | ✅ | ✅ | ✅ | ~6742 blocks | +| Optimism | 24 | ✅ | ✅ | ❌ | 128 blocks | +| Base | 30 | ✅ | ✅ | ✅ | archive | + +\*`EthCallByTimestamp` arguments for `targetBlock` and `followingBlock` are currently required for requests to be successful on these chains. + +## Next Steps {: #next-steps} + +Remember that Wormhole Queries are currently in beta. You can [register to join the beta](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to fully experiment with Wormhole Queries. + +Be sure to check out the [FAQs](/docs/build/queries/faqs/){target=\_blank} and the [Use Queries guide](/docs/build/queries/use-queries/){target=\_blank}. + +You can also check out the following examples of applications that make use of Wormhole Queries: + +- [Basic demo](https://github.com/wormholelabs-xyz/example-queries-demo/){target=\_blank} +- [Solana Stake Pool](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool){target=\_blank} +- [Solana Program Derived Address (PDA) / Token Account Balance](https://github.com/wormholelabs-xyz/example-queries-solana-pda){target=\_blank} +- [Solana Queries Verification](https://github.com/wormholelabs-xyz/example-queries-solana-verify){target=\_blank} +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/queries/use-queries/ +--- BEGIN CONTENT --- +--- +title: Use Queries +description: Explore a simple demo of interacting with Wormhole Queries using an eth_call request to query the supply of wETH on Ethereum using a Wormhole query. +--- + +# Use Queries + +You can visit the [Example Queries Demo](https://wormholelabs-xyz.github.io/example-queries-demo/){target=\_blank} to view an interactive example of an application interacting with the [Query Demo](https://github.com/wormholelabs-xyz/example-queries-demo/blob/main/src/QueryDemo.sol){target=\_blank} contract. + +This guide covers using a simple `eth_call` request to get the total supply of WETH on Ethereum. + +## RPC Basics + +Before digging into anything Queries-specific, this page will look at how to make an [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call){target=\_blank} against a public Ethereum RPC. Suppose you'd like to query the WETH contract for its total supply; before making a request, you need some information about the contract you want to call, including: + +- **To** - the contract to call. WETH is [0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2){target=\_blank} +- **Data** - the method identifier and ABI-encoded parameters, which can be obtained as follows: `web3.eth.abi.encodeFunctionSignature("totalSupply()")` which yields `0x18160ddd` +- **Block ID** - the block number, hash, or tag. Tag options include `latest,` `safe,` or `finalized` + +The prepared curl request is as follows: + +```bash title="eth_call JSON-RPC request" +curl https://ethereum.publicnode.com -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","data":"0x18160ddd"},"latest"],"id":1}' +``` + +And the corresponding response is: + +```bash title="eth_call JSON-RPC reponse" +{ + "jsonrpc":"2.0", + "id":1, + "result":"0x000000000000000000000000000000000000000000029fd3d129b582d7949e71" +} +``` + +Converting the returned value of the executed call from hexidecimal results in the value `3172615244782286193073777`. You can compare your result to the [**Read Contract**](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#readContract){target=\_blank} tab in Etherscan. Your result will be different as WETH is minted/burned over time. + +## Construct a Query {: #construct-a-query} + +You can use the [Wormhole Query SDK](https://www.npmjs.com/package/@wormhole-foundation/wormhole-query-sdk){target=\_blank} to construct a query. You will also need an RPC endpoint from the provider of your choice. This example uses [Axios](https://www.npmjs.com/package/axios){target=\_blank} for RPC requests. Ensure that you also have [TypeScript](https://www.typescriptlang.org/download/){target=\_blank} installed. + +```jsx +npm i @wormhole-foundation/wormhole-query-sdk axios +``` + +In order to make an `EthCallQueryRequest`, you need a specific block number or hash as well as the call data to request. + +You can request the latest block from a public node using `eth_getBlockByNumber`. + +```jsx + +await axios.post(rpc, { + method: 'eth_getBlockByNumber', + params: ['latest', false], + id: 1, + jsonrpc: '2.0', + }) + ).data?.result?.number; +``` + +Then construct the call data. + +```jsx +to: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH + data: '0x18160ddd', // web3.eth.abi.encodeFunctionSignature("totalSupply()") +}; +``` + +Finally, put it all together in a `QueryRequest`. + +```jsx +const request = new QueryRequest( + 0, // Nonce + [ + new PerChainQueryRequest( + 2, // Ethereum Wormhole Chain ID + new EthCallQueryRequest(latestBlock, [callData]) + ), + ] + ); +``` + +This request consists of one `PerChainQueryRequest`, which is an `EthCallQueryRequest` to Ethereum. You can use `console.log` to print the JSON object and review the structure. + +```jsx + +// { +// "nonce": 0, +// "requests": [ +// { +// "chainId": 2, +// "query": { +// "callData": [ +// { +// "to": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", +// "data": "0x18160ddd" +// } +// ], +// "blockTag": "0x11e9068" +// } +// } +// ], +// "version": 1 +// } +``` + +## Mock a Query + +For easier testing, the Query SDK provides a `QueryProxyMock` method. This method will perform the request and sign the result with the [Devnet](/docs/build/toolkit/tilt/){target=\_blank} Guardian key. The `mock` call returns the same format as the Query Proxy. + +```jsx +const mockData = await mock.mock(request); + console.log(mockData); +// { +// signatures: ['...'], +// bytes: '...' +// } +``` + +This response is suited for on-chain use, but the SDK also includes a parser to make the results readable via the client. + +```jsx +const mockQueryResult = ( + mockQueryResponse.responses[0].response as EthCallQueryResponse + ).results[0]; + console.log( + `Mock Query Result: ${mockQueryResult} (${BigInt(mockQueryResult)})` + ); +// Mock Query Result: 0x000000000000000000000000000000000000000000029fd09d4d81addb3ccfee (3172556167631284394053614) +``` + +Testing this all together might look like the following: + +```jsx +import { + EthCallData, + EthCallQueryRequest, + EthCallQueryResponse, + PerChainQueryRequest, + QueryProxyMock, + QueryRequest, + QueryResponse, +} from '@wormhole-foundation/wormhole-query-sdk'; +import axios from 'axios'; + +const rpc = 'https://ethereum.publicnode.com'; +const callData: EthCallData = { + to: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH + data: '0x18160ddd', // web3.eth.abi.encodeFunctionSignature("totalSupply()") +}; + +(async () => { + const latestBlock: string = ( + await axios.post(rpc, { + method: 'eth_getBlockByNumber', + params: ['latest', false], + id: 1, + jsonrpc: '2.0', + }) + ).data?.result?.number; + if (!latestBlock) { + console.error(`❌ Invalid block returned`); + return; + } + console.log('Latest Block: ', latestBlock, `(${BigInt(latestBlock)})`); + const targetResponse = await axios.post(rpc, { + method: 'eth_call', + params: [callData, latestBlock], + id: 1, + jsonrpc: '2.0', + }); + // console.log(finalizedResponse.data); + if (targetResponse.data.error) { + console.error(`❌ ${targetResponse.data.error.message}`); + } + const targetResult = targetResponse.data?.result; + console.log('Target Result: ', targetResult, `(${BigInt(targetResult)})`); + // Form the query request + const request = new QueryRequest( + 0, // Nonce + [ + new PerChainQueryRequest( + 2, // Ethereum Wormhole Chain ID + new EthCallQueryRequest(latestBlock, [callData]) + ), + ] + ); + console.log(JSON.stringify(request, undefined, 2)); + const mock = new QueryProxyMock({ 2: rpc }); + const mockData = await mock.mock(request); + console.log(mockData); + const mockQueryResponse = QueryResponse.from(mockData.bytes); + const mockQueryResult = ( + mockQueryResponse.responses[0].response as EthCallQueryResponse + ).results[0]; + console.log( + `Mock Query Result: ${mockQueryResult} (${BigInt(mockQueryResult)})` + ); +})(); +``` + +### Fork Testing + +It is common to test against a local fork of Mainnet with something like + +```jsx +anvil --fork-url https://ethereum.publicnode.com +``` + +In order for mock requests to verify against the Mainnet Core Contract, you need to replace the current Guardian set with the single Devnet key used by the mock. + +Here's an example for Ethereum Mainnet, where the `-a` parameter is the [Core Contract address](/docs/build/reference/contract-addresses/#core-contracts){target=\_blank} on that chain. + +```jsx +npx @wormhole-foundation/wormhole-cli evm hijack -a 0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B -g 0xbeFA429d57cD18b7F8A4d91A2da9AB4AF05d0FBe +``` + +If you are using `EthCallWithFinality`, you will need to mine additional blocks (32 if using [Anvil](https://book.getfoundry.sh/anvil/){target=\_blank}) after the latest transaction for it to become finalized. Anvil supports [auto-mining](https://book.getfoundry.sh/reference/anvil/#mining-modes){target=\_blank} with the `-b` flag if you want to test code that waits naturally for the chain to advance. For integration tests, you may want to simply `anvil_mine` with `0x20`. + +## Make a Query Request + +The standardized means of making a `QueryRequest` with an API key is as follows: + +```jsx +const serialized = request.serialize(); +const proxyResponse = (await axios.post)( + QUERY_URL, + { + bytes: Buffer.from(serialized).toString('hex'), + }, + { headers: { 'X-API-Key': YOUR_API_KEY } } +); +``` + +Remember to always take steps to protect your sensitive API keys, such as defining them in `.env` files and including such files in your `.gitignore`. + +A Testnet Query Proxy is available at `https://testnet.query.wormhole.com/v1/query` + +A Mainnet Query Proxy is available at `https://query.wormhole.com/v1/query` + +## Verify a Query Response On-Chain + +A [`QueryResponseLib` library](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/libraries/QueryResponse.sol){target=\_blank} is provided to assist with verifying query responses. You can begin by installing the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} with the following command: + +```bash +forge install wormhole-foundation/wormhole-solidity-sdk +``` + +Broadly, using a query response on-chain comes down to three main steps: + + 1. Parse and verify the query response + 2. The `parseAndVerifyQueryResponse` handles verifying the Guardian signatures against the current Guardian set stored in the Core bridge contract + 3. Validate the request details. This may be different for every integrator depending on their use case, but generally checks the following: + - Is the request against the expected chain? + - Is the request of the expected type? The `parseEthCall` helpers perform this check when parsing + - Is the resulting block number and time expected? Some consumers might require that a block number be higher than the last, or the block time be within the last 5 minutes. `validateBlockNum` and `validateBlockTime` can help with the checks + - Is the request for the expected contract and function signature? The `validateMultipleEthCallData` can help with non-parameter-dependent cases + - Is the result of the expected length for the expected result type? + 4. Run `abi.decode` on the result + +See the [QueryDemo](https://github.com/wormholelabs-xyz/example-queries-demo/blob/main/src/QueryDemo.sol){target=\_blank} contract for an example and read the docstrings of the preceding methods for detailed usage instructions. + +??? code "View the complete `QueryDemo`" + ```solidity + // contracts/query/QueryDemo.sol +// SPDX-License-Identifier: Apache 2 + +pragma solidity ^0.8.0; + +import "wormhole-solidity-sdk/libraries/BytesParsing.sol"; +import "wormhole-solidity-sdk/interfaces/IWormhole.sol"; +import "wormhole-solidity-sdk/QueryResponse.sol"; + +error InvalidOwner(); +// @dev for the onlyOwner modifier +error InvalidCaller(); +error InvalidCalldata(); +error InvalidForeignChainID(); +error ObsoleteUpdate(); +error StaleUpdate(); +error UnexpectedResultLength(); +error UnexpectedResultMismatch(); + +/// @dev QueryDemo is an example of using the QueryResponse library to parse and verify Cross Chain Query (CCQ) responses. +contract QueryDemo is QueryResponse { + using BytesParsing for bytes; + + struct ChainEntry { + uint16 chainID; + address contractAddress; + uint256 counter; + uint256 blockNum; + uint256 blockTime; + } + + address private immutable owner; + uint16 private immutable myChainID; + mapping(uint16 => ChainEntry) private counters; + uint16[] private foreignChainIDs; + + bytes4 public GetMyCounter = bytes4(hex"916d5743"); + + constructor(address _owner, address _wormhole, uint16 _myChainID) QueryResponse(_wormhole) { + if (_owner == address(0)) { + revert InvalidOwner(); + } + owner = _owner; + + myChainID = _myChainID; + counters[_myChainID] = ChainEntry(_myChainID, address(this), 0, 0, 0); + } + + // updateRegistration should be used to add the other chains and to set / update contract addresses. + function updateRegistration(uint16 _chainID, address _contractAddress) public onlyOwner { + if (counters[_chainID].chainID == 0) { + foreignChainIDs.push(_chainID); + counters[_chainID].chainID = _chainID; + } + + counters[_chainID].contractAddress = _contractAddress; + } + + // getMyCounter (call signature 916d5743) returns the counter value for this chain. It is meant to be used in a cross chain query. + function getMyCounter() public view returns (uint256) { + return counters[myChainID].counter; + } + + // getState() returns this chain's view of all the counters. It is meant to be used in the front end. + function getState() public view returns (ChainEntry[] memory) { + ChainEntry[] memory ret = new ChainEntry[](foreignChainIDs.length + 1); + ret[0] = counters[myChainID]; + uint256 length = foreignChainIDs.length; + + for (uint256 i = 0; i < length;) { + ret[i + 1] = counters[foreignChainIDs[i]]; + unchecked { + ++i; + } + } + + return ret; + } + + // @notice Takes the cross chain query response for the other counters, stores the results for the other chains, and updates the counter for this chain. + function updateCounters(bytes memory response, IWormhole.Signature[] memory signatures) public { + ParsedQueryResponse memory r = parseAndVerifyQueryResponse(response, signatures); + uint256 numResponses = r.responses.length; + if (numResponses != foreignChainIDs.length) { + revert UnexpectedResultLength(); + } + + for (uint256 i = 0; i < numResponses;) { + // Create a storage pointer for frequently read and updated data stored on the blockchain + ChainEntry storage chainEntry = counters[r.responses[i].chainId]; + if (chainEntry.chainID != foreignChainIDs[i]) { + revert InvalidForeignChainID(); + } + + EthCallQueryResponse memory eqr = parseEthCallQueryResponse(r.responses[i]); + + // Validate that update is not obsolete + validateBlockNum(eqr.blockNum, chainEntry.blockNum); + + // Validate that update is not stale + validateBlockTime(eqr.blockTime, block.timestamp - 300); + + if (eqr.result.length != 1) { + revert UnexpectedResultMismatch(); + } + + // Validate addresses and function signatures + address[] memory validAddresses = new address[](1); + bytes4[] memory validFunctionSignatures = new bytes4[](1); + validAddresses[0] = chainEntry.contractAddress; + validFunctionSignatures[0] = GetMyCounter; + + validateMultipleEthCallData(eqr.result, validAddresses, validFunctionSignatures); + + require(eqr.result[0].result.length == 32, "result is not a uint256"); + + chainEntry.blockNum = eqr.blockNum; + chainEntry.blockTime = eqr.blockTime / 1_000_000; + chainEntry.counter = abi.decode(eqr.result[0].result, (uint256)); + + unchecked { + ++i; + } + } + + counters[myChainID].blockNum = block.number; + counters[myChainID].blockTime = block.timestamp; + counters[myChainID].counter += 1; + } + + modifier onlyOwner() { + if (owner != msg.sender) { + revert InvalidOwner(); + } + _; + } +} + ``` + +## Submit a Query Response On-Chain + +The `QueryProxyQueryResponse` result requires a slight tweak when submitting to the contract to match the format of `function parseAndVerifyQueryResponse(bytes memory response, IWormhole.Signature[] memory signatures)`. A helper function, `signaturesToEvmStruct`, is provided in the SDK for this. + +This example submits the transaction to the demo contract: + +```jsx +const tx = await contract.updateCounters( + `0x${response.data.bytes}`, + signaturesToEvmStruct(response.data.signatures) +); +``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/reference/chain-ids/ +--- BEGIN CONTENT --- +--- +title: Chain IDs +description: This page documents the Wormhole-specific chain IDs for each chain and contrasts them to the more commonly referenced EVM chain IDs originating in EIP-155. +--- + +# Chain IDs + +The following table documents the chain IDs used by Wormhole and places them alongside the more commonly referenced [EVM Chain IDs](https://chainlist.org/){target=\_blank}. + +!!! note + Please note, Wormhole chain IDs are different than the more commonly referenced EVM [chain IDs](https://eips.ethereum.org/EIPS/eip-155){target=\_blank}, specified in the Mainnet and Testnet ID columns. + + + + +=== "Mainnet" + +
Chain NameWormhole Chain IDNetwork ID
Ethereum21
Solana1Mainnet Beta - 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Acala12787
Algorand8mainnet-v1.0
Aptos221
Arbitrum23Arbitrum One - 42161
Avalanche6C-Chain - 43114
Base30Base - 8453
Berachain39
Blast3681457
BNB Smart Chain456
Celestia4004celestia
Celo1442220
Cosmos Hub4000cosmoshub-4
Dymension4007dymension_1100-1
Evmos4001evmos_9001-2
Fantom10250
Gnosis25100
HyperEVM47
Injective19injective-1
Ink46
Kaia138217
Karura11686
Kujira4002kaiyo-1
Linea3859144
Mantle355000
Mezo50
Monad48
Moonbeam161284
Movement49126
NEAR15mainnet
Neon17245022934
Neutron4003neutron-1
Noble4009noble-1
Oasis742262
Optimism2410
Osmosis20osmosis-1
Polygon5137
Provenance4008pio-mainnet-1
Pythnet26
Scroll34534352
SEDA4006
Sei32pacific-1
Seievm40
SNAXchain432192
Stargaze4005stargaze-1
Sui2135834a8a
Terra3columbus-5
Terra 2.018phoenix-1
Unichain44
World Chain45480
X Layer37196
XPLA28dimension_37-1
+ +=== "Testnet" + +
Chain NameWormhole Chain IDNetwork ID
Ethereum Holesky10006Holesky - 17000
Ethereum Sepolia10002Sepolia - 11155111
Solana1Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
Acala12597
Algorand8testnet-v1.0
Aptos222
Arbitrum Sepolia10003Sepolia - 421614
Avalanche6Fuji - 43113
Base Sepolia10004Base Sepolia - 84532
Berachain3980084
Blast36168587773
BNB Smart Chain497
Celestia4004mocha-4
Celo14Alfajores - 44787
Cosmos Hub4000theta-testnet-001
Dymension4007
Evmos4001evmos_9000-4
Fantom104002
Gnosis25Chiado - 10200
HyperEVM47998
Injective19injective-888
Ink46763373
Kaia13Kairos - 1001
Karura11596
Kujira4002harpoon-4
Linea3859141
Mantle35Sepolia - 5003
Mezo5031611
Monad4810143
Moonbeam16Moonbase-Alphanet - 1287
Movement49250
NEAR15testnet
Neon17245022940
Neutron4003pion-1
Noble4009grand-1
Oasis742261
Optimism Sepolia10005Optimism Sepolia - 11155420
Osmosis20osmo-test-5
Polygon Amoy10007Amoy - 80002
Provenance4008
Pythnet26
Scroll34Sepolia - 534351
SEDA4006seda-1-testnet
Sei32atlantic-2
Seievm40
SNAXchain4313001
Stargaze4005
Sui214c78adac
Terra3bombay-12
Terra 2.018pisco-1
Unichain44Unichain Sepolia - 1301
World Chain454801
X Layer37195
XPLA28cube_47-5
+ + +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/reference/consistency-levels/ +--- BEGIN CONTENT --- +--- +title: Wormhole Finality | Consistency Levels +description: This page documents how long to wait for finality before signing, based on each chain’s consistency (finality) level and consensus mechanism. +--- + +# Wormhole Finality + +The following table documents each chain's `consistencyLevel` values (i.e., finality reached before signing). The consistency level defines how long the Guardians should wait before signing a VAA. The finalization time depends on the specific chain's consensus mechanism. The consistency level is a `u8`, so any single byte may be used. However, a small subset has particular meanings. If the `consistencyLevel` isn't one of those specific values, the `Otherwise` column describes how it's interpreted. + + + +
ChainInstantSafeFinalizedOtherwiseTime to FinalizeDetails
Ethereum200201finalized~ 19minDetails
Solana01~ 14sDetails
Acala200201finalized~ 24s
Algorand0~ 4sDetails
Aptos0~ 4sDetails
Arbitrum200201finalized~ 18minDetails
Avalanche200finalized~ 2sDetails
Base200201finalized~ 18min
Berachain200finalized~ 4s
Blast200201finalized~ 18min
BNB Smart Chain200201finalized~ 48sDetails
Celestia0~ 5s
Celo200finalized~ 10s
Cosmos Hub0~ 5s
Dymension0~ 5s
Evmos0~ 2s
Fantom200finalized~ 5s
Injective0~ 3s
Ink0~ 9min
Kaia200finalized~ 1s
Karura200201finalized~ 24sDetails
Kujira0~ 3s
Mantle200201finalized~ 18min
Mezo0~ 8s
Monad0~ 2s
Moonbeam200201finalized~ 24sDetails
Movement0~ 4s
NEAR0~ 2sDetails
Neutron0~ 5s
Oasis200finalized~ 12s
Optimism200201finalized~ 18min
Osmosis0~ 6s
Polygon200finalized~ 66sDetails
Scroll200finalized~ 16min
Sei0~ 1s
Stargaze0~ 5s
Sui0~ 3sDetails
Terra0~ 6s
Terra 2.00~ 6s
Unichain200201finalized~ 18min
World Chain0~ 18min
X Layer200201finalized~ 16min
XPLA0~ 5s
+ +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/reference/contract-addresses/ +--- BEGIN CONTENT --- +--- +title: Contract Addresses +description: This page documents the deployed contract addresses of the Wormhole contracts on each chain, including Core Contracts, TokenBridge, and more. +--- + +# Contract Addresses + +## Core Contracts + + + + +=== "Mainnet" + +
Chain NameContract Address
Ethereum0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Solanaworm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
Acala0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Algorand842125965
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum0xa5f208e072434bC67592E4C49C1B991BA79BCA46
Avalanche0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c
Base0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Berachain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Blast0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
BNB Smart Chain0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B
Celo0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Fantom0x126783A6Cb203a3E35344528B26ca3a0489a1485
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Injectiveinj17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9l2q74d
Ink0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
Kaia0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7
Karura0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Mantle0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Moonbeam0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3
NEARcontract.wormhole_crypto.near
Neutronneutron16rerygcpahqcxx5t8vjla46ym8ccn7xz7rtc6ju5ujcd36cmc7zs9zrunh
Oasis0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
Optimism0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722
Polygon0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7
PythnetH3fxXJ86ADW2PNuDDmZJg6mzTtPxkYCpNuQUTgmJ7AjU
Scroll0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Seisei1gjrrme22cyha4ht2xapn3f08zzw6z3d4uxx6fyy9zd5dyr3yxgzqqncdqn
SNAXchain0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4
Sui0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c
Terraterra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5
Terra 2.0terra12mrnzvhx3rpej6843uge2yyfppfyd3u9c3uq223q8sl48huz9juqffcnhp
Unichain0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D
World Chain0xcbcEe4e081464A15d8Ad5f58BB493954421eB506
X Layer0x194B123c5E96B9b2E49763619985790Dc241CAC0
XPLAxpla1jn8qmdda5m6f6fqu9qv46rt7ajhklg40ukpqchkejcvy8x7w26cqxamv3w
+ +=== "Testnet" + +
Chain NameContract Address
Ethereum Holesky0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Ethereum Sepolia0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Solana3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5
Acala0x64fb09E405D2043ed7785a29E296C766D56F2056
Algorand86525623
Aptos0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625
Arbitrum Sepolia0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
Avalanche0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
Base Sepolia0x79A1027a6A159502049F10906D333EC57E95F083
Berachain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Blast0x473e002D7add6fB67a4964F13bFd61280Ca46886
BNB Smart Chain0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D
Celo0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56
Fantom0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
Gnosis0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
HyperEVM0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Injectiveinj1xx3aupmgv3ce537c0yce8zzd3sz567syuyedpg
Ink0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Kaia0x1830CC6eE66c84D2F177B94D544967c774E624cA
Karura0x64fb09E405D2043ed7785a29E296C766D56F2056
Linea0x79A1027a6A159502049F10906D333EC57E95F083
Mantle0x376428e7f26D5867e69201b275553C45B09EE090
Mezo0x268557122Ffd64c85750d630b716471118F323c8
Monad0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Moonbeam0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901
Movement0xa7b37796439f725373fe4835793cd2eed7a1db639bbb220c72be8904ec5e2a7a
NEARwormhole.wormhole.testnet
Neon0x268557122Ffd64c85750d630b716471118F323c8
Neutronneutron1enf63k37nnv9cugggpm06mg70emcnxgj9p64v2s8yx7a2yhhzk2q6xesk4
Oasis0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
Optimism Sepolia0x31377888146f3253211EFEf5c676D41ECe7D58Fe
Osmosisosmo1hggkxr0hpw83f8vuft7ruvmmamsxmwk2hzz6nytdkzyup9krt0dq27sgyx
Polygon Amoy0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35
PythnetEUrRARh92Cdc54xrDn6qzaqjA77NRrCcfbr8kPwoTL4z
Scroll0x055F47F1250012C6B20c436570a76e52c17Af2D5
Seisei1nna9mzp274djrgzhzkac2gvm3j27l402s4xzr08chq57pjsupqnqaj0d5s
Seievm0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
SNAXchain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
Sui0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790
Terraterra1pd65m0q9tl3v8znnz5f5ltsfegyzah7g42cx5v
Terra 2.0terra19nv3xr5lrmmr7egvrk2kqgw4kcn43xrtd5g0mpgwwvhetusk4k7s66jyv0
Unichain0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd
World Chain0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A
X Layer0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
XPLAxpla1upkjn4mthr0047kahvn0llqx4qpqfn75lnph4jpxfn8walmm8mqsanyy35
+ +=== "Devnet" + +
Chain NameContract Address
Ethereum0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
SolanaBridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o
Algorand1004
Aptos0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017
BNB Smart Chain0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
NEARwormhole.test.near
Sui0x5a5160ca3c2037f4b4051344096ef7a48ebf4400b3f385e57ea90e1628a8bde0
Terraterra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au
Terra 2.0terra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au
+ + + +## Token Bridge + + + + +=== "Mainnet" + +
Chain NameContract Address
Ethereum0x3ee18B2214AFF97000D974cf647E7C347E8fa585
SolanawormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
Acala0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Algorand842126029
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum0x0b2402144Bb366A632D14B83F244D2e0e21bD39c
Avalanche0x0e082F06FF657D94310cB8cE8B0D9a04541d8052
Base0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627
Berachain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Blast0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
BNB Smart Chain0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7
Celo0x796Dff6D74F3E27060B71255Fe517BFb23C93eed
Fantom0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
Injectiveinj1ghd753shjuwexxywmgs4xz7x2q732vcnxxynfn
Ink0x3Ff72741fd67D6AD0668d93B41a09248F4700560
Kaia0x5b08ac39EAED75c0439FC750d9FE7E1F9dD0193F
Karura0xae9d7fe007b3327AA64A32824Aaac52C42a6E624
Mantle0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Moonbeam0xb1731c586ca89a23809861c6103f0b96b3f57d92
NEARcontract.portalbridge.near
Oasis0x5848C791e09901b40A9Ef749f2a6735b418d7564
Optimism0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b
Polygon0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE
Scroll0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d
Seisei1smzlm9t79kur392nu9egl8p8je9j92q4gzguewj56a05kyxxra0qy0nuf3
SNAXchain0x8B94bfE456B48a6025b92E11Be393BAa86e68410
Sui0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9
Terraterra10nmmwe8r3g99a9newtqa7a75xfgs2e8z87r2sf
Terra 2.0terra153366q50k7t8nn7gec00hg66crnhkdggpgdtaxltaq6xrutkkz3s992fw9
Unichain0x3Ff72741fd67D6AD0668d93B41a09248F4700560
World Chain0xc309275443519adca74c9136b02A38eF96E3a1f6
X Layer0x5537857664B0f9eFe38C9f320F75fEf23234D904
XPLAxpla137w0wfch2dfmz7jl2ap8pcmswasj8kg06ay4dtjzw7tzkn77ufxqfw7acv
+ +=== "Testnet" + +
Chain NameContract Address
Ethereum Holesky0x76d093BbaE4529a342080546cAFEec4AcbA59EC6
Ethereum Sepolia0xDB5492265f6038831E89f495670FF909aDe94bd9
SolanaDZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe
Acala0xe157115ef34c93145Fec2FE53706846853B07F42
Algorand86525641
Aptos0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f
Arbitrum Sepolia0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Avalanche0x61E44E506Ca5659E6c0bba9b678586fA2d729756
Base Sepolia0x86F55A04690fd7815A3D802bD587e83eA888B239
Berachain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Blast0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
BNB Smart Chain0x9dcF9D205C9De35334D646BeE44b2D2859712A09
Celo0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153
Fantom0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
HyperEVM0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78
Injectiveinj1q0e70vhrv063eah90mu97sazhywmeegp7myvnh
Ink0x376428e7f26D5867e69201b275553C45B09EE090
Kaia0xC7A13BE098720840dEa132D860fDfa030884b09A
Karura0xe157115ef34c93145Fec2FE53706846853B07F42
Linea0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Mantle0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D
Mezo0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780
Monad0xF323dcDe4d33efe83cf455F78F9F6cc656e6B659
Moonbeam0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96
Movement0xda075f9cb681e291c17e65562bdd6d4196c7d2f86da1aa3917f2809ff8edb03d
NEARtoken.wormhole.testnet
Neon0xEe3dB83916Ccdc3593b734F7F2d16D630F39F1D0
Oasis0x88d8004A9BdbfD9D28090A02010C19897a29605c
Optimism Sepolia0x99737Ec4B815d816c49A385943baf0380e75c0Ac
Polygon Amoy0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e
Scroll0x22427d90B7dA3fA4642F7025A854c7254E4e45BF
Seisei1jv5xw094mclanxt5emammy875qelf3v62u4tl4lp5nhte3w3s9ts9w9az2
Seievm0x23908A62110e21C04F3A4e011d24F901F911744A
SNAXchain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
Sui0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da
Terraterra1pseddrv0yfsn76u4zxrjmtf45kdlmalswdv39a
Terra 2.0terra1c02vds4uhgtrmcw7ldlg75zumdqxr8hwf7npseuf2h58jzhpgjxsgmwkvk
Unichain0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a
World Chain0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2
X Layer0xdA91a06299BBF302091B053c6B9EF86Eff0f930D
XPLAxpla1kek6zgdaxcsu35nqfsyvs2t9vs87dqkkq6hjdgczacysjn67vt8sern93x
+ +=== "Devnet" + +
Chain NameContract Address
Ethereum0x0290FB167208Af455bB137780163b7B7a9a10C16
SolanaB6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE
Algorand1006
Aptos0x84a5f374d29fc77e370014dce4fd6a55b58ad608de8074b0be5571701724da31
BNB Smart Chain0x0290FB167208Af455bB137780163b7B7a9a10C16
NEARtoken.test.near
Sui0xa6a3da85bbe05da5bfd953708d56f1a3a023e7fb58e5a824a3d4de3791e8f690
Terraterra1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrquka9l6
Terra 2.0terra1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrquka9l6
+ + + +## Wormhole Relayer + + + + +=== "Mainnet" + +
Chain NameContract Address
Ethereum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Arbitrum0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Avalanche0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Base0x706f82e9bb5b0813501714ab5974216704980e31
Berachain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Blast0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
BNB Smart Chain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Celo0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Fantom0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Ink0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Kaia0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Mantle0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Moonbeam0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Optimism0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Polygon0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Scroll0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
SNAXchain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
Unichain0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
World Chain0x1520cc9e779c56dab5866bebfb885c86840c33d3
X Layer0x27428DD2d3DD32A4D7f7C497eAaa23130d894911
+ +=== "Testnet" + +
Chain NameContract Address
Ethereum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Arbitrum Sepolia0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Avalanche0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB
Base Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Berachain0x362fca37E45fe1096b42021b543f462D49a5C8df
BNB Smart Chain0x80aC94316391752A193C1c47E27D382b507c93F3
Celo0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84
Fantom0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470
Ink0x362fca37E45fe1096b42021b543f462D49a5C8df
Monad0x362fca37E45fe1096b42021b543f462D49a5C8df
Moonbeam0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0
Optimism Sepolia0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE
Seievm0x362fca37E45fe1096b42021b543f462D49a5C8df
Unichain0x362fca37E45fe1096b42021b543f462D49a5C8df
+ +=== "Devnet" + +
Chain NameContract Address
Ethereum0xcC680D088586c09c3E0E099a676FA4b6e42467b4
BNB Smart Chain0xcC680D088586c09c3E0E099a676FA4b6e42467b4
+ + + +## CCTP + + + + +=== "Mainnet" + +
Chain NameContract Address
Ethereum0xAaDA05BD399372f0b0463744C09113c137636f6a
Arbitrum0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Avalanche0x09Fb06A271faFf70A651047395AaEb6265265F13
Base0x03faBB06Fa052557143dC28eFCFc63FC12843f1D
Optimism0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Polygon0x0FF28217dCc90372345954563486528aa865cDd6
+ +=== "Testnet" + +
Chain NameContract Address
Ethereum Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Arbitrum Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Avalanche0x58f4c17449c90665891c42e14d34aae7a26a472e
Base Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
Optimism Sepolia0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c
+ +=== "Devnet" + + N/A + + + +## Read-Only Deployments + +=== "Mainnet" + +
Chain NameContract Address
Corn0xa683c66045ad16abb1bCE5ad46A64d95f9A25785
Gnosis0xa321448d90d4e5b0A732867c18eA198e75CAC48E
Goat0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
LightLink0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Rootstock0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6
Sonic0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Telos0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
+ +!!!note + Read-only deployments allow Wormhole messages to be received on chains not fully integrated with Wormhole Guardians. These deployments support cross-chain data verification but cannot originate messages. For example, a governance message can be sent from a fully integrated chain and processed on a read-only chain, but the read-only chain cannot send messages back. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/reference/ +--- BEGIN CONTENT --- +--- +title: Reference +description: Find essential reference information for development, including canonical contract addresses, Wormhole chain IDs, and Wormhole finality levels for Guardians. +--- + +# Reference + +## Get Started + +In this section, you'll find reference information that is essential for development. This includes Wormhole chain IDs, canonical contract addresses, and finality levels for Guardians for each of the supported blockchains in the Wormhole ecosystem. + +
+ +- :octicons-list-ordered-16:{ .lg .middle } **Chain IDs** + + --- + + Find a mapping of Wormhole chain IDs to the names and network IDs of the supported blockchains. + + [:custom-arrow: View list of chain IDs](/docs/build/reference/chain-ids/) + +- :material-timer-sand:{ .lg .middle } **Wormhole Finality** + + --- + + See the levels of finality (consistency) a transaction should meet before being signed by a Guardian for each network. + + [:custom-arrow: View list of finality levels](/docs/build/reference/consistency-levels/) + +- :octicons-file-code-16:{ .lg .middle } **Contract Addresses** + + --- + + Discover the contract addresses for Wormhole-deployed contracts on each of the supported blockchains. + + This includes the following protocol contracts: + + - Core Contract + - Token Bridge + - NFT Bridge + - Wormhole relayer + - CCTP + + [:custom-arrow: View list of contract addresses](/docs/build/reference/contract-addresses/) + +- :octicons-checkbox-16:{ .lg .middle } **Wormhole Formatted Addresses** + + --- + + Learn how Wormhole formats addresses into a 32-byte hex format for cross-chain compatibility. + + This includes converting addresses between their native formats and the Wormhole format across multiple blockchains. + + [:custom-arrow: View details on Wormhole formatted addresses](/docs/build/reference/wormhole-formatted-addresses/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/reference/wormhole-formatted-addresses/ +--- BEGIN CONTENT --- +--- +title: Wormhole Formatted Addresses +description: Explanation of Wormhole formatted 32-byte hex addresses, their conversion, and usage across different blockchain platforms. +--- + +# Wormhole Formatted Addresses + +## Introduction + +Wormhole formatted addresses are 32-byte hex representations of addresses from any supported blockchain. Whether an address originates from EVM, Solana, Cosmos, or another ecosystem, Wormhole standardizes all addresses into this format to ensure cross-chain compatibility. + +This uniform format is essential for smooth interoperability in token transfers and messaging across chains. Wormhole uses formatted addresses throughout the [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank}, especially in cross-chain transactions, such as transfer functions that utilize the `bytes32` representation for recipient addresses. + +## Platform-Specific Address Formats + +Each blockchain ecosystem Wormhole supports has its method for formatting native addresses. To enable cross-chain compatibility, Wormhole converts these native addresses into the standardized 32-byte hex format. + +Here’s an overview of the native address formats and how they are normalized to the Wormhole format: + +| Platform | Native Address Format | Wormhole Formatted Address | +|-----------------|----------------------------------|----------------------------| +| EVM | Hex (e.g., 0x...) | 32-byte Hex | +| Solana | Base58 | 32-byte Hex | +| CosmWasm | Bech32 | 32-byte Hex | +| Algorand | Algorand App ID | 32-byte Hex | +| Sui | Hex | 32-byte Hex | +| Aptos | Hex | 32-byte Hex | +| Near | SHA-256 | 32-byte Hex | + +These conversions allow Wormhole to interact seamlessly with various chains using a uniform format for all addresses. + +### Address Format Handling + +The Wormhole SDK provides mappings that associate each platform with its native address format. You can find this mapping in the Wormhole SDK file [`platforms.ts`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/007f61b27c650c1cf0fada2436f79940dfa4f211/core/base/src/constants/platforms.ts#L93-L102){target=\_blank}: + +```typescript +const platformAddressFormatEntries = [ + ['Evm', 'hex'], + ['Solana', 'base58'], + ['Cosmwasm', 'bech32'], + ['Algorand', 'algorandAppId'], + ['Sui', 'hex'], + ['Aptos', 'hex'], + ['Near', 'sha256'], +]; +``` + +These entries define how the [`UniversalAddress`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/007f61b27c650c1cf0fada2436f79940dfa4f211/core/definitions/src/universalAddress.ts#L23){target=\_blank} class handles different address formats based on the platform. + +## Universal Address Methods + +The `UniversalAddress` class is essential for working with Wormhole formatted addresses. It converts native blockchain addresses into the standardized 32-byte hex format used across Wormhole operations. + +Key functions: + + - **`new UniversalAddress()`** - use the `UniversalAddress` constructor to convert native addresses into the Wormhole format + + ```typescript + const universalAddress = new UniversalAddress('0x123...', 'hex'); + ``` + + - **`toUniversalAddress()`** - converts a platform-specific address into the Wormhole formatted 32-byte hex address + + ```typescript + const ethAddress: NativeAddress<'Evm'> = toNative('Ethereum', '0x0C9...'); + const universalAddress = ethAddress.toUniversalAddress().toString(); + ``` + + - **`toNative()`** - converts the Wormhole formatted address back to a native address for a specific blockchain platform + + ```typescript + const nativeAddress = universalAddress.toNative('Evm'); + ``` + + - **`toString()`** - returns the Wormhole formatted address as a hex string, which can be used in various SDK operations + + ```typescript + console.log(universalAddress.toString()); + ``` + +These methods allow developers to convert between native addresses and the Wormhole format, ensuring cross-chain compatibility. + +## Convert Between Native and Wormhole Formatted Addresses + +The Wormhole SDK allows developers to easily convert between native addresses and Wormhole formatted addresses when building cross-chain applications. + +### Convert a Native Address to a Wormhole Formatted Address + +Example conversions for EVM and Solana: + +=== "EVM" + + ```typescript + import { toNative } from '@wormhole-foundation/sdk-core'; + +const ethAddress: NativeAddress<'Evm'> = toNative( + 'Ethereum', + '0x0C99567DC6f8f1864cafb580797b4B56944EEd28' +); +const universalAddress = ethAddress.toUniversalAddress().toString(); +console.log('Universal Address (EVM):', universalAddress); + ``` + +=== "Solana" + + ```typescript + import { toNative } from '@wormhole-foundation/sdk-core'; + +const solAddress: NativeAddress<'Solana'> = toNative( + 'Solana', + '6zZHv9EiqQYcdg52ueADRY6NbCXa37VKPngEHaokZq5J' +); +const universalAddressSol = solAddress.toUniversalAddress().toString(); +console.log('Universal Address (Solana):', universalAddressSol); + ``` + +The result is a standardized address format that is ready for cross-chain operations. + +### Convert Back to Native Addresses + +Below is how you can convert a Wormhole formatted address back to an EVM or Solana native address: + +```typescript +const nativeAddressEvm = universalAddress.toNative('Evm'); +console.log('EVM Native Address:', nativeAddressEvm); + +const nativeAddressSolana = universalAddress.toNative('Solana'); +console.log('Solana Native Address:', nativeAddressSolana); +``` + +These conversions ensure that your cross-chain applications can seamlessly handle addresses across different ecosystems. + +## Use Cases for Wormhole Formatted Addresses + +### Cross-chain Token Transfers + +Cross-chain token transfers require addresses to be converted into a standard format. For example, when transferring tokens from Ethereum to Solana, the Ethereum address is converted into a Wormhole formatted address to ensure compatibility. After the transfer, the Wormhole formatted address is converted back into the Solana native format. + +### Smart Contract Interactions + +In smart contract interactions, especially when building dApps that communicate across multiple chains, Wormhole formatted addresses provide a uniform way to reference addresses. This ensures that addresses from different blockchains can interact seamlessly, whether you're sending messages or making cross-chain contract calls. + +### DApp Development + +For cross-chain dApp development, Wormhole formatted addresses simplify handling user wallet addresses across various blockchains. This allows developers to manage addresses consistently, regardless of whether they work with EVM, Solana, or another supported platform. + +### Relayers and Infrastructure + +Finally, relayers and infrastructure components, such as Wormhole Guardians, rely on the standardized format to efficiently process and relay cross-chain messages. A uniform address format simplifies operations, ensuring smooth interoperability across multiple blockchains. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/start-building/ +--- BEGIN CONTENT --- +--- +title: Start Building +description: This section has all you need to start developing with Wormhole, including a guide to supported networks, tool sets, and code examples. +--- + +# Start Building + +## Introduction + +Wormhole's role as a Generic Message Passing (GMP) protocol means it facilitates interoperability across multiple areas of project development. The following sections will help you locate the tools most relevant to your development needs whether you are focused on building frontend user interfaces or smart contracts and protocols. This section also links to developer resources like references and code examples which are helpful for all builders looking to integrate with Wormhole. + +## Get Hands-On + +
+ +- :octicons-repo-16:{ .lg .middle } **Tutorials** + + --- + + Follow in-depth, step-by-step tutorials to learn how to build cross-chain contracts, integrate Wormhole's SDK, and more. + + [:custom-arrow: Explore tutorials](/docs/tutorials/) + +
+ +## Essential Resources for Development + +
+ +- :octicons-broadcast-16:{ .lg .middle } **Supported Networks** + + --- + + Explore the blockchains supported by Wormhole for cross-chain communication and asset transfers. Understand which networks are available for both Testnet and Mainnet environments. + + [:custom-arrow: Discover supported networks](/docs/build/start-building/supported-networks/) + +- :octicons-goal-16:{ .lg .middle } **Testnet Faucets** + + --- + + Get Testnet tokens to start experimenting with cross-chain transfers and contract deployment. + + [:custom-arrow: Find Testnet faucets](/docs/build/start-building/testnet-faucets/) + +- :octicons-list-unordered-16:{ .lg .middle } **Reference** + + --- + + Access the essential Wormhole chain IDs and smart contract addresses for messaging protocols, token bridges, and other key components. + + [:custom-arrow: Explore Reference](/docs/build/reference/){target=\_blank} + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/start-building/products/ +--- BEGIN CONTENT --- +--- +title: Compare Wormhole's Cross-Chain Solutions +description: Compare Wormhole’s cross-chain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. +--- + +# Products + +Wormhole provides a comprehensive suite of cross-chain solutions, enabling seamless asset transfers, data retrieval, and governance across blockchain ecosystems. + +Wormhole provides multiple options for asset transfers: Connect for a plug-and-play bridging UI, Native Token Transfers (NTT) for moving native assets without wrapped representations, and Token Bridge for a secure lock-and-mint mechanism. + +Beyond transfers, Wormhole extends interoperability with tools for cross-chain data access, decentralized governance, and an intent-based protocol through Wormhole Settlement. + +## Transfer Products + +Wormhole offers different solutions for cross-chain asset transfer, each designed for various use cases and integration requirements. + +- [**Connect**](/docs/build/transfers/connect/overview/){target=\_blank} - a pre-built bridging UI for cross-chain token transfers, requiring minimal setup. Best for projects seeking an easy-to-integrate UI for bridging without modifying contracts +- [**Native Token Transfers (NTT)**](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} - a mechanism to transfer native tokens cross-chain seamlessly without conversion to wrapped asset. Best for projects that require maintaining token fungibility and native chain functionality across multiple networks +- [**Token Bridge**](/docs/learn/transfers/token-bridge/){target=\_blank} - a bridging solution that uses a lock and mint mechanism. Best for projects that need cross-chain liquidity using wrapped assets and the ability to send messages +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - a next-generation suite of intent protocols enabling fast multichain transfers, optimizing liquidity flows and interoperability without relying on traditional bridging methods. Best for institutional-scale volume and chain abstraction for application developers + +
+ +::spantable:: + +| | Criteria | Connect | NTT | Token Bridge | +|--------------------------------|---------------------------------------|--------------------|--------------------|----------------------| +| Supported Transfer Types @span | Token Transfers | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| | Token Transfers with Message Payloads | :x: | :x: | :white_check_mark: | +| Supported Assets @span | Wrapped Assets | :white_check_mark: | :x: | :white_check_mark: | +| | Native Assets | :white_check_mark: | :white_check_mark: | :x: | +| | ERC-721s (NFTs) | :white_check_mark: | :x: | :white_check_mark: | +| Features @span | Out-of-the-Box UI | :white_check_mark: | :x: | :x: | +| | Event-Based Actions | :x: | :white_check_mark: | :white_check_mark: | +| Integration Details @span | | | | | +| Requirements @span | Contract Deployment | :x: | :white_check_mark: | :x: | +| | User-Owned Contracts | :x: | :white_check_mark: | :x: | +| Ecosystem Support | Integrates with Other Products | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Ease of Integration | Implementation Complexity | :green_circle: :white_circle: :white_circle:
Low | :green_circle: :green_circle: :white_circle:
Moderate | :green_circle: :green_circle: :white_circle:
Moderate | +| Technology @span | Supported Languages | JavaScript, TypeScript | Solidity (Ethereum), Rust (Solana) | Solidity (Ethereum), Rust (Solana), TypeScript | + +::end-spantable:: + +
+ +Beyond asset transfers, Wormhole provides additional tools for cross-chain data and governance. + +## Real-time Data + +[**Queries**](/docs/build/queries/overview/){target=\_blank} is a data retrieval service to fetch on-chain data from multiple networks. Best for applications that need multichain analytics, reporting, and data aggregation. + +## Multichain Governance + +[**MultiGov**](/docs/learn/governance/overview/){target=\_blank} is a unified governance framework that manages multichain protocol governance through a single mechanism. Best for projects managing multichain governance and protocol updates. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/start-building/supported-networks/ +--- BEGIN CONTENT --- +--- +title: Supported Networks +description: Learn about the compatible environments and individual networks that Wormhole supports. Readers can click on each of the blockchain logos for more information. +--- + +# Supported Networks + +Wormhole supports several different blockchains and environments. Since many of the concepts for using Wormhole within a given blockchain environment are the same, this section is organized by environment, and individual chains are detailed within the environment page. + +## Supported Environments + +- [EVM (Ethereum and compatible chains)](#evm) +- [SVM (Solana and compatible chains)](#svm) +- [CosmWasm (Cosmos ecosystem chains)](#cosmwasm) +- [AVM (Algorand)](#avm) +- [NEAR VM (NEAR)](#near-vm) +- [Move VM (Aptos)](#move-vm) +- [Sui Move VM (Sui)](#sui-move-vm) + +## Supported Blockchains by Environment + + + +
+ +### EVM + +
BlockchainEnvironmentMainnetTestnetQuick Links
EthereumEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
AcalaEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
ArbitrumEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
AvalancheEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BaseEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BerachainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BlastEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BNB Smart ChainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
CeloEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
FantomEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
GnosisEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
HyperEVMEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
InkEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
KaiaEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
KaruraEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
LineaEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MantleEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MezoEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MonadEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MoonbeamEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
NeonEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OasisEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OptimismEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
PolygonEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
ScrollEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
SeievmEVM:x::white_check_mark:
SNAXchainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
UnichainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
World ChainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
X LayerEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### SVM + +
BlockchainEnvironmentMainnetTestnetQuick Links
SolanaSVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
PythnetSVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### AVM + +
BlockchainEnvironmentMainnetTestnetQuick Links
AlgorandAVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### CosmWasm + +
BlockchainEnvironmentMainnetTestnetQuick Links
InjectiveCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
NeutronCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OsmosisCosmWasm:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
SeiCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
TerraCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
Terra 2.0CosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
XPLACosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### Move VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MovementMove VM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### NEAR VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
NEARNEAR VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### Sui Move VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
SuiSui Move VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +
+ +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/start-building/testnet-faucets/ +--- BEGIN CONTENT --- +--- +title: Testnet Faucets +description: This page includes resources to quickly find the Testnet tokens you need to deploy and test applications and contracts on Wormhole's supported networks. +--- + +# Testnet Faucets + +## Get Started + +Don't let the need for testnet tokens get in the way of buildling your next great idea with Wormhole. Use this guide to quickly locate the testnet token faucets you need to deploy and test applications and contracts on Wormhole's supported networks. + + + + +
+ +### EVM + +
TestnetEnvironmentTokenFaucet
Ethereum HoleskyEVMETHAlchemy Faucet
Ethereum SepoliaEVMETHAlchemy Faucet
AcalaEVMACADiscord Faucet
Arbitrum SepoliaEVMETHList of Faucets
AvalancheEVMAVAXOfficial Avalanche Faucet
Base SepoliaEVMETHList of Faucets
BerachainEVMBERAOfficial Berachain Faucet
BlastEVMETHList of Faucets
BNB Smart ChainEVMBNBOfficial BNB Faucet
CeloEVMCELOOfficial Celo Faucet
FantomEVMFTMOfficial Fantom Faucet
GnosisEVMxDAIOfficial Gnosis Faucet
HyperEVMEVMmock USDCOfficial Hyperliquid Faucet
InkEVMETHOfficial Ink Faucet
KaiaEVMKAIAOfficial Kaia Faucet
KaruraEVMACADiscord Faucet
LineaEVMETHList of Faucets
MantleEVMMNTOfficial Mantle Faucet
MonadEVMMONOfficial Monad Faucet
MoonbeamEVMDEVOfficial Moonbeam Faucet
NeonEVMNEONOfficial Neon Faucet
OasisEVMTESTOfficial Oasis Faucet
Optimism SepoliaEVMETHSuperchain Faucet
Polygon AmoyEVMPOLOfficial Polygon Faucet
ScrollEVMETHList of Faucets
UnichainEVMETHQuickNode Faucet
World ChainEVMETHAlchemy Faucet
X LayerEVMOKBX Layer Official Faucet
+ +### SVM + +
TestnetEnvironmentTokenFaucet
PythnetSVMETHSuperchain Faucet
+ +### AVM + +
TestnetEnvironmentTokenFaucet
AlgorandAVMALGOOfficial Algorand Faucet
+ +### CosmWasm + +
TestnetEnvironmentTokenFaucet
CelestiaCosmWasmTIADiscord Faucet
Cosmos HubCosmWasmATOMDiscord Faucet
EvmosCosmWasmTEVMOSOfficial Evmos Faucet
InjectiveCosmWasmINJOfficial Injective Faucet
KujiraCosmWasmKUJIDiscord Faucet
NeutronCosmWasmNTRNList of Faucets
NobleCosmWasmUSDCCircle Faucet
OsmosisCosmWasmOSMOOfficial Osmosis Faucet
SEDACosmWasmSEDAOfficial SEDA Faucet
SeiCosmWasmSEISei Atlantic-2 Faucet
TerraCosmWasmLUNATerra Official Faucet
Terra 2.0CosmWasmLUNATerra Official Faucet
XPLACosmWasmXPLAXPLA Official Faucet
+ +### Move VM + +
TestnetEnvironmentTokenFaucet
AptosMove VMAPTOfficial Aptos Faucet
MovementMove VMundefinedOfficial Movement Faucet
+ +### NEAR VM + +
TestnetEnvironmentTokenFaucet
NEARNEAR VMNEAROfficial NEAR Faucet
+ +### Sui Move VM + +
TestnetEnvironmentTokenFaucet
SuiSui Move VMSUIList of Faucets
+ +
+ +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/start-building/use-cases/ +--- BEGIN CONTENT --- +--- +title: Use Cases +description: Explore Wormhole's use cases, from cross-chain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. +--- + +# Wormhole Use Cases + +
+
+ +## Cross-Chain Swaps and Liquidity Aggregation + +Enable seamless swaps between chains with real-time liquidity routing. + +
+
+ +🛠 **Wormhole products used:** + +- [**Wormhole Connect**](/docs/build/transfers/connect/overview/){target=\_blank} – handles user-friendly asset transfers +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – moves native assets across chains +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time prices for optimal trade execution + +🔗 **Used in:** Decentralized exchanges (DEXs) and liquidity aggregators
🏗️ **Used by:** [StellaSwap](https://app.stellaswap.com/exchange/swap){target=\_blank} + +
+
+ + +
+
+ +## Borrowing and Lending Across Chains + +Let users borrow assets on one chain using collateral from another. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – moves loan requests and liquidations across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers collateral as native assets +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches interest rates and asset prices in real-time + +🔗 **Used in:** Lending protocols and yield platforms
🏗️ **Used by:** [Folks Finance](https://wormhole.com/case-studies/folks-finance){target=\_blank} + +
+
+ + +
+
+ +## Real-Time Price Feeds and Trading Strategies + +Fetch price feeds across multiple chains for DeFi applications. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches price feeds from oracles and trading platforms +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – sends signals to execute trades + +🔗 **Used in:** Trading bots, arbitrage platforms, and oracles
🏗️ **Used by:** [Infinex](https://wormhole.com/case-studies/infinex){target=\_blank} + +
+
+ + +
+
+ +## Asset Movement Between Bitcoin and Other Chains + +Enable direct BTC transfers without wrapped assets. + +
+
+ +🛠 **Wormhole products used:** + +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers BTC across chains + +🔗 **Used in:** Bitcoin DeFi and lightning network integrations
🏗️ **Used by:** [Synonym](https://wormhole.com/case-studies/synonym){target=\_blank} + +
+
+ +
+
+ +## Decentralized Social Platforms + +Enable seamless communication and asset transfer across decentralized social networks. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – facilitates decentralized interactions +- [**Token Bridge**](/docs/build/transfers/token-bridge/){target=\_blank} – enables cross-chain tokenized rewards + +🔗 **Used in:** Web3 social networks and content monetization
🏗️ **Used by:** [Chingari](https://chingari.io/){target=\_blank} + +
+
+ + +
+
+ +## Memecoin Launchpads + +Launch and distribute memecoins across multiple chains, enabling cross-chain fundraising and liquidity access. + +
+
+ +🛠 **Wormhole products used:** + +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – enables native asset transfers for seamless fundraising +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – facilitates cross-chain token distribution and claim processes + +🔗 **Used in:** Token launchpads, IDOs, and meme token ecosystems + +
+
+ + +
+
+ +## Cross-Chain Perpetuals + +Enable leveraged perpetual trading across chains with seamless collateral and liquidity management. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time asset prices and manages position state across chains +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - for quick cross-chain token execution, providing efficient and seamless user experiences + +🔗 **Used in:** Perpetual DEXs, trading platforms and cross-chain derivatives + +
+
+ + +
+
+ +## Gas Abstraction + +Allow users to pay gas fees with any token across different networks, removing friction in multichain interactions. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – routes gas fee payments across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – facilitates native token conversion for gas payments + +🔗 **Used in:** Wallets, dApps, and multichain user experience improvements + +
+
+ + +
+
+ +## Bridging Intent Library + +Provide developers with a library of bridging intents and automation functions, enabling plug-and-play interoperability logic. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – enables predefined cross-chain actions and triggers. +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} - provides a framework for executing user-defined bridging intents + +🔗 **Used in:** Bridging protocols, DeFi automation, and smart contract libraries + +
+
+ + +
+
+ +## Multichain Prediction Markets + +Allow users to place bets, manage positions, and receive payouts seamlessly across different networks. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches real-time market data, tracks collateral, and manages odds across chains +- [**Wormhole Settlement**](/docs/learn/transfers/settlement/overview/){target=\_blank} – automates token execution for efficient and seamless cross-chain prediction market interactions + +🔗 **Used in:** Decentralized betting, prediction markets, and cross-chain gaming + +
+
+ + +
+
+ +## Cross-Chain Payment Widgets + +Allow merchants and platforms to accept payments in any token, auto-converting them into a desired asset. + +
+
+ +🛠 **Wormhole products used:** + +- [**Wormhole Connect**](/docs/build/transfers/connect/overview/){target=\_blank} – facilitates seamless payments in various tokens +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – ensures direct, native asset transfers + +🔗 **Used in:** E-commerce, Web3 payments, and subscription models + +
+
+ + +
+
+ +## Oracle Networks + +Fetch and verify cross-chain data, enabling reliable, decentralized Oracle services for multichain applications. + +
+
+ +🛠 **Wormhole products used:** + +- [**Queries**](/docs/build/queries/overview/){target=\_blank} – fetches data from multiple chains and Oracle providers +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – ensures tamper-proof data relay across networks + +🔗 **Used in:** Price feeds, DeFi protocols, and smart contract automation
🏗️ **Used by:** [Pyth](https://wormhole.com/case-studies/pyth){target=\_blank} + +
+
+ + +
+
+ +## Cross-Chain Staking + +Enable users to stake assets on one chain while earning rewards or securing networks on another. + +
+
+ +🛠 **Wormhole products used:** + +- [**Messaging**](/docs/learn/infrastructure/){target=\_blank} – moves staking rewards and governance signals across chains +- [**Native Token Transfer**](/docs/build/transfers/native-token-transfers/){target=\_blank} – transfers staked assets natively between networks + +🔗 **Used in:** Liquid staking, cross-chain governance, and PoS networks
🏗️ **Used by:** [Lido](https://lido.fi/){target=\_blank} + +
+
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/cli/ +--- BEGIN CONTENT --- +--- +title: Wormhole CLI +description: Learn how to install and use the Wormhole CLI, including commands and examples for managing multichain deployments, generating VAAs, and querying contract info. +--- + +# Wormhole CLI + +This tool is a command-line interface to Wormhole, allowing you to perform various actions, such as querying a transaction's status or submitting token transfers. + +## Installation + +Clone the repository and change directories to the appropriate directory: + +```bash +git clone https://github.com/wormhole-foundation/wormhole && +cd wormhole/clients/js +``` + +Build and install the CLI tool: + +```bash +make install +``` + +This installs two binaries, `worm-fetch-governance` and `worm` on your `$PATH`. To use `worm`, set up `$HOME/.wormhole/.env` with your private keys, based on `.env.sample` in this folder. + +## Usage + +You can interact with the Wormhole CLI by typing `worm` and including the `command` and any necessary subcommands and parameters. + +| Command | Description | +|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| +| `worm aptos INSERT_COMMAND` | Aptos utilities | +| `worm edit-vaa INSERT_COMMAND` | Edits or generates a VAA | +| `worm evm INSERT_COMMAND` | EVM utilities | +| `worm generate INSERT_COMMAND` | Generate VAAs (Devnet and Testnet only) | +| `worm info INSERT_COMMAND` | Contract, chain, RPC, and address information utilities | +| `worm near INSERT_NETWORK, INSERT_ACCOUNT` | NEAR utilities | +| `worm parse INSERT_VAA` | Parse a VAA (can be in either hex or base64 format) | +| `worm recover INSERT_DIGEST INSERT_SIGNATURE` | Recover an address from a signature | +| `worm status INSERT_NETWORK, INSERT_CHAIN, INSERT_TXN_HASH` | Prints information about the automatic delivery initiated on the specified network, chain, and transaction hash | +| `worm submit INSERT_VAA` | Execute a VAA | +| `worm sui INSERT_COMMAND` | Sui utilities | +| `worm transfer INSERT_SOURCE_CHAIN, INSERT_DESTINATION_CHAIN, INSERT_DESTINATION_ADDRESS, INSERT_AMOUNT, INSERT_NETWORK` | Transfers a token | +| `worm verify-vaa INSERT_VAA, INSERT_NETWORK` | Verifies a VAA by querying the Core Contract on Ethereum | + +You can also refer to the below options, available with all `worm` commands: + +```bash +Options: + --help Show help [boolean] + --version Show version number [boolean] +``` + +### Subcommands + +??? code "Aptos" + ```bash + worm aptos INSERT_COMMAND + +Commands: + worm aptos init-token-bridge Init token bridge contract + worm aptos init-wormhole Init Wormhole core contract + worm aptos deploy Deploy an Aptos package + worm aptos deploy-resource Deploy an Aptos package using a + resource account + worm aptos send-example-message Send example message + + worm aptos derive-resource-account Derive resource account address + + worm aptos derive-wrapped-address Derive wrapped coin type + + worm aptos hash-contracts Hash contract bytecodes for upgrade + worm aptos upgrade Perform upgrade after VAA has been + submitted + worm aptos migrate Perform migration after contract + upgrade + worm aptos faucet Request money from the faucet for a + given account + worm aptos start-validator Start a local aptos validator + +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` + +??? code "Edit VAA" + ```bash + worm edit-vaa INSERT_COMMAND + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -v, --vaa vaa in hex format [string] [required] + -n, --network Network + [required] [choices: "mainnet", "testnet", "devnet"] + --guardian-set-index, --gsi guardian set index [number] + --signatures, --sigs comma separated list of signatures [string] + --wormscanurl, --wsu url to wormscan entry for the vaa that + includes signatures [string] + --wormscan, --ws if specified, will query the wormscan entry + for the vaa to get the signatures [boolean] + --emitter-chain-id, --ec emitter chain id to be used in the vaa + [number] + --emitter-address, --ea emitter address to be used in the vaa[string] + --nonce, --no nonce to be used in the vaa [number] + --sequence, --seq sequence number to be used in the vaa[string] + --consistency-level, --cl consistency level to be used in the vaa + [number] + --timestamp, --ts timestamp to be used in the vaa in unix + seconds [number] + -p, --payload payload in hex format [string] + --guardian-secret, --gs Guardian's secret key [string] + ``` + +??? code "EVM" + ```bash + worm evm INSERT_COMMAND + +Commands: + worm evm address-from-secret Compute a 20 byte eth address from a 32 + byte private key + worm evm storage-update Update a storage slot on an EVM fork + during testing (anvil or hardhat) + worm evm chains Return all EVM chains + worm evm info Query info about the on-chain state of + the contract + worm evm hijack Override the guardian set of the core + bridge contract during testing (anvil + or hardhat) + worm evm start-validator Start a local EVM validator + +Options: + --help Show help [boolean] + --version Show version number [boolean] + --rpc RPC endpoint [string] + ``` + +??? code "Generate" + ```bash + worm generate INSERT_COMMAND + +Commands: + worm generate registration Generate registration VAA + worm generate upgrade Generate contract upgrade VAA + worm generate attestation Generate a token attestation VAA + worm generate recover-chain-id Generate a recover chain ID VAA + worm generate Sets the default delivery provider + set-default-delivery-provider for the Wormhole Relayer contract + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -g, --guardian-secret Guardians' secret keys (CSV) [string] [required] + ``` + +??? code "Info" + ```bash + worm info INSERT_COMMAND + +Commands: + worm info chain-id Print the wormhole chain ID integer + associated with the specified chain + name + worm info contract Print contract address + + worm info emitter
Print address in emitter address + format + worm info origin
Print the origin chain and address + of the asset that corresponds to the + given chain and address. + worm info registrations Print chain registrations + + worm info rpc Print RPC address + worm info wrapped Print the wrapped address on the + target chain that corresponds with + the specified origin chain and + address. + +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` + +??? code "NEAR" + ```bash + worm near INSERT_COMMAND + +Commands: + worm near contract-update Submit a contract update using our specific + APIs + worm near deploy Submit a contract update using near APIs + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -m, --module Module to query [choices: "Core", "NFTBridge", "TokenBridge"] + -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] + --account Near deployment account [string] [required] + --attach Attach some near [string] + --target Near account to upgrade [string] + --mnemonic Near private keys [string] + --key Near private key [string] + -r, --rpc Override default rpc endpoint url [string] + ``` + +??? code "Parse" + ```bash + worm parse INSERT_VAA + +Positionals: + vaa vaa [string] + +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` + +??? code "Recover" + ```bash + worm recover INSERT_DIGEST INSERT_SIGNATURE + +Positionals: + digest digest [string] + signature signature [string] + +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` + +??? code "Status" + ```bash + worm status INSERT_NETWORK, INSERT_CHAIN, INSERT_TXN_HASH + +Positionals: + network Network [choices: + 'mainnet', + 'testnet', + 'devnet'] + chain Source chain + [choices: + 'unset', + 'solana', + 'ethereum', + 'terra', + 'bsc', + 'polygon', + 'avalanche', + 'oasis', + 'algorand', + 'aurora', + 'fantom', + 'karura', + 'acala', + 'klaytn', + 'celo', + 'near', + 'moonbeam', + 'neon', + 'terra2', + 'injective', + 'osmosis', + 'sui', + 'aptos', + 'arbitrum', + 'optimism', + 'gnosis', + 'pythnet', + 'xpla', + 'btc', + 'base', + 'sei', + 'rootstock', + 'scroll', + 'mantle', + 'blast', + 'xlayer', + 'linea', + 'berachain', + 'seievm', + 'wormchain', + 'cosmoshub', + 'evmos', + 'kujira', + 'neutron', + 'celestia', + 'stargaze', + 'seda', + 'dymension', + 'provenance', + 'sepolia', + 'arbitrum_sepolia', + 'base_sepolia', + 'optimism_sepolia', + 'holesky', + 'polygon_sepolia'] + tx Source transaction hash [string] + +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` + +??? code "Submit" + ```bash + worm submit INSERT_VAA + +Positionals: + vaa vaa [string] + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -c, --chain chain name +[choices: 'unset', + 'solana', + 'ethereum', + 'terra', + 'bsc', + 'polygon', + 'avalanche', + 'oasis', + 'algorand', + 'aurora', + 'fantom', + 'karura', + 'acala', + 'klaytn', + 'celo', + 'near', + 'moonbeam', + 'neon', + 'terra2', + 'injective', + 'osmosis', + 'sui', + 'aptos', + 'arbitrum', + 'optimism', + 'gnosis', + 'pythnet', + 'xpla', + 'btc', + 'base', + 'sei', + 'rootstock', + 'scroll', + 'mantle', + 'blast', + 'xlayer', + 'linea', + 'berachain', + 'seievm', + 'wormchain', + 'cosmoshub', + 'evmos', + 'kujira', + 'neutron', + 'celestia', + 'stargaze', + 'seda', + 'dymension', + 'provenance', + 'sepolia', + 'arbitrum_sepolia', + 'base_sepolia', + 'optimism_sepolia', + 'holesky', + 'polygon_sepolia'] + -n, --network Network + [required] + [choices: + 'mainnet', + 'testnet', + 'devnet'] + -a, --contract-address Contract to submit VAA to (override config) [string] + --rpc RPC endpoint [string] + --all-chains, --ac Submit the VAA to all chains except for the origin + chain specified in the payload + [boolean] [default: false] + ``` + +??? code "Sui" + ```bash + worm sui INSERT_COMMAND + +Commands: + worm sui build-coin Build wrapped coin and dump bytecode. + + Example: + worm sui build-coin -d 8 -v V__0_1_1 -n + testnet -r + "https://fullnode.testnet.sui.io:443" + worm sui deploy Deploy a Sui package + worm sui init-example-message-app Initialize example core message app + worm sui init-token-bridge Initialize token bridge contract + worm sui init-wormhole Initialize wormhole core contract + worm sui publish-example-message Publish message from example app via + core bridge + worm sui setup-devnet Setup devnet by deploying and + initializing core and token bridges and + submitting chain registrations. + worm sui objects Get owned objects by owner + worm sui package-id Get package ID from State object ID + worm sui tx Get transaction details + +Options: + --help Show help [boolean] + --version Show version number [boolean] + ``` + +??? code "Transfer" + ```bash + worm transfer INSERT_SOURCE_CHAIN, INSERT_DESTINATION_CHAIN, INSERT_DESTINATION_ADDRESS, INSERT_AMOUNT, INSERT_NETWORK + +Options: + --help Show help [boolean] + --version Show version number [boolean] + --src-chain source chain [required] [choices: + 'solana', + 'ethereum', + 'terra', + 'bsc', + 'polygon', + 'avalanche', + 'oasis', + 'algorand', + 'aurora', + 'fantom', + 'karura', + 'acala', + 'klaytn', + 'celo', + 'near', + 'moonbeam', + 'neon', + 'terra2', + 'injective', + 'osmosis', + 'sui', + 'aptos', + 'arbitrum', + 'optimism', + 'gnosis', + 'pythnet', + 'xpla', + 'btc', + 'base', + 'sei', + 'rootstock', + 'scroll', + 'mantle', + 'blast', + 'xlayer', + 'linea', + 'berachain', + 'seievm', + 'wormchain', + 'cosmoshub', + 'evmos', + 'kujira', + 'neutron', + 'celestia', + 'stargaze', + 'seda', + 'dymension', + 'provenance', + 'sepolia', + 'arbitrum_sepolia', + 'base_sepolia', + 'optimism_sepolia', + 'holesky', + 'polygon_sepolia'] + --dst-chain destination chain + [required] [choices: + 'solana', + 'ethereum', + 'terra', + 'bsc', + 'polygon', + 'avalanche', + 'oasis', + 'algorand', + 'aurora', + 'fantom', + 'karura', + 'acala', + 'klaytn', + 'celo', + 'near', + 'moonbeam', + 'neon', + 'terra2', + 'injective', + 'osmosis', + 'sui', + 'aptos', + 'arbitrum', + 'optimism', + 'gnosis', + 'pythnet', + 'xpla', + 'btc', + 'base', + 'sei', + 'rootstock', + 'scroll', + 'mantle', + 'blast', + 'xlayer', + 'linea', + 'berachain', + 'seievm', + 'wormchain', + 'cosmoshub', + 'evmos', + 'kujira', + 'neutron', + 'celestia', + 'stargaze', + 'seda', + 'dymension', + 'provenance', + 'sepolia', + 'arbitrum_sepolia', + 'base_sepolia', + 'optimism_sepolia', + 'holesky', + 'polygon_sepolia'] + --dst-addr destination address [string] [required] + --token-addr token address [string] [default: native token] + --amount token amount [string] [required] + -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] + --rpc RPC endpoint [string] + ``` + +??? code "Verify VAA" + ```bash + worm verify-vaa INSERT_VAA, INSERT_NETWORK + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -v, --vaa vaa in hex format [string] [required] + -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] + ``` + + +## Examples + +### VAA generation + +Use `generate` to create VAAs for testing. For example, use the following command to create an NFT bridge registration VAA: + +```bash +worm generate registration --module NFTBridge \ + --chain bsc \ + --contract-address 0x706abc4E45D419950511e474C7B9Ed348A4a716c \ + --guardian-secret cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0 +``` + +The below example generates a token attestation VAA: + +```bash +worm generate attestation --emitter-chain ethereum \ + --emitter-address 11111111111111111111111111111115 \ + --chain ethereum \ + --token-address 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 \ + --decimals 6 \ + --symbol USDC \ + --name USDC \ + --guardian-secret cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0 +``` + +### VAA parsing + +Use `parse` to parse a VAA into JSON: + +```bash +worm parse $(worm-fetch-governance 13940208096455381020) +``` + +This example will fetch governance VAA `13940208096455381020` and print it as JSON: + +```bash +# ...signatures elided +timestamp: 1651416474, +nonce: 1570649151, +emitterChain: 1, +emitterAddress: '0000000000000000000000000000000000000000000000000000000000000004', +sequence: 13940208096455381020n, +consistencyLevel: 32, +payload: { + module: 'Core', + type: 'GuardianSetUpgrade', + chain: 0, + newGuardianSetIndex: 2, + newGuardianSetLength: 19, + newGuardianSet: [ + '58cc3ae5c097b213ce3c81979e1b9f9570746aa5', + 'ff6cb952589bde862c25ef4392132fb9d4a42157', + '114de8460193bdf3a2fcf81f86a09765f4762fd1', + '107a0086b32d7a0977926a205131d8731d39cbeb', + '8c82b2fd82faed2711d59af0f2499d16e726f6b2', + '11b39756c042441be6d8650b69b54ebe715e2343', + '54ce5b4d348fb74b958e8966e2ec3dbd4958a7cd', + '66b9590e1c41e0b226937bf9217d1d67fd4e91f5', + '74a3bf913953d695260d88bc1aa25a4eee363ef0', + '000ac0076727b35fbea2dac28fee5ccb0fea768e', + 'af45ced136b9d9e24903464ae889f5c8a723fc14', + 'f93124b7c738843cbb89e864c862c38cddcccf95', + 'd2cc37a4dc036a8d232b48f62cdd4731412f4890', + 'da798f6896a3331f64b48c12d1d57fd9cbe70811', + '71aa1be1d36cafe3867910f99c09e347899c19c3', + '8192b6e7387ccd768277c17dab1b7a5027c0b3cf', + '178e21ad2e77ae06711549cfbb1f9c7a9d8096e8', + '5e1487f35515d02a92753504a8d75471b9f49edb', + '6fbebc898f403e4773e95feb15e80c9a99c8348d' + ] +} +``` + +### Submitting VAAs + +Use `submit` to submit a VAA to a chain. It first parses the VAA and determines the destination chain and module. For example, a contract upgrade contains both the target chain and module, so the only required argument is the network moniker (`mainnet` or `testnet`): + +```bash +worm submit $(cat my-nft-registration.txt) --network mainnet +``` + +The script will ask you to specify the target chain for VAAs that don't have a specific target chain (like registrations or Guardian set upgrades). For example, to submit a Guardian set upgrade on all chains, simply run: + +```bash +worm-fetch-governance 13940208096455381020 > guardian-upgrade.txt +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain oasis +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain aurora +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain fantom +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain karura +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain acala +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain klaytn +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain avalanche +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain polygon +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain bsc +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain solana +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain terra +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain ethereum +worm submit $(cat guardian-upgrade.txt) --network mainnet --chain celo +``` + +The VAA payload type (Guardian set upgrade) specifies that this VAA should go to the core bridge, and the tool directs it there. + +### Getting Info + +To get info about a contract (only EVM supported at this time), use the following command: + +```bash +worm evm info -c bsc -n mainnet -m TokenBridge +``` + +Running this command generates the following output: + +```bash +{ + "address": "0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7", + "wormhole": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B", + "implementation": "0x621199f6beB2ba6fbD962E8A52A320EA4F6D4aA3", + "isInitialized": true, + "tokenImplementation": "0x7f8C5e730121657E17E452c5a1bA3fA1eF96f22a", + "chainId": 4, + "finality": 15, + "evmChainId": "56", + "isFork": false, + "governanceChainId": 1, + "governanceContract": "0x0000000000000000000000000000000000000000000000000000000000000004", + "WETH": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + "registrations": { + "Solana": "0xec7372995d5cc8732397fb0ad35c0121e0eaa90d26f828a534cab54391b3a4f5", + "Ethereum": "0x0000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585", + "Terra": "0x0000000000000000000000007cf7b764e38a0a5e967972c1df77d432510564e2", + "Polygon": "0x0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde", + "Avalanche": "0x0000000000000000000000000e082f06ff657d94310cb8ce8b0d9a04541d8052", + "Oasis": "0x0000000000000000000000005848c791e09901b40a9ef749f2a6735b418d7564", + "Algorand": "0x67e93fa6c8ac5c819990aa7340c0c16b508abb1178be9b30d024b8ac25193d45", + "Aurora": "0x00000000000000000000000051b5123a7b0f9b2ba265f9c4c8de7d78d52f510f", + "Fantom": "0x0000000000000000000000007c9fc5741288cdfdd83ceb07f3ea7e22618d79d2", + "Karura": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624", + "Acala": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624", + "Klaytn": "0x0000000000000000000000005b08ac39eaed75c0439fc750d9fe7e1f9dd0193f", + "Celo": "0x000000000000000000000000796dff6d74f3e27060b71255fe517bfb23c93eed", + "Near": "0x148410499d3fcda4dcfd68a1ebfcdddda16ab28326448d4aae4d2f0465cdfcb7", + "Moonbeam": "0x000000000000000000000000b1731c586ca89a23809861c6103f0b96b3f57d92", + "Neon": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Terra2": "0xa463ad028fb79679cfc8ce1efba35ac0e77b35080a1abe9bebe83461f176b0a3", + "Injective": "0x00000000000000000000000045dbea4617971d93188eda21530bc6503d153313", + "Osmosis": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Sui": "0xccceeb29348f71bdd22ffef43a2a19c1f5b5e17c5cca5411529120182672ade5", + "Aptos": "0x0000000000000000000000000000000000000000000000000000000000000001", + "Arbitrum": "0x0000000000000000000000000b2402144bb366a632d14b83f244d2e0e21bd39c", + "Optimism": "0x0000000000000000000000001d68124e65fafc907325e3edbf8c4d84499daa8b", + "Gnosis": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Pythnet": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Xpla": "0x8f9cf727175353b17a5f574270e370776123d90fd74956ae4277962b4fdee24c", + "Btc": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Base": "0x0000000000000000000000008d2de8d2f73f1f4cab472ac9a881c9b123c79627", + "Sei": "0x86c5fd957e2db8389553e1728f9c27964b22a8154091ccba54d75f4b10c61f5e", + "Rootstock": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Scroll": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", + "Mantle": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", + "Blast": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", + "Xlayer": "0x0000000000000000000000005537857664b0f9efe38c9f320f75fef23234d904", + "Linea": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Berachain": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Seievm": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Snaxchain": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Wormchain": "0xaeb534c45c3049d380b9d9b966f9895f53abd4301bfaff407fa09dea8ae7a924", + "Cosmoshub": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Evmos": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Kujira": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Neutron": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Celestia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Stargaze": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Seda": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Dymension": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Provenance": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Sepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ArbitrumSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "BaseSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "OptimismSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", + "Holesky": "0x0000000000000000000000000000000000000000000000000000000000000000", + "PolygonSepolia": "0x0000000000000000000000000000000000000000000000000000000000000000" + } +} +``` + +### Additional Info Examples + +You can get the contract address for a module as follows: + +```bash +worm info rpc INSERT_NETWORK INSERT_CHAIN INSERT_MODULE +``` + +To get the contract address for `NFTBridge` on BSC Mainnet, for example, you can provide the following command: + +```bash +worm info contract mainnet bsc NFTBridge +``` + +You can get the RPC address for a chain as follows: + +```bash +worm info rpc INSERT_NETWORK INSERT_CHAIN +``` + +To get the RPC address for BSC Mainnet, for example, you can provide the following command: + +```bash +worm info rpc mainnet bsc +``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/dev-env/ +--- BEGIN CONTENT --- +--- +title: Local Dev Environment +description: Learn how to configure a development environment to build with Wormhole, including using the CLI, local validators, testing on public test networks, and more. +--- + +# Development Environment + +Developers building for smart contract integration will want to set up a development environment to allow testing the full integration, possibly including VAA generation and relaying. + +## Tooling Installation + +The [Wormhole CLI Tool](/docs/build/toolkit/cli/){target=\_blank} should be installed regardless of the environments chosen. Each environment has its own set of recommended tools. To begin working with a specific environment, see the recommended tools on the respective [environment page](/docs/build/start-building/supported-networks/){target=\_blank}. + +## Development Stages + +Different approaches to development and testing are recommended at various stages of application development. + +### Initial Development + +During the initial development of an on-chain application, the best option is to use the native tools available in the environment. You can visit the following resources for more information: + +- **[Environment](https://github.com/wormhole-foundation/wormhole){target=\_blank}** - select the folder for the desired network to learn about the recommended native toolset +- **[Mock Guardian](https://github.com/wormhole-foundation/wormhole/blob/main/sdk/js/src/mock/wormhole.ts){target=\_blank}** - it's recommended to set up a mock Guardian or Emitter to provide signed VAAsFor any program methods that require some message be sent or received. +- **[Wormhole Scaffolding repository](https://github.com/wormhole-foundation/wormhole-scaffolding/blob/main/evm/ts-test/01_hello_world.ts){target=\_blank}** - example mock Guardian test + +Relying on native tools when possible allows for more rapid prototyping and iteration. + +### Integration + +For integration to Wormhole and with multiple chains, the simplest option is to use the chains' Testnets. In choosing which chains to use for integration testing, consider which chains in a given environment provide easy access to Testnet tokens and where block times are fast. Find links for Testnet faucets in the [blockchain details section](/docs/build/start-building/supported-networks/){target=\_blank}. A developer may prefer standing up a set of local validators instead of using the Testnet. For this option, [Tilt](/docs/build/toolkit/tilt/){target=\_blank} is available to run local instances of all the chains Wormhole supports. + +!!! note + Variation in host environments causes unique issues, and the computational intensity of multiple simultaneous local validators can make setting them up difficult or time-consuming. You may prefer Testnets for the simplest integration testing. + +### Prepare for Deployment + +Once you've finished the application's initial development and performed integration testing, you should set up a CI test environment. The best option for that is likely to be [Tilt](/docs/build/toolkit/tilt/){target=\_blank} since it allows you to spin up any chains supported by Wormhole in a consistent environment. + +## Validator Setup with Tilt + +### Tilt +If you'd like to set up a local validator environment, follow the setup guide for Tilt. Tilt is a full-fledged Kubernetes deployment of every chain connected to Wormhole, along with a Guardian node. It usually takes 30 minutes to spin up fully, but it comes with all chains running out of the box. Refer to the [Tilt](/docs/build/toolkit/tilt/){target=\_blank} page for a complete guide to setting up and configuring Tilt. + +## Deploying to Public Networks + +### Testnet + +When doing integration testing on Testnets, remember that a single Guardian node is watching for transactions on various test networks. Because Testnets only have a single Guardian, there's a slight chance that your VAAs won't be processed. This rate doesn't indicate performance on Mainnet, where 19 Guardians are watching for transactions. The Testnet contract addresses are available on the page for each [environment](/docs/build/start-building/supported-networks/){target=\_blank}. The [Wormholescan API](https://docs.wormholescan.io){target=\_blank} offers the following Guardian equivalent Testnet endpoint: + +```text +https://api.testnet.wormholescan.io +``` + +### Mainnet + +The Mainnet contract addresses are available on the page for each [environment](/docs/build/start-building/supported-networks/){target=\_blank}. The [Wormholescan API](https://docs.wormholescan.io){target=\_blank} offers the following Guardian equivalent Mainnet endpoint: + +```text +https://api.wormholescan.io +``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/faqs/ +--- BEGIN CONTENT --- +--- +title: Toolkit FAQs +description: FAQs on Wormhole Toolkit, covering Wormholescan, CLI, SDKs (TypeScript, Solidity), Tilt, error handling, transaction history, and manual VAA submission. +--- + +# Toolkit FAQs + +## Why does the `toNative` function in the TypeScript SDK return an error? + +The `toNative` function may return an error if the platform-specific module (such as Solana or EVM) is not correctly imported or passed into the Wormhole constructor. + +To fix this, ensure the relevant platform module is imported and included when initializing Wormhole. For example, if you're working with Solana, make sure to import the Solana module and pass it into the Wormhole constructor like this: + +```typescript +import solana from '@wormhole-foundation/sdk/solana'; +const wh = await wormhole('Testnet', [solana]); +``` + +## How can I retrieve the history of previously bridged transactions? + +To retrieve the history of previously bridged transactions, you can use the Wormholescan API. Use the following endpoint to query the transaction history for a specific address: + +```bash +https://api.wormholescan.io/api/v1/operations?address=INSERT_ADDRESS +``` + +Simply replace `INSERT_ADDRESS_HERE` with the address you want to query. The API will return a list of operations, including details about previously bridged transactions. + +???- example "Fetch transaction history for a specific address" + ```bash + curl -X GET "https://api.wormholescan.io/api/v1/operations?address=0x05c009C4C1F1983d4B915C145F4E782de23d3A38" -H "accept: application/json" + ``` + +## How can I manually submit a VAA to a destination chain in the correct format? + +To manually submit a VAA (Verifiable Action Approval) to a destination chain, follow these steps: + +1. **Obtain the VAA in Base64 format** - navigate to the **Advanced** tab in [Wormholescan](https://wormholescan.io/){target=\_blank} to find the VAA associated with the transaction you want to submit and copy the VAA in base64 format + + ```bash + https://wormholescan.io/#/tx/INSERT_TX_HASH?view=advanced + ``` + +2. **Convert the VAA to hex** - you must convert the base64 VAA into a hexadecimal (hex) format before submitting it to the destination chain. This can be done using various online tools or via command-line utilities like `xxd` or a script in a language like Python + +3. **Submit the VAA through Etherscan (for EVM chains)** - once the VAA is in hex format, go to the [Etherscan UI](https://etherscan.io/){target=\_blank} and submit it through the [`TokenBridge`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/ITokenBridge.sol){target=\_blank} contract’s method (such as the `CompleteTransfer` function or `CompleteTransferWithPayload`) + + - The `TokenBridge` contract addresses for each chain are available in the [Wormhole contract addresses](/docs/build/reference/contract-addresses/){target=\_blank} section + + - Interact with the smart contract through the Etherscan UI by pasting the hex-encoded VAA into the appropriate field + +Following these steps, you can manually submit a VAA in the proper format to a destination chain. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/ +--- BEGIN CONTENT --- +--- +title: Wormhole Tooling +description: This page lists key dev tools, including the WormholeScan Explorer, Wormhole CLI, Wormhole SDKs, and APIs for querying network data. +--- + +# Wormhole Tooling + +Regardless of which network development environment you are using, there are a few Wormhole-specific tools you should know about. + +## Get Started + +
+ +- :octicons-telescope-16:{ .lg .middle } **Wormholescan** + + --- + + Wormholescan is an explorer for looking at individual transfer statuses on Mainnet and Testnet. + + [:custom-arrow: Review transactions on Wormholescan](https://wormholescan.io){target=\_blank} + +- :octicons-code-square-16:{ .lg .middle } **Wormhole CLI Tool** + + --- + + The Wormhole CLI is a Swiss-Army knife utility command line tool. It is excellent for creating one-off VAAs, parsing VAAs, reading Wormhole contract configurations, and more. + + [:custom-arrow: Get started with the CLI](/docs/build/toolkit/cli/) + +- :octicons-code-square-16:{ .lg .middle } **Wormhole SDK** + + --- + + Explore Wormhole's TypeScript SDK and learn how to perform different types of transfers, including native, token, and USDC transfers. + + [:custom-arrow: Get started with the SDK](/docs/build/toolkit/typescript-sdk/) + +- :octicons-code-square-16:{ .lg .middle } **Solidity SDK** + + --- + + Learn about Wormhole's Solidity SDK, including key components, interfaces, and tools for developing cross-chain decentralized applications on EVM-compatible blockchains. + + [:custom-arrow: Get started with the SDK](/docs/build/toolkit/solidity-sdk/) + +- :octicons-beaker-16:{ .lg .middle } **Tilt** + + --- + + Learn about Tilt, a Wormhole developer environment with a local Kubernetes set up for cross-chain testing with Guardian nodes and relayers for seamless development. + + [:custom-arrow: Get started with Tilt](/docs/build/toolkit/tilt/) + + + +
+ +## Additional Resources + +
+ +- :octicons-code-square-16:{ .lg .middle } **Wormhole Spy SDK** + + --- + + The Wormhole Spy SDK allows you to listen to all the Guardian Network activity. + + [:custom-arrow: Check out the Spy SDK repository](https://github.com/wormhole-foundation/wormhole/tree/main/spydk/js){target=\_blank} + +- :octicons-pencil-16:{ .lg .middle } **VAA Parser** + + --- + + The VAA Parser is a resource for parsing out details of an encoded VAA. + + [:custom-arrow: Try the VAA Parser](https://wormholescan.io/#/developers/vaa-parser){target=\_blank} + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/solidity-sdk/ +--- BEGIN CONTENT --- +--- +title: Solidity SDK +description: How to use the Wormhole Solidity SDK for cross-chain messaging, token transfers, and integrating decentralized applications on EVM-compatible blockchains. +--- + +# Solidity SDK + +## Introduction + +The [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} simplifies cross-chain messaging on EVM-compatible chains by providing essential Solidity interfaces, utility libraries, and testing tools. It allows developers to build secure and efficient cross-chain decentralized applications (dApps) without manually interacting with Wormhole’s core contracts across multiple chains. + +By abstracting away complex interactions, the SDK drastically reduces the overhead associated with cross-chain development. It provides: + + - **Unified interfaces** - developers can use a standardized set of Solidity interfaces to handle cross-chain messaging, token transfers, and verifiable action approvals (VAAs) without needing to manage the underlying infrastructure + - **Automated message delivery** - the SDK leverages Wormhole’s relayer infrastructure, automatically delivering messages across chains, reducing the need for manual intervention, and simplifying gas management on the target chain + - **Seamless integration with Wormhole services** - the SDK integrates with Wormhole’s `TokenBridge` and Circle’s CCTP, providing built-in mechanisms for cross-chain asset transfers, making token bridges and cross-chain messaging easy to implement + - **Testing and development tools** - it comes with comprehensive tools for local testing and simulation, allowing developers to validate their cross-chain logic before deployment, minimizing the risk of errors in production environments + +These features significantly streamline the development workflow by reducing complexity and offering tools compatible with various EVM versions. This helps developers avoid issues that arise from differences in EVM equivalence across chains. + +This guide covers installation, key concepts, and usage examples to help you build secure cross-chain applications using the SDK, from token transfers to advanced message passing. + +## Installation + +To install the SDK, use [Foundry and Forge](https://book.getfoundry.sh/getting-started/installation){target=\_blank}. This pulls the necessary libraries into your project: + +```bash +forge install wormhole-foundation/wormhole-solidity-sdk@v0.1.0 +``` + +When developing cross-chain applications, ensure that the chains you target support the EVM version you’re using. For instance, the PUSH0 opcode (introduced in Solidity 0.8.20) may not be available on all chains. To avoid compatibility issues, you can set the EVM version in your `foundry.toml` file: + +```toml +evm_version = "paris" +``` + +This ensures compatibility across all targeted chains, even if some do not yet support the latest EVM upgrades. + +## Key Considerations + +Before deploying applications using the Wormhole Solidity SDK, keep these considerations in mind: + + - **Version compatibility** - the SDK is evolving, and using tagged releases for production is crucial, as the main branch may introduce breaking changes + - **IERC-20 remapping** - the SDK provides a remapping mechanism to handle potential conflicts between different implementations of IERC20, ensuring seamless integration with other libraries + - **Testing** - given the cross-chain dependencies, testing all integrations is critical to avoid issues in production environments + +## Concepts and Components + +The Wormhole Solidity SDK consists of key components that streamline cross-chain communication, allowing developers to securely and efficiently interact with Wormhole’s infrastructure. Below are the critical concepts and contracts you'll encounter when working with the SDK. + +### Cross-Chain Messaging with the Wormhole Relayer SDK + +The [`WormholeRelayerSDK.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank} contract simplifies cross-chain messaging and asset transfers by integrating several necessary modules, including the Wormhole relayer. By automating message delivery between chains, the Wormhole relayer removes the need for developers to manage relayer infrastructure or handle gas on the target chain. Delivery providers handle the message payload, ensuring secure and efficient communication. + +You can refer to the [Wormhole relayer documentation](/docs/build/core-messaging/wormhole-relayers/){target=\_blank} for more details. + +Key modules in the SDK include: + + - **`Base.sol`** - the core module for cross-chain messaging. It provides utility functions like `onlyWormholeRelayer()` and `setRegisteredSender()`, ensuring that only messages from trusted relayers are processed + + - **`TokenBase.sol`** - this module extends the base messaging functionality to support cross-chain token transfers. It includes utilities for securely sending and receiving tokens between EVM-compatible chains + + - **`CCTPBase.sol`** - designed for Circle’s Cross-Chain Transfer Protocol, this module manages asset transfers such as USDC between chains. It includes functionalities for both sending and receiving CCTP-based assets + + - **`CCTPAndTokenBase.sol`** - a combined module that supports token and CCTP-based asset transfers in a single implementation. This module simplifies development for applications needing to handle both types of transfers + +The Wormhole Solidity SDK offers a unified framework for cross-chain communication. Developers can select specific modules based on their application’s requirements, whether for messaging, token transfers, or CCTP. Each module includes built-in security measures, ensuring that only authorized senders or relayers are accepted, thereby protecting the application from unauthorized interactions. + +Please refer to the complete `WormholeRelayerSDK.sol` file below for further details. + +???- code "`WormholeRelayerSDK.sol`" + ```solidity + // SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.19; + +import "wormhole-sdk/interfaces/IWormholeReceiver.sol"; +import "wormhole-sdk/interfaces/IWormholeRelayer.sol"; +import "wormhole-sdk/constants/Chains.sol"; +import "wormhole-sdk/Utils.sol"; + +import {Base} from "wormhole-sdk/WormholeRelayer/Base.sol"; +import {TokenBase, TokenReceiver, TokenSender} from "wormhole-sdk/WormholeRelayer/TokenBase.sol"; +import {CCTPBase, CCTPReceiver, CCTPSender} from "wormhole-sdk/WormholeRelayer/CCTPBase.sol"; +import {CCTPAndTokenBase, CCTPAndTokenReceiver, CCTPAndTokenSender} from "wormhole-sdk/WormholeRelayer/CCTPAndTokenBase.sol"; + ``` + +### Base Contract Overview + +The [`Base.sol`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/Base.sol){target=\_blank} contract is a core part of the Wormhole Solidity SDK, providing essential helper functions and modifiers for managing cross-chain messages securely via the Wormhole Relayer. It handles sender registration and message validation, ensuring only authorized senders from specific chains can send messages. + + - **`onlyWormholeRelayer()`** - a modifier that ensures only authorized messages from the Wormhole relayer contract are processed, restricting access to certain functions + + ```solidity + require( + msg.sender == address(wormholeRelayer), + "Msg.sender is not Wormhole Relayer" + ); + _; + } + ``` + + - **`setRegisteredSender()`** - restricts message acceptance to a registered sender from a specific chain, ensuring messages are only processed from trusted sources + + ```solidity + uint16 sourceChain, + bytes32 sourceAddress + ) public { + require( + msg.sender == registrationOwner, + "Not allowed to set registered sender" + ); + registeredSenders[sourceChain] = sourceAddress; + } + ``` + +These security measures ensure messages come from the correct source and are processed securely. Please refer to the complete `Base.sol` contract below for further details. + +???- code "`Base.sol`" + ```solidity + // SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.19; + +import "wormhole-sdk/interfaces/IWormholeReceiver.sol"; +import "wormhole-sdk/interfaces/IWormholeRelayer.sol"; +import "wormhole-sdk/interfaces/IWormhole.sol"; +import "wormhole-sdk/Utils.sol"; + +abstract contract Base { + IWormholeRelayer public immutable wormholeRelayer; + IWormhole public immutable wormhole; + + address registrationOwner; + mapping(uint16 => bytes32) registeredSenders; + + constructor(address _wormholeRelayer, address _wormhole) { + wormholeRelayer = IWormholeRelayer(_wormholeRelayer); + wormhole = IWormhole(_wormhole); + registrationOwner = msg.sender; + } + + modifier onlyWormholeRelayer() { + require( + msg.sender == address(wormholeRelayer), + "Msg.sender is not Wormhole Relayer" + ); + _; + } + + modifier isRegisteredSender(uint16 sourceChain, bytes32 sourceAddress) { + require( + registeredSenders[sourceChain] == sourceAddress, + "Not registered sender" + ); + _; + } + + /** + * Sets the registered address for 'sourceChain' to 'sourceAddress' + * So that for messages from 'sourceChain', only ones from 'sourceAddress' are valid + * + * Assumes only one sender per chain is valid + * Sender is the address that called 'send' on the Wormhole Relayer contract on the source chain) + */ + function setRegisteredSender( + uint16 sourceChain, + bytes32 sourceAddress + ) public { + require( + msg.sender == registrationOwner, + "Not allowed to set registered sender" + ); + registeredSenders[sourceChain] = sourceAddress; + } +} + ``` + +### Interface for Cross-Chain Messages + +The Wormhole Solidity SDK interacts with the Wormhole relayer for sending and receiving messages across EVM-compatible chains. The [`IWormholeRelayer`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/IWormholeRelayer.sol){target=\_blank} and [`IWormholeReceiver`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/IWormholeReceiver.sol){target=\_blank} interfaces are central to cross-chain communication, enabling secure and efficient message delivery. + +For detailed information on how to implement these interfaces, refer to the [Wormhole Relayer Interfaces documentation](/docs/build/core-messaging/wormhole-relayers/#wormhole-relayer-interfaces){target=\_blank}. This section covers: + + - **`IWormholeRelayer`** – methods for sending cross-chain messages, VAAs, and token transfers + - **`IWormholeReceiver`** – the required implementation for receiving cross-chain messages + - **`quoteEVMDeliveryPrice()`** – how to estimate gas and fees for cross-chain transactions + +These interfaces reduce the complexity of cross-chain dApp development by abstracting away the details of relayer infrastructure, ensuring that message delivery is handled efficiently. + +### Advanced Concepts + +For developers interested in exploring additional advanced topics, the following sections provide insights into key aspects of the SDK’s functionality. + +???- note "Error Handling and Reverts" + The SDK defines several custom errors to help developers handle common issues like incorrect gas fees, invalid senders, and more. For example, `InvalidMsgValue` is thrown when the message value for a relayed message is erroneous. + + ```solidity + error InvalidMsgValue(uint256 msgValue, uint256 totalFee); + ``` + +## Usage + +This section covers cross-chain messaging and token transfers and shows how to use the Wormhole Solidity SDK in real-world scenarios. + +### Send a Cross-Chain Message + +To send a cross-chain message, inherit from the base contract provided by the SDK and use its helper methods to define your message and sender address. Here’s a basic example: + +```solidity +pragma solidity ^0.8.19; + +import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/Base.sol"; + +contract CrossChainSender is Base { + constructor( + address _wormholeRelayer, + address _wormhole + ) Base(_wormholeRelayer, _wormhole) {} + + function sendMessage( + bytes memory message, + uint16 targetChain, + bytes32 targetAddress + ) external payable { + // Register sender and send message through WormholeRelayer + setRegisteredSender(targetChain, msg.sender); + onlyWormholeRelayer().sendPayloadToEvm( + targetChain, + address(targetAddress), + message, + 0, + 500_000 + ); + } +} +``` + +This contract extends `Base.sol` and allows sending cross-chain messages securely using the `WormholeRelayer`. + +### Send Tokens Across Chains + +The SDK enables seamless token transfers between EVM-compatible chains in addition to sending messages. To facilitate cross-chain token transfers, you can extend the SDK's `TokenSender` and `TokenReceiver` base contracts. + +```solidity +pragma solidity ^0.8.19; + +import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/TokenBase.sol"; + +contract CrossChainTokenSender is TokenSender { + constructor( + address _wormholeRelayer, + address _wormhole + ) TokenSender(_wormholeRelayer, _wormhole) {} + + function sendToken( + address token, + uint256 amount, + uint16 targetChain, + bytes32 targetAddress + ) external payable { + // Send tokens across chains + transferTokenToTarget(token, amount, targetChain, targetAddress); + } +} +``` + +In this example, `TokenSender` initiates a token transfer to another chain. The SDK’s built-in utilities securely handle token transfers, ensuring proper VAAs are generated and processed. + +### Receive Tokens Across Chains + +To receive tokens on the target chain, implement a contract that inherits from `TokenReceiver` and overrides the `receiveWormholeMessages` function. + +```solidity +pragma solidity ^0.8.19; + +import "@wormhole-foundation/wormhole-solidity-sdk/src/WormholeRelayer/TokenBase.sol"; + +contract CrossChainTokenReceiver is TokenReceiver { + constructor( + address _wormholeRelayer, + address _wormhole + ) TokenReceiver(_wormholeRelayer, _wormhole) {} + + // Function to handle received tokens from another chain + function receiveWormholeMessages( + bytes memory payload, + bytes[] memory additionalMessages, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 deliveryHash + ) external payable override { + // Process the received tokens here + receiveTokens(payload); + } +} +``` + +In this example, `TokenReceiver` allows the contract to handle tokens sent from the source chain. Once the cross-chain message is received, the `receiveWormholeMessages` function processes the incoming tokens. Always validate the message's authenticity and source. + +!!! note + Always verify the source of incoming messages and tokens to prevent unauthorized access to your contract. Please refer to the [Emitter Verification](/docs/build/core-messaging/core-contracts/#validating-the-emitter/){target=\_blank} section for more details. + +## Testing Environment + +The SDK includes built-in support for Forge-based testing, which allows you to test your cross-chain applications locally before deploying them to production. Testing with the same Solidity compiler version and configuration you plan to use in production is highly recommended to catch any potential issues early. + +For a detailed example, check out the below repositories: + + - [Cross chain messaging](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/){target=\_blank} + - [Cross chain token transfer](/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/){target=\_blank} +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/ +--- BEGIN CONTENT --- +--- +title: Wormhole SDK +description: The Wormhole SDK provides tools for cross-chain communication, token bridges, and more, enabling developers to integrate with multiple blockchain environments. +--- + +# Wormhole SDK + +## Get Started + +The Wormhole SDK provides developers with essential tools for cross-chain communication, token bridges, and more. This SDK enables seamless interaction between different blockchain environments with a focus on performance and usability. + +
+ +- :octicons-book-16:{ .lg .middle } **Wormhole SDK** + + --- + + Learn about the core functionalities of the Wormhole SDK, including how to use its features for building cross-chain applications. + + [:custom-arrow: Explore the SDK](/docs/build/toolkit/typescript-sdk/wormhole-sdk/) + +- :octicons-code-16:{ .lg .middle } **Layouts** + + --- + + Discover how to define, serialize, and deserialize data structures using the Wormhole SDK's layout system, ensuring efficient cross-chain communication. + + [:custom-arrow: Learn about layouts](/docs/build/toolkit/typescript-sdk/sdk-layout/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/protocols-payloads/ +--- BEGIN CONTENT --- +--- +title: Building Protocols and Payloads +description: Learn how to build, register, and integrate protocols and payloads in the Wormhole TypeScript SDK with type-safe layouts. +--- + +# Building Protocols and Payloads + +## Introduction + +The [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} provides a flexible and powerful system for integrating cross-chain communication into your applications. A key feature of the SDK is its ability to define protocols—modular units representing distinct functionalities—and their associated payloads, which encapsulate the data required for specific operations within those protocols. + +This guide will help you understand how to build protocols and payloads in the SDK, covering: + + - The role of protocols and payloads in cross-chain communication + - The mechanics of registering protocols and payloads using the SDK + - Best practices for creating strongly typed layouts to ensure compatibility and reliability + - Real-world examples using the `TokenBridge` as a reference implementation + +By the end of this guide, you’ll have a solid understanding of how to define, register, and use protocols and payloads in your projects. + +## What is a Protocol? + +In the Wormhole SDK, a protocol represents a significant feature or functionality that operates across multiple blockchains. Protocols provide the framework for handling specific types of messages, transactions, or operations consistently and standardized. + +Examples of Protocols: + + - **`TokenBridge`** - enables cross-chain token transfers, including operations like transferring tokens and relaying payloads + - **`NTT (Native Token Transfers)`** - manages native token movements across chains + +Protocols are defined by: + + - **A `name`** - a string identifier (e.g., `TokenBridge`, `Ntt`) + - **A set of `payloads`** - these represent the specific actions or messages supported by the protocol, such as `Transfer` or `TransferWithPayload` + +Each protocol is registered in the Wormhole SDK, allowing developers to leverage its predefined features or extend it with custom payloads. + +## What is a Payload? + +A payload is a structured piece of data that encapsulates the details of a specific operation within a protocol. It defines the format, fields, and types of data used in a message or transaction. Payloads ensure consistency and type safety when handling complex cross-chain operations. + +Each payload is defined as: + + - **A `layout`** - describes the binary format of the payload fields + - **A `literal`** - combines the protocol name and payload name into a unique identifier (e.g., `TokenBridge:Transfer`) + +By registering payloads, developers can enforce type safety and enable serialization and deserialization for specific protocol operations. + +## Register Protocols and Payloads + +Protocols and payloads work together to enable cross-chain communication with precise type safety. For instance, in the `TokenBridge` protocol: + + - The protocol is registered under the `TokenBridge` namespace + - Payloads like `Transfer` or `AttestMeta` are linked to the protocol to handle specific operations + +Understanding the connection between these components is important for customizing or extending the SDK to suit your needs. + +### Register Protocols + +Registering a protocol establishes its connection to Wormhole's infrastructure, ensuring it interacts seamlessly with payloads and platforms while maintaining type safety and consistency. + +#### How Protocol Registration Works + +Protocol registration involves two key tasks: + + - **Mapping protocols to interfaces** - connect the protocol to its corresponding interface, defining its expected behavior across networks (`N`) and chains (`C`). This ensures type safety, similar to strong typing, by preventing runtime errors if protocol definitions are incorrect + - **Linking protocols to platforms** - specify platform-specific implementations if needed, or use default mappings for platform-agnostic protocols + +For example, here's the `TokenBridge` protocol registration: + +```typescript +declare module '../../registry.js' { + export namespace WormholeRegistry { + interface ProtocolToInterfaceMapping { + TokenBridge: TokenBridge; + } + interface ProtocolToPlatformMapping { + TokenBridge: EmptyPlatformMap<'TokenBridge'>; + } + } +} +``` + +This code snippet: + + - Maps the `TokenBridge` protocol to its interface to define how it operates + - Links the protocol to a default platform mapping via `EmptyPlatformMap` + +You can view the full implementation in the [`TokenBridge` protocol file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridge.ts#L14-L70){target=\_blank}. + +#### Platform-Specific Protocols + +Some protocols require platform-specific behavior. For instance, the EVM-compatible Wormhole Registry maps native addresses for Ethereum-based chains: + +```typescript +declare module '@wormhole-foundation/sdk-connect' { + export namespace WormholeRegistry { + interface PlatformToNativeAddressMapping { + Evm: EvmAddress; + } + } +} + +registerNative(_platform, EvmAddress); +``` + +This ensures that `EvmAddress` is registered as the native address type for EVM-compatible platforms. See the [EVM platform address file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/platforms/evm/src/address.ts#L98-L106){target=\_blank} for details. + +### Register Payloads + +[Payload registration](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts){target=\_blank} enables developers to define, serialize, and handle custom message types within their protocols. It establishes the connection between a protocol and its payloads, ensuring seamless integration, type enforcement, and runtime efficiency. + +This process ties a protocol to its payloads using a combination of: + + - **Payload literals** - unique identifiers in the format `:`. These literals map each payload to a layout + - **Payload layouts** - structures that define the binary representation of payload data + - **The payload factory** - a centralized runtime registry that maps payload literals to layouts for dynamic resolution and serialization + +These components work together to streamline the definition and management of protocol payloads. + +#### How Payload Registration Works + +Payload registration involves: + +1. **Define payload layouts** - create layouts to structure your payloads. For instance, a protocol might use a `TransferWithPayload` layout: + + ```typescript + export const transferWithPayloadLayout = < + const P extends CustomizableBytes = undefined +>( + customPayload?: P +) => + [ + payloadIdItem(3), + ...transferCommonLayout, + { name: 'from', ...universalAddressItem }, + customizableBytes({ name: 'payload' }, customPayload), + ] as const; + ``` + +2. **Register payloads** - use `registerPayloadTypes` to map payload literals to their layouts: + + ```typescript + registerPayloadTypes('ProtocolName', protocolNamedPayloads); + ``` + +3. **Access registered payloads** - use the [`getPayloadLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/9105de290c91babbf8ad031bd89cc75ee38739c8/core/definitions/src/vaa/functions.ts#L19-L23){target=\_blank} function to fetch the layout for a specific payload literal. This method ensures that the correct layout is retrieved dynamically and safely: + + ```typescript + const layout = getPayloadLayout('ProtocolName:PayloadName'); + ``` + +These steps link payload literals and their layouts, enabling seamless runtime handling. + +#### The Payload Factory + +At the core of the payload registration process is the `payloadFactory`, a registry that manages the mapping between payload literals and layouts: + +```typescript +export const payloadFactory = new Map(); + +export function registerPayloadType( + protocol: ProtocolName, + name: string, + layout: Layout +) { + const payloadLiteral = composeLiteral(protocol, name); + if (payloadFactory.has(payloadLiteral)) { + throw new Error(`Payload type ${payloadLiteral} already registered`); + } + payloadFactory.set(payloadLiteral, layout); +} +``` + + - The `payloadFactory` ensures each payload literal maps to its layout uniquely + - The [`registerPayloadType`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts#L46-L52){target=\_blank} function adds individual payloads, while [`registerPayloadTypes`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/vaa/registration.ts#L62-L64){target=\_blank} supports bulk registration + +This implementation ensures dynamic, efficient handling of payloads at runtime. + +## Integrate Protocols with Payloads + +Integrating payloads with protocols enables dynamic identification through payload literals, while serialization and deserialization ensure their binary representation is compatible across chains. For more details on these processes, refer to the [Layouts page](/docs/build/toolkit/typescript-sdk/sdk-layout/){target=\_blank}. + +### Payload Discriminators + +Payload discriminators are mechanisms in the Wormhole SDK that dynamically identify and map incoming payloads to their respective layouts at runtime. They are relevant for protocols like `TokenBridge`, enabling efficient handling of diverse payload types while ensuring type safety and consistent integration. + +#### How Discriminators Work + +Discriminators evaluate serialized binary data and determine the corresponding payload layout by inspecting fixed fields or patterns within the data. Each payload layout is associated with a payload literal (e.g., `TokenBridge:Transfer` or `TokenBridge:TransferWithPayload`). + +This system ensures: + + - **Dynamic runtime identification** - payloads are parsed based on their content, even if a single protocol handles multiple payload types + - **Strict type enforcement** - discriminators leverage layout mappings to prevent invalid payloads from being processed + +Below is an example of how the Wormhole SDK builds a discriminator to distinguish between payload layouts: + +```typescript +export function layoutDiscriminator( + layouts: readonly Layout[], + allowAmbiguous?: B +): Discriminator { + // Internal logic to determine distinguishable layouts + const [distinguishable, discriminator] = internalBuildDiscriminator(layouts); + if (!distinguishable && !allowAmbiguous) { + throw new Error('Cannot uniquely distinguish the given layouts'); + } + + return ( + !allowAmbiguous + ? (encoded: BytesType) => { + const layout = discriminator(encoded); + return layout.length === 0 ? null : layout[0]; + } + : discriminator + ) as Discriminator; +} +``` + + - [`layoutDiscriminator`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/9105de290c91babbf8ad031bd89cc75ee38739c8/core/base/src/utils/layout.ts#L16){target=\_blank} takes a list of layouts and generates a function that can identify the appropriate layout for a given serialized payload + - The `allowAmbiguous` parameter determines whether layouts with overlapping characteristics are permitted + +### Real-World Example: Token Bridge Protocol + +Integrating protocols with their respective payloads exemplifies how the Wormhole SDK leverages layouts and type-safe registration mechanisms to ensure efficient cross-chain communication. This section focuses on how protocols like `TokenBridge` use payloads to facilitate specific operations. + +#### Token Bridge Protocol and Payloads + +The `TokenBridge` protocol enables cross-chain token transfers through its payloads. Key payloads include: + + - **`Transfer`** - handles basic token transfer operations + - **`TransferWithPayload`** - extends the `Transfer` payload to include custom data, enhancing functionality + +Payloads are registered to the `TokenBridge` protocol via the `PayloadLiteralToLayoutMapping` interface, which links payload literals (e.g., `TokenBridge:Transfer`) to their layouts. + +Additionally, the protocol uses reusable layouts like [`transferCommonLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/76b20317b0f68e823d4e6c4a2e41bb2a7705c64f/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts#L29C7-L47){target=\_blank} and extends them in more specialized layouts such as [`transferWithPayloadLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/76b20317b0f68e823d4e6c4a2e41bb2a7705c64f/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts#L49-L57){target=\_blank}: + +```typescript +export const transferWithPayloadLayout = < + const P extends CustomizableBytes = undefined +>( + customPayload?: P +) => + [ + payloadIdItem(3), + ...transferCommonLayout, + { name: 'from', ...universalAddressItem }, + customizableBytes({ name: 'payload' }, customPayload), + ] as const; +``` + +This layout includes: + + - A `payloadIdItem` to identify the payload type + - Common fields for token and recipient details + - A customizable `payload` field for additional data + +#### Use the Discriminator + +To manage multiple payloads, the `TokenBridge` protocol utilizes a discriminator to distinguish between payload types dynamically. For example: + +```typescript +const tokenBridgePayloads = ['Transfer', 'TransferWithPayload'] as const; + +export const getTransferDiscriminator = lazyInstantiate(() => + payloadDiscriminator([_protocol, tokenBridgePayloads]) +); +``` + + - The [`getTransferDiscriminator`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dbbbc7c365db602dd3b534f6d615ac80c3d2aaf1/core/definitions/src/protocols/tokenBridge/tokenBridge.ts#L67-L70){target=\_blank} function dynamically evaluates payloads using predefined layouts + - This ensures that each payload type is processed according to its unique structure and type-safe layout + +#### Register Payloads to Protocols + +Here’s how the `TokenBridge` protocol connects its payloads to the Wormhole SDK: + +```typescript +declare module '../../registry.js' { + export namespace WormholeRegistry { + interface PayloadLiteralToLayoutMapping + extends RegisterPayloadTypes< + 'TokenBridge', + typeof tokenBridgeNamedPayloads + > {} + } +} + +registerPayloadTypes('TokenBridge', tokenBridgeNamedPayloads); +``` + +This registration links the `TokenBridge` payload literals to their respective layouts, enabling serialization and deserialization at runtime. + +You can explore the complete `TokenBridge` protocol and payload definitions in the [`TokenBridge` layout file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts){target=\_blank}. + +#### Token Bridge Payloads + +The following payloads are registered for the `TokenBridge` protocol: + + - **`AttestMeta`** - used for token metadata attestation + - **`Transfer`** - facilitates token transfers + - **`TransferWithPayload`** - adds a custom payload to token transfers + +These payloads and their layouts are defined in the [`TokenBridge` layout file](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/protocols/tokenBridge/tokenBridgeLayout.ts){target=\_blank}. + +### Other Protocols: Native Token Transfers (NTT) + +While this guide focuses on the `TokenBridge` protocol, other protocols, like NTT, follow a similar structure. + + - NTT manages the transfer of native tokens across chains + - Payloads such as `WormholeTransfer` and `WormholeTransferStandardRelayer` are registered to the protocol using the same patterns for payload literals and layouts + - The same mechanisms for type-safe registration and payload discriminators apply, ensuring reliability and extensibility + +For more details, you can explore the [NTT implementation in the SDK](https://github.com/wormhole-foundation/example-native-token-transfers/blob/00f83aa215338b1b8fd66f522bd0f45be3e98a5a/sdk/definitions/src/ntt.ts){target=\_blank}. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/sdk-layout/ +--- BEGIN CONTENT --- +--- +title: Data Layouts +description: Learn how to efficiently define, serialize, and deserialize data structures using Wormhole SDK's layout system for cross-chain communication. +--- + +# Data Layouts + +## Introduction + +The [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} uses the [layout package](https://www.npmjs.com/package/binary-layout){target=\_blank} to define, serialize, and deserialize data structures efficiently. This modular system ensures consistent data formatting and cross-environment compatibility, benefiting projects that require robust handling of structured data. + +By understanding the layout mechanism, you’ll be able to: + + - Define data structures (numbers, arrays, and custom types) + - Efficiently serialize and deserialize data using the SDK’s utilities + - Handle protocol-specific layouts with ease + +This guide is beneficial for developers looking to integrate Wormhole into their applications or protocols, especially those dealing with complex payloads or cross-chain communication. + +## Key Concepts + +### Layout Items + +A layout defines how data structures should be serialized (converted into binary format) and deserialized (converted back into their original structure). This ensures consistent data formatting when transmitting information across different blockchain environments. + +Layouts are composed of [layout items](https://github.com/nonergodic/layout/blob/main/src/items.ts){target=\_blank}, which describe individual fields or sets of fields in your data. Each layout item specifies: + + - **`name`** - name of the field + - **`binary`** - type of data (e.g., `uint`, `bytes`) + - **`size`** - byte length for fixed-size fields within uint and bytes items only + +Layout items can represent: + + - **Primitive types** - basic data types like unsigned integers (`uint`) or byte arrays (`bytes`) + - **Composite types** - more complex structures, such as arrays or nested objects + +Below is an example of a layout that might be used to serialize a message across the Wormhole protocol: + +```typescript +const exampleLayout = [ + { name: 'sourceChain', binary: 'uint', size: 2 }, + { name: 'orderSender', binary: 'bytes', size: 32 }, + { name: 'redeemer', binary: 'bytes', size: 32 }, + { name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 }, +] as const; +``` + +In this example: + + - `sourceChain` is a 2-byte unsigned integer (`uint`) identifying the source blockchain + - `orderSender` is a fixed-length 32-byte array representing the sender's address + - `redeemer` is another 32-byte array used for the redeemer’s address + - `redeemerMessage` is a variable-length byte sequence, with its length specified by a 4-byte integer + +This layout definition ensures that all necessary data fields are consistently encoded and can be correctly interpreted when they are deserialized. + +### Serialization and Deserialization + +Serialization converts structured data into binary format; deserialization reverses this, reconstructing the original objects. + +You can serialize data using the `serializeLayout` function: + +```typescript +const serialized = serializeLayout(fillLayout, exampleFill); +``` + +To deserialize the binary data back into a structured object, use the `deserializeLayout` function: + +```typescript +const deserialized = deserializeLayout(fillLayout, serialized); +``` + +### Custom Conversions + +Layouts also allow for custom conversions, which help map complex or custom types (like chain IDs or universal addresses) into a more usable format. This is useful when serializing or deserializing data that doesn’t fit neatly into simple types like integers or byte arrays. + +For example, consider a custom conversion for a chain ID: + +```typescript +const chainCustomConversion = { + to: (chainId: number) => toChain(chainId), + from: (chain: Chain) => chainToChainId(chain), +} satisfies CustomConversion; +``` + +This setup allows Wormhole to convert between human-readable formats and binary-encoded data used in payloads. + +### Error Handling + +The layout system performs error checks during serialization and deserialization. An error is thrown if data is incorrectly sized or in the wrong format. Refer to the below example: + +```typescript +try { + deserializeLayout(fillLayout, corruptedData); +} catch (error) { + console.error('Error during deserialization:', error.message); +} +``` + +## Application of Layouts + +This section will focus on applying the concepts explained earlier through examples. These will help developers better understand how to define layouts, serialize and deserialize data, and use custom conversions where needed. + +### Defining Layouts + +To get started with layouts in Wormhole, you need to define your structure. A layout is simply a list of fields (layout items) describing how each data piece will be serialized. + +Consider the following layout for a payload: + +```typescript +const exampleLayout = [ + { name: 'sourceChain', binary: 'uint', size: 2 }, + { name: 'orderSender', binary: 'bytes', size: 32 }, + { name: 'redeemer', binary: 'bytes', size: 32 }, + { name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 }, +] as const; +``` + +In this example: + + - `sourceChain` is an unsigned integer (uint) of 2 bytes + - `orderSender` is a 32-byte fixed-length byte array + - `redeemer` is another 32-byte byte array + - `redeemerMessage` is a length-prefixed byte array, with the length specified by a 4-byte integer + +### Serialize Data + +Once a layout is defined, the next step is to serialize data according to that structure. You can accomplish this using the `serializeLayout` function from the Wormhole SDK. + +```typescript +const examplePayload = { + sourceChain: 6, + orderSender: new Uint8Array(32), + redeemer: new Uint8Array(32), + redeemerMessage: new Uint8Array([0x01, 0x02, 0x03]), +}; + +const serializedData = serializeLayout(exampleLayout, examplePayload); +``` + +This takes the data structure (`examplePayload`) and serializes it according to the rules defined in the layout (`exampleLayout`). The result is a `Uint8Array` representing the serialized binary data. + +### Deserialize Data + +Deserialization is the reverse of serialization. Given a serialized `Uint8Array`, we can convert it back into its original structure using the `deserializeLayout` function. + +```typescript +const deserializedPayload = deserializeLayout(exampleLayout, serializedData); +``` + +This will output the structured object, making it easy to work with data transmitted or received from another chain. + +### Handling Variable-Length Fields + +One relevant aspect of Wormhole SDK's layout system is the ability to handle variable-length fields, such as arrays and length-prefixed byte sequences. + +For instance, if you want to serialize or deserialize a message where the length of the content isn't known beforehand, you can define a layout item with a `lengthSize` field. + +```typescript +{ name: 'message', binary: 'bytes', lengthSize: 4 } +``` + +This tells the SDK to read or write the message's length (in 4 bytes) and then handle the content. + +## Nested Layouts and Strong Typing + +The Wormhole SDK simplifies handling complex structures with nested layouts and strong typing. Nested layouts clearly represent hierarchical data, while strong typing ensures data consistency and catches errors during development. + +### Nested Layout + +In complex protocols, layouts can contain nested structures. Nested layouts become relevant here, allowing you to represent hierarchical data (such as transactions or multi-part messages) in a structured format. + +Refer to the following nested layout where a message contains nested fields: + +```typescript +const nestedLayout = [ + { + name: 'source', + binary: 'bytes', + layout: [ + { name: 'chainId', binary: 'uint', size: 2 }, + { name: 'sender', binary: 'bytes', size: 32 }, + ], + }, + { + name: 'redeemer', + binary: 'bytes', + layout: [ + { name: 'address', binary: 'bytes', size: 32 }, + { name: 'message', binary: 'bytes', lengthSize: 4 }, + ], + }, +] as const satisfies Layout; +``` + +In this layout: + + - `source` is an object with two fields: `chainId` and `sender` + - `redeemer` is another object with two fields: `address` and a length-prefixed `message` + +### Strong Typing + +One of the benefits of using the Wormhole SDK in TypeScript is its support for strong typing. This ensures that serialized and deserialized data conform to expected structures, reducing errors during development by enforcing type checks at compile time. + +Using TypeScript, the `LayoutToType` utility provided by the SDK automatically generates a strongly typed structure based on the layout: + +```typescript +type NestedMessage = LayoutToType; +``` + +This ensures that when you serialize or deserialize data, it matches the expected structure. + +```typescript +const message: NestedMessage = { + source: { + chainId: 6, + sender: new Uint8Array(32), + }, + redeemer: { + address: new Uint8Array(32), + message: new Uint8Array([0x01, 0x02, 0x03]), + }, +}; +``` + +Attempting to assign data of incorrect types will result in a compile-time error. The Wormhole SDK's layout system enforces strong types, reducing runtime errors and improving code reliability. + +### Serialization and Deserialization with Nested Layouts + +You can serialize and deserialize nested structures in the same way as simpler layouts: + +```typescript +const serializedNested = serializeLayout(nestedLayout, message); +const deserializedNested = deserializeLayout(nestedLayout, serializedNested); +``` + +Strong typing in TypeScript ensures that the message object conforms to the nested layout structure. This reduces the risk of data inconsistency during cross-chain communication. + +## Commonly Used Layouts + +The Wormhole SDK includes predefined layouts frequently used in cross-chain messaging. These layouts are optimized for standard fields such as chain IDs, addresses, and signatures. You can explore the complete set of predefined layouts in the [`layout-items` directory](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/layout-items){target=\_blank} of the Wormhole SDK. + +### Chain ID Layouts + +Chain ID layouts in the Wormhole SDK derive from a common foundation: `chainItemBase`. This structure defines the binary representation of a chain ID as a 2-byte unsigned integer, ensuring consistency across serialization and deserialization processes. + +#### Base Structure + +This simple structure is the blueprint for more specific layouts by standardizing the binary format and size. + +```typescript +const chainItemBase = { binary: 'uint', size: 2 } as const; +``` + +#### Dynamic Chain ID Layout + +The dynamic chain ID layout, [`chainItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/chain.ts#L13-L40){target=\_blank}, extends `chainItemBase` by adding flexible custom conversion logic. It enables runtime validation of chain IDs, supports optional null values, and restricts chain IDs to a predefined set when needed. + +```typescript +export const chainItem = < + const C extends readonly Chain[] = typeof chains, + const N extends boolean = false, +>(opts?: { + allowedChains?: C; + allowNull?: N; +}) => + ({ + ...chainItemBase, // Builds on the base structure + custom: { + to: (val: number): AllowNull => { ... }, + from: (val: AllowNull): number => { ... }, + }, + }); +``` + +This layout is versatile. It allows the serialization of human-readable chain names (e.g., `Ethereum`) to numeric IDs (e.g., `1`) and vice versa. This is particularly useful when working with dynamic configurations or protocols supporting multiple chains. + +#### Fixed Chain ID Layout + +The fixed chain ID layout, [`fixedChainItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/chain.ts#L42-L49){target=\_blank}, is more rigid. It also extends `chainItemBase`, but the custom field is hardcoded for a single chain. This eliminates runtime validation and enforces strict adherence to a specific chain. + +```typescript +export const fixedChainItem = (chain: C) => ({ + ...chainItemBase, // Builds on the base structure + custom: { + to: chain, + from: chainToChainId(chain), + }, +}); +``` + +This layout allows developers to efficiently serialize and deserialize messages involving a single, fixed chain ID. + +### Address Layout + +The Wormhole SDK uses a Universal Address Layout to serialize and deserialize blockchain addresses into a standardized format. This layout ensures that addresses are always represented as fixed 32-byte binary values, enabling seamless cross-chain communication. + +#### Base Structure + +The [`universalAddressItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/universalAddress.ts#L7-L14){target=\_blank} defines the layout for addresses. It uses the binary type bytes and enforces a fixed size of 32 bytes for consistency. + +```typescript +export const universalAddressItem = { + binary: 'bytes', + size: 32, + custom: { + to: (val: Uint8Array): UniversalAddress => new UniversalAddress(val), + from: (val: UniversalAddress): Uint8Array => val.toUint8Array(), + } satisfies CustomConversion, +} as const satisfies LayoutItem; +``` + +This layout ensures consistent address handling by defining the following: + + - **Serialization** - converts a high-level `UniversalAddress` object into raw binary (32 bytes) for efficient storage or transmission + - **Deserialization** - converts raw binary back into a `UniversalAddress` object, enabling further interaction in a human-readable or programmatic format + +### Signature Layout + +In the Wormhole SDK, the Signature Layout defines how to serialize and deserialize cryptographic signatures. These signatures verify message authenticity and ensure data integrity, particularly in Guardian-signed VAAs. + +#### Base Structure + +The `signatureLayout` specifies the binary structure of a secp256k1 signature. It divides the signature into three components: + +```typescript +const signatureLayout = [ + { name: 'r', binary: 'uint', size: 32 }, + { name: 's', binary: 'uint', size: 32 }, + { name: 'v', binary: 'uint', size: 1 }, +] as const satisfies Layout; +``` + +This layout provides a clear binary format for the secp256k1 signature, making it efficient to process within the Wormhole protocol. + +#### Layout with Custom Conversion + +The [`signatureItem`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/layout-items/signature.ts#L15-L22){target=\_blank} builds upon the `signatureLayout` by adding custom conversion logic. This conversion transforms raw binary data into a high-level `Signature` object and vice versa. + +```typescript +export const signatureItem = { + binary: 'bytes', + layout: signatureLayout, + custom: { + to: (val: LayoutToType) => + new Signature(val.r, val.s, val.v), + from: (val: Signature) => ({ r: val.r, s: val.s, v: val.v }), + } satisfies CustomConversion, Signature>, +} as const satisfies BytesLayoutItem; +``` + +The `custom` field ensures seamless integration of raw binary data with the `Signature` class, encapsulating signature-specific logic. + +## Advanced Use Cases + +The Wormhole SDK’s layout system is designed to handle various data structures and serialization needs. This section will explore more advanced use cases, such as handling conditional data structures, fixed conversions, and optimizing serialization performance. + +???- code "Switch Statements for Conditional Layouts" + + In some cases, the structure of serialized data might change based on a specific field, such as a payload ID. The switch layout type conditionally defines layouts based on a value. + + For example, different message types can be identified using a payload ID, and the layout for each message can be determined at runtime: + + ```typescript + const switchLayout = { + binary: 'switch', + idSize: 1, // size of the payload ID + idTag: 'messageType', // tag to identify the type of message + layouts: [ + [[1, 'messageType1'], fillLayout], // layout for type 1 + [[2, 'messageType2'], fastFillLayout], // layout for type 2 + ], +} as const satisfies Layout; + ``` + + The switch statement helps developers parse multiple payload types using the same structure, depending on a control field like an ID. + +???- code "Fixed Conversions and Omitted Fields" + + Fixed conversions and omitted fields allow developers to handle known, static data without including it in every serialization or deserialization operation. For instance, when specific fields in a layout always hold a constant value, they can be omitted from the deserialized object. + + **Example: Fixed Conversion** + + In some cases, a field may always contain a predefined value. The layout system supports fixed conversions, allowing developers to “hard-code” these values: + + ```typescript + const fixedConversionLayout = { + binary: 'uint', + size: 2, + custom: { + to: 'Ethereum', + from: chainToChainId('Ethereum'), + }, +} as const satisfies Layout; + ``` + + **Example: Omitted Fields** + + Omitted fields are useful for handling padding or reserved fields that do not carry meaningful information and can safely be excluded from the deserialized output: + + ```typescript + const omittedFieldLayout = [ + { name: 'reserved', binary: 'uint', size: 2, omit: true }, +] as const satisfies Layout; + ``` + + In this example, `reserved` is a padding field with a fixed, non-dynamic value that serves no functional purpose. It is omitted from the deserialized result but still considered during serialization to maintain the correct binary format. + + Only fields with a fixed, known value, such as padding or reserved fields, should be marked as `omit: true`. Fields with meaningful or dynamic information, such as `sourceChain` or `version`, must remain in the deserialized structure to ensure data integrity and allow seamless round-trip conversions between serialized and deserialized representations. + +## Integration with Wormhole Protocol + +The layout system facilitates seamless interaction with the Wormhole protocol, mainly when dealing with VAAs. These cross-chain messages must be serialized and deserialized to ensure they can be transmitted and processed accurately across different chains. + +### VAAs and Layouts + +VAAs are the backbone of Wormhole’s cross-chain communication. Each VAA is a signed message encapsulating important information such as the originating chain, the emitter address, a sequence number, and Guardian signatures. The Wormhole SDK leverages its layout system to define, serialize, and deserialize VAAs, ensuring data integrity and chain compatibility. + +#### Base VAA Structure + +The Wormhole SDK organizes the VAA structure into three key components: + + - [**Header**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L37-L41){target=\_blank} - contains metadata such as the Guardian set index and an array of Guardian signatures + - [**Envelope**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} - includes chain-specific details such as the emitter chain, address, sequence, and [consistency (finality) level](/build/reference/consistency-levels/){target=\_blank} + - **Payload** - provides application-specific data, such as the actual message or operation being performed + +**Header layout:** + +```typescript +const guardianSignatureLayout = [ + { name: 'guardianIndex', binary: 'uint', size: 1 }, + { name: 'signature', ...signatureItem }, +] as const satisfies Layout; + +export const headerLayout = [ + { name: 'version', binary: 'uint', size: 1, custom: 1, omit: true }, + { name: 'guardianSet', ...guardianSetItem }, + { + name: 'signatures', + binary: 'array', + lengthSize: 1, + layout: guardianSignatureLayout, + }, +] as const satisfies Layout; +``` + +The header defines metadata for validating and processing the VAA, such as the Guardian set index and signatures. Each signature is represented using the `signatureItem` layout, ensuring consistency and compatibility across different platforms. + +!!! note "Signature Standard Compliance" + + The signature field uses the `signatureItem` layout, which is explicitly defined as 65 bytes. This layout is aligned with widely used standards such as EIP-2612 and Uniswap's Permit2, ensuring compatibility with cryptographic protocols and applications. + +**Envelope layout:** + +```typescript +export const envelopeLayout = [ + { name: 'timestamp', binary: 'uint', size: 4 }, + { name: 'nonce', binary: 'uint', size: 4 }, + { name: 'emitterChain', ...chainItem() }, + { name: 'emitterAddress', ...universalAddressItem }, + { name: 'sequence', ...sequenceItem }, + { name: 'consistencyLevel', binary: 'uint', size: 1 }, +] as const satisfies Layout; +``` + +The envelope encapsulates the VAA's core message data, including chain-specific information like the emitter address and sequence number. This structured layout ensures that the VAA can be securely transmitted across chains. + +**Payload Layout:** + +The Payload contains the user-defined data specific to the application or protocol, such as a token transfer message, governance action, or other cross-chain operation. The layout of the payload is dynamic and depends on the payload type, identified by the `payloadLiteral` field. + +```typescript +const examplePayloadLayout = [ + { name: 'type', binary: 'uint', size: 1 }, + { name: 'data', binary: 'bytes', lengthSize: 2 }, +] as const satisfies Layout; +``` + +This example demonstrates a payload containing: + + - A type field specifying the operation type (e.g., transfer or governance action) + - A data field that is length-prefixed and can store operation-specific information + +Dynamic payload layouts are selected at runtime using the `payloadLiteral` field, which maps to a predefined layout in the Wormhole SDK. + +**Combined Base Layout:** + +The base VAA layout combines the header, envelope, and dynamically selected payload layout: + +```typescript +export const baseLayout = [...headerLayout, ...envelopeLayout] as const; +``` + +At runtime, the payload layout is appended to the `baseLayout` to form the complete structure. + +#### Serializing VAA Data + +The Wormhole SDK provides the [`serialize`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/functions.ts#L48-L54){target=\_blank} function to serialize a VAA message. This function combines the base layout (header and envelope) with the appropriate payload layout, ensuring the message’s format is correct for transmission across chains. + +```typescript +import { serialize } from '@wormhole-foundation/sdk-core/vaa/functions'; + +const vaaData = { + guardianSet: 1, + signatures: [{ guardianIndex: 0, signature: new Uint8Array(65).fill(0) }], + timestamp: 1633000000, + nonce: 42, + emitterChain: 2, // Ethereum + emitterAddress: new Uint8Array(32).fill(0), + sequence: BigInt(1), + consistencyLevel: 1, + payloadLiteral: 'SomePayloadType', + payload: { key: 'value' }, +}; + +const serializedVAA = serialize(vaaData); +``` + +???- note "How does it work?" + + Internally, the serialize function dynamically combines the `baseLayout` (header and envelope) with the payload layout defined by the `payloadLiteral`. The complete layout is then passed to the `serializeLayout` function, which converts the data into binary format. + + ```typescript + const layout = [ + ...baseLayout, // Header and envelope layout + payloadLiteralToPayloadItemLayout(vaa.payloadLiteral), // Payload layout +] as const; + +return serializeLayout(layout, vaa as LayoutToType); + ``` + +#### Deserializing VAA Data + +The Wormhole SDK provides the [`deserialize`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/vaa/functions.ts#L162-L200){target=\_blank} function to parse a VAA from its binary format back into a structured object. This function uses the `baseLayout` and payload discriminator logic to ensure the VAA is correctly interpreted. + +```typescript +import { deserialize } from '@wormhole-foundation/sdk-core/vaa/functions'; + +const serializedVAA = new Uint8Array([ + /* Serialized VAA binary data */ +]); + +const vaaPayloadType = 'SomePayloadType'; // The payload type expected for this VAA +const deserializedVAA = deserialize(vaaPayloadType, serializedVAA); +``` + +???- note "How does it work?" + + Internally, the `deserialize` function uses the `baseLayout` (header and envelope) to parse the main VAA structure. It then identifies the appropriate payload layout using the provided payload type or discriminator. + + ```typescript + const [header, envelopeOffset] = deserializeLayout(headerLayout, data, { + consumeAll: false, +}); + +const [envelope, payloadOffset] = deserializeLayout(envelopeLayout, data, { + offset: envelopeOffset, + consumeAll: false, +}); + +const [payloadLiteral, payload] = + typeof payloadDet === 'string' + ? [ + payloadDet as PayloadLiteral, + deserializePayload(payloadDet as PayloadLiteral, data, payloadOffset), + ] + : deserializePayload( + payloadDet as PayloadDiscriminator, + data, + payloadOffset + ); + +return { + ...header, + ...envelope, + payloadLiteral, + payload, +} satisfies VAA; + ``` + +### Registering Custom Payloads + +In the Wormhole SDK, payloads rely on layouts to define their binary structure, ensuring consistency and type safety across protocols. Custom payloads extend this functionality, allowing developers to handle protocol-specific features or unique use cases. + +To learn how to define and register payloads using layouts, refer to the [Building Protocols and Payloads](/docs/build/toolkit/typescript-sdk/protocols-payloads/){target=\_blank} page for a detailed guide. + +## Common Pitfalls & Best Practices + +When working with the Wormhole SDK layout system, it's important to be aware of a few common issues that can arise. Below are some pitfalls to avoid and best practices to ensure smooth integration. + +### Pitfalls to Avoid + +#### Defining Sizes for Data Types + +When defining sizes for each data type, make sure to match the actual data length to the specified size to prevent serialization and deserialization errors: + + - **`uint` and `int`** - the specified size must be large enough to accommodate the data value. For instance, storing a value greater than 255 in a single byte (`uint8`) will fail since it exceeds the byte’s capacity. Similarly, an undersized integer (e.g., specifying 2 bytes for a 4-byte integer) can lead to data loss or deserialization failure + - **`bytes`** - the data must match the specified byte length in the layout. For example, defining a field as 32 bytes (`size: 32`) requires the provided data to be exactly 32 bytes long; otherwise, serialization will fail + +```typescript +// Pitfall: Mismatch between the size of data and the defined size in the layout +{ name: 'orderSender', binary: 'bytes', size: 32 } +// If the provided data is not exactly 32 bytes, this will fail +``` + +#### Incorrectly Defined Arrays + +Arrays can be fixed-length or length-prefixed, so it’s important to define them correctly. Fixed-length arrays must match the specified length, while length-prefixed arrays need a `lengthSize` field. + +```typescript +// Pitfall: Array length does not match the expected size +{ name: 'redeemerMessage', binary: 'bytes', lengthSize: 4 } +``` + +### Best Practices + +These best practices and common pitfalls can help prevent bugs and improve the reliability of your implementation when working with layouts in the Wormhole SDK. + +#### Reuse Predefined Layout Items + +Rather than defining sizes or types manually, reuse the predefined layout items provided by the Wormhole SDK. These items ensure consistent formatting and enforce strong typing. + +For instance, use the `chainItem` layout for chain IDs or `universalAddressItem` for blockchain addresses: + +```typescript +import { + chainItem, + universalAddressItem, +} from '@wormhole-foundation/sdk-core/layout-items'; + +const exampleLayout = [ + { name: 'sourceChain', ...chainItem() }, // Use predefined chain ID layout + { name: 'senderAddress', ...universalAddressItem }, // Use universal address layout +] as const; +``` + +By leveraging predefined layout items, you reduce redundancy, maintain consistency, and ensure compatibility with Wormhole’s standards. + +#### Use Class Instances + +Whenever possible, convert deserialized data into higher-level class instances. This makes it easier to validate, manipulate, and interact with structured data. For example, the [`UniversalAddress`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/definitions/src/universalAddress.ts#L17-L59){target=\_blank} class ensures consistent address handling: + +```typescript +import { UniversalAddress } from '@wormhole-foundation/sdk-core'; + +const deserializedAddress = new UniversalAddress(someBinaryData); +``` + +Focusing on reusing predefined layout items and converting deserialized data into higher-level abstractions can ensure a more robust and maintainable implementation. + +#### Consistent Error Handling + +Always handle errors during both serialization and deserialization. Catching exceptions allows you to log or resolve issues gracefully when working with potentially corrupted or invalid data. + +```typescript +try { + const deserialized = deserializeLayout(fillLayout, data); +} catch (error) { + console.error('Deserialization failed:', error); +} +``` + +#### Leverage Reusable Layouts + +Creating reusable layouts for commonly repeated structures improves code maintainability and reduces duplication. These layouts can represent fields or combinations of fields frequently encountered in cross-chain communication, such as chain IDs, addresses, and signatures. + +For example, define a reusable layout for chain IDs and addresses: + +```typescript +const commonLayout = [ + { name: 'chainId', binary: 'uint', size: 2 }, + { name: 'address', binary: 'bytes', size: 32 }, +] as const satisfies Layout; + +// Reuse the common layout in different contexts +const exampleLayout = [ + ...commonLayout, + { name: 'sequence', binary: 'uint', size: 8 }, +]; +``` + +By abstracting common elements into a single layout, you ensure consistency across different parts of your application and simplify future updates. + +## Performance Considerations + +Efficient serialization and deserialization are crucial when handling large amounts of cross-chain data. Below are some strategies and best practices to ensure optimal performance when using Wormhole SDK layouts. + +### Lazy Instantiation + +Building a discriminator can be resource-intensive for complex or large datasets. The layout structures do not incur significant upfront costs, but deferring the creation of discriminators until needed can improve efficiency. + +```typescript +const lazyDiscriminator = lazyInstantiate(() => layoutDiscriminator(layouts)); +``` + +This approach ensures that discriminators are only built when required, helping to optimize performance, especially for complex or conditional layouts. + +## Resources + +For further learning and practical experience, explore the following resources: + + - **Wormhole TypeScript SDK** - the [Wormhole SDK repository](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} contains the core implementation of layouts, including predefined layout items and utilities like `serializeLayout` and `deserializeLayout` + + - **Layout tests repository** - for hands-on experimentation, check out this [layout package repository](https://github.com/nonergodic/layout){target=\_blank}, which provides examples and unit tests to help you better understand serialization, deserialization, and the strong typing mechanism. Running these tests locally is a great way to deepen your understanding of how layouts function in real-world scenarios +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/vaas-protocols/ +--- BEGIN CONTENT --- +--- +title: VAAs and Protocols +description: Understand how VAAs enable cross-chain messaging and how to handle them using Wormhole's TypeScript and Solidity SDKs. +--- + +# VAAs and Protocols + +## Introduction + +Wormhole's core functionality revolves around [Verifiable Action Approvals](/docs/learn/infrastructure/vaas/){target=\_blank} (VAAs), which are signed messages enabling secure and decentralized communication across chains. This guide focuses on their practical usage within the Wormhole ecosystem, specifically when working with protocol-specific messages in the [TypeScript](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} and [Solidity](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} SDKs. + +For deeper insights into serialization, deserialization, and protocol design, refer to: + +- [Data Layouts](/docs/build/toolkit/typescript-sdk/sdk-layout/){target=\_blank} for serialization concepts +- [Building Protocols and Payloads](/docs/build/toolkit/typescript-sdk/protocols-payloads/){target=\_blank} for designing custom protocol messages + +This guide will help you understand how to handle VAAs and protocol messages in off-chain and on-chain scenarios. + +## VAA Structure + +Understanding the structure of VAAs is fundamental to working with Wormhole's SDKs. Each section of the VAA—Header, Envelope, and Payload—serves a specific role: + +| Section | Description | +|----------|----------------------------------------------------------------------------------------------------------| +| Header | Includes the version and guardian signature information required to verify the VAA | +| Envelope | Contains metadata about the emitted message, such as the emitter chain, emitter address, and timestamp | +| Payload | Represents the actual message, in raw bytes, without a length prefix | + +The VAA's body combines the Envelope and Payload. The Wormhole Guardians signed the core data and hashed (using `keccak256`) to generate the VAA's unique identifier. + +When integrating protocols like Token Bridge or Wormhole Relayer: + +- The TypeScript SDK handles VAAs off-chain, focusing on deserialization, validation, and payload extraction before submission +- The Solidity SDK processes VAAs on-chain, using libraries like `VaaLib` to decode and execute protocol actions + +## VAAs in Protocol Contexts + +### How VAAs Enable Protocol-Specific Messaging + +VAAs are the backbone of Wormhole's cross-chain communication, encapsulating critical protocol payloads that drive actions on different blockchains. Each protocol—such as [Token Bridge](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/tokenBridge){target=\_blank}, [Wormhole Relayer](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/relayer){target=\_blank}, or [Circle CCTP](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/core/definitions/src/protocols/circleBridge){target=\_blank}—uses VAAs to securely transmit its messages across chains. + +Examples of mapping protocols to VAAs: + +| Protocol | Payload Purpose | Example | +|-----------------|-----------------------------------------------------------|------------------------------------| +| Token Bridge | Transfers token data and metadata | Token transfer or redemption | +| Wormhole Relayer| Manages delivery instructions for messages across chains | Delivery fee or refund handling | +| Circle CCTP | Facilitates stablecoin mint-and-burn operations | Circle-issued stablecoin transfer | + +Each protocol integrates its payload format into the VAA structure, ensuring consistent message validation and execution across the ecosystem. + +### TypeScript SDK: Off-Chain Handling of VAAs + +The TypeScript SDK is designed for off-chain operations like reading, validating, and manipulating VAAs before submitting them to a chain. Developers can easily deserialize VAAs to extract protocol payloads and prepare actions such as initiating token transfers or constructing delivery instructions. + +In the example below, we use the real [`envelopeLayout`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/dd6bd2463264680597519285ff559f9e92e85ca7/core/definitions/src/vaa/vaa.ts#L44-L51){target=\_blank} from Wormhole's TS SDK to deserialize and extract essential information like the emitter chain, sequence, and [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}: + +```typescript +import { deserializeLayout } from '@wormhole-foundation/sdk-base'; +import { + universalAddressItem, + sequenceItem, +} from '@wormhole-foundation/core/layout-items/index.js'; + +export const envelopeLayout = [ + { name: 'timestamp', binary: 'uint', size: 4 }, + { name: 'nonce', binary: 'uint', size: 4 }, + { name: 'emitterChain', binary: 'uint', size: 2 }, + { name: 'emitterAddress', ...universalAddressItem }, + { name: 'sequence', ...sequenceItem }, + { name: 'consistencyLevel', binary: 'uint', size: 1 }, +] as const satisfies Layout; + +const encodedEnvelope = new Uint8Array([ + /* binary envelope data */ +]); +const deserializedEnvelope = deserializeLayout(envelopeLayout, encodedEnvelope); +``` + +For more details, you can refer to the [parseVAA example](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/examples/src/parseVaa.ts){target=\_blank} in the Wormhole SDK repository. + +### Solidity SDK: On-Chain Handling of VAAs + +The Solidity SDK enables on-chain processing of VAAs directly within smart contracts. This is essential for real-time validation, decoding, and execution of protocol-specific payloads. Developers can use libraries like [`VaaLib`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/e19013d08d1fdf5af9e6344c637e36a270422dd9/src/libraries/VaaLib.sol){target=\_blank} to parse the VAA header and payload, ensuring the message is authentic and consistent with Wormhole's validation. + +Below is an example of parsing an envelope on-chain using the Solidity SDK: + +```solidity +// SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.19; + +import {VaaLib} from "wormhole-sdk/libraries/VaaLib.sol"; + +contract EnvelopeParser { + using VaaLib for bytes; + + function parseEnvelope( + bytes memory encodedVaa + ) + public + pure + returns ( + uint32 timestamp, + uint32 nonce, + uint16 emitterChainId, + bytes32 emitterAddress, + uint64 sequence, + uint8 consistencyLevel + ) + { + // Skip the header and decode the envelope + uint offset = VaaLib.skipVaaHeaderMemUnchecked(encodedVaa, 0); + return VaaLib.decodeVaaEnvelopeMemUnchecked(encodedVaa, offset); + } +} +``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/toolkit/typescript-sdk/wormhole-sdk/ +--- BEGIN CONTENT --- +--- +title: Wormhole TS SDK +description: Explore Wormhole's TypeScript SDK and learn how to perform different types of transfers, including native, token, and USDC. +--- + +# Wormhole TypeScript SDK + +## Introduction + +The Wormhole TypeScript SDK is useful for interacting with the chains Wormhole supports and the [protocols](#protocols) built on top of Wormhole. This package bundles together functions, definitions, and constants that streamline the process of connecting chains and completing transfers using Wormhole. The SDK also offers targeted sub-packages for Wormhole-connected platforms, which allow you to add multichain support without creating outsized dependencies. + +This section covers all you need to know about the functionality and ease of development offered through the Wormhole TypeScript SDK. Take a tour of the package to discover how it helps make integration easier. Learn more about how the SDK abstracts away complexities around concepts like platforms, contexts, and signers. Finally, you'll find guidance on usage, along with code examples, to show you how to use the tools of the SDK. + + +
+ +- :octicons-download-16:{ .lg .middle } **Installation** + + --- + + Find installation instructions for both the meta package and installing specific, individual packages + + [:custom-arrow: Install the SDK](#installation) + +- :octicons-book-16:{ .lg .middle } **Concepts** + + --- + + Understand key concepts and how the SDK abstracts them away. Learn more about platforms, chain context, addresses, and signers + + [:custom-arrow: Explore concepts](#concepts) + +- :octicons-file-code-16:{ .lg .middle } **Usage** + + --- + + Guidance on using the SDK to add seamless interchain messaging to your application, including code examples + + [:custom-arrow: Use the SDK](#usage) + +- :octicons-code-square-16:{ .lg .middle } **TSdoc for SDK** + + --- + + Review the TSdoc for the Wormhole TypeScript SDK for a detailed look at availabel methods, classes, interfaces, and definitions + + [:custom-arrow: View the TSdoc on GitHub](https://wormhole-foundation.github.io/wormhole-sdk-ts/){target=\_blank} + +
+ +!!! warning + This package is a work in progress. The interface may change, and there are likely bugs. Please [report](https://github.com/wormhole-foundation/connect-sdk/issues){target=\_blank} any issues you find. + +## Installation + +### Basic + +To install the meta package using npm, run the following command in the root directory of your project: + +```bash +npm install @wormhole-foundation/sdk +``` + +This package combines all the individual packages to make setup easier while allowing for tree shaking. + +### Advanced + +Alternatively, you can install a specific set of published packages individually: + +??? interface "`sdk-base` - exposes constants" + + ```sh + npm install @wormhole-foundation/sdk-base + ``` + +??? interface "`sdk-definitions` - exposes contract interfaces, basic types, and VAA payload definitions" + + ```sh + npm install @wormhole-foundation/sdk-definitions + ``` + +??? interface "`sdk-evm` - exposes EVM-specific utilities" + + ```sh + npm install @wormhole-foundation/sdk-evm + ``` + +??? interface "`sdk-evm-tokenbridge` - exposes the EVM Token Bridge protocol client" + + ```sh + npm install @wormhole-foundation/sdk-evm-tokenbridge + ``` + +## Usage + +Getting your integration started is simple. First, import Wormhole: + +```ts +import { wormhole } from '@wormhole-foundation/sdk'; + +import { Wormhole, amount, signSendWait } from '@wormhole-foundation/sdk'; +import algorand from '@wormhole-foundation/sdk/algorand'; +import aptos from '@wormhole-foundation/sdk/aptos'; +import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { getSigner } from './helpers/index.js'; + +(async function () { + const wh = await wormhole('Testnet', [ + evm, + solana, + aptos, + algorand, + cosmwasm, + sui, + ]); + + const ctx = wh.getChain('Solana'); + + const rcv = wh.getChain('Algorand'); + + const sender = await getSigner(ctx); + const receiver = await getSigner(rcv); + + // Get a Token Bridge contract client on the source + const sndTb = await ctx.getTokenBridge(); + + // Send the native token of the source chain + const tokenId = Wormhole.tokenId(ctx.chain, 'native'); + + // Bigint amount using `amount` module + const amt = amount.units(amount.parse('0.1', ctx.config.nativeTokenDecimals)); + + // Create a transaction stream for transfers + const transfer = sndTb.transfer( + sender.address.address, + receiver.address, + tokenId.address, + amt + ); + + // Sign and send the transaction + const txids = await signSendWait(ctx, transfer, sender.signer); + console.log('Sent: ', txids); + + // Get the Wormhole message ID from the transaction + const [whm] = await ctx.parseTransaction(txids[txids.length - 1]!.txid); + console.log('Wormhole Messages: ', whm); + + const vaa = await wh.getVaa( + // Wormhole Message ID + whm!, + // Protocol:Payload name to use for decoding the VAA payload + 'TokenBridge:Transfer', + // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available + 60_000 + ); + + // Now get the token bridge on the redeem side + const rcvTb = await rcv.getTokenBridge(); + + // Create a transaction stream for redeeming + const redeem = rcvTb.redeem(receiver.address.address, vaa!); + + // Sign and send the transaction + const rcvTxids = await signSendWait(rcv, redeem, receiver.signer); + console.log('Sent: ', rcvTxids); + + // Now check if the transfer is completed according to + // the destination token bridge + const finished = await rcvTb.isTransferCompleted(vaa!); + console.log('Transfer completed: ', finished); +})(); +``` + +Then, import each of the ecosystem [platforms](#platforms) that you wish to support: + +```ts +import aptos from '@wormhole-foundation/sdk/aptos'; +import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +``` + + +To make the [platform](#platforms) modules available for use, pass them to the Wormhole constructor: + +```ts +evm, + solana, + aptos, + algorand, + cosmwasm, + sui, + ]); +``` + +With a configured Wormhole object, you can do things like parse addresses for the provided platforms, get a [`ChainContext`](#chain-context) object, or fetch VAAs. + +```ts + +``` + +You can retrieve a VAA as follows. In this example, a timeout of `60,000` milliseconds is used. The amount of time required for the VAA to become available will vary by network. + +```ts +// Wormhole Message ID + whm!, + // Protocol:Payload name to use for decoding the VAA payload + 'TokenBridge:Transfer', + // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available + 60_000 + ); +``` + +??? code "View the complete script" + ```ts + import { wormhole } from '@wormhole-foundation/sdk'; + +import { Wormhole, amount, signSendWait } from '@wormhole-foundation/sdk'; +import algorand from '@wormhole-foundation/sdk/algorand'; +import aptos from '@wormhole-foundation/sdk/aptos'; +import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { getSigner } from './helpers/index.js'; + +(async function () { + const wh = await wormhole('Testnet', [ + evm, + solana, + aptos, + algorand, + cosmwasm, + sui, + ]); + + const ctx = wh.getChain('Solana'); + + const rcv = wh.getChain('Algorand'); + + const sender = await getSigner(ctx); + const receiver = await getSigner(rcv); + + // Get a Token Bridge contract client on the source + const sndTb = await ctx.getTokenBridge(); + + // Send the native token of the source chain + const tokenId = Wormhole.tokenId(ctx.chain, 'native'); + + // Bigint amount using `amount` module + const amt = amount.units(amount.parse('0.1', ctx.config.nativeTokenDecimals)); + + // Create a transaction stream for transfers + const transfer = sndTb.transfer( + sender.address.address, + receiver.address, + tokenId.address, + amt + ); + + // Sign and send the transaction + const txids = await signSendWait(ctx, transfer, sender.signer); + console.log('Sent: ', txids); + + // Get the Wormhole message ID from the transaction + const [whm] = await ctx.parseTransaction(txids[txids.length - 1]!.txid); + console.log('Wormhole Messages: ', whm); + + const vaa = await wh.getVaa( + // Wormhole Message ID + whm!, + // Protocol:Payload name to use for decoding the VAA payload + 'TokenBridge:Transfer', + // Timeout in milliseconds, depending on the chain and network, the VAA may take some time to be available + 60_000 + ); + + // Now get the token bridge on the redeem side + const rcvTb = await rcv.getTokenBridge(); + + // Create a transaction stream for redeeming + const redeem = rcvTb.redeem(receiver.address.address, vaa!); + + // Sign and send the transaction + const rcvTxids = await signSendWait(rcv, redeem, receiver.signer); + console.log('Sent: ', rcvTxids); + + // Now check if the transfer is completed according to + // the destination token bridge + const finished = await rcvTb.isTransferCompleted(vaa!); + console.log('Transfer completed: ', finished); +})(); + ``` + +Optionally, you can override the default configuration with a partial `WormholeConfig` object to specify particular fields, such as a different RPC endpoint. + +```ts +const wh = await wormhole('Testnet', [solana], { + chains: { + Solana: { + contracts: { + coreBridge: '11111111111111111111111111111', + }, + rpc: 'https://api.devnet.solana.com', + }, + }, +}); +``` + +??? code "View the complete script" + ```ts + import { wormhole } from '@wormhole-foundation/sdk'; +import solana from '@wormhole-foundation/sdk/solana'; +(async function () { + const wh = await wormhole('Testnet', [solana], { + chains: { + Solana: { + contracts: { + coreBridge: '11111111111111111111111111111', + }, + rpc: 'https://api.devnet.solana.com', + }, + }, + }); + console.log(wh.config.chains.Solana); +})(); + ``` + +## Concepts + +Understanding several higher-level Wormhole concepts and how the SDK abstracts them away will help you use the tools most effectively. The following sections will introduce and discuss the concepts of platforms, chain contexts, addresses, signers, and protocols, how they are used in the Wormhole context, and how the SDK helps ease development in each conceptual area. + +### Platforms + +While every chain has unique attributes, chains from the same platform typically have standard functionalities they share. The SDK includes `Platform` modules, which create a standardized interface for interacting with the chains of a supported platform. The contents of a module vary by platform but can include: + +- Protocols, such as [Wormhole core](#wormhole-core), preconfigured to suit the selected platform +- Definitions and configurations for types, signers, addresses, and chains +- Helpers configured for dealing with unsigned transactions on the selected platform + +These modules also import and expose essential functions and define types or constants from the chain's native ecosystem to reduce the dependencies needed to interact with a chain using Wormhole. Rather than installing the entire native package for each desired platform, you can install a targeted package of standardized functions and definitions essential to connecting with Wormhole, keeping project dependencies as slim as possible. + + +Wormhole currently supports the following platforms: + +- EVM +- Solana +- Cosmos +- Sui +- Aptos +- Algorand + +See the [Platforms folder of the TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/platforms){target=\_blank} for an up-to-date list of the platforms supported by the Wormhole TypeScript SDK. + +### Chain Context + +The `definitions` package of the SDK includes the `ChainContext` class, which creates an interface for working with connected chains in a standardized way. This class contains the network, chain, and platform configurations for connected chains and cached RPC and protocol clients. The `ChainContext` class also exposes chain-specific methods and utilities. Much of the functionality comes from the `Platform` methods but some specific chains may have overridden methods via the context. This is also where the `Network`, `Chain`, and `Platform` type parameters which are used throughout the package are defined. + +```ts +const srcChain = wh.getChain(senderAddress.chain); +const dstChain = wh.getChain(receiverAddress.chain); + +const tb = await srcChain.getTokenBridge(); // => TokenBridge<'Evm'> +srcChain.getRpcClient(); // => RpcClient<'Evm'> +``` + +### Addresses + +The SDK uses the `UniversalAddress` class to implement the `Address` interface, which all address types must implement. Addresses from various networks are parsed into their byte representation and modified as needed to ensure they are exactly 32 bytes long. Each platform also has an address type that understands the native address formats, referred to as `NativeAddress.` These abstractions allow you to work with addresses consistently regardless of the underlying chain. + +```ts +// It's possible to convert a string address to its Native address +const ethAddr: NativeAddress<'Evm'> = toNative('Ethereum', '0xbeef...'); + +// A common type in the SDK is the `ChainAddress` which provides +// the additional context of the `Chain` this address is relevant for +const senderAddress: ChainAddress = Wormhole.chainAddress( + 'Ethereum', + '0xbeef...' +); +const receiverAddress: ChainAddress = Wormhole.chainAddress( + 'Solana', + 'Sol1111...' +); + +// Convert the ChainAddress back to its canonical string address format +const strAddress = Wormhole.canonicalAddress(senderAddress); // => '0xbeef...' + +// Or if the ethAddr above is for an emitter and you need the UniversalAddress +const emitterAddr = ethAddr.toUniversalAddress().toString(); +``` + +### Tokens + +Similar to the `ChainAddress` type, the `TokenId` type provides the chain and address of a given token. The following snippet introduces `TokenId`, a way to uniquely identify any token, whether it's a standard token or a blockchain's native currency (like ETH for Ethereum). + +Wormhole uses their contract address to create a `TokenId` for standard tokens. For native currencies, Wormhole uses the keyword `native` instead of an address. This makes it easy to work with any type of token consistently. + +Finally, the snippet demonstrates how to convert a `TokenId` back into a regular address format when needed. + +```ts +const sourceToken: TokenId = Wormhole.tokenId('Ethereum', '0xbeef...'); + +const gasToken: TokenId = Wormhole.tokenId('Ethereum', 'native'); + +const strAddress = Wormhole.canonicalAddress(senderAddress); // => '0xbeef...' +``` + +### Signers + +Certain methods of signing transactions require a `Signer` interface in the SDK. Depending on the specific requirements, this interface can be fulfilled by either a `SignOnlySigner` or a `SignAndSendSigner`. A signer can be created by wrapping an offline or web wallet. + +A `SignOnlySigner` is used when the signer isn't connected to the network or prefers not to broadcast transactions themselves. It accepts an array of unsigned transactions and returns an array of signed and serialized transactions. Before signing, the transactions may be inspected or altered. It's important to note that the serialization process is chain-specific. Refer to the testing signers (e.g., [EVM](https://github.com/wormhole-foundation/connect-sdk/blob/main/platforms/evm/src/signer.ts){target=\_blank} or [Solana](https://github.com/wormhole-foundation/connect-sdk/blob/main/platforms/solana/src/signer.ts){target=\_blank}) for an example of how to implement a signer for a specific chain or platform. + +Conversely, a `SignAndSendSigner` is appropriate when the signer is connected to the network and intends to broadcast the transactions. This type of signer also accepts an array of unsigned transactions but returns an array of transaction IDs corresponding to the order of the unsigned transactions. + +```ts +export type Signer = SignOnlySigner | SignAndSendSigner; + +export interface SignOnlySigner { + chain(): ChainName; + address(): string; + // Accept an array of unsigned transactions and return + // an array of signed and serialized transactions. + // The transactions may be inspected or altered before + // signing. + sign(tx: UnsignedTransaction[]): Promise; +} + +export interface SignAndSendSigner { + chain(): ChainName; + address(): string; + // Accept an array of unsigned transactions and return + // an array of transaction ids in the same order as the + // unsignedTransactions array. + signAndSend(tx: UnsignedTransaction[]): Promise; +} +``` + +#### Set Up a Signer with Ethers.js + +To sign transactions programmatically with the Wormhole SDK, you can use Ethers.js to manage private keys and handle signing. Here's an example of setting up a signer using Ethers.js: + +```javascript +import { ethers } from 'ethers'; + +// Update the following variables +const rpcUrl = 'INSERT_RPC_URL'; +const privateKey = 'INSERT_PRIVATE_KEY'; +const toAddress = 'INSERT_RECIPIENT_ADDRESS'; + +// Set up a provider and signer +const provider = new ethers.JsonRpcProvider(rpcUrl); +const signer = new ethers.Wallet(privateKey, provider); + +// Example: Signing and sending a transaction +async function sendTransaction() { + const tx = { + to: toAddress, + value: ethers.parseUnits('0.1'), // Sending 0.1 ETH + gasPrice: await provider.getGasPrice(), + gasLimit: ethers.toBeHex(21000), + }; + + const transaction = await signer.sendTransaction(tx); + console.log('Transaction hash:', transaction.hash); +} +sendTransaction(); +``` + + - **`provider`** - responsible for connecting to the Ethereum network (or any EVM-compatible network). It acts as a bridge between your application and the blockchain, allowing you to fetch data, check the state of the blockchain, and submit transactions + + - **`signer`** - represents the account that will sign the transaction. In this case, you’re creating a signer using the private key associated with the account. The signer is responsible for authorizing transactions by digitally signing them with the private key + + - **`Wallet`** - combines both the provider (for blockchain interaction) and the signer (for transaction authorization), allowing you to sign and send transactions programmatically + +These components work together to create, sign, and submit a transaction to the blockchain. + +???- tip "Managing Private Keys Securely" + Handling private keys is unavoidable, so it’s crucial to manage them securely. Here are some best practices: + + - **Use environment variables** - avoid hardcoding private keys in your code. Use environment variables or secret management tools to inject private keys securely + - **Hardware wallets** - for production environments, consider integrating hardware wallets to keep private keys secure while allowing programmatic access through the SDK + +### Protocols + +While Wormhole is a Generic Message Passing (GMP) protocol, several protocols have been built to provide specific functionality. If available, each protocol will have a platform-specific implementation. These implementations provide methods to generate transactions or read state from the contract on-chain. + +#### Wormhole Core + +The core protocol underlies all Wormhole activity. This protocol is responsible for emitting the message containing the information necessary to perform bridging, including the [emitter address](https://docs.wormhole.com/wormhole/reference/glossary#emitter){target=\_blank}, the [sequence number](https://docs.wormhole.com/wormhole/reference/glossary#sequence){target=\_blank} for the message, and the payload of the message itself. + +The following example demonstrates sending and verifying a message using the Wormhole Core protocol on Solana. + +First, initialize a Wormhole instance for the Testnet environment, specifically for the Solana chain. Then, obtain a signer and its associated address, which will be used to sign transactions. + +Next, get a reference to the core messaging bridge, which is the main interface for interacting with Wormhole's cross-chain messaging capabilities. +The code then prepares a message for publication. This message includes: + +- The sender's address +- The message payload (in this case, the encoded string `lol`) +- A nonce (set to `0` here, but can be any user-defined value to uniquely identify the message) +- A [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank} (set to `0`, which determines the finality requirements for the message) + +After preparing the message, the next steps are to generate, sign, and send the transaction or transactions required to publish the message on the Solana blockchain. Once the transaction is confirmed, the Wormhole message ID is extracted from the transaction logs. This ID is crucial for tracking the message across chains. + +The code then waits for the Wormhole network to process and sign the message, turning it into a Verified Action Approval (VAA). This VAA is retrieved in a `Uint8Array` format, with a timeout of 60 seconds. + +Lastly, the code will demonstrate how to verify the message on the receiving end. A verification transaction is prepared using the original sender's address and the VAA, and finally, this transaction is signed and sent. + +???+ code "View the complete script" + ```ts + import { encoding, signSendWait, wormhole } from '@wormhole-foundation/sdk'; +import { getSigner } from './helpers/index.js'; +import solana from '@wormhole-foundation/sdk/solana'; +import evm from '@wormhole-foundation/sdk/evm'; + +(async function () { + const wh = await wormhole('Testnet', [solana, evm]); + + const chain = wh.getChain('Avalanche'); + const { signer, address } = await getSigner(chain); + + // Get a reference to the core messaging bridge + const coreBridge = await chain.getWormholeCore(); + + // Generate transactions, sign and send them + const publishTxs = coreBridge.publishMessage( + // Address of sender (emitter in VAA) + address.address, + // Message to send (payload in VAA) + encoding.bytes.encode('lol'), + // Nonce (user defined, no requirement for a specific value, useful to provide a unique identifier for the message) + 0, + // ConsistencyLevel (ie finality of the message, see wormhole docs for more) + 0 + ); + // Send the transaction(s) to publish the message + const txids = await signSendWait(chain, publishTxs, signer); + + // Take the last txid in case multiple were sent + // The last one should be the one containing the relevant + // event or log info + const txid = txids[txids.length - 1]; + + // Grab the wormhole message id from the transaction logs or storage + const [whm] = await chain.parseTransaction(txid!.txid); + + // Wait for the vaa to be signed and available with a timeout + const vaa = await wh.getVaa(whm!, 'Uint8Array', 60_000); + console.log(vaa); + + // Note: calling verifyMessage manually is typically not a useful thing to do + // As the VAA is typically submitted to the counterpart contract for + // A given protocol and the counterpart contract will verify the VAA + // This is simply for demo purposes + const verifyTxs = coreBridge.verifyMessage(address.address, vaa!); + console.log(await signSendWait(chain, verifyTxs, signer)); +})(); + ``` + +The payload contains the information necessary to perform whatever action is required based on the protocol that uses it. + +#### Token Bridge + +The most familiar protocol built on Wormhole is the Token Bridge. Every chain has a `TokenBridge` protocol client that provides a consistent interface for interacting with the Token Bridge, which includes methods to generate the transactions required to transfer tokens and methods to generate and redeem attestations. `WormholeTransfer` abstractions are the recommended way to interact with these protocols, but it is possible to use them directly. + +```ts +import { signSendWait } from '@wormhole-foundation/sdk'; + +const tb = await srcChain.getTokenBridge(); + +const token = '0xdeadbeef...'; +const txGenerator = tb.createAttestation(token); +const txids = await signSendWait(srcChain, txGenerator, src.signer); +``` + +Supported protocols are defined in the [definitions module](https://github.com/wormhole-foundation/connect-sdk/tree/main/core/definitions/src/protocols){target=\_blank}. + +## Transfers + +While using the [`ChainContext`](#chain-context) and [`Protocol`](#protocols) clients directly is possible, the SDK provides some helpful abstractions for transferring tokens. + +The `WormholeTransfer` interface provides a convenient abstraction to encapsulate the steps involved in a cross-chain transfer. + +### Token Transfers + +Performing a token transfer is trivial for any source and destination chains. You can create a new `Wormhole` object to make objects like `TokenTransfer` and `CircleTransfer`, to transfer tokens between chains. + +The following example demonstrates the process of initiating and completing a token transfer. It starts by creating a `TokenTransfer` object, which tracks the transfer's state throughout its lifecycle. The code then obtains a quote for the transfer, ensuring the amount is sufficient to cover fees and any requested native gas. + +The transfer process is divided into three main steps: + +1. Initiating the transfer on the source chain +2. Waiting for the transfer to be attested (if not automatic) +3. Completing the transfer on the destination chain + +For automatic transfers, the process ends after initiation. The code waits for the transfer to be attested for manual transfers and then completes it on the destination chain. + +```ts +const xfer = await wh.tokenTransfer( + route.token, + route.amount, + route.source.address, + route.destination.address, + route.delivery?.automatic ?? false, + route.payload, + route.delivery?.nativeGas + ); + + const quote = await TokenTransfer.quoteTransfer( + wh, + route.source.chain, + route.destination.chain, + xfer.transfer + ); + console.log(quote); + + if (xfer.transfer.automatic && quote.destinationToken.amount < 0) + throw 'The amount requested is too low to cover the fee and any native gas requested.'; + + // 1) Submit the transactions to the source chain, passing a signer to sign any txns + console.log('Starting transfer'); + const srcTxids = await xfer.initiateTransfer(route.source.signer); + console.log(`Started transfer: `, srcTxids); + + // If automatic, we're done + if (route.delivery?.automatic) return xfer; + + // 2) Wait for the VAA to be signed and ready (not required for auto transfer) + console.log('Getting Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); + + // 3) Redeem the VAA on the dest chain + console.log('Completing Transfer'); + const destTxids = await xfer.completeTransfer(route.destination.signer); + console.log(`Completed Transfer: `, destTxids); +``` + +??? code "View the complete script" + ```ts hl_lines="122" + import { + Chain, + Network, + TokenId, + TokenTransfer, + Wormhole, + amount, + isTokenId, + wormhole, +} from '@wormhole-foundation/sdk'; + +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { SignerStuff, getSigner, waitLog } from './helpers/index.js'; + +(async function () { + // Init Wormhole object, passing config for which network + // to use (e.g. Mainnet/Testnet) and what Platforms to support + const wh = await wormhole('Testnet', [evm, solana]); + + // Grab chain Contexts -- these hold a reference to a cached rpc client + const sendChain = wh.getChain('Avalanche'); + const rcvChain = wh.getChain('Solana'); + + // Shortcut to allow transferring native gas token + const token = Wormhole.tokenId(sendChain.chain, 'native'); + + // A TokenId is just a `{chain, address}` pair and an alias for ChainAddress + // The `address` field must be a parsed address. + // You can get a TokenId (or ChainAddress) prepared for you + // by calling the static `chainAddress` method on the Wormhole class. + // e.g. + // wAvax on Solana + // const token = Wormhole.tokenId("Solana", "3Ftc5hTz9sG4huk79onufGiebJNDMZNL8HYgdMJ9E7JR"); + // wSol on Avax + // const token = Wormhole.tokenId("Avalanche", "0xb10563644a6AB8948ee6d7f5b0a1fb15AaEa1E03"); + + // Normalized given token decimals later but can just pass bigints as base units + // Note: The Token bridge will dedust past 8 decimals + // This means any amount specified past that point will be returned + // To the caller + const amt = '0.05'; + + // With automatic set to true, perform an automatic transfer. This will invoke a relayer + // Contract intermediary that knows to pick up the transfers + // With automatic set to false, perform a manual transfer from source to destination + // Of the token + // On the destination side, a wrapped version of the token will be minted + // To the address specified in the transfer VAA + const automatic = false; + + // The Wormhole relayer has the ability to deliver some native gas funds to the destination account + // The amount specified for native gas will be swapped for the native gas token according + // To the swap rate provided by the contract, denominated in native gas tokens + const nativeGas = automatic ? '0.01' : undefined; + + // Get signer from local key but anything that implements + // Signer interface (e.g. wrapper around web wallet) should work + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); + + // Used to normalize the amount to account for the tokens decimals + const decimals = isTokenId(token) + ? Number(await wh.getDecimals(token.chain, token.address)) + : sendChain.config.nativeTokenDecimals; + + // Set this to true if you want to perform a round trip transfer + const roundTrip: boolean = false; + + // Set this to the transfer txid of the initiating transaction to recover a token transfer + // And attempt to fetch details about its progress. + let recoverTxid = undefined; + + // Finally create and perform the transfer given the parameters set above + const xfer = !recoverTxid + ? // Perform the token transfer + await tokenTransfer( + wh, + { + token, + amount: amount.units(amount.parse(amt, decimals)), + source, + destination, + delivery: { + automatic, + nativeGas: nativeGas + ? amount.units(amount.parse(nativeGas, decimals)) + : undefined, + }, + }, + roundTrip + ) + : // Recover the transfer from the originating txid + await TokenTransfer.from(wh, { + chain: source.chain.chain, + txid: recoverTxid, + }); + + const receipt = await waitLog(wh, xfer); + + // Log out the results + console.log(receipt); +})(); + +async function tokenTransfer( + wh: Wormhole, + route: { + token: TokenId; + amount: bigint; + source: SignerStuff; + destination: SignerStuff; + delivery?: { + automatic: boolean; + nativeGas?: bigint; + }; + payload?: Uint8Array; + }, + roundTrip?: boolean +): Promise> { + // Create a TokenTransfer object to track the state of the transfer over time + const xfer = await wh.tokenTransfer( + route.token, + route.amount, + route.source.address, + route.destination.address, + route.delivery?.automatic ?? false, + route.payload, + route.delivery?.nativeGas + ); + + const quote = await TokenTransfer.quoteTransfer( + wh, + route.source.chain, + route.destination.chain, + xfer.transfer + ); + console.log(quote); + + if (xfer.transfer.automatic && quote.destinationToken.amount < 0) + throw 'The amount requested is too low to cover the fee and any native gas requested.'; + + // 1) Submit the transactions to the source chain, passing a signer to sign any txns + console.log('Starting transfer'); + const srcTxids = await xfer.initiateTransfer(route.source.signer); + console.log(`Started transfer: `, srcTxids); + + // If automatic, we're done + if (route.delivery?.automatic) return xfer; + + // 2) Wait for the VAA to be signed and ready (not required for auto transfer) + console.log('Getting Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); + + // 3) Redeem the VAA on the dest chain + console.log('Completing Transfer'); + const destTxids = await xfer.completeTransfer(route.destination.signer); + console.log(`Completed Transfer: `, destTxids); + + // If no need to send back, dip + if (!roundTrip) return xfer; + + const { destinationToken: token } = quote; + return await tokenTransfer(wh, { + ...route, + token: token.token, + amount: token.amount, + source: route.destination, + destination: route.source, + }); +} + ``` + +Internally, this uses the [TokenBridge](#token-bridge) protocol client to transfer tokens. Like other Protocols, the `TokenBridge` protocol provides a consistent set of methods across all chains to generate a set of transactions for that specific chain. + +### Native USDC Transfers + +You can also transfer native USDC using [Circle's CCTP](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank}. Please note that if the transfer is set to `Automatic` mode, a fee for performing the relay will be included in the quote. This fee is deducted from the total amount requested to be sent. For example, if the user wishes to receive `1.0` on the destination, the amount sent should be adjusted to `1.0` plus the relay fee. The same principle applies to native gas drop offs. + +In the following example, the `wh.circleTransfer` function is called with several parameters to set up the transfer. It takes the amount to be transferred (in the token's base units), the sender's chain and address, and the receiver's chain and address. The function also allows specifying whether the transfer should be automatic, meaning it will be completed without further user intervention. + +An optional payload can be included with the transfer, though it's set to undefined in this case. Finally, if the transfer is automatic, you can request that native gas (the blockchain's native currency used for transaction fees) be sent to the receiver along with the transferred tokens. + +When waiting for the `VAA`, a timeout of `60,000` milliseconds is used. The amount of time required for the VAA to become available will [vary by network](https://developers.circle.com/stablecoins/docs/required-block-confirmations#mainnet){target=\_blank}. + +```ts +// Amount as bigint (base units) + req.amount, + // Sender chain/address + src.address, + // Receiver chain/address + dst.address, + // Automatic delivery boolean + req.automatic, + // Payload to be sent with the transfer + undefined, + // If automatic, native gas can be requested to be sent to the receiver + req.nativeGas + ); + + // Note, if the transfer is requested to be Automatic, a fee for performing the relay + // will be present in the quote. The fee comes out of the amount requested to be sent. + // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. + // The same applies for native gas dropoff + const quote = await CircleTransfer.quoteTransfer( + src.chain, + dst.chain, + xfer.transfer + ); + console.log('Quote', quote); + + console.log('Starting Transfer'); + const srcTxids = await xfer.initiateTransfer(src.signer); + console.log(`Started Transfer: `, srcTxids); + + if (req.automatic) { + const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); + console.log(`Finished relay: `, relayStatus); + return; + } + + console.log('Waiting for Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); + + console.log('Completing Transfer'); + const dstTxids = await xfer.completeTransfer(dst.signer); + console.log(`Completed Transfer: `, dstTxids); +} +``` + +??? code "View the complete script" + ```ts + import { + Chain, + CircleTransfer, + Network, + Signer, + TransactionId, + TransferState, + Wormhole, + amount, + wormhole, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { SignerStuff, getSigner, waitForRelay } from './helpers/index.js'; + +/* +Notes: +Only a subset of chains are supported by Circle for CCTP, see core/base/src/constants/circle.ts for currently supported chains + +AutoRelayer takes a 0.1 USDC fee when transferring to any chain beside Goerli, which is 1 USDC +*/ +// + +(async function () { + // Init the Wormhole object, passing in the config for which network + // to use (e.g. Mainnet/Testnet) and what Platforms to support + const wh = await wormhole('Testnet', [evm, solana]); + + // Grab chain Contexts + const sendChain = wh.getChain('Avalanche'); + const rcvChain = wh.getChain('Solana'); + + // Get signer from local key but anything that implements + // Signer interface (e.g. wrapper around web wallet) should work + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); + + // 6 decimals for USDC (except for BSC, so check decimals before using this) + const amt = amount.units(amount.parse('0.2', 6)); + + // Choose whether or not to have the attestation delivered for you + const automatic = false; + + // If the transfer is requested to be automatic, you can also request that + // during redemption, the receiver gets some amount of native gas transferred to them + // so that they may pay for subsequent transactions + // The amount specified here is denominated in the token being transferred (USDC here) + const nativeGas = automatic ? amount.units(amount.parse('0.0', 6)) : 0n; + + await cctpTransfer(wh, source, destination, { + amount: amt, + automatic, + nativeGas, + }); + +})(); + +async function cctpTransfer( + wh: Wormhole, + src: SignerStuff, + dst: SignerStuff, + req: { + amount: bigint; + automatic: boolean; + nativeGas?: bigint; + } +) { + + const xfer = await wh.circleTransfer( + // Amount as bigint (base units) + req.amount, + // Sender chain/address + src.address, + // Receiver chain/address + dst.address, + // Automatic delivery boolean + req.automatic, + // Payload to be sent with the transfer + undefined, + // If automatic, native gas can be requested to be sent to the receiver + req.nativeGas + ); + + // Note, if the transfer is requested to be Automatic, a fee for performing the relay + // will be present in the quote. The fee comes out of the amount requested to be sent. + // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. + // The same applies for native gas dropoff + const quote = await CircleTransfer.quoteTransfer( + src.chain, + dst.chain, + xfer.transfer + ); + console.log('Quote', quote); + + console.log('Starting Transfer'); + const srcTxids = await xfer.initiateTransfer(src.signer); + console.log(`Started Transfer: `, srcTxids); + + if (req.automatic) { + const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); + console.log(`Finished relay: `, relayStatus); + return; + } + + console.log('Waiting for Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); + + console.log('Completing Transfer'); + const dstTxids = await xfer.completeTransfer(dst.signer); + console.log(`Completed Transfer: `, dstTxids); +} + +export async function completeTransfer( + wh: Wormhole, + txid: TransactionId, + signer: Signer +): Promise { + + const xfer = await CircleTransfer.from(wh, txid); + + const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); + console.log('Got attestation: ', attestIds); + + const dstTxIds = await xfer.completeTransfer(signer); + console.log('Completed transfer: ', dstTxIds); +} + ``` + +### Recovering Transfers + +It may be necessary to recover an abandoned transfer before it is completed. To do this, instantiate the `Transfer` class with the `from` static method and pass one of several types of identifiers. A `TransactionId` or `WormholeMessageId` may be used to recover the transfer. + +```ts +const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); + console.log('Got attestation: ', attestIds); + + const dstTxIds = await xfer.completeTransfer(signer); + console.log('Completed transfer: ', dstTxIds); +``` + +??? code "View the complete script" + ```ts hl_lines="130" + import { + Chain, + CircleTransfer, + Network, + Signer, + TransactionId, + TransferState, + Wormhole, + amount, + wormhole, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { SignerStuff, getSigner, waitForRelay } from './helpers/index.js'; + +/* +Notes: +Only a subset of chains are supported by Circle for CCTP, see core/base/src/constants/circle.ts for currently supported chains + +AutoRelayer takes a 0.1 USDC fee when transferring to any chain beside Goerli, which is 1 USDC +*/ +// + +(async function () { + // Init the Wormhole object, passing in the config for which network + // to use (e.g. Mainnet/Testnet) and what Platforms to support + const wh = await wormhole('Testnet', [evm, solana]); + + // Grab chain Contexts + const sendChain = wh.getChain('Avalanche'); + const rcvChain = wh.getChain('Solana'); + + // Get signer from local key but anything that implements + // Signer interface (e.g. wrapper around web wallet) should work + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); + + // 6 decimals for USDC (except for BSC, so check decimals before using this) + const amt = amount.units(amount.parse('0.2', 6)); + + // Choose whether or not to have the attestation delivered for you + const automatic = false; + + // If the transfer is requested to be automatic, you can also request that + // during redemption, the receiver gets some amount of native gas transferred to them + // so that they may pay for subsequent transactions + // The amount specified here is denominated in the token being transferred (USDC here) + const nativeGas = automatic ? amount.units(amount.parse('0.0', 6)) : 0n; + + await cctpTransfer(wh, source, destination, { + amount: amt, + automatic, + nativeGas, + }); + +})(); + +async function cctpTransfer( + wh: Wormhole, + src: SignerStuff, + dst: SignerStuff, + req: { + amount: bigint; + automatic: boolean; + nativeGas?: bigint; + } +) { + + const xfer = await wh.circleTransfer( + // Amount as bigint (base units) + req.amount, + // Sender chain/address + src.address, + // Receiver chain/address + dst.address, + // Automatic delivery boolean + req.automatic, + // Payload to be sent with the transfer + undefined, + // If automatic, native gas can be requested to be sent to the receiver + req.nativeGas + ); + + // Note, if the transfer is requested to be Automatic, a fee for performing the relay + // will be present in the quote. The fee comes out of the amount requested to be sent. + // If the user wants to receive 1.0 on the destination, the amount to send should be 1.0 + fee. + // The same applies for native gas dropoff + const quote = await CircleTransfer.quoteTransfer( + src.chain, + dst.chain, + xfer.transfer + ); + console.log('Quote', quote); + + console.log('Starting Transfer'); + const srcTxids = await xfer.initiateTransfer(src.signer); + console.log(`Started Transfer: `, srcTxids); + + if (req.automatic) { + const relayStatus = await waitForRelay(srcTxids[srcTxids.length - 1]!); + console.log(`Finished relay: `, relayStatus); + return; + } + + console.log('Waiting for Attestation'); + const attestIds = await xfer.fetchAttestation(60_000); + console.log(`Got Attestation: `, attestIds); + + console.log('Completing Transfer'); + const dstTxids = await xfer.completeTransfer(dst.signer); + console.log(`Completed Transfer: `, dstTxids); +} + +export async function completeTransfer( + wh: Wormhole, + txid: TransactionId, + signer: Signer +): Promise { + + const xfer = await CircleTransfer.from(wh, txid); + + const attestIds = await xfer.fetchAttestation(60 * 60 * 1000); + console.log('Got attestation: ', attestIds); + + const dstTxIds = await xfer.completeTransfer(signer); + console.log('Completed transfer: ', dstTxIds); +} + ``` + +## Routes + +While a specific `WormholeTransfer`, such as `TokenTransfer` or `CCTPTransfer`, may be used, the developer must know exactly which transfer type to use for a given request. + +To provide a more flexible and generic interface, the `Wormhole` class provides a method to produce a `RouteResolver` that can be configured with a set of possible routes to be supported. + +The following section demonstrates setting up and validating a token transfer using Wormhole's routing system. + +```ts +const resolver = wh.resolver([ + routes.TokenBridgeRoute, // manual token bridge + routes.AutomaticTokenBridgeRoute, // automatic token bridge + routes.CCTPRoute, // manual CCTP + routes.AutomaticCCTPRoute, // automatic CCTP + routes.AutomaticPorticoRoute, // Native eth transfers + ]); +``` + +Once created, the resolver can be used to provide a list of input and possible output tokens. + +```ts +const srcTokens = await resolver.supportedSourceTokens(sendChain); + console.log( + 'Allowed source tokens: ', + srcTokens.map((t) => canonicalAddress(t)) + ); + + const sendToken = Wormhole.tokenId(sendChain.chain, 'native'); + + // Given the send token, what can we possibly get on the destination chain? + const destTokens = await resolver.supportedDestinationTokens( + sendToken, + sendChain, + destChain + ); + console.log( + 'For the given source token and routes configured, the following tokens may be receivable: ', + destTokens.map((t) => canonicalAddress(t)) + ); + // Grab the first one for the example + const destinationToken = destTokens[0]!; +``` + +Once the tokens are selected, a `RouteTransferRequest` may be created to provide a list of routes that can fulfill the request. Creating a transfer request fetches the token details since all routes will need to know about the tokens. + +```ts +// Since all routes will need to know about the tokens + const tr = await routes.RouteTransferRequest.create(wh, { + source: sendToken, + destination: destinationToken, + }); + + // Resolve the transfer request to a set of routes that can perform it + const foundRoutes = await resolver.findRoutes(tr); + console.log( + 'For the transfer parameters, we found these routes: ', + foundRoutes + ); +``` + +Choosing the best route is currently left to the developer, but strategies might include sorting by output amount or expected time to complete the transfer (no estimate is currently provided). + +After choosing the best route, extra parameters like `amount`, `nativeGasDropoff`, and `slippage` can be passed, depending on the specific route selected. A quote can be retrieved with the validated request. + +After successful validation, the code requests a transfer quote. This quote likely includes important details such as fees, estimated time, and the final amount to be received. If the quote is generated successfully, it's displayed for the user to review and decide whether to proceed with the transfer. This process ensures that all transfer details are properly set up and verified before any actual transfer occurs. + +```ts +'This route offers the following default options', + bestRoute.getDefaultOptions() + ); + + // Specify the amount as a decimal string + const amt = '0.001'; + // Create the transfer params for this request + const transferParams = { amount: amt, options: { nativeGas: 0 } }; + + // Validate the transfer params passed, this returns a new type of ValidatedTransferParams + // which (believe it or not) is a validated version of the input params + // This new var must be passed to the next step, quote + const validated = await bestRoute.validate(tr, transferParams); + if (!validated.valid) throw validated.error; + console.log('Validated parameters: ', validated.params); + + // Get a quote for the transfer, this too returns a new type that must + // be passed to the next step, execute (if you like the quote) + const quote = await bestRoute.quote(tr, validated.params); + if (!quote.success) throw quote.error; + console.log('Best route quote: ', quote); +``` + +Finally, assuming the quote looks good, the route can initiate the request with the quote and the `signer`. + +```ts +tr, + sender.signer, + quote, + receiver.address + ); + console.log('Initiated transfer with receipt: ', receipt); +``` + +??? code "View the complete script" + + ```ts + import { + Wormhole, + canonicalAddress, + routes, + wormhole, +} from '@wormhole-foundation/sdk'; + +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { getSigner } from './helpers/index.js'; + +(async function () { + // Setup + const wh = await wormhole('Testnet', [evm, solana]); + + // Get chain contexts + const sendChain = wh.getChain('Avalanche'); + const destChain = wh.getChain('Solana'); + + // Get signers from local config + const sender = await getSigner(sendChain); + const receiver = await getSigner(destChain); + + // Create new resolver, passing the set of routes to consider + const resolver = wh.resolver([ + routes.TokenBridgeRoute, // manual token bridge + routes.AutomaticTokenBridgeRoute, // automatic token bridge + routes.CCTPRoute, // manual CCTP + routes.AutomaticCCTPRoute, // automatic CCTP + routes.AutomaticPorticoRoute, // Native eth transfers + ]); + + // What tokens are available on the source chain? + const srcTokens = await resolver.supportedSourceTokens(sendChain); + console.log( + 'Allowed source tokens: ', + srcTokens.map((t) => canonicalAddress(t)) + ); + + const sendToken = Wormhole.tokenId(sendChain.chain, 'native'); + + // Given the send token, what can we possibly get on the destination chain? + const destTokens = await resolver.supportedDestinationTokens( + sendToken, + sendChain, + destChain + ); + console.log( + 'For the given source token and routes configured, the following tokens may be receivable: ', + destTokens.map((t) => canonicalAddress(t)) + ); + // Grab the first one for the example + const destinationToken = destTokens[0]!; + + // Creating a transfer request fetches token details + // Since all routes will need to know about the tokens + const tr = await routes.RouteTransferRequest.create(wh, { + source: sendToken, + destination: destinationToken, + }); + + // Resolve the transfer request to a set of routes that can perform it + const foundRoutes = await resolver.findRoutes(tr); + console.log( + 'For the transfer parameters, we found these routes: ', + foundRoutes + ); + + const bestRoute = foundRoutes[0]!; + console.log('Selected: ', bestRoute); + + console.log( + 'This route offers the following default options', + bestRoute.getDefaultOptions() + ); + + // Specify the amount as a decimal string + const amt = '0.001'; + // Create the transfer params for this request + const transferParams = { amount: amt, options: { nativeGas: 0 } }; + + // Validate the transfer params passed, this returns a new type of ValidatedTransferParams + // which (believe it or not) is a validated version of the input params + // This new var must be passed to the next step, quote + const validated = await bestRoute.validate(tr, transferParams); + if (!validated.valid) throw validated.error; + console.log('Validated parameters: ', validated.params); + + // Get a quote for the transfer, this too returns a new type that must + // be passed to the next step, execute (if you like the quote) + const quote = await bestRoute.quote(tr, validated.params); + if (!quote.success) throw quote.error; + console.log('Best route quote: ', quote); + + // If you're sure you want to do this, set this to true + const imSure = false; + if (imSure) { + // Now the transfer may be initiated + // A receipt will be returned, guess what you gotta do with that? + const receipt = await bestRoute.initiate( + tr, + sender.signer, + quote, + receiver.address + ); + console.log('Initiated transfer with receipt: ', receipt); + + // Kick off a wait log, if there is an opportunity to complete, this function will do it + // See the implementation for how this works + await routes.checkAndCompleteTransfer(bestRoute, receipt, receiver.signer); + } else { + console.log('Not initiating transfer (set `imSure` to true to do so)'); + } +})(); + ``` + +See the `router.ts` example in the [examples directory](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main/examples){target=\_blank} for a full working example. + +### Routes as Plugins + +Routes can be imported from any npm package that exports them and configured with the resolver. Custom routes must extend [`Route`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/0c57292368146c460abc9ce9e7f6a42be8e0b903/connect/src/routes/route.ts#L21-L64){target=\_blank} and implement [`StaticRouteMethods`](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/0c57292368146c460abc9ce9e7f6a42be8e0b903/connect/src/routes/route.ts#L101){target=\_blank}. + +```ts +import { Network, routes } from '@wormhole-foundation/sdk-connect'; + +export class CustomRoute + extends routes.Route + implements routes.StaticRouteMethods +{ + static meta = { + name: 'CustomRoute', + }; + // implementation... +} +``` + +A noteworthy example of a route exported from a separate npm package is Wormhole Native Token Transfers (NTT). See the [`NttAutomaticRoute`](https://github.com/wormhole-foundation/native-token-transfers/blob/66f8e414223a77f5c736541db0a7a85396cab71c/sdk/route/src/automatic.ts#L48){target=\_blank} route implementation. + +## See Also + +The TSdoc is available [on GitHub](https://wormhole-foundation.github.io/wormhole-sdk-ts/){target=\_blank}. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/cctp/ +--- BEGIN CONTENT --- +--- +title: Interacting with CCTP Contracts +description: Learn how to interact directly with Circle's CCTP Bridge contracts, including TokenMessenger, TokenMinter, and MessageTransmitter. +--- + +# Get Started with CCTP + +## Introduction + +Circle's [Cross-Chain Transfer Protocol (CCTP)](/docs/learn/transfers/cctp/){target=\_blank} by Circle is a permissionless utility that facilitates secure and efficient USDC transfers across blockchain networks through native burning and minting mechanisms. + +As decentralized finance (DeFi) protocols evolve, the need for flexible, secure cross-chain messaging has expanded, requiring solutions beyond simple asset transfers. Wormhole enhances CCTP's capabilities by allowing developers to compose more complex cross-chain interactions. With Wormhole's generic messaging, applications can execute smart contract logic alongside native USDC transfers, enabling richer, more versatile cross-chain experiences. + +This guide will walk you through getting started with Wormhole's CCTP contracts and show you how to integrate CCTP into your smart contracts, enabling the composition of advanced cross-chain functions with native USDC transfers. + +## Prerequisites + +To interact with the Wormhole CCTP, you'll need the following: + +- [The address of the CCTP contract](/docs/build/reference/contract-addresses/#cctp){target=\_blank} on the chains you're deploying your contract on +- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're deploying your contract on + +## Wormhole's CCTP Integration Contract + +Wormhole's Circle Integration contract, `CircleIntegration.sol`, is the contract you'll interact with directly. It burns and mints Circle-supported tokens by using [Circle's CCTP contracts](#circles-cctp-contracts). + +The Circle Integration contract emits Wormhole messages with arbitrary payloads to allow additional composability when performing cross-chain transfers of Circle-supported assets. + +This contract can be found in [Wormhole's `wormhole-circle-integration` repository](https://github.com/wormhole-foundation/wormhole-circle-integration/){target=\_blank} on GitHub. + +!!! note + Wormhole supports all CCTP-supported chains, but Circle currently supports only a [handful of chains](https://developers.circle.com/stablecoins/docs/supported-domains){target=\_blank}. Please refer to the [CCTP section of the Contract Addresses](/docs/build/reference/contract-addresses/#cctp){target=\_blank} reference page to view the complete list of supported chains. + +??? code "Circle Integration contract" + ```solidity + // SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.19; + +import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IWormhole} from "wormhole/interfaces/IWormhole.sol"; +import {BytesLib} from "wormhole/libraries/external/BytesLib.sol"; + +import {ICircleBridge} from "../interfaces/circle/ICircleBridge.sol"; + +import {CircleIntegrationGovernance} from "./CircleIntegrationGovernance.sol"; +import {CircleIntegrationMessages} from "./CircleIntegrationMessages.sol"; + +/** + * @notice This contract burns and mints Circle-supported tokens by using Circle's Cross-Chain Transfer Protocol. It also emits + * Wormhole messages with arbitrary payloads to allow for additional composability when performing cross-chain + * transfers of Circle-suppored assets. + */ +contract CircleIntegration is + CircleIntegrationMessages, + CircleIntegrationGovernance, + ReentrancyGuard +{ + using BytesLib for bytes; + + /** + * @notice Emitted when Circle-supported assets have been minted to the mintRecipient + * @param emitterChainId Wormhole chain ID of emitter contract on source chain + * @param emitterAddress Address (bytes32 zero-left-padded) of emitter on source chain + * @param sequence Sequence of Wormhole message used to mint tokens + */ + event Redeemed( + uint16 indexed emitterChainId, + bytes32 indexed emitterAddress, + uint64 indexed sequence + ); + + /** + * @notice `transferTokensWithPayload` calls the Circle Bridge contract to burn Circle-supported tokens. It emits + * a Wormhole message containing a user-specified payload with instructions for what to do with + * the Circle-supported assets once they have been minted on the target chain. + * @dev reverts if: + * - user passes insufficient value to pay Wormhole message fee + * - `token` is not supported by Circle Bridge + * - `amount` is zero + * - `targetChain` is not supported + * - `mintRecipient` is bytes32(0) + * @param transferParams Struct containing the following attributes: + * - `token` Address of the token to be burned + * - `amount` Amount of `token` to be burned + * - `targetChain` Wormhole chain ID of the target blockchain + * - `mintRecipient` The recipient wallet or contract address on the target chain + * @param batchId ID for Wormhole message batching + * @param payload Arbitrary payload to be delivered to the target chain via Wormhole + * @return messageSequence Wormhole sequence number for this contract + */ + function transferTokensWithPayload( + TransferParameters memory transferParams, + uint32 batchId, + bytes memory payload + ) public payable nonReentrant returns (uint64 messageSequence) { + // cache wormhole instance and fees to save on gas + IWormhole wormhole = wormhole(); + uint256 wormholeFee = wormhole.messageFee(); + + // confirm that the caller has sent enough ether to pay for the wormhole message fee + require(msg.value == wormholeFee, "insufficient value"); + + // Call the circle bridge and `depositForBurnWithCaller`. The `mintRecipient` + // should be the target contract (or wallet) composing on this contract. + (uint64 nonce, uint256 amountReceived) = _transferTokens( + transferParams.token, + transferParams.amount, + transferParams.targetChain, + transferParams.mintRecipient + ); + + // encode DepositWithPayload message + bytes memory encodedMessage = encodeDepositWithPayload( + DepositWithPayload({ + token: addressToBytes32(transferParams.token), + amount: amountReceived, + sourceDomain: localDomain(), + targetDomain: getDomainFromChainId(transferParams.targetChain), + nonce: nonce, + fromAddress: addressToBytes32(msg.sender), + mintRecipient: transferParams.mintRecipient, + payload: payload + }) + ); + + // send the DepositWithPayload wormhole message + messageSequence = wormhole.publishMessage{value: wormholeFee}( + batchId, + encodedMessage, + wormholeFinality() + ); + } + + function _transferTokens( + address token, + uint256 amount, + uint16 targetChain, + bytes32 mintRecipient + ) internal returns (uint64 nonce, uint256 amountReceived) { + // sanity check user input + require(amount > 0, "amount must be > 0"); + require(mintRecipient != bytes32(0), "invalid mint recipient"); + require(isAcceptedToken(token), "token not accepted"); + require( + getRegisteredEmitter(targetChain) != bytes32(0), + "target contract not registered" + ); + + // take custody of tokens + amountReceived = custodyTokens(token, amount); + + // cache Circle Bridge instance + ICircleBridge circleBridge = circleBridge(); + + // approve the Circle Bridge to spend tokens + SafeERC20.safeApprove( + IERC20(token), + address(circleBridge), + amountReceived + ); + + // burn tokens on the bridge + nonce = circleBridge.depositForBurnWithCaller( + amountReceived, + getDomainFromChainId(targetChain), + mintRecipient, + token, + getRegisteredEmitter(targetChain) + ); + } + + function custodyTokens( + address token, + uint256 amount + ) internal returns (uint256) { + // query own token balance before transfer + (, bytes memory queriedBalanceBefore) = token.staticcall( + abi.encodeWithSelector(IERC20.balanceOf.selector, address(this)) + ); + uint256 balanceBefore = abi.decode(queriedBalanceBefore, (uint256)); + + // deposit tokens + SafeERC20.safeTransferFrom( + IERC20(token), + msg.sender, + address(this), + amount + ); + + // query own token balance after transfer + (, bytes memory queriedBalanceAfter) = token.staticcall( + abi.encodeWithSelector(IERC20.balanceOf.selector, address(this)) + ); + uint256 balanceAfter = abi.decode(queriedBalanceAfter, (uint256)); + + return balanceAfter - balanceBefore; + } + + /** + * @notice `redeemTokensWithPayload` verifies the Wormhole message from the source chain and + * verifies that the passed Circle Bridge message is valid. It calls the Circle Bridge + * contract by passing the Circle message and attestation to mint tokens to the specified + * mint recipient. It also verifies that the caller is the specified mint recipient to ensure + * atomic execution of the additional instructions in the Wormhole message. + * @dev reverts if: + * - Wormhole message is not properly attested + * - Wormhole message was not emitted from a registered contrat + * - Wormhole message was already consumed by this contract + * - msg.sender is not the encoded mintRecipient + * - Circle Bridge message and Wormhole message are not associated + * - `receiveMessage` call to Circle Transmitter fails + * @param params Struct containing the following attributes: + * - `encodedWormholeMessage` Wormhole message emitted by a registered contract including + * information regarding the token burn on the source chain and an arbitrary message. + * - `circleBridgeMessage` Message emitted by Circle Bridge contract with information regarding + * the token burn on the source chain. + * - `circleAttestation` Serialized EC Signature attesting the cross-chain transfer + * @return depositInfo Struct containing the following attributes: + * - `token` Address (bytes32 left-zero-padded) of token to be minted + * - `amount` Amount of tokens to be minted + * - `sourceDomain` Circle domain for the source chain + * - `targetDomain` Circle domain for the target chain + * - `nonce` Circle sequence number for the transfer + * - `fromAddress` Source CircleIntegration contract caller's address + * - `mintRecipient` Recipient of minted tokens (must be caller of this contract) + * - `payload` Arbitrary Wormhole message payload + */ + function redeemTokensWithPayload( + RedeemParameters calldata params + ) public returns (DepositWithPayload memory depositInfo) { + // verify the wormhole message + IWormhole.VM memory verifiedMessage = verifyWormholeRedeemMessage( + params.encodedWormholeMessage + ); + + // Decode the message payload into the DepositWithPayload struct. Call the Circle TokenMinter + // contract to determine the address of the encoded token on this chain. + depositInfo = decodeDepositWithPayload(verifiedMessage.payload); + depositInfo.token = fetchLocalTokenAddress( + depositInfo.sourceDomain, + depositInfo.token + ); + + // confirm that circle gave us a valid token address + require(depositInfo.token != bytes32(0), "invalid local token address"); + + // confirm that the caller is the `mintRecipient` to ensure atomic execution + require( + addressToBytes32(msg.sender) == depositInfo.mintRecipient, + "caller must be mintRecipient" + ); + + // confirm that the caller passed the correct message pair + require( + verifyCircleMessage( + params.circleBridgeMessage, + depositInfo.sourceDomain, + depositInfo.targetDomain, + depositInfo.nonce + ), + "invalid message pair" + ); + + // call the circle bridge to mint tokens to the recipient + bool success = circleTransmitter().receiveMessage( + params.circleBridgeMessage, + params.circleAttestation + ); + require(success, "CIRCLE_INTEGRATION: failed to mint tokens"); + + // emit Redeemed event + emit Redeemed( + verifiedMessage.emitterChainId, + verifiedMessage.emitterAddress, + verifiedMessage.sequence + ); + } + + function verifyWormholeRedeemMessage( + bytes memory encodedMessage + ) internal returns (IWormhole.VM memory) { + require(evmChain() == block.chainid, "invalid evm chain"); + + // parse and verify the Wormhole core message + ( + IWormhole.VM memory verifiedMessage, + bool valid, + string memory reason + ) = wormhole().parseAndVerifyVM(encodedMessage); + + // confirm that the core layer verified the message + require(valid, reason); + + // verify that this message was emitted by a trusted contract + require(verifyEmitter(verifiedMessage), "unknown emitter"); + + // revert if this message has been consumed already + require( + !isMessageConsumed(verifiedMessage.hash), + "message already consumed" + ); + consumeMessage(verifiedMessage.hash); + + return verifiedMessage; + } + + function verifyEmitter( + IWormhole.VM memory vm + ) internal view returns (bool) { + // verify that the sender of the wormhole message is a trusted + return (getRegisteredEmitter(vm.emitterChainId) == vm.emitterAddress && + vm.emitterAddress != bytes32(0)); + } + + function verifyCircleMessage( + bytes memory circleMessage, + uint32 sourceDomain, + uint32 targetDomain, + uint64 nonce + ) internal pure returns (bool) { + // parse the circle bridge message inline + uint32 circleSourceDomain = circleMessage.toUint32(4); + uint32 circleTargetDomain = circleMessage.toUint32(8); + uint64 circleNonce = circleMessage.toUint64(12); + + // confirm that both the Wormhole message and Circle message share the same transfer info + return (sourceDomain == circleSourceDomain && + targetDomain == circleTargetDomain && + nonce == circleNonce); + } + + /** + * @notice Fetches the local token address given an address and domain from + * a different chain. + * @param sourceDomain Circle domain for the sending chain. + * @param sourceToken Address of the token for the sending chain. + * @return Address bytes32 formatted address of the `sourceToken` on this chain. + */ + function fetchLocalTokenAddress( + uint32 sourceDomain, + bytes32 sourceToken + ) public view returns (bytes32) { + return + addressToBytes32( + circleTokenMinter().remoteTokensToLocalTokens( + keccak256(abi.encodePacked(sourceDomain, sourceToken)) + ) + ); + } + + /** + * @notice Converts type address to bytes32 (left-zero-padded) + * @param address_ Address to convert to bytes32 + * @return Address bytes32 + */ + function addressToBytes32(address address_) public pure returns (bytes32) { + return bytes32(uint256(uint160(address_))); + } +} + ``` + +The functions provided by the Circle Integration contract are as follows: + +- **`transferTokensWithPayload`** - calls the Circle Bridge contract to burn Circle-supported tokens. It emits a Wormhole message containing a user-specified payload with instructions for what to do with the Circle-supported assets once they have been minted on the target chain + + ??? interface "Parameters" + + `transferParams` ++"TransferParameters"++ + + A tuple containing the parameters for the transfer. + + ??? child "`TransferParameters` struct" + + `token` ++"address"++ + + Address of the token to be burned. + + --- + + `amount` ++"uint256"++ + + Amount of the token to be burned. + + --- + + `targetChain` ++"uint16"++ + + Wormhole chain ID of the target blockchain. + + --- + + `mintRecipient` ++"bytes32"++ + + The recipient wallet or contract address on the target chain. + + --- + + `batchId` ++"uint32"++ + + The ID for Wormhole message batching. + + --- + + `payload` ++"bytes"++ + + Arbitrary payload to be delivered to the target chain via Wormhole. + + ??? interface "Returns" + + `messageSequence` ++"uint64"++ + + Wormhole sequence number for this contract. + +- `redeemTokensWithPayload` - verifies the Wormhole message from the source chain and verifies that the passed Circle Bridge message is valid. It calls the Circle Bridge contract by passing the Circle message and attestation to the `receiveMessage` function, which is responsible for minting tokens to the specified mint recipient. It also verifies that the caller is the specified mint recipient to ensure atomic execution of the additional instructions in the Wormhole message + + ??? interface "Parameters" + + `params` ++"RedeemParameters"++ + + A tuple containing the parameters for the redemption. + + ??? child "`RedeemParameters` struct" + + `encodedWormholeMessage` ++"bytes"++ + + Wormhole message emitted by a registered contract including information regarding the token burn on the source chain and an arbitrary message. + + --- + + `circleBridgeMessage` ++"bytes"++ + + Message emitted by Circle Bridge contract with information regarding the token burn on the source chain. + + --- + + `circleAttestation` ++"bytes"++ + + Serialized EC signature attesting the cross-chain transfer. + + ??? interface "Returns" + + `depositInfo` ++"DepositWithPayload"++ + + Information about the deposit. + + ??? child "`DepositWithPayload` struct" + + `token` ++"bytes32"++ + + Address (`bytes32` left-zero-padded) of token to be minted. + + --- + + `amount` ++"uint256"++ + + Amount of tokens to be minted. + + --- + + `sourceDomain` ++"uint32"++ + + Circle domain for the source chain. + + --- + + `targetDomain` ++"uint32"++ + + Circle domain for the target chain. + + --- + + `nonce` ++"uint64"++ + + Circle sequence number for the transfer. + + --- + + `fromAddress` ++"bytes32"++ + + Source Circle Integration contract caller's address. + + --- + + `mintRecipient` ++"bytes32"++ + + Recipient of minted tokens (must be caller of this contract). + + --- + + `payload` ++"bytes"++ + + Arbitrary Wormhole message payload. + + ??? interface "Emits" + + `Redeemed` - event emitted when Circle-supported assets have been minted to the `mintRecipient` + + ??? child "Event arguments" + + `emitterChainId` ++"uint16"++ + + Wormhole chain ID of emitter contract on source chain. + + --- + + `emitterAddress` ++"bytes32"++ + + Address (`bytes32` zero-left-padded) of emitter on source chain. + + --- + + `sequence` ++"uint64"++ + + Sequence of Wormhole message used to mint tokens. + +## Circle's CCTP Contracts + +Three key contracts power Circle's CCTP: + +- **`TokenMessenger`** - the entry point for cross-chain USDC transfers, routing messages to initiate USDC burns on the source chain, and mint USDC on the destination chain +- **`MessageTransmitter`** - handles generic message passing, sending messages from the source chain and receiving them on the destination chain +- **`TokenMinter`** - responsible for the actual minting and burning of USDC, utilizing chain-specific settings for both the burners and minters across different networks + +The following sections will examine these contracts in-depth, focusing on the methods invoked indirectly through function calls in the Wormhole Circle Integration contract. + +!!! note + When using Wormhole's CCTP integration, you will not directly interact with these contracts. You will indirectly interact with them through the Wormhole Circle Integration contract. + +These contracts can be found in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/){target=\_blank} on GitHub. + +### Token Messenger Contract + +The Token Messenger contract enables cross-chain USDC transfers by coordinating message exchanges between blockchains. It works alongside the Message Transmitter contract to relay messages for burning USDC on a source chain and minting it on a destination chain. The contract emits events to track both the burning of tokens and their subsequent minting on the destination chain. + +To ensure secure communication, the Token Messenger restricts message handling to registered remote Token Messenger contracts only. It verifies the proper conditions for token burning and manages local and remote minters using chain-specific settings. + +Additionally, the contract provides methods for updating or replacing previously sent burn messages, adding or removing remote Token Messenger contracts, and managing the minting process for cross-chain transfers. + +??? code "Token Messenger contract" + ```solidity + /* + * Copyright (c) 2022, Circle Internet Financial Limited. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +pragma solidity 0.7.6; + +import "./interfaces/IMessageHandler.sol"; +import "./interfaces/ITokenMinter.sol"; +import "./interfaces/IMintBurnToken.sol"; +import "./interfaces/IMessageTransmitter.sol"; +import "./messages/BurnMessage.sol"; +import "./messages/Message.sol"; +import "./roles/Rescuable.sol"; + +/** + * @title TokenMessenger + * @notice Sends messages and receives messages to/from MessageTransmitters + * and to/from TokenMinters + */ +contract TokenMessenger is IMessageHandler, Rescuable { + // ============ Events ============ + /** + * @notice Emitted when a DepositForBurn message is sent + * @param nonce unique nonce reserved by message + * @param burnToken address of token burnt on source domain + * @param amount deposit amount + * @param depositor address where deposit is transferred from + * @param mintRecipient address receiving minted tokens on destination domain as bytes32 + * @param destinationDomain destination domain + * @param destinationTokenMessenger address of TokenMessenger on destination domain as bytes32 + * @param destinationCaller authorized caller as bytes32 of receiveMessage() on destination domain, if not equal to bytes32(0). + * If equal to bytes32(0), any address can call receiveMessage(). + */ + event DepositForBurn( + uint64 indexed nonce, + address indexed burnToken, + uint256 amount, + address indexed depositor, + bytes32 mintRecipient, + uint32 destinationDomain, + bytes32 destinationTokenMessenger, + bytes32 destinationCaller + ); + + /** + * @notice Emitted when tokens are minted + * @param mintRecipient recipient address of minted tokens + * @param amount amount of minted tokens + * @param mintToken contract address of minted token + */ + event MintAndWithdraw( + address indexed mintRecipient, + uint256 amount, + address indexed mintToken + ); + + /** + * @notice Emitted when a remote TokenMessenger is added + * @param domain remote domain + * @param tokenMessenger TokenMessenger on remote domain + */ + event RemoteTokenMessengerAdded(uint32 domain, bytes32 tokenMessenger); + + /** + * @notice Emitted when a remote TokenMessenger is removed + * @param domain remote domain + * @param tokenMessenger TokenMessenger on remote domain + */ + event RemoteTokenMessengerRemoved(uint32 domain, bytes32 tokenMessenger); + + /** + * @notice Emitted when the local minter is added + * @param localMinter address of local minter + * @notice Emitted when the local minter is added + */ + event LocalMinterAdded(address localMinter); + + /** + * @notice Emitted when the local minter is removed + * @param localMinter address of local minter + * @notice Emitted when the local minter is removed + */ + event LocalMinterRemoved(address localMinter); + + // ============ Libraries ============ + using TypedMemView for bytes; + using TypedMemView for bytes29; + using BurnMessage for bytes29; + using Message for bytes29; + + // ============ State Variables ============ + // Local Message Transmitter responsible for sending and receiving messages to/from remote domains + IMessageTransmitter public immutable localMessageTransmitter; + + // Version of message body format + uint32 public immutable messageBodyVersion; + + // Minter responsible for minting and burning tokens on the local domain + ITokenMinter public localMinter; + + // Valid TokenMessengers on remote domains + mapping(uint32 => bytes32) public remoteTokenMessengers; + + // ============ Modifiers ============ + /** + * @notice Only accept messages from a registered TokenMessenger contract on given remote domain + * @param domain The remote domain + * @param tokenMessenger The address of the TokenMessenger contract for the given remote domain + */ + modifier onlyRemoteTokenMessenger(uint32 domain, bytes32 tokenMessenger) { + require( + _isRemoteTokenMessenger(domain, tokenMessenger), + "Remote TokenMessenger unsupported" + ); + _; + } + + /** + * @notice Only accept messages from the registered message transmitter on local domain + */ + modifier onlyLocalMessageTransmitter() { + // Caller must be the registered message transmitter for this domain + require(_isLocalMessageTransmitter(), "Invalid message transmitter"); + _; + } + + // ============ Constructor ============ + /** + * @param _messageTransmitter Message transmitter address + * @param _messageBodyVersion Message body version + */ + constructor(address _messageTransmitter, uint32 _messageBodyVersion) { + require( + _messageTransmitter != address(0), + "MessageTransmitter not set" + ); + localMessageTransmitter = IMessageTransmitter(_messageTransmitter); + messageBodyVersion = _messageBodyVersion; + } + + // ============ External Functions ============ + /** + * @notice Deposits and burns tokens from sender to be minted on destination domain. + * Emits a `DepositForBurn` event. + * @dev reverts if: + * - given burnToken is not supported + * - given destinationDomain has no TokenMessenger registered + * - transferFrom() reverts. For example, if sender's burnToken balance or approved allowance + * to this contract is less than `amount`. + * - burn() reverts. For example, if `amount` is 0. + * - MessageTransmitter returns false or reverts. + * @param amount amount of tokens to burn + * @param destinationDomain destination domain + * @param mintRecipient address of mint recipient on destination domain + * @param burnToken address of contract to burn deposited tokens, on local domain + * @return _nonce unique nonce reserved by message + */ + function depositForBurn( + uint256 amount, + uint32 destinationDomain, + bytes32 mintRecipient, + address burnToken + ) external returns (uint64 _nonce) { + return + _depositForBurn( + amount, + destinationDomain, + mintRecipient, + burnToken, + // (bytes32(0) here indicates that any address can call receiveMessage() + // on the destination domain, triggering mint to specified `mintRecipient`) + bytes32(0) + ); + } + + /** + * @notice Deposits and burns tokens from sender to be minted on destination domain. The mint + * on the destination domain must be called by `destinationCaller`. + * WARNING: if the `destinationCaller` does not represent a valid address as bytes32, then it will not be possible + * to broadcast the message on the destination domain. This is an advanced feature, and the standard + * depositForBurn() should be preferred for use cases where a specific destination caller is not required. + * Emits a `DepositForBurn` event. + * @dev reverts if: + * - given destinationCaller is zero address + * - given burnToken is not supported + * - given destinationDomain has no TokenMessenger registered + * - transferFrom() reverts. For example, if sender's burnToken balance or approved allowance + * to this contract is less than `amount`. + * - burn() reverts. For example, if `amount` is 0. + * - MessageTransmitter returns false or reverts. + * @param amount amount of tokens to burn + * @param destinationDomain destination domain + * @param mintRecipient address of mint recipient on destination domain + * @param burnToken address of contract to burn deposited tokens, on local domain + * @param destinationCaller caller on the destination domain, as bytes32 + * @return nonce unique nonce reserved by message + */ + function depositForBurnWithCaller( + uint256 amount, + uint32 destinationDomain, + bytes32 mintRecipient, + address burnToken, + bytes32 destinationCaller + ) external returns (uint64 nonce) { + // Destination caller must be nonzero. To allow any destination caller, use depositForBurn(). + require(destinationCaller != bytes32(0), "Invalid destination caller"); + + return + _depositForBurn( + amount, + destinationDomain, + mintRecipient, + burnToken, + destinationCaller + ); + } + + /** + * @notice Replace a BurnMessage to change the mint recipient and/or + * destination caller. Allows the sender of a previous BurnMessage + * (created by depositForBurn or depositForBurnWithCaller) + * to send a new BurnMessage to replace the original. + * The new BurnMessage will reuse the amount and burn token of the original, + * without requiring a new deposit. + * @dev The new message will reuse the original message's nonce. For a + * given nonce, all replacement message(s) and the original message are + * valid to broadcast on the destination domain, until the first message + * at the nonce confirms, at which point all others are invalidated. + * Note: The msg.sender of the replaced message must be the same as the + * msg.sender of the original message. + * @param originalMessage original message bytes (to replace) + * @param originalAttestation original attestation bytes + * @param newDestinationCaller the new destination caller, which may be the + * same as the original destination caller, a new destination caller, or an empty + * destination caller (bytes32(0), indicating that any destination caller is valid.) + * @param newMintRecipient the new mint recipient, which may be the same as the + * original mint recipient, or different. + */ + function replaceDepositForBurn( + bytes calldata originalMessage, + bytes calldata originalAttestation, + bytes32 newDestinationCaller, + bytes32 newMintRecipient + ) external { + bytes29 _originalMsg = originalMessage.ref(0); + _originalMsg._validateMessageFormat(); + bytes29 _originalMsgBody = _originalMsg._messageBody(); + _originalMsgBody._validateBurnMessageFormat(); + + bytes32 _originalMsgSender = _originalMsgBody._getMessageSender(); + // _originalMsgSender must match msg.sender of original message + require( + msg.sender == Message.bytes32ToAddress(_originalMsgSender), + "Invalid sender for message" + ); + require( + newMintRecipient != bytes32(0), + "Mint recipient must be nonzero" + ); + + bytes32 _burnToken = _originalMsgBody._getBurnToken(); + uint256 _amount = _originalMsgBody._getAmount(); + + bytes memory _newMessageBody = BurnMessage._formatMessage( + messageBodyVersion, + _burnToken, + newMintRecipient, + _amount, + _originalMsgSender + ); + + localMessageTransmitter.replaceMessage( + originalMessage, + originalAttestation, + _newMessageBody, + newDestinationCaller + ); + + emit DepositForBurn( + _originalMsg._nonce(), + Message.bytes32ToAddress(_burnToken), + _amount, + msg.sender, + newMintRecipient, + _originalMsg._destinationDomain(), + _originalMsg._recipient(), + newDestinationCaller + ); + } + + /** + * @notice Handles an incoming message received by the local MessageTransmitter, + * and takes the appropriate action. For a burn message, mints the + * associated token to the requested recipient on the local domain. + * @dev Validates the local sender is the local MessageTransmitter, and the + * remote sender is a registered remote TokenMessenger for `remoteDomain`. + * @param remoteDomain The domain where the message originated from. + * @param sender The sender of the message (remote TokenMessenger). + * @param messageBody The message body bytes. + * @return success Bool, true if successful. + */ + function handleReceiveMessage( + uint32 remoteDomain, + bytes32 sender, + bytes calldata messageBody + ) + external + override + onlyLocalMessageTransmitter + onlyRemoteTokenMessenger(remoteDomain, sender) + returns (bool) + { + bytes29 _msg = messageBody.ref(0); + _msg._validateBurnMessageFormat(); + require( + _msg._getVersion() == messageBodyVersion, + "Invalid message body version" + ); + + bytes32 _mintRecipient = _msg._getMintRecipient(); + bytes32 _burnToken = _msg._getBurnToken(); + uint256 _amount = _msg._getAmount(); + + ITokenMinter _localMinter = _getLocalMinter(); + + _mintAndWithdraw( + address(_localMinter), + remoteDomain, + _burnToken, + Message.bytes32ToAddress(_mintRecipient), + _amount + ); + + return true; + } + + /** + * @notice Add the TokenMessenger for a remote domain. + * @dev Reverts if there is already a TokenMessenger set for domain. + * @param domain Domain of remote TokenMessenger. + * @param tokenMessenger Address of remote TokenMessenger as bytes32. + */ + function addRemoteTokenMessenger(uint32 domain, bytes32 tokenMessenger) + external + onlyOwner + { + require(tokenMessenger != bytes32(0), "bytes32(0) not allowed"); + + require( + remoteTokenMessengers[domain] == bytes32(0), + "TokenMessenger already set" + ); + + remoteTokenMessengers[domain] = tokenMessenger; + emit RemoteTokenMessengerAdded(domain, tokenMessenger); + } + + /** + * @notice Remove the TokenMessenger for a remote domain. + * @dev Reverts if there is no TokenMessenger set for `domain`. + * @param domain Domain of remote TokenMessenger + */ + function removeRemoteTokenMessenger(uint32 domain) external onlyOwner { + // No TokenMessenger set for given remote domain. + require( + remoteTokenMessengers[domain] != bytes32(0), + "No TokenMessenger set" + ); + + bytes32 _removedTokenMessenger = remoteTokenMessengers[domain]; + delete remoteTokenMessengers[domain]; + emit RemoteTokenMessengerRemoved(domain, _removedTokenMessenger); + } + + /** + * @notice Add minter for the local domain. + * @dev Reverts if a minter is already set for the local domain. + * @param newLocalMinter The address of the minter on the local domain. + */ + function addLocalMinter(address newLocalMinter) external onlyOwner { + require(newLocalMinter != address(0), "Zero address not allowed"); + + require( + address(localMinter) == address(0), + "Local minter is already set." + ); + + localMinter = ITokenMinter(newLocalMinter); + + emit LocalMinterAdded(newLocalMinter); + } + + /** + * @notice Remove the minter for the local domain. + * @dev Reverts if the minter of the local domain is not set. + */ + function removeLocalMinter() external onlyOwner { + address _localMinterAddress = address(localMinter); + require(_localMinterAddress != address(0), "No local minter is set."); + + delete localMinter; + emit LocalMinterRemoved(_localMinterAddress); + } + + // ============ Internal Utils ============ + /** + * @notice Deposits and burns tokens from sender to be minted on destination domain. + * Emits a `DepositForBurn` event. + * @param _amount amount of tokens to burn (must be non-zero) + * @param _destinationDomain destination domain + * @param _mintRecipient address of mint recipient on destination domain + * @param _burnToken address of contract to burn deposited tokens, on local domain + * @param _destinationCaller caller on the destination domain, as bytes32 + * @return nonce unique nonce reserved by message + */ + function _depositForBurn( + uint256 _amount, + uint32 _destinationDomain, + bytes32 _mintRecipient, + address _burnToken, + bytes32 _destinationCaller + ) internal returns (uint64 nonce) { + require(_amount > 0, "Amount must be nonzero"); + require(_mintRecipient != bytes32(0), "Mint recipient must be nonzero"); + + bytes32 _destinationTokenMessenger = _getRemoteTokenMessenger( + _destinationDomain + ); + + ITokenMinter _localMinter = _getLocalMinter(); + IMintBurnToken _mintBurnToken = IMintBurnToken(_burnToken); + require( + _mintBurnToken.transferFrom( + msg.sender, + address(_localMinter), + _amount + ), + "Transfer operation failed" + ); + _localMinter.burn(_burnToken, _amount); + + // Format message body + bytes memory _burnMessage = BurnMessage._formatMessage( + messageBodyVersion, + Message.addressToBytes32(_burnToken), + _mintRecipient, + _amount, + Message.addressToBytes32(msg.sender) + ); + + uint64 _nonceReserved = _sendDepositForBurnMessage( + _destinationDomain, + _destinationTokenMessenger, + _destinationCaller, + _burnMessage + ); + + emit DepositForBurn( + _nonceReserved, + _burnToken, + _amount, + msg.sender, + _mintRecipient, + _destinationDomain, + _destinationTokenMessenger, + _destinationCaller + ); + + return _nonceReserved; + } + + /** + * @notice Sends a BurnMessage through the local message transmitter + * @dev calls local message transmitter's sendMessage() function if `_destinationCaller` == bytes32(0), + * or else calls sendMessageWithCaller(). + * @param _destinationDomain destination domain + * @param _destinationTokenMessenger address of registered TokenMessenger contract on destination domain, as bytes32 + * @param _destinationCaller caller on the destination domain, as bytes32. If `_destinationCaller` == bytes32(0), + * any address can call receiveMessage() on destination domain. + * @param _burnMessage formatted BurnMessage bytes (message body) + * @return nonce unique nonce reserved by message + */ + function _sendDepositForBurnMessage( + uint32 _destinationDomain, + bytes32 _destinationTokenMessenger, + bytes32 _destinationCaller, + bytes memory _burnMessage + ) internal returns (uint64 nonce) { + if (_destinationCaller == bytes32(0)) { + return + localMessageTransmitter.sendMessage( + _destinationDomain, + _destinationTokenMessenger, + _burnMessage + ); + } else { + return + localMessageTransmitter.sendMessageWithCaller( + _destinationDomain, + _destinationTokenMessenger, + _destinationCaller, + _burnMessage + ); + } + } + + /** + * @notice Mints tokens to a recipient + * @param _tokenMinter address of TokenMinter contract + * @param _remoteDomain domain where burned tokens originate from + * @param _burnToken address of token burned + * @param _mintRecipient recipient address of minted tokens + * @param _amount amount of minted tokens + */ + function _mintAndWithdraw( + address _tokenMinter, + uint32 _remoteDomain, + bytes32 _burnToken, + address _mintRecipient, + uint256 _amount + ) internal { + ITokenMinter _minter = ITokenMinter(_tokenMinter); + address _mintToken = _minter.mint( + _remoteDomain, + _burnToken, + _mintRecipient, + _amount + ); + + emit MintAndWithdraw(_mintRecipient, _amount, _mintToken); + } + + /** + * @notice return the remote TokenMessenger for the given `_domain` if one exists, else revert. + * @param _domain The domain for which to get the remote TokenMessenger + * @return _tokenMessenger The address of the TokenMessenger on `_domain` as bytes32 + */ + function _getRemoteTokenMessenger(uint32 _domain) + internal + view + returns (bytes32) + { + bytes32 _tokenMessenger = remoteTokenMessengers[_domain]; + require(_tokenMessenger != bytes32(0), "No TokenMessenger for domain"); + return _tokenMessenger; + } + + /** + * @notice return the local minter address if it is set, else revert. + * @return local minter as ITokenMinter. + */ + function _getLocalMinter() internal view returns (ITokenMinter) { + require(address(localMinter) != address(0), "Local minter is not set"); + return localMinter; + } + + /** + * @notice Return true if the given remote domain and TokenMessenger is registered + * on this TokenMessenger. + * @param _domain The remote domain of the message. + * @param _tokenMessenger The address of the TokenMessenger on remote domain. + * @return true if a remote TokenMessenger is registered for `_domain` and `_tokenMessenger`, + * on this TokenMessenger. + */ + function _isRemoteTokenMessenger(uint32 _domain, bytes32 _tokenMessenger) + internal + view + returns (bool) + { + return + _tokenMessenger != bytes32(0) && + remoteTokenMessengers[_domain] == _tokenMessenger; + } + + /** + * @notice Returns true if the message sender is the local registered MessageTransmitter + * @return true if message sender is the registered local message transmitter + */ + function _isLocalMessageTransmitter() internal view returns (bool) { + return + address(localMessageTransmitter) != address(0) && + msg.sender == address(localMessageTransmitter); + } +} + ``` + + This contract and the interfaces, contracts, and libraries it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/TokenMessenger.sol){target=\_blank} on GitHub. + +The functions provided by the Token Messenger contract are as follows: + +- **`depositForBurn`** - deposits and burns tokens from the sender to be minted on the destination domain. Minted tokens will be transferred to `mintRecipient` + + ??? interface "Parameters" + + `amount` ++"uint256"++ + + The amount of tokens to burn. + + --- + + `destinationDomain` ++"uint32"++ + + The network where the token will be minted after burn. + + --- + + `mintRecipient` ++"bytes32"++ + + Address of mint recipient on destination domain. + + --- + + `burnToken` ++"address"++ + + Address of contract to burn deposited tokens, on local domain. + + ??? interface "Returns" + + `_nonce` ++"uint64"++ + + Unique nonce reserved by message. + + ??? interface "Emits" + + `DepositForBurn` - event emitted when `depositForBurn` is called. The `destinationCaller` is set to `bytes32(0)` to allow any address to call `receiveMessage` on the destination domain + + ??? child "Event Arguments" + + `nonce` ++"uint64"++ + + Unique nonce reserved by message (indexed). + + --- + + `burnToken` ++"address"++ + + Address of token burnt on source domain. + + --- + + `amount` ++"uint256"++ + + The deposit amount. + + --- + + `depositor` ++"address"++ + + Address where deposit is transferred from. + + --- + + `mintRecipient` ++"bytes32"++ + + Address receiving minted tokens on destination domain. + + --- + + `destinationDomain` ++"uint32"++ - + + Destination domain. + + --- + + `destinationTokenMessenger` ++"bytes32"++ + + Address of `TokenMessenger` on destination domain. + + --- + + `destinationCaller` ++"bytes32"++ + + Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. + +- **`depositForBurnWithCaller`** - deposits and burns tokens from the sender to be minted on the destination domain. This method differs from `depositForBurn` in that the mint on the destination domain can only be called by the designated `destinationCaller` address + + ??? interface "Parameters" + + `amount` ++"uint256"++ + + The amount of tokens to burn. + + --- + + `destinationDomain` ++"uint32"++ + + The network where the token will be minted after burn. + + --- + + `mintRecipient` ++"bytes32"++ + + Address of mint recipient on destination domain. + + --- + + `burnToken` ++"address"++ + + Address of contract to burn deposited tokens, on local domain. + + --- + + `destinationCaller` ++"bytes32"++ + + Address of the caller on the destination domain who will trigger the mint. + + ??? interface "Returns" + + `_nonce` ++"uint64"++ + + Unique nonce reserved by message. + + ??? interface "Emits" + + `DepositForBurn` - event emitted when `depositForBurnWithCaller` is called + + ??? child "Event Arguments" + + `nonce` ++"uint64"++ + + Unique nonce reserved by message (indexed). + + --- + + `burnToken` ++"address"++ + + Address of token burnt on source domain. + + --- + + `amount` ++"uint256"++ + + The deposit amount. + + --- + + `depositor` ++"address"++ + + Address where deposit is transferred from. + + --- + + `mintRecipient` ++"bytes32"++ + + Address receiving minted tokens on destination domain. + + --- + + `destinationDomain` ++"uint32"++ - + + Destination domain. + + --- + + `destinationTokenMessenger` ++"bytes32"++ + + Address of `TokenMessenger` on destination domain. + + --- + + `destinationCaller` ++"bytes32"++ + + Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. + +- **`replaceDepositForBurn`** — replaces a previous `BurnMessage` to modify the mint recipient and/or the destination caller. The replacement message reuses the `_nonce` created by the original message, which allows the original message's sender to update the details without requiring a new deposit + + ??? interface "Parameters" + + `originalMessage` ++"bytes"++ + + The original burn message to be replaced. + + --- + + `originalAttestation` ++"bytes"++ + + The attestation of the original message. + + --- + + `newDestinationCaller` ++"bytes32"++ + + The new caller on the destination domain, can be the same or updated. + + --- + + `newMintRecipient` ++"bytes32"++ + + The new recipient for the minted tokens, can be the same or updated. + + ??? interface "Returns" + + None. + + ??? interface "Emits" + + `DepositForBurn` - event emitted when `replaceDepositForBurn` is called. Note that the `destinationCaller` will reflect the new destination caller, which may be the same as the original destination caller, a new destination caller, or an empty destination caller (`bytes32(0)`), indicating that any destination caller is valid + + ??? child "Event Arguments" + + `nonce` ++"uint64"++ + + Unique nonce reserved by message (indexed). + + --- + + `burnToken` ++"address"++ + + Address of token burnt on source domain. + + --- + + `amount` ++"uint256"++ + + The deposit amount. + + --- + + `depositor` ++"address"++ + + Address where deposit is transferred from. + + --- + + `mintRecipient` ++"bytes32"++ + + Address receiving minted tokens on destination domain. + + --- + + `destinationDomain` ++"uint32"++ - + + Destination domain. + + --- + + `destinationTokenMessenger` ++"bytes32"++ + + Address of `TokenMessenger` on destination domain. + + --- + + `destinationCaller` ++"bytes32"++ + + Authorized caller of the `receiveMessage` function on the destination domain, if not equal to `bytes32(0)`. If equal to `bytes32(0)`, any address can call `receiveMessage`. + +- **`handleReceiveMessage`** - handles an incoming message received by the local `MessageTransmitter` and takes the appropriate action. For a burn message, it mints the associated token to the requested recipient on the local domain. + + ???+ note + + Though this function can only be called by the local `MessageTransmitter`, it is included here as it emits the essential event for minting tokens and withdrawing to send to the recipient. + + ??? interface "Parameters" + + `remoteDomain` ++"uint32"++ + + The domain where the message originated. + + --- + + `sender` ++"bytes32"++ + + The address of the sender of the message. + + --- + + `messageBody` ++"bytes"++ + + The bytes making up the body of the message. + + ??? interface "Returns" + + `success` ++"boolean"++ + + Returns `true` if successful, otherwise, it returns `false`. + + ??? interface "Emits" + + `MintAndWithdraw` - event emitted when tokens are minted + + ??? child "Event arguments" + + `localMinter` ++"address"++ + + Minter responsible for minting and burning tokens on the local domain. + + --- + + `remoteDomain` ++"uint32"++ + + The domain where the message originated from. + + --- + + `burnToken` ++"address"++ + + Address of contract to burn deposited tokens, on local domain. + + --- + + `mintRecipient` ++"address"++ + + Recipient address of minted tokens (indexed). + + --- + + `amount` ++"uint256"++ + + Amount of minted tokens. + +### Message Transmitter Contract + +The Message Transmitter contract ensures secure messaging across blockchain domains by managing message dispatch and tracking communication with events like `MessageSent` and `MessageReceived`. It uses a unique nonce for each message, which ensures proper validation, verifies attestation signatures, and prevents replay attacks. + +The contract supports flexible delivery options, allowing messages to be sent to a specific `destinationCaller` or broadcast more generally. It also includes domain-specific configurations to manage communication between chains. + +Additional features include replacing previously sent messages, setting maximum message body sizes, and verifying that messages are received only once per nonce to maintain network integrity. + +??? code "Message Transmitter contract" + ```solidity + /* + * Copyright (c) 2022, Circle Internet Financial Limited. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +pragma solidity 0.7.6; + +import "@memview-sol/contracts/TypedMemView.sol"; +import "./interfaces/IMessageTransmitter.sol"; +import "./interfaces/IMessageHandler.sol"; +import "./messages/Message.sol"; +import "./roles/Pausable.sol"; +import "./roles/Rescuable.sol"; +import "./roles/Attestable.sol"; + +/** + * @title MessageTransmitter + * @notice Contract responsible for sending and receiving messages across chains. + */ +contract MessageTransmitter is + IMessageTransmitter, + Pausable, + Rescuable, + Attestable +{ + // ============ Events ============ + /** + * @notice Emitted when a new message is dispatched + * @param message Raw bytes of message + */ + event MessageSent(bytes message); + + /** + * @notice Emitted when a new message is received + * @param caller Caller (msg.sender) on destination domain + * @param sourceDomain The source domain this message originated from + * @param nonce The nonce unique to this message + * @param sender The sender of this message + * @param messageBody message body bytes + */ + event MessageReceived( + address indexed caller, + uint32 sourceDomain, + uint64 indexed nonce, + bytes32 sender, + bytes messageBody + ); + + /** + * @notice Emitted when max message body size is updated + * @param newMaxMessageBodySize new maximum message body size, in bytes + */ + event MaxMessageBodySizeUpdated(uint256 newMaxMessageBodySize); + + // ============ Libraries ============ + using TypedMemView for bytes; + using TypedMemView for bytes29; + using Message for bytes29; + + // ============ State Variables ============ + // Domain of chain on which the contract is deployed + uint32 public immutable localDomain; + + // Message Format version + uint32 public immutable version; + + // Maximum size of message body, in bytes. + // This value is set by owner. + uint256 public maxMessageBodySize; + + // Next available nonce from this source domain + uint64 public nextAvailableNonce; + + // Maps a bytes32 hash of (sourceDomain, nonce) -> uint256 (0 if unused, 1 if used) + mapping(bytes32 => uint256) public usedNonces; + + // ============ Constructor ============ + constructor( + uint32 _localDomain, + address _attester, + uint32 _maxMessageBodySize, + uint32 _version + ) Attestable(_attester) { + localDomain = _localDomain; + maxMessageBodySize = _maxMessageBodySize; + version = _version; + } + + // ============ External Functions ============ + /** + * @notice Send the message to the destination domain and recipient + * @dev Increment nonce, format the message, and emit `MessageSent` event with message information. + * @param destinationDomain Domain of destination chain + * @param recipient Address of message recipient on destination chain as bytes32 + * @param messageBody Raw bytes content of message + * @return nonce reserved by message + */ + function sendMessage( + uint32 destinationDomain, + bytes32 recipient, + bytes calldata messageBody + ) external override whenNotPaused returns (uint64) { + bytes32 _emptyDestinationCaller = bytes32(0); + uint64 _nonce = _reserveAndIncrementNonce(); + bytes32 _messageSender = Message.addressToBytes32(msg.sender); + + _sendMessage( + destinationDomain, + recipient, + _emptyDestinationCaller, + _messageSender, + _nonce, + messageBody + ); + + return _nonce; + } + + /** + * @notice Replace a message with a new message body and/or destination caller. + * @dev The `originalAttestation` must be a valid attestation of `originalMessage`. + * Reverts if msg.sender does not match sender of original message, or if the source domain of the original message + * does not match this MessageTransmitter's local domain. + * @param originalMessage original message to replace + * @param originalAttestation attestation of `originalMessage` + * @param newMessageBody new message body of replaced message + * @param newDestinationCaller the new destination caller, which may be the + * same as the original destination caller, a new destination caller, or an empty + * destination caller (bytes32(0), indicating that any destination caller is valid.) + */ + function replaceMessage( + bytes calldata originalMessage, + bytes calldata originalAttestation, + bytes calldata newMessageBody, + bytes32 newDestinationCaller + ) external override whenNotPaused { + // Validate each signature in the attestation + _verifyAttestationSignatures(originalMessage, originalAttestation); + + bytes29 _originalMsg = originalMessage.ref(0); + + // Validate message format + _originalMsg._validateMessageFormat(); + + // Validate message sender + bytes32 _sender = _originalMsg._sender(); + require( + msg.sender == Message.bytes32ToAddress(_sender), + "Sender not permitted to use nonce" + ); + + // Validate source domain + uint32 _sourceDomain = _originalMsg._sourceDomain(); + require( + _sourceDomain == localDomain, + "Message not originally sent from this domain" + ); + + uint32 _destinationDomain = _originalMsg._destinationDomain(); + bytes32 _recipient = _originalMsg._recipient(); + uint64 _nonce = _originalMsg._nonce(); + + _sendMessage( + _destinationDomain, + _recipient, + newDestinationCaller, + _sender, + _nonce, + newMessageBody + ); + } + + /** + * @notice Send the message to the destination domain and recipient, for a specified `destinationCaller` on the + * destination domain. + * @dev Increment nonce, format the message, and emit `MessageSent` event with message information. + * WARNING: if the `destinationCaller` does not represent a valid address, then it will not be possible + * to broadcast the message on the destination domain. This is an advanced feature, and the standard + * sendMessage() should be preferred for use cases where a specific destination caller is not required. + * @param destinationDomain Domain of destination chain + * @param recipient Address of message recipient on destination domain as bytes32 + * @param destinationCaller caller on the destination domain, as bytes32 + * @param messageBody Raw bytes content of message + * @return nonce reserved by message + */ + function sendMessageWithCaller( + uint32 destinationDomain, + bytes32 recipient, + bytes32 destinationCaller, + bytes calldata messageBody + ) external override whenNotPaused returns (uint64) { + require( + destinationCaller != bytes32(0), + "Destination caller must be nonzero" + ); + + uint64 _nonce = _reserveAndIncrementNonce(); + bytes32 _messageSender = Message.addressToBytes32(msg.sender); + + _sendMessage( + destinationDomain, + recipient, + destinationCaller, + _messageSender, + _nonce, + messageBody + ); + + return _nonce; + } + + /** + * @notice Receive a message. Messages with a given nonce + * can only be broadcast once for a (sourceDomain, destinationDomain) + * pair. The message body of a valid message is passed to the + * specified recipient for further processing. + * + * @dev Attestation format: + * A valid attestation is the concatenated 65-byte signature(s) of exactly + * `thresholdSignature` signatures, in increasing order of attester address. + * ***If the attester addresses recovered from signatures are not in + * increasing order, signature verification will fail.*** + * If incorrect number of signatures or duplicate signatures are supplied, + * signature verification will fail. + * + * Message format: + * Field Bytes Type Index + * version 4 uint32 0 + * sourceDomain 4 uint32 4 + * destinationDomain 4 uint32 8 + * nonce 8 uint64 12 + * sender 32 bytes32 20 + * recipient 32 bytes32 52 + * messageBody dynamic bytes 84 + * @param message Message bytes + * @param attestation Concatenated 65-byte signature(s) of `message`, in increasing order + * of the attester address recovered from signatures. + * @return success bool, true if successful + */ + function receiveMessage(bytes calldata message, bytes calldata attestation) + external + override + whenNotPaused + returns (bool success) + { + // Validate each signature in the attestation + _verifyAttestationSignatures(message, attestation); + + bytes29 _msg = message.ref(0); + + // Validate message format + _msg._validateMessageFormat(); + + // Validate domain + require( + _msg._destinationDomain() == localDomain, + "Invalid destination domain" + ); + + // Validate destination caller + if (_msg._destinationCaller() != bytes32(0)) { + require( + _msg._destinationCaller() == + Message.addressToBytes32(msg.sender), + "Invalid caller for message" + ); + } + + // Validate version + require(_msg._version() == version, "Invalid message version"); + + // Validate nonce is available + uint32 _sourceDomain = _msg._sourceDomain(); + uint64 _nonce = _msg._nonce(); + bytes32 _sourceAndNonce = _hashSourceAndNonce(_sourceDomain, _nonce); + require(usedNonces[_sourceAndNonce] == 0, "Nonce already used"); + // Mark nonce used + usedNonces[_sourceAndNonce] = 1; + + // Handle receive message + bytes32 _sender = _msg._sender(); + bytes memory _messageBody = _msg._messageBody().clone(); + require( + IMessageHandler(Message.bytes32ToAddress(_msg._recipient())) + .handleReceiveMessage(_sourceDomain, _sender, _messageBody), + "handleReceiveMessage() failed" + ); + + // Emit MessageReceived event + emit MessageReceived( + msg.sender, + _sourceDomain, + _nonce, + _sender, + _messageBody + ); + return true; + } + + /** + * @notice Sets the max message body size + * @dev This value should not be reduced without good reason, + * to avoid impacting users who rely on large messages. + * @param newMaxMessageBodySize new max message body size, in bytes + */ + function setMaxMessageBodySize(uint256 newMaxMessageBodySize) + external + onlyOwner + { + maxMessageBodySize = newMaxMessageBodySize; + emit MaxMessageBodySizeUpdated(maxMessageBodySize); + } + + // ============ Internal Utils ============ + /** + * @notice Send the message to the destination domain and recipient. If `_destinationCaller` is not equal to bytes32(0), + * the message can only be received on the destination chain when called by `_destinationCaller`. + * @dev Format the message and emit `MessageSent` event with message information. + * @param _destinationDomain Domain of destination chain + * @param _recipient Address of message recipient on destination domain as bytes32 + * @param _destinationCaller caller on the destination domain, as bytes32 + * @param _sender message sender, as bytes32 + * @param _nonce nonce reserved for message + * @param _messageBody Raw bytes content of message + */ + function _sendMessage( + uint32 _destinationDomain, + bytes32 _recipient, + bytes32 _destinationCaller, + bytes32 _sender, + uint64 _nonce, + bytes calldata _messageBody + ) internal { + // Validate message body length + require( + _messageBody.length <= maxMessageBodySize, + "Message body exceeds max size" + ); + + require(_recipient != bytes32(0), "Recipient must be nonzero"); + + // serialize message + bytes memory _message = Message._formatMessage( + version, + localDomain, + _destinationDomain, + _nonce, + _sender, + _recipient, + _destinationCaller, + _messageBody + ); + + // Emit MessageSent event + emit MessageSent(_message); + } + + /** + * @notice hashes `_source` and `_nonce`. + * @param _source Domain of chain where the transfer originated + * @param _nonce The unique identifier for the message from source to + destination + * @return hash of source and nonce + */ + function _hashSourceAndNonce(uint32 _source, uint64 _nonce) + internal + pure + returns (bytes32) + { + return keccak256(abi.encodePacked(_source, _nonce)); + } + + /** + * Reserve and increment next available nonce + * @return nonce reserved + */ + function _reserveAndIncrementNonce() internal returns (uint64) { + uint64 _nonceReserved = nextAvailableNonce; + nextAvailableNonce = nextAvailableNonce + 1; + return _nonceReserved; + } +} + ``` + + This contract and the interfaces, contracts, and libraries it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/MessageTransmitter.sol){target=\_blank} on GitHub. + +The functions provided by the Message Transmitter contract are as follows: + +- **`receiveMessage`** — processes and validates an incoming message and its attestation. If valid, it triggers further action based on the message body + + ??? interface "Parameters" + + `message` ++"bytes"++ + + The message to be processed, including details such as sender, recipient, and message body. + + --- + + `attestation` ++"bytes"++ + + Concatenated 65-byte signature(s) that attest to the validity of the `message`. + + ??? interface "Returns" + + `success` ++"boolean"++ + + Returns `true` if successful, otherwise, returns `false`. + + ??? interface "Emits" + + `MessageReceived` - event emitted when a new message is received + + ??? child "Event arguments" + + `caller` ++"address"++ + + Caller on destination domain. + + --- + + `sourceDomain` ++"uint32"++ + + The source domain this message originated from. + + --- + + `nonce` ++"uint64"++ + + Nonce unique to this message (indexed). + + --- + + `sender` ++"bytes32"++ + + Sender of this message. + + --- + + `messageBody` ++"bytes"++ + + The body of the message. + +- **`sendMessage`** — sends a message to the destination domain and recipient. It increments the `nonce`, assigns a unique `nonce` to the message, and emits a `MessageSent` event + + ??? interface "Parameters" + + `destinationDomain` ++"uint32"++ + + The target blockchain network where the message is to be sent. + + --- + + `recipient` ++"bytes32"++ + + The recipient's address on the destination domain. + + --- + + `messageBody` ++"bytes"++ + + The raw bytes content of the message. + + ??? interface "Returns" + + `nonce` ++"uint64"++ + + Nonce unique to this message. + + ??? interface "Emits" + + `MessageSent` - event emitted when a new message is dispatched + +??? child "Event arguments" + + `message` ++"bytes"++ + + The raw bytes of the message. + +- **`sendMessageWithCaller`** — sends a message to the destination domain and recipient, requiring a specific caller to trigger the message on the target chain. It increments the `nonce`, assigns a unique `nonce` to the message, and emits a `MessageSent` event + + ??? interface "Parameters" + + `destinationDomain` ++"uint32"++ + + The target blockchain network where the message is to be sent. + + --- + + `recipient` ++"bytes32"++ + + The recipient's address on the destination domain. + + --- + + `destinationCaller` ++"bytes32"++ + + The caller on the destination domain. + + --- + + `messageBody` ++"bytes"++ + + The raw bytes content of the message. + + ??? interface "Returns" + + `nonce` ++"uint64"++ + + Nonce unique to this message. + + ??? interface "Emits" + + `MessageSent` - event emitted when a new message is dispatched + +??? child "Event arguments" + + `message` ++"bytes"++ + + The raw bytes of the message. + +- **`replaceMessage`** — replaces an original message with a new message body and/or updates the destination caller. The replacement message reuses the `_nonce` created by the original message + + ??? interface "Parameters" + + `originalMessage` ++"bytes"++ + + The original message to be replaced. + + --- + + `originalAttestation` ++"bytes"++ + + Attestation verifying the original message. + + --- + + `newMessageBody` ++"bytes"++ + + The new content for the replaced message. + + --- + + `newDestinationCaller` ++"bytes32"++ + + The new destination caller, which may be the same as the original destination caller, a new destination caller, or an empty destination caller (`bytes32(0)`), indicating that any destination caller is valid. + + ??? interface "Returns" + + None. + + ??? interface "Emits" + + `MessageSent` - event emitted when a new message is dispatched + +??? child "Event arguments" + + `message` ++"bytes"++ + + The raw bytes of the message. + +### Token Minter Contract + +The Token Minter contract manages the minting and burning of tokens across different blockchain domains. It maintains a registry that links local tokens to their corresponding remote tokens, ensuring that tokens maintain a 1:1 exchange rate across domains. + +The contract restricts minting and burning functions to a designated Token Messenger, which ensures secure and reliable cross-chain operations. When tokens are burned on a remote domain, an equivalent amount is minted on the local domain for a specified recipient, and vice versa. + +To enhance control and flexibility, the contract includes mechanisms to pause operations, set burn limits, and update the Token Controller, which governs token minting permissions. Additionally, it provides functionality to add or remove the local Token Messenger and retrieve the local token address associated with a remote token. + +??? code "Token Minter contract" + ```solidity + /* + * Copyright (c) 2022, Circle Internet Financial Limited. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +pragma solidity 0.7.6; + +import "./interfaces/ITokenMinter.sol"; +import "./interfaces/IMintBurnToken.sol"; +import "./roles/Pausable.sol"; +import "./roles/Rescuable.sol"; +import "./roles/TokenController.sol"; +import "./TokenMessenger.sol"; + +/** + * @title TokenMinter + * @notice Token Minter and Burner + * @dev Maintains registry of local mintable tokens and corresponding tokens on remote domains. + * This registry can be used by caller to determine which token on local domain to mint for a + * burned token on a remote domain, and vice versa. + * It is assumed that local and remote tokens are fungible at a constant 1:1 exchange rate. + */ +contract TokenMinter is ITokenMinter, TokenController, Pausable, Rescuable { + // ============ Events ============ + /** + * @notice Emitted when a local TokenMessenger is added + * @param localTokenMessenger address of local TokenMessenger + * @notice Emitted when a local TokenMessenger is added + */ + event LocalTokenMessengerAdded(address localTokenMessenger); + + /** + * @notice Emitted when a local TokenMessenger is removed + * @param localTokenMessenger address of local TokenMessenger + * @notice Emitted when a local TokenMessenger is removed + */ + event LocalTokenMessengerRemoved(address localTokenMessenger); + + // ============ State Variables ============ + // Local TokenMessenger with permission to call mint and burn on this TokenMinter + address public localTokenMessenger; + + // ============ Modifiers ============ + /** + * @notice Only accept messages from the registered message transmitter on local domain + */ + modifier onlyLocalTokenMessenger() { + require(_isLocalTokenMessenger(), "Caller not local TokenMessenger"); + _; + } + + // ============ Constructor ============ + /** + * @param _tokenController Token controller address + */ + constructor(address _tokenController) { + _setTokenController(_tokenController); + } + + // ============ External Functions ============ + /** + * @notice Mints `amount` of local tokens corresponding to the + * given (`sourceDomain`, `burnToken`) pair, to `to` address. + * @dev reverts if the (`sourceDomain`, `burnToken`) pair does not + * map to a nonzero local token address. This mapping can be queried using + * getLocalToken(). + * @param sourceDomain Source domain where `burnToken` was burned. + * @param burnToken Burned token address as bytes32. + * @param to Address to receive minted tokens, corresponding to `burnToken`, + * on this domain. + * @param amount Amount of tokens to mint. Must be less than or equal + * to the minterAllowance of this TokenMinter for given `_mintToken`. + * @return mintToken token minted. + */ + function mint( + uint32 sourceDomain, + bytes32 burnToken, + address to, + uint256 amount + ) + external + override + whenNotPaused + onlyLocalTokenMessenger + returns (address mintToken) + { + address _mintToken = _getLocalToken(sourceDomain, burnToken); + require(_mintToken != address(0), "Mint token not supported"); + IMintBurnToken _token = IMintBurnToken(_mintToken); + + require(_token.mint(to, amount), "Mint operation failed"); + return _mintToken; + } + + /** + * @notice Burn tokens owned by this TokenMinter. + * @param burnToken burnable token address. + * @param burnAmount amount of tokens to burn. Must be + * > 0, and <= maximum burn amount per message. + */ + function burn(address burnToken, uint256 burnAmount) + external + override + whenNotPaused + onlyLocalTokenMessenger + onlyWithinBurnLimit(burnToken, burnAmount) + { + IMintBurnToken _token = IMintBurnToken(burnToken); + _token.burn(burnAmount); + } + + /** + * @notice Add TokenMessenger for the local domain. Only this TokenMessenger + * has permission to call mint() and burn() on this TokenMinter. + * @dev Reverts if a TokenMessenger is already set for the local domain. + * @param newLocalTokenMessenger The address of the new TokenMessenger on the local domain. + */ + function addLocalTokenMessenger(address newLocalTokenMessenger) + external + onlyOwner + { + require( + newLocalTokenMessenger != address(0), + "Invalid TokenMessenger address" + ); + + require( + localTokenMessenger == address(0), + "Local TokenMessenger already set" + ); + + localTokenMessenger = newLocalTokenMessenger; + + emit LocalTokenMessengerAdded(localTokenMessenger); + } + + /** + * @notice Remove the TokenMessenger for the local domain. + * @dev Reverts if the TokenMessenger of the local domain is not set. + */ + function removeLocalTokenMessenger() external onlyOwner { + address _localTokenMessengerBeforeRemoval = localTokenMessenger; + require( + _localTokenMessengerBeforeRemoval != address(0), + "No local TokenMessenger is set" + ); + + delete localTokenMessenger; + emit LocalTokenMessengerRemoved(_localTokenMessengerBeforeRemoval); + } + + /** + * @notice Set tokenController to `newTokenController`, and + * emit `SetTokenController` event. + * @dev newTokenController must be nonzero. + * @param newTokenController address of new token controller + */ + function setTokenController(address newTokenController) + external + override + onlyOwner + { + _setTokenController(newTokenController); + } + + /** + * @notice Get the local token address associated with the given + * remote domain and token. + * @param remoteDomain Remote domain + * @param remoteToken Remote token + * @return local token address + */ + function getLocalToken(uint32 remoteDomain, bytes32 remoteToken) + external + view + override + returns (address) + { + return _getLocalToken(remoteDomain, remoteToken); + } + + // ============ Internal Utils ============ + /** + * @notice Returns true if the message sender is the registered local TokenMessenger + * @return True if the message sender is the registered local TokenMessenger + */ + function _isLocalTokenMessenger() internal view returns (bool) { + return + address(localTokenMessenger) != address(0) && + msg.sender == address(localTokenMessenger); + } +} + ``` + + This contract and the interfaces and contracts it relies on are stored in [Circle's `evm-cctp-contracts` repository](https://github.com/circlefin/evm-cctp-contracts/blob/master/src/TokenMinter.sol){target=\_blank} on GitHub. + +Most of the methods of the Token Minter contract can be called only by the registered Token Messenger. However, there is one publicly accessible method, a public view function that allows anyone to query the local token associated with a remote domain and token. + +- **`getLocalToken`** — a read-only function that returns the local token address associated with a given remote domain and token + + ??? interface "Parameters" + + `remoteDomain` ++"uint32"++ + + The remote blockchain domain where the token resides. + + --- + + `remoteToken` ++"bytes32"++ + + The address of the token on the remote domain. + + ??? interface "Returns" + + ++"address"++ + + The local token address. + +## How to Interact with CCTP Contracts + +Before writing your own contracts, it's essential to understand the key functions and events of the Wormhole CCTP contracts. The primary functionality revolves around the following: + +- **Sending tokens with a message payload** - initiating a cross-chain transfer of Circle-supported assets along with a message payload to a specific target address on the target chain +- **Receiving tokens with a message payload** - validating messages received from other chains via Wormhole and then minting the tokens for the recipient + +### Sending Tokens and Messages + +To initiate a cross-chain transfer, you must call the `transferTokensWithPayload` method of Wormhole's Circle Integration (CCTP) contract. Once you have initiated a transfer, you must fetch the attested Wormhole message and parse the transaction logs to locate a transfer message emitted by the Circle Bridge contract. Then, a request must be sent to Circle's off-chain process with the transfer message to grab the attestation from the process's response, which validates the token mint on the target chain. + +To streamline this process, you can use the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk/tree/main){target=\_blank}, which exposes the [`WormholeRelayerSDK.sol` contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank}, including the [`CCTPSender` abstract contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/CCTPBase.sol){target=\_blank}. By inheriting this contract, you can transfer USDC while automatically relaying the message payload to the destination chain via a Wormhole-deployed relayer. + +??? code "CCTP Sender contract" + + ```solidity + abstract contract CCTPSender is CCTPBase { + uint8 internal constant CONSISTENCY_LEVEL_FINALIZED = 15; + + using CCTPMessageLib for *; + + mapping(uint16 => uint32) public chainIdToCCTPDomain; + + /** + * Sets the CCTP Domain corresponding to chain 'chain' to be 'cctpDomain' + * So that transfers of USDC to chain 'chain' use the target CCTP domain 'cctpDomain' + * + * This action can only be performed by 'cctpConfigurationOwner', who is set to be the deployer + * + * Currently, cctp domains are: + * Ethereum: Wormhole chain id 2, cctp domain 0 + * Avalanche: Wormhole chain id 6, cctp domain 1 + * Optimism: Wormhole chain id 24, cctp domain 2 + * Arbitrum: Wormhole chain id 23, cctp domain 3 + * Base: Wormhole chain id 30, cctp domain 6 + * + * These can be set via: + * setCCTPDomain(2, 0); + * setCCTPDomain(6, 1); + * setCCTPDomain(24, 2); + * setCCTPDomain(23, 3); + * setCCTPDomain(30, 6); + */ + function setCCTPDomain(uint16 chain, uint32 cctpDomain) public { + require( + msg.sender == cctpConfigurationOwner, + "Not allowed to set CCTP Domain" + ); + chainIdToCCTPDomain[chain] = cctpDomain; + } + + function getCCTPDomain(uint16 chain) internal view returns (uint32) { + return chainIdToCCTPDomain[chain]; + } + + /** + * transferUSDC wraps common boilerplate for sending tokens to another chain using IWormholeRelayer + * - approves the Circle TokenMessenger contract to spend 'amount' of USDC + * - calls Circle's 'depositForBurnWithCaller' + * - returns key for inclusion in WormholeRelayer `additionalVaas` argument + * + * Note: this requires that only the targetAddress can redeem transfers. + * + */ + + function transferUSDC( + uint256 amount, + uint16 targetChain, + address targetAddress + ) internal returns (MessageKey memory) { + IERC20(USDC).approve(address(circleTokenMessenger), amount); + bytes32 targetAddressBytes32 = addressToBytes32CCTP(targetAddress); + uint64 nonce = circleTokenMessenger.depositForBurnWithCaller( + amount, + getCCTPDomain(targetChain), + targetAddressBytes32, + USDC, + targetAddressBytes32 + ); + return + MessageKey( + CCTPMessageLib.CCTP_KEY_TYPE, + abi.encodePacked(getCCTPDomain(wormhole.chainId()), nonce) + ); + } + + // Publishes a CCTP transfer of 'amount' of USDC + // and requests a delivery of the transfer along with 'payload' to 'targetAddress' on 'targetChain' + // + // The second step is done by publishing a wormhole message representing a request + // to call 'receiveWormholeMessages' on the address 'targetAddress' on chain 'targetChain' + // with the payload 'abi.encode(amount, payload)' + // (and we encode the amount so it can be checked on the target chain) + function sendUSDCWithPayloadToEvm( + uint16 targetChain, + address targetAddress, + bytes memory payload, + uint256 receiverValue, + uint256 gasLimit, + uint256 amount + ) internal returns (uint64 sequence) { + MessageKey[] memory messageKeys = new MessageKey[](1); + messageKeys[0] = transferUSDC(amount, targetChain, targetAddress); + + bytes memory userPayload = abi.encode(amount, payload); + address defaultDeliveryProvider = wormholeRelayer + .getDefaultDeliveryProvider(); + + (uint256 cost, ) = wormholeRelayer.quoteEVMDeliveryPrice( + targetChain, + receiverValue, + gasLimit + ); + + sequence = wormholeRelayer.sendToEvm{value: cost}( + targetChain, + targetAddress, + userPayload, + receiverValue, + 0, + gasLimit, + targetChain, + address(0x0), + defaultDeliveryProvider, + messageKeys, + CONSISTENCY_LEVEL_FINALIZED + ); + } + + function addressToBytes32CCTP(address addr) private pure returns (bytes32) { + return bytes32(uint256(uint160(addr))); + } +} + ``` + +The `CCTPSender` abstract contract exposes the `sendUSDCWithPayloadToEvm` function. This function publishes a CCTP transfer of the provided `amount` of USDC and requests that the transfer be delivered along with a `payload` to the specified `targetAddress` on the `targetChain`. + +```solidity +function sendUSDCWithPayloadToEvm( + uint16 targetChain, + address targetAddress, + bytes memory payload, + uint256 receiverValue, + uint256 gasLimit, + uint256 amount +) internal returns (uint64 sequence) +``` + +??? interface "Parameters" + + `targetChain` ++"uint16"++ + + The target chain for the transfer. + + --- + + `targetAddress` ++"address"++ + + The target address for the transfer. + + --- + + `payload` ++"bytes"++ + + Arbitrary payload to be delivered to the target chain via Wormhole. + + --- + + `gasLimit` ++"uint256"++ + + The gas limit with which to call `targetAddress`. + + --- + + `amount` ++"uint256"++ + + The amount of USDC to transfer. + + --- + +??? interface "Returns" + + `sequence` ++"uint64"++ + + Sequence number of the published VAA containing the delivery instructions. + +When the `sendUSDCWithPayloadToEvm` function is called, the following series of actions are executed: + +1. **USDC transfer initiation**: + + - The Circle Token Messenger contract is approved to spend the specified amount of USDC. + - The `depositForBurnWithCaller` function of the Token Messenger contract is invoked + - A key is returned, which is to be provided to the Wormhole relayer for message delivery + +2. **Message encoding** - the message `payload` is encoded for transmission via the Wormhole relayer. The encoded value also includes the `amount` so that it can be checked on the target chain +3. **Retrieving delivery provider** - the current default delivery provider's address is retrieved +4. **Cost calculation** - the transfer cost is calculated using the Wormhole relayer's `quoteEVMDeliveryPrice` function +5. **Message dispatch**: + + - The `sendToEvm` function of the Wormhole relayer is called with the encoded payload, the delivery provider's address, and the arguments passed to `sendUSDCWithPayloadToEvm` + - The function must be called with `msg.value` set to the previously calculated cost (from step 4) + - This function publishes an instruction for the delivery provider to relay the payload and VAAs specified by the key (from step 1) to the target address on the target chain + +A simple example implementation is as follows: + +```solidity +function sendCrossChainDeposit( + uint16 targetChain, + address targetAddress, + address recipient, + uint256 amount, + uint256, + gasLimit +) public payable { + uint256 cost = quoteCrossChainDeposit(targetChain); + require( + msg.value == cost, + "msg.value must be quoteCrossChainDeposit(targetChain)" + ); + + IERC20(USDC).transferFrom(msg.sender, address(this), amount); + + bytes memory payload = abi.encode(recipient); + sendUSDCWithPayloadToEvm( + targetChain, + targetAddress, // address (on targetChain) to send token and payload to + payload, + 0, // receiver value + gasLimit, + amount + ); +} +``` + +The above example sends a specified amount of USDC and the recipient's address as a payload to a target contract on another chain, ensuring that the correct cost is provided for the cross-chain transfer. + +### Receiving Tokens and Messages + +To complete the cross-chain transfer, you must invoke the `redeemTokensWithPayload` function on the target Wormhole Circle Integration contract. This function verifies the message's authenticity, decodes the payload, confirms the recipient and sender, checks message delivery, and then calls the `receiveMessage` function of the [Message Transmitter](#message-transmitter-contract) contract. + +Using the Wormhole-deployed relayer automatically triggers the `receiveWormholeMessages` function. This function is defined in the [`WormholeRelayerSDK.sol` contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayerSDK.sol){target=\_blank} from the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk/tree/main){target=\_blank} and is implemented within the [`CCTPReceiver` abstract contract](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/WormholeRelayer/CCTPBase.sol){target=\_blank}. + +??? code "CCTP Receiver contract" + + ```solidity + abstract contract CCTPReceiver is CCTPBase { + function redeemUSDC( + bytes memory cctpMessage + ) internal returns (uint256 amount) { + (bytes memory message, bytes memory signature) = abi.decode( + cctpMessage, + (bytes, bytes) + ); + uint256 beforeBalance = IERC20(USDC).balanceOf(address(this)); + circleMessageTransmitter.receiveMessage(message, signature); + return IERC20(USDC).balanceOf(address(this)) - beforeBalance; + } + + function receiveWormholeMessages( + bytes memory payload, + bytes[] memory additionalMessages, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 deliveryHash + ) external payable { + // Currently, 'sendUSDCWithPayloadToEVM' only sends one CCTP transfer + // That can be modified if the integrator desires to send multiple CCTP transfers + // in which case the following code would have to be modified to support + // redeeming these multiple transfers and checking that their 'amount's are accurate + require( + additionalMessages.length <= 1, + "CCTP: At most one Message is supported" + ); + + uint256 amountUSDCReceived; + if (additionalMessages.length == 1) + amountUSDCReceived = redeemUSDC(additionalMessages[0]); + + (uint256 amount, bytes memory userPayload) = abi.decode( + payload, + (uint256, bytes) + ); + + // Check that the correct amount was received + // It is important to verify that the 'USDC' sent in by the relayer is the same amount + // that the sender sent in on the source chain + require(amount == amountUSDCReceived, "Wrong amount received"); + + receivePayloadAndUSDC( + userPayload, + amountUSDCReceived, + sourceAddress, + sourceChain, + deliveryHash + ); + } + + // Implement this function to handle in-bound deliveries that include a CCTP transfer + function receivePayloadAndUSDC( + bytes memory payload, + uint256 amountUSDCReceived, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 deliveryHash + ) internal virtual {} +} + ``` + +Although you do not need to interact with the `receiveWormholeMessages` function directly, it's important to understand what it does. This function processes cross-chain messages and USDC transfers via Wormhole's Circle (CCTP) Bridge. Here's a summary of what it does: + +1. **Validate additional messages** - the function checks that there is at most one CCTP transfer message in the `additionalMessages` array, as it currently only supports processing a single CCTP transfer +2. **Redeem USDC**: + - If there is a CCTP message, it calls the `redeemUSDC` function of the `CCTPReceiver` contract to decode and redeem the USDC + - This results in the call of the `receiveMessage` function of Circle's Message Transmitter contract to redeem the USDC based on the provided message and signature + - The amount of USDC received is calculated by subtracting the contract's previous balance from the current balance after redeeming the USDC +3. **Decode payload** - the incoming payload is decoded, extracting both the expected amount of USDC and a `userPayload` (which could be any additional data) +4. **Verify the amount** - it ensures that the amount of USDC received matches the amount encoded in the payload. If the amounts don't match, the transaction is reverted +5. **Handle the payload and USDC** - after verifying the amounts, `receivePayloadAndUSDC` is called, which is meant to handle the actual logic for processing the received payload and USDC transfer + +You'll need to implement the `receivePayloadAndUSDC` function to transfer the USDC and handle the payload as your application needs. A simple example implementation is as follows: + +```solidity +function receivePayloadAndUSDC( + bytes memory payload, + uint256 amountUSDCReceived, + bytes32, // sourceAddress + uint16, // sourceChain + bytes32 // deliveryHash +) internal override onlyWormholeRelayer { + address recipient = abi.decode(payload, (address)); + + IERC20(USDC).transfer(recipient, amountUSDCReceived); +} +``` + +## Complete Example + +To view a complete example of creating a contract that integrates with Wormhole's CCTP contracts to send and receive USDC cross-chain, check out the [Hello USDC](https://github.com/wormhole-foundation/hello-usdc){target=\_blank} repository on GitHub. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration-v0/ +--- BEGIN CONTENT --- +--- +title: Configure Your Connect Widget: v0 +description: Configure Wormhole Connect v0 for React or HTML, set themes, define tokens, networks, and customize RPC endpoints for optimized blockchain interactions. +--- + +# Configure Your Connect Widget + +## Introduction {: #introduction } + +Wormhole Connect is a flexible React widget that streamlines cross-chain asset transfers and enables seamless interoperability by leveraging Wormhole's powerful infrastructure. Designed for easy integration into decentralized applications (dApps), Wormhole Connect abstracts the complexities of cross-chain communication, providing a user-friendly experience for both developers and end users. + +This guide provides detailed instructions on configuring Wormhole Connect and highlights the many ways it can be customized to fit your specific needs, from integrating supported blockchains and tokens to tailoring the user interface. + +!!! note + For documentation on the latest version of Connect, please refer to the current [configuration documentation](/docs/build/transfers/connect/configuration/){target=\_blank}. If you are looking to upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/transfers/connect/upgrade/){target=\_blank} for detailed instructions. + +## Get Started + +Configure the Wormhole Connect React component by passing a `WormholeConnectConfig` object as the `config` attribute. If using the hosted version, provide `config` and `theme` as JSON-serialized strings on the mount point. + +=== "React" + + ```ts + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + networks: ['ethereum', 'polygon', 'solana'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], + rpcs: { + ethereum: 'https://rpc.ankr.com/eth', + solana: 'https://rpc.ankr.com/solana', + } +} + + + ``` + +=== "HTML Tags" + + ```html +
+ ``` + +## Examples {: #examples } + +Below are some examples of different ways you can configure Connect. See `WormholeConnectConfig` in the below file for a full view of the supported configuration parameters. + +??? code "View `WormholeConnectConfig`" + ```ts + import { + ChainName, + WormholeContext, + WormholeConfig, + ChainResourceMap, +} from 'sdklegacy'; +import MAINNET from './mainnet'; +import TESTNET from './testnet'; +import DEVNET from './devnet'; +import type { WormholeConnectConfig } from './types'; +import { + Network, + InternalConfig, + Route, + WrappedTokenAddressCache, +} from './types'; +import { + mergeCustomTokensConfig, + mergeNttGroups, + validateDefaults, +} from './utils'; +import { wrapEventHandler } from './events'; + +import { SDKConverter } from './converter'; + +import { + wormhole as getWormholeV2, + Wormhole as WormholeV2, + Network as NetworkV2, + Token as TokenV2, + Chain as ChainV2, + ChainTokens as ChainTokensV2, + WormholeConfigOverrides as WormholeConfigOverridesV2, +} from '@wormhole-foundation/sdk'; + +import '@wormhole-foundation/sdk/addresses'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import aptos from '@wormhole-foundation/sdk/aptos'; +import sui from '@wormhole-foundation/sdk/sui'; +import cosmwasm from '@wormhole-foundation/sdk/cosmwasm'; +import algorand from '@wormhole-foundation/sdk/algorand'; + +export function buildConfig( + customConfig?: WormholeConnectConfig +): InternalConfig { + const network = ( + customConfig?.network || + customConfig?.env || // TODO remove; deprecated + import.meta.env.REACT_APP_CONNECT_ENV?.toLowerCase() || + 'mainnet' + ).toLowerCase() as Network; + + if (!['mainnet', 'testnet', 'devnet'].includes(network)) + throw new Error(`Invalid env "${network}"`); + + const networkData = { MAINNET, DEVNET, TESTNET }[network.toUpperCase()]!; + + const tokens = mergeCustomTokensConfig( + networkData.tokens, + customConfig?.tokensConfig + ); + + const sdkConfig = WormholeContext.getConfig(network); + + const rpcs = Object.assign( + {}, + sdkConfig.rpcs, + networkData.rpcs, + customConfig?.rpcs + ); + + const wh = getWormholeContext(network, sdkConfig, rpcs); + + if (customConfig?.bridgeDefaults) { + validateDefaults(customConfig.bridgeDefaults, networkData.chains, tokens); + } + + const sdkConverter = new SDKConverter(wh); + + return { + wh, + sdkConfig, + sdkConverter, + + v2Network: sdkConverter.toNetworkV2(network), + + network, + isMainnet: network === 'mainnet', + // External resources + rpcs, + rest: Object.assign( + {}, + sdkConfig.rest, + networkData.rest, + customConfig?.rest + ), + graphql: Object.assign({}, networkData.graphql, customConfig?.graphql), + wormholeApi: { + mainnet: 'https://api.wormholescan.io/', + testnet: 'https://api.testnet.wormholescan.io/', + devnet: '', + }[network], + wormholeRpcHosts: { + mainnet: [ + 'https://wormhole-v2-mainnet-api.mcf.rocks', + 'https://wormhole-v2-mainnet-api.chainlayer.network', + 'https://wormhole-v2-mainnet-api.staking.fund', + ], + testnet: [ + 'https://guardian.testnet.xlabs.xyz', + 'https://guardian-01.testnet.xlabs.xyz', + 'https://guardian-02.testnet.xlabs.xyz', + ], + devnet: ['http://localhost:7071'], + }[network], + coinGeckoApiKey: customConfig?.coinGeckoApiKey, + + // Callbacks + triggerEvent: wrapEventHandler(customConfig?.eventHandler), + validateTransfer: customConfig?.validateTransferHandler, + + // White lists + chains: networkData.chains, + chainsArr: Object.values(networkData.chains).filter((chain) => { + return customConfig?.networks + ? customConfig.networks!.includes(chain.key) + : true; + }), + tokens, + tokensArr: Object.values(tokens).filter((token) => { + return customConfig?.tokens + ? customConfig.tokens!.includes(token.key) + : true; + }), + + // For token bridge ^_^ + wrappedTokenAddressCache: new WrappedTokenAddressCache( + tokens, + sdkConverter + ), + + gasEstimates: networkData.gasEstimates, + // TODO: routes that aren't supported yet are disabled + routes: (customConfig?.routes ?? Object.values(Route)).filter((r) => + [ + Route.Bridge, + Route.Relay, + Route.NttManual, + Route.NttRelay, + Route.CCTPManual, + Route.CCTPRelay, + ].includes(r as Route) + ), + + // UI details + cta: customConfig?.cta, + explorer: customConfig?.explorer, + attestUrl: { + mainnet: 'https://portalbridge.com/advanced-tools/#/register', + devnet: '', + testnet: + 'https://wormhole-foundation.github.io/example-token-bridge-ui/#/register', + }[network], + bridgeDefaults: customConfig?.bridgeDefaults, + cctpWarning: customConfig?.cctpWarning?.href || '', + pageHeader: customConfig?.pageHeader, + pageSubHeader: customConfig?.pageSubHeader, + menu: customConfig?.menu ?? [], + searchTx: customConfig?.searchTx, + moreTokens: customConfig?.moreTokens, + moreNetworks: customConfig?.moreNetworks, + partnerLogo: customConfig?.partnerLogo, + walletConnectProjectId: + customConfig?.walletConnectProjectId ?? + import.meta.env.REACT_APP_WALLET_CONNECT_PROJECT_ID, + showHamburgerMenu: customConfig?.showHamburgerMenu ?? false, + previewMode: !!customConfig?.previewMode, + + // Route options + ethBridgeMaxAmount: customConfig?.ethBridgeMaxAmount ?? 5, + wstETHBridgeMaxAmount: customConfig?.wstETHBridgeMaxAmount ?? 5, + + // NTT config + nttGroups: mergeNttGroups( + tokens, + networkData.nttGroups, + customConfig?.nttGroups + ), + + // Guardian set + guardianSet: networkData.guardianSet, + + // Render redesign views + useRedesign: customConfig?.useRedesign, + }; +} + +// Running buildConfig with no argument generates the default configuration +const config = buildConfig(); +export default config; + +// TODO SDKV2: REMOVE +export function getWormholeContext( + network: Network, + sdkConfig: WormholeConfig, + rpcs: ChainResourceMap +): WormholeContext { + const wh: WormholeContext = new WormholeContext(network, { + ...sdkConfig, + ...{ rpcs }, + }); + + return wh; +} + +export function getDefaultWormholeContext(network: Network): WormholeContext { + const sdkConfig = WormholeContext.getConfig(network); + const networkData = { mainnet: MAINNET, devnet: DEVNET, testnet: TESTNET }[ + network + ]!; + + const rpcs = Object.assign({}, sdkConfig.rpcs, networkData.rpcs); + + return getWormholeContext(network, sdkConfig, rpcs); +} + +export async function getWormholeContextV2(): Promise> { + if (config.v2Wormhole) return config.v2Wormhole; + config.v2Wormhole = await newWormholeContextV2(); + return config.v2Wormhole; +} + +export async function newWormholeContextV2(): Promise> { + const v2Config: WormholeConfigOverridesV2 = { chains: {} }; + + for (const key in config.chains) { + const chainV1 = key as ChainName; + const chainConfigV1 = config.chains[chainV1]!; + + const chainContextV1 = chainConfigV1.context; + + const chainV2 = config.sdkConverter.toChainV2( + chainV1 as ChainName + ) as ChainV2; + + const rpc = config.rpcs[chainV1]; + const tokenMap: ChainTokensV2 = {}; + + for (const token of config.tokensArr) { + const nativeChainV2 = config.sdkConverter.toChainV2(token.nativeChain); + + const tokenV2: Partial = { + key: token.key, + chain: chainV2, + symbol: token.symbol, + }; + + if (nativeChainV2 == chainV2) { + const decimals = + token.decimals[chainContextV1] ?? token.decimals.default; + if (!decimals) { + continue; + } else { + tokenV2.decimals = decimals; + } + const address = config.sdkConverter.getNativeTokenAddressV2(token); + if (!address) throw new Error('Token must have address'); + tokenV2.address = address; + } else { + tokenV2.original = nativeChainV2; + if (token.foreignAssets) { + const fa = token.foreignAssets[chainV1]!; + + if (!fa) { + continue; + } else { + tokenV2.address = fa.address; + tokenV2.decimals = fa.decimals; + } + } else { + continue; + } + } + + tokenMap[token.key] = tokenV2 as TokenV2; + } + + v2Config.chains![chainV2] = { rpc, tokenMap }; + } + + return await getWormholeV2( + config.v2Network, + [evm, solana, aptos, cosmwasm, sui, algorand], + v2Config + ); +} + +// setConfig can be called afterwards to override the default config with integrator-provided config +export function setConfig(customConfig?: WormholeConnectConfig) { + const newConfig: InternalConfig = buildConfig(customConfig); + + // We overwrite keys in the existing object so the references to the config + // imported elsewhere point to the new values + for (const key in newConfig) { + /* @ts-ignore */ + config[key] = newConfig[key]; + } +} + +// TODO: add config validation step to buildConfig +//validateConfigs(); + ``` + +### Custom Networks and RPC Endpoints {: #custom-networks-and-rpc-endpoints } + +Specify supported networks, tokens, and custom RPC endpoints. Your users may encounter rate limits using public RPC endpoints if you don't provide your own. + +=== "Mainnet" + + ```js + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + env: 'mainnet', + networks: ['ethereum', 'polygon', 'solana'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], + rpcs: { + ethereum: 'https://rpc.ankr.com/eth', + solana: 'https://rpc.ankr.com/solana', + }, +}; + +function App() { + return ; +} + ``` + +=== "Testnet" + + ```js + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + env: 'testnet', + networks: ['sepolia', 'arbitrum_sepolia', 'base_sepolia', 'fuji'], + + rpcs: { + fuji: 'https://rpc.ankr.com/avalanche_fuji', + base_sepolia: 'https://base-sepolia-rpc.publicnode.com', + }, +}; + +function App() { + return ; +} + ``` + +!!! note + For a complete list of testnet chain names that can be manually added, see the [Testnet Chains List](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/fa4ba4bc349a7caada809f209090d79a3c5962fe/tokenRegistry/src/scripts/importConnect.ts#L44-L55){target=\_blank}. + +### Fully Customized Theme {: #fully-customized-theme } + +Wormhole Connect offers a high level of customizability that suits and integrates with your application's design, including various options for buttons, backgrounds, popovers, fonts, and more. The following example demonstrates a variety of appearance customizations. Remember, if you prefer a visual to aid in designing your widget, you can use the [no code style interface](https://connect-in-style.wormhole.com/){target=\_blank}. + +```jsx +import WormholeConnect, { + WormholeConnectTheme, +} from '@wormhole-foundation/wormhole-connect'; +import red from '@mui/material/colors/red'; +import lightblue from '@mui/material/colors/lightBlue'; +import grey from '@mui/material/colors/grey'; +import green from '@mui/material/colors/green'; +import orange from '@mui/material/colors/orange'; + +const customTheme: WormholeConnectTheme = { + mode: 'dark', + primary: grey, + secondary: grey, + divider: 'rgba(255, 255, 255, 0.2)', + background: { + default: '#232323', + }, + text: { + primary: '#ffffff', + secondary: grey[500], + }, + error: red, + info: lightblue, + success: green, + warning: orange, + button: { + primary: 'rgba(255, 255, 255, 0.2)', + primaryText: '#ffffff', + disabled: 'rgba(255, 255, 255, 0.1)', + disabledText: 'rgba(255, 255, 255, 0.4)', + action: orange[300], + actionText: '#000000', + hover: 'rgba(255, 255, 255, 0.7)', + }, + options: { + hover: '#474747', + select: '#5b5b5b', + }, + card: { + background: '#333333', + secondary: '#474747', + elevation: 'none', + }, + popover: { + background: '#1b2033', + secondary: 'rgba(255, 255, 255, 0.5)', + elevation: 'none', + }, + modal: { + background: '#474747', + }, + font: { + primary: 'Impact', + header: 'Impact', + }, +}; + +export default function App() { + return ; +} +``` + +### Environment {: #environment } + +You can configure Connect to be used in Testnet environments, too. You can toggle between Mainnet and Testnet environments by defining the `WormholeConnectConfig` as follows: + +=== "Mainnet" + + ```ts + const config: WormholeConnectConfig = { + env: 'mainnet', + }; + ``` + +=== "Testnet" + + ```ts + const config: WormholeConnectConfig = { + env: 'testnet', + }; + ``` +### Custom RPC Endpoint {: #custom-rpc-endpoint } + +You can define a custom RPC provider for your Connect widget to use. This can be especially helpful if you'd like to replace public endpoints with dedicated or private endpoints. + +```ts +const config: WormholeConnectConfig = { + rpcs: { + solana: 'https://rpc.ankr.com/solana/ee827255553bb0fa9e0aaeab27e988707e60ea06ae36be0658b778072e94979e', + }, +}; +``` + +### Arbitrary Token {: #arbitrary-token } + +The following section shows how to add an arbitrary token to your deployment of Connect. + +!!! note + You will need to [register](https://portalbridge.com/advanced-tools/#/register){target=\_blank} your token with the Token Bridge to get the contract addresses necessary for it to work with Connect. + +This example configuration limits Connect to the Solana and Ethereum networks and a handful of tokens, including `BSKT`, which isn't built in by default and provided under the `tokensConfig` key. + +See [`src/config/types.ts`](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank} for the type definition of `TokensConfig`. + +```json +const config: WormholeConnectConfig = { + networks: ['solana', 'ethereum'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC', 'BSKT'], + tokensConfig: { + BSKT: { + key: 'BSKT', + symbol: 'BSKT', + nativeChain: 'solana', + tokenId: { + chain: 'solana', + address: '6gnCPhXtLnUD76HjQuSYPENLSZdG8RvDB1pTLM5aLSJA', + }, + coinGeckoId: 'basket', + icon: 'https://assets.coingecko.com/coins/images/34661/standard/BSKT_Logo.png?1705636891', + color: '#2894EE', + decimals: { + default: 5, + }, + }, + }, +}; +``` + +## More Configuration Options {: #more-configuration-options } + +### Whitelisting Tokens {: #whitelisting-tokens } + +By default, Connect will offer its complete built-in list of assets, but you can restrict the displayed assets by defining a subset of tokens under `tokens`. The default full list is as follows: + +| Mainnet | Testnet | +|:--------------:|:----------------------------------:| +| ETH | ETH, ETHsepolia | +| WETH | WETH, WETHsepolia | +| USDCeth | USDCeth | +| WBTC | - | +| USDT | - | +| DAI | - | +| BUSD | - | +| MATIC | MATIC | +| WMATIC | WMATIC | +| USDCpolygon | - | +| BNB | BNB | +| WBNB | WBNB | +| USDCbnb | - | +| AVAX | AVAX | +| WAVAX | WAVAX | +| USDCavax | USDCavax | +| FTM | FTM | +| WFTM | WFTM | +| CELO | CELO | +| GLMR | GLMR | +| WGLMR | WGLMR | +| SOL | WSOL | +| PYTH | - | +| SUI | SUI | +| USDCsol | - | +| APT | APT | +| ETHarbitrum | ETHarbitrum, ETHarbitrum_sepolia | +| WETHarbitrum | WETHarbitrum, WETHarbitrum_sepolia | +| USDCarbitrum | USDCarbitrum | +| ETHoptimism | ETHoptimism, ETHoptimism_sepolia | +| WETHoptimism | WETHoptimism, WETHoptimism_sepolia | +| USDCoptimism | USDCoptimism | +| ETHbase | ETHbase, ETHbase_sepolia | +| WETHbase | WETHbase, WETHbase_sepolia | +| tBTC | tBTC | +| tBTCpolygon | tBTCpolygon | +| tBTCoptimism | tBTCoptimism | +| tBTCarbitrum | tBTCarbitrum | +| tBTCbase | tBTCbase | +| tBTCsol | tBTCsol | +| WETHpolygon | - | +| WETHbsc | - | +| wstETH | wstETH | +| wstETHarbitrum | - | +| wstETHoptimism | - | +| wstETHpolygon | - | +| wstETHbase | - | + +### Routes {: #routes } + +By default, Connect will offer its complete built-in list of routes, but you can restrict the possible route assets by defining a subset under `routes.` By default, Connect will offer its complete built-in list: + +| Mainnet | Testnet | +|:------------:|:----------:| +| bridge | bridge | +| relay | relay | +| cctpManual | cctpManual | +| cctpRelay | cctpRelay | +| nttManual | nttManual | +| nttRelay | nttRelay | +| ethBridge | - | +| wstETHBridge | - | +| usdtBridge | - | +| tBTC | tBTC | + +### Wallet Set Up {: #wallet-connect-project-id } + +When using Wormhole Connect, your selected blockchain network determines the available wallet options. + + - For EVM chains, wallets like MetaMask and WalletConnect are supported + - For Solana, you'll see options such as Phantom, Torus, and Coin98 + +The wallet options automatically adjust based on the selected chain, providing a seamless user experience without additional configuration. + +If you would like to offer WalletConnect as a supported wallet option, you'll need to obtain a project ID on the [WalletConnect cloud dashboard](https://cloud.walletconnect.com/){target=\_blank}. + +### Toggle Hamburger Menu {: #toggle-hamburger-menu } + +By setting the `showHamburgerMenu` option to **false**, you can deactivate the hamburger menu, causing the links to be positioned at the bottom. + +#### Add Extra Menu Entry {: #add-extra-menu-entry } + +By setting the `showHamburgerMenu` option to `false,` you can add extra links. The following properties are accessed through the `menu[]` property (e.g., `menu[].label`): + +| Property | Description | +|:--------:|:-------------------------------------------:| +| `label` | Link name to show up | +| `href` | Target URL or URN | +| `target` | Anchor standard target, by default `_blank` | +| `order` | Order where the new item should be injected | + +#### Sample Configuration {: #sample-configuration } + +```json +{ + "showHamburgerMenu": false, + "menu": [ + { + "label": "Advance Tools", + "href": "https://portalbridge.com", + "target": "_self", + "order": 1 + } + ] +} +``` + +### CoinGecko API Key {: #coingecko-api-key } + +The CoinGecko API can be used to fetch token price data. If you have a [CoinGecko API Plan](https://apiguide.coingecko.com/getting-started/getting-started){target=\_blank}, you can include the API key in the configuration. Remember to always take steps to protect your sensitive API keys, such as defining them in `.env` files and including such files in your `.gitignore`. + +### More Networks {: #more-networks } + +Specify a set of extra networks to be displayed on the network selection modal, each linking to a different page, dApp, or mobile app the user will be redirected to. The following properties are accessed through the `moreNetworks` property (e.g., `moreNetworks.href`): + +|
Property
| Description | +|:--------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------:| +| `href` | **Required**. Default value for missing network hrefs | +| `target` | Default value for missing network link targets. Defaults to `_self` | +| `description` | Brief description that should be displayed as a tooltip when the user hovers over a more network icon. Used as default for missing network descriptions | +| `networks[].icon` | **Required**. URL data encoded icon to display | +| `networks[].href` | Network href to redirect to. If present, the values `sourceChain` and `targetChain` are replaced with the currently selected chains before redirecting | +| `networks[].label` | **Required**. Display text | +| `networks[].name` | Unique network key. Defaults to a snake_case version of the label | +| `networks[].description` | Description value. Defaults to `moreNetworks.description` | +| `networks[].target` | href target value. Defaults to `moreNetworks.target` | +| `networks[].showOpenInNewIcon` | Disable top right open in new icon. Defaults to **true** if target is `_blank` or **false** if target is `_self` | + +??? code "View full configuration" + ```json + { + ... + "moreNetworks": { + "href": "https://example.com", + "target": "_blank", + "description": "brief description that should be displayed as tooltip when the user hovers over a more network icon", + "networks": [ + { + "icon": "https://assets.coingecko.com/coins/images/34661/standard/BSKT_Logo.png?1705636891", + "name": "more", + "label": "More networks", + "href": "https://portalbridge.com/#/transfer", + "showOpenInNewIcon": false + } + ] + } + ... +} + ``` + +### More Tokens {: #more-tokens } + +Show a particular entry on the select tokens modal, redirecting the user to a different page, dApp, or mobile app. The following properties are accessed through the `moreTokens` property (e.g., `moreTokens.label`): + +| Property | Description | +|:--------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------:| +| `label` | **Required**. Display text | +| `href` | **Required**. URL to redirect to. If present, the values `sourceChain` and `targetChain` are replaced with the currently selected chains before redirecting | +| `target` | href target. Defaults to `_self` | + +### Explorer {: #explorer } + +Enable the explorer button to allow users to search for their transactions on a given explorer, filtering by their wallet address. The following properties are accessed through the `explorer` property (e.g., `explorer.label`): + +| Property | Description | +|:--------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| `label` | Display text. Defaults to `Transactions` | +| `href` | **Required**. URL of the explorer, for instance [https://wormholescan.io/](https://wormholescan.io/){target=\_blank}. If present, the value `address` is replaced with the connected wallet address | +| `target` | `href` target. Defaults to `_blank` | +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/configure-data/ +--- BEGIN CONTENT --- +--- +title: Connect Data Configuration +description: Configure Wormhole Connect v1 (latest) with custom chains, tokens, routes, and more for enhanced blockchain interoperability. +--- + +## Data Configuration + +This page explains how to configure Wormhole Connect's core functionality, from choosing supported chains and tokens to bridging routes to setting up wallets and enabling price lookups. By the end, you'll know how to specify custom networks and RPC endpoints, integrate different bridging protocols, add new tokens, and more. + +## Get Started + +Configure Wormhole Connect by passing a `WormholeConnectConfig` object as the `config` prop. + +=== "React integration" + + ```ts + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Polygon', 'Solana'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], + rpcs: { + Ethereum: 'https://rpc.ankr.com/eth', + Solana: 'https://rpc.ankr.com/solana', + } +} + + + ``` + +=== "Hosted integration" + + ```ts + import WormholeConnect, { + wormholeConnectHosted, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Polygon', 'Solana'], + tokens: ['ETH', 'WETH', 'MATIC', 'WMATIC'], + rpcs: { + Ethereum: 'https://rpc.ankr.com/eth', + Solana: 'https://rpc.ankr.com/solana', + }, +}; + +const container = document.getElementById('bridge-container'); + +wormholeConnectHosted(container, { + config, +}); + ``` + +!!! note + The complete type definition of `WormholeConnectConfig` is available in the [Wormhole Connect repository](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank}. + +## Examples {: #examples } + +### Configuring Chains and RPC Endpoints {: #chains-and-rpc-endpoints } + +Connect lets you customize the available chains to match your project's needs. You should provide your own RPC endpoints, as the default public ones may not support essential functions like balance fetching. + +=== "Mainnet" + + ```js + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Polygon', 'Solana'], + rpcs: { + Ethereum: 'https://rpc.ankr.com/eth', + Solana: 'https://rpc.ankr.com/solana', + }, +}; + +function App() { + return ; +} + ``` + +=== "Testnet" + + ```js + import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + // You can use Connect with testnet chains by specifying "network": + network: 'Testnet', + chains: ['Sepolia', 'ArbitrumSepolia', 'BaseSepolia', 'Avalanche'], + rpcs: { + Avalanche: 'https://rpc.ankr.com/avalanche_fuji', + BaseSepolia: 'https://base-sepolia-rpc.publicnode.com', + }, +}; + +function App() { + return ; +} + ``` + +!!! note + For a complete list of available chain names, see the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/base/src/constants/chains.ts){target=\_blank}. + +### Configuring Routes + +By default, Connect offers two bridging protocols: Token Bridge (for Wormhole-wrapped tokens) and Circle's CCTP (for native USDC). For most use cases, integrators require more than these default routes. The `routes` property allows you to specify which protocols to include and exclude any routes unnecessary for your application, including default and third-party routes. + +#### Available Route Plugins + +The `@wormhole-foundation/wormhole-connect` package offers a variety of `route` plugins to give you flexibility in handling different protocols. You can choose from the following `route` exports for your integration: + +- [**`TokenBridgeRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/tokenBridge/manual.ts){target=\_blank} - manually redeemed Wormhole Token Bridge route +- [**`AutomaticTokenBridgeRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/tokenBridge/automatic.ts){target=\_blank} - automatically redeemed (relayed) Token Bridge route +- [**`CCTPRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/cctp/manual.ts){target=\_blank} - manually redeemed CCTP route +- [**`AutomaticCCTPRoute`**](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/cctp/automatic.ts){target=\_blank} - automatically redeemed (relayed) CCTP route +- **`DEFAULT_ROUTES`** - array containing the four preceding routes (`TokenBridgeRoute`, `AutomaticTokenBridgeRoute`, `CCTPRoute`, `AutomaticCCTPRoute`) +- [**`nttAutomaticRoute(nttConfig)`**](https://github.com/wormhole-foundation/native-token-transfers/blob/main/sdk/route/src/automatic.ts){target=\_blank} - function that returns the automatically-redeemed (relayed) Native Token Transfer (NTT) route +- [**`nttManualRoute(nttConfig)`**](https://github.com/wormhole-foundation/native-token-transfers/blob/main/sdk/route/src/manual.ts){target=\_blank}- function that returns the manually-redeemed NTT route +- **`nttRoutes(nttConfig)`** - function that returns both NTT routes as an array +- [**`MayanRoute`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L57){target=\_blank} - route that offers multiple Mayan protocols +- [**`MayanRouteSWIFT`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L528){target=\_blank} - route for Mayan's Swift protocol only +- [**`MayanRouteMCTP`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L539){target=\_blank} - route for Mayan's MCTP protocol only +- [**`MayanRouteWH`**](https://github.com/mayan-finance/wormhole-sdk-route/blob/main/src/index.ts#L550){target=\_blank} - route for Mayan's original Wormhole transfer protocol + +In addition to these routes, developers can create custom routes for their Wormhole-based protocols. For examples, refer to the [NTT](https://github.com/wormhole-foundation/native-token-transfers/tree/main/sdk/route){target=\_blank} and the [Mayan](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} example GitHub repositories. + +For further details on the `route` plugin interface, refer to the [Wormhole TypeScript SDK route code](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/route.ts){target=\_blank}. + +#### Example: Offer Only CCTP Transfers + +To configure Wormhole Connect to offer only USDC transfers via the CCTP route, use the following configuration: + +```typescript +import WormholeConnect, { + AutomaticCCTPRoute, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + routes: [AutomaticCCTPRoute], +}; + +; +``` + +#### Example: Offer All Default Routes and Third-Party Plugins + +In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge and CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/transfers/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. + +```typescript +import WormholeConnect, { + DEFAULT_ROUTES, + nttRoutes, + MayanRouteSWIFT, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +import { myNttConfig } from './consts'; // Custom NTT configuration + +const config: WormholeConnectConfig = { + routes: [...DEFAULT_ROUTES, ...nttRoutes(myNttConfig), MayanRouteSWIFT], +}; + +; +``` + +This flexible plugin allows you to combine default routes (such as Token Bridge and CCTP) with third-party protocols, offering complete control over which routes are available in your application. + +### Adding Custom Tokens {: #custom-tokens } + +The following section shows how to add an arbitrary token to your deployment of Connect. + +!!! note + You will need to [register](https://portalbridge.com/advanced-tools/#/register){target=\_blank} your token with the Token Bridge to get the contract addresses necessary for it to work with that protocol. + +This example configuration adds the BONK token to Connect. Note the `wrappedTokens` property, which is required for use with the Token Bridge. + +See the [Connect source code](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/types.ts){target=\_blank} for the type definition of `TokensConfig`. + +```typescript +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + tokensConfig: { + BONK: { + key: 'BONK', + symbol: 'BONK', + nativeChain: 'Ethereum', + icon: Icon.ETH, + tokenId: { + chain: 'Ethereum', + address: '0x1151CB3d861920e07a38e03eEAd12C32178567F6', + }, + coinGeckoId: 'bonk', + decimals: 18, + }, + }, + wrappedTokens: { + BONK: { + Solana: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', + }, + }, +}; +``` + +### Whitelisting Tokens {: #whitelisting-tokens } + +Connect offers a list of built-in tokens by default. You can see it below: + +- [Mainnet tokens](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/mainnet/tokens.ts){target=\_blank} +- [Testnet tokens](https://github.com/wormhole-foundation/wormhole-connect/blob/development/wormhole-connect/src/config/testnet/tokens.ts){target=\_blank} + +You can customize the tokens shown in the UI using the `tokens` property. The following example adds a custom token and limits Connect to showing only that token, along with the native gas tokens ETH and SOL. + +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Solana'], + tokens: ['ETH', 'SOL', 'BONK'], + rpcs: { + Ethereum: 'https://rpc.ankr.com/eth', + Solana: 'https://rpc.ankr.com/solana', + }, + tokensConfig: { + BONK: { + key: 'BONK', + symbol: 'BONK', + icon: 'https://assets.coingecko.com/coins/images/28600/large/bonk.jpg?1696527587', + tokenId: { + chain: 'Ethereum', + address: '0x1151CB3d861920e07a38e03eEAd12C32178567F6', + }, + decimals: 18, + }, + }, + wrappedTokens: { + BONK: { + Solana: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', + }, + }, +}; + +function App() { + return ; +} +``` + +You can whitelist tokens by symbol or by specifying tuples of [chain, address]. For example, this would show only BONK token (on all chains you've whitelisted) as well as [`EPjFW...TDt1v`](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v){target=\_blank} on Solana, which is USDC. + +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + chains: ['Ethereum', 'Solana'], + tokens: [ + // Whitelist BONK on every whitelisted chain + 'BONK', + // Also whitelist USDC, specifically on Solana + ['Solana', 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'] + ], + ... +}; + +function App() { + return ; +} +``` + +### User-Inputted Tokens {: #user-inputted-tokens } + +As of version 2.0, Connect allows users to paste token addresses to bridge any token they want. As an integrator, you may want to disable this feature if you are deploying Connect for use only with a specific token(s). + +If you provide a token whitelist (see above), this is turned off automatically. However, you can also disable it explicitly like this: + +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + ui: { + disableUserInputtedTokens: true + } +}; + +function App() { + return ; +} +``` + +Setting `ui.disableUserInputtedTokens` to `true` will disable the ability to paste in token addresses. + +### Transaction Settings {: #transaction-settings } + +Landing transactions on Solana can require finely tuned priority fees when there is congestion. You can tweak how Connect determines these with `transactionSettings`. All of the parameters in this configuration are optional; you can provide any combination of them. + +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + transactionSettings: { + Solana: { + priorityFee: { + // Number between 0-1, defaults to 0.9. Higher percentile yields higher fees. + // For example, you can set percentile to 0.95 to make Connect compute the + // 95th percentile priority fee amount based on recent transactions + percentile: 0.95, + + // Any number, defaults to 1.0. The fee amount is multiplied by this number. + // This can be used to further raise or lower the fees Connect is using. + // For example, percentile=0.95 and percentileMultiple=1.1 would use + // the 95th percentile fee, with a 10% increase + percentileMultiple: 1.1, + + // Minimum fee you want to use in microlamports, regardless of recent transactions + // Defaults to 1 + min: 200_000, + + // Maximum fee you want to use in microlamports, regardless of recent transactions + // Defaults to 100,000,000 + max: 5_000_000, + } + } + } +}; + +function App() { + return ; +} +``` + +!!! note + Connect can calculate fees more accurately if you are using a [Triton](https://triton.one){target=\_blank} RPC endpoint. + +### Wallet Set Up {: #reown-cloud-project-id } + +Your selected blockchain network determines the available wallet options when using Wormhole Connect. + + - For EVM chains, wallets like MetaMask and Reown Cloud (formerly WalletConnect) are supported + - For Solana, you'll see options such as Phantom, Torus, and Coin98 + +The wallet options automatically adjust based on the selected chain, providing a seamless user experience without additional configuration. + +If you would like to offer Reown Cloud (formerly WalletConnect) as a supported wallet option, you'll need to obtain a project ID on the [Reown Cloud dashboard](https://cloud.reown.com/){target=\_blank}. + +### CoinGecko API Key {: #coingecko-api-key } + +The CoinGecko API can be used to fetch token price data. If you have a [CoinGecko API Plan](https://apiguide.coingecko.com/getting-started/getting-started){target=\_blank}, you can include the API key in the configuration. + +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + coinGeckoApiKey: 'INSERT_API_KEY', +}; + +function App() { + return ; +} +``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/configure-theme/ +--- BEGIN CONTENT --- +--- +title: Connect Theme & UI Customization +description: Learn how to style Wormhole Connect with custom color schemes, fonts, layouts, and menus for a streamlined user experience. +--- + +## Theme & UI Customization + +This page focuses on how to style the Wormhole Connect widget, covering color schemes, fonts, layout changes (like toggling the hamburger menu), and adding extra menu entries. You'll learn how to customize Connect's look and feel to match your application's branding. + +### Changing the Color Scheme + +You can customize Connect's color scheme by providing a `theme` prop. + +=== "React integration" + + ```ts + import WormholeConnect, { + WormholeConnectConfig, + WormholeConnectTheme, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + /* Your config... */ +}; + +const theme: WormholeConnectTheme = { + mode: 'dark', + primary: '#78c4b6', + font: 'Comic Sans; sans-serif', +}; + +function App() { + return ; +} + ``` + +=== "Hosted integration" + + ```ts + import WormholeConnect, { + WormholeConnectConfig, + WormholeConnectTheme, + wormholeConnectHosted, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + /* Your config... */ +}; + +const theme: WormholeConnectTheme = { + mode: 'dark', + primary: '#78c4b6', + font: 'Comic Sans; sans-serif', +}; + +const container = document.getElementById('bridge-container'); + +wormholeConnectHosted(container, { + config, + theme, +}); + ``` + +The `WormholeConnectTheme` type supports the following properties: + +|
Property
| Description | Example | +|:--------------------------------------:|:---------------------------------------------------------------------:|:---------------------:| +| `mode` | Dark mode or light mode. **Required** | `"dark"` or `"light"` | +| `input` | Color used for input fields, dropdowns | `"#AABBCC"` | +| `primary` | Primary color used for buttons | `"#AABBCC"` | +| `secondary` | Secondary color used for some UI elements | `"#AABBCC"` | +| `text` | Primary color used for text | `"#AABBCC"` | +| `textSecondary` | Secondary color used for dimmer text | `"#AABBCC"` | +| `error` | Color to display errors in, usually some shade of red | `"#AABBCC"` | +| `success` | Color to display success messages in | `"#AABBCC"` | +| `font` | Font used in the UI, can be custom font available in your application | `"Arial; sans-serif"` | + +### Toggle Hamburger Menu {: #toggle-hamburger-menu } + +By setting the `showHamburgerMenu` option to **false**, you can deactivate the hamburger menu, which will position the links at the bottom. + +#### Add Extra Menu Entry {: #add-extra-menu-entry } + +By setting the `showHamburgerMenu` option to `false,` you can add extra links. The following properties are accessed through the `menu[]` property (e.g., `menu[].label`): + +| Property | Description | +|:--------:|:-------------------------------------------:| +| `label` | Link name to show up | +| `href` | Target URL or URN | +| `target` | Anchor standard target, by default `_blank` | +| `order` | Order where the new item should be injected | + +```jsx +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + ui: { + showHamburgerMenu: false, + menu: [ + { + label: 'Advance Tools', + href: 'https://portalbridge.com', + target: '_self', + order: 1, + }, + ], + }, +}; + +function App() { + return ; +} +``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/configuration/ +--- BEGIN CONTENT --- +--- +title: Wormhole Connect +description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. +--- + +# Wormhole Connect + +## Configure Connect + +Wormhole Connect is a flexible React widget that streamlines cross-chain asset transfers and enables seamless interoperability by leveraging Wormhole's powerful infrastructure. Designed for easy integration into decentralized applications (dApps), Wormhole Connect abstracts the complexities of cross-chain communication, providing a user-friendly experience for both developers and end users. + +This guide provides detailed instructions on configuring Wormhole Connect and highlights the many ways it can be customized to fit your specific needs, from integrating supported blockchains and tokens to tailoring the user interface. + +!!! note + To upgrade from Wormhole Connect v0 to v1, please refer to the [migration guide](/docs/build/transfers/connect/upgrade/){target=\_blank} for instructions. + + If you're using an older version of Wormhole Connect (v0.x), please refer to the [v0.x configuration documentation](/docs/build/transfers/connect/configuration-v0/){target=\_blank}. + +
+ +- :octicons-database-16:{ .lg .middle } **Data** + + --- + + Learn how to configure the networks, tokens, and routes supported by Wormhole Connect. Set up RPC endpoints, whitelist tokens, and leverage multiple bridging protocols to meet your dApp's needs. + + + [:custom-arrow: Get started](/docs/build/transfers/connect/configuration/configure-data/) + +- :octicons-apps-16:{ .lg .middle } **Theme** + + --- + + Discover how to style the Wormhole Connect widget to align with your brand. Customize colors, fonts, and UI elements to deliver a seamless user experience. + + [:custom-arrow: Explore routes](/docs/build/transfers/connect/configuration/configure-theme/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/faqs/ +--- BEGIN CONTENT --- +--- +title: Connect FAQs +description: Common questions and detailed answers about using Wormhole Connect, including supported assets, chains, customization, and integration options. +--- + +# Wormhole Connect FAQs + +## What types of assets does Connect support? + +Wormhole Connect supports both native and wrapped assets across all Wormhole-supported blockchains. This includes: + + - Major stablecoins like USDT and USDC (via CCTP) + - Native gas tokens such as ETH, SOL, etc. + - Cross-chain asset swaps through integrators like Mayan + +When bridging assets through the Wormhole Token Bridge, depending on the chain and token, assets may arrive as Wormhole-wrapped tokens on the destination chain. + +## What chains does Connect support? + +Connect supports around 30 chains, spanning various blockchain runtimes: + + - EVM-based chains (Ethereum, Base, Arbitrum, BSC, etc.) + - Solana + - Move-based chains (Sui, Aptos) + +For a complete list of supported chains, see the [Connect-supported chains list](/docs/build/transfers/connect/features/){target=\_blank}. + +## What is gas dropoff? + +Gas dropoff allows users to receive gas for transaction fees on the destination chain, eliminating the need to acquire the native gas token from a centralized exchange. The relayer automatically swaps part of the transferred assets into the native gas token, enabling seamless entry into new ecosystems. + +## Can I customize Connect inside my application? + +Connect can be [fully customized](https://connect-in-style.wormhole.com/){target=\_blank} to choose the chains and assets you wish to support. You may also select different themes and colors to tailor Connect for your decentralized application. For details, see the [GitHub readme](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}. + +## Which functions or events does Connect rely on for NTT integration? + +Connect relies on the NTT SDK for integration, with platform-specific implementations for Solana and EVM. The critical methods involved include initiate and redeem functions and rate capacity methods. These functions ensure Connect can handle token transfers and manage chain-rate limits. + +## Do integrators need to enable wallets like Phantom or Backpack in Wormhole Connect? + +Integrators don’t need to explicitly enable wallets like Phantom or Backpack in Wormhole Connect. However, the wallet must be installed and enabled in the user's browser to appear as an option in the interface. + +## Which function should be modified to set priority fees for Solana transactions? + +In [Wormhole Connect](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}, you can modify the priority fees for Solana transactions by updating the `computeBudget/index.ts` file. This file contains the logic for adjusting the compute unit limit and priority fees associated with Solana transactions. + +To control the priority fee applied to your transactions, you can modify the `feePercentile` and `minPriorityFee` parameters in the `addComputeBudget` and `determineComputeBudget` functions. + +The relevant file can be found in the Connect codebase: [`computeBudget/index.ts`](https://github.com/wormhole-foundation/wormhole-connect/blob/62f1ba8ee5502ac6fd405680e6b3816c9aa54325/sdk/src/contexts/solana/utils/computeBudget/index.ts){target=\_blank}. + +## Is there a minimum amount for bridging with CCTP or the Connect SDK? + +There is no minimum amount for bridging via CCTP if the user covers the gas fees on both the source and destination chains. However, if the transfer is automatically relayed, a minimum amount is required to cover relay fees on the destination chain. The relay provider charges these fees at cost. + +Current relay fees: + +- Ethereum L1: ~4.2 USDC +- Base, Optimism, Arbitrum, Avalanche: 0.3 USDC + +Additional notes: + +- **USDC to Solana** - Wormhole's native CCTP route does not currently support automatic relaying of USDC to Solana. However, you can transfer USDC to Solana using the [Mayan plugin](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} for the SDK. Mayan is a protocol that integrates Wormhole and CCTP to enable this functionality +- **Frontend integrations** + - **Connect** - A pre-built UI available via [@wormhole-foundation/wormhole-connect](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect){target=\_blank} + - **TypeScript SDK** - A lower-level integration option, available via [@wormhole-foundation/sdk](https://www.npmjs.com/package/@wormhole-foundation/sdk){target=\_blank}, allowing developers to build custom UIs + + !!!note + The TypeScript SDK was previously referred to as the "Connect SDK," but this naming has since been discontinued. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/features/ +--- BEGIN CONTENT --- +--- +title: Features +description: Explore a comprehensive Feature Support matrix and explain Wormhole's capabilities across networks for Token Bridge, CCTP, ETH Bridge, and more. +--- + +## Feature Support Matrix {: #feature-support-matrix} + +*Scroll down for details about each column.* + +| **Network** | **Token Bridge** | **Token Bridge Relayer** | **Circle CCTP** | **ETH Bridge** | **Gas Drop Off** | +|:-----------:|:----------------:|:------------------------:|:---------------:|:--------------:|:----------------:| +| Solana | ✅ | ✅ | ✅ | ❌ | ✅ | +| Ethereum | ✅ | ✅ | ✅ | ✅ | ✅ | +| BSC | ✅ | ✅ | ❌ | ✅ | ✅ | +| Polygon | ✅ | ✅ | ✅ | ✅ | ✅ | +| Avalanche | ✅ | ✅ | ✅ | ✅ | ✅ | +| Fantom | ✅ | ✅ | ❌ | ❌ | ✅ | +| Kaia | ✅ | ❌ | ❌ | ❌ | ❌ | +| Celo | ✅ | ✅ | ❌ | ❌ | ✅ | +| Moonbeam | ✅ | ✅ | ❌ | ❌ | ✅ | +| Injective | ✅ | ❌ | ❌ | ❌ | ❌ | +| Sui | ✅ | ✅ | ❌ | ❌ | ✅ | +| Aptos | ✅ | ❌ | ❌ | ❌ | ❌ | +| Arbitrum | ✅ | ✅ | ✅ | ✅ | ✅ | +| Optimism | ✅ | ✅ | ✅ | ✅ | ✅ | +| Base | ✅ | ✅ | ✅ | ✅ | ✅ | +| Sei | ✅ | ❌ | ❌ | ❌ | ❌ | +| Scroll | ✅ | ❌ | ❌ | ❌ | ❌ | +| Blast | ✅ | ❌ | ❌ | ❌ | ❌ | +| X Layer | ✅ | ❌ | ❌ | ❌ | ❌ | + +## Feature Explanation {: #feature-explanation} + +### Token Bridge {: #token-bridge} + +Wormhole is best known for its Token Bridge transfer method. It locks assets on the source chain and mints Wormhole-wrapped "IOU" tokens on the destination chain. To transfer the assets back, the Wormhole-wrapped tokens are burned, unlocking the tokens on their original chain. + +This route appears if both of the following conditions are satisfied: + + - Both the origin and destination chains support Token Bridge + - No non-Token Bridge routes are available for the selected token + +### Token Bridge Relayer {: #token-bridge-relayer} + +On the [routes](/docs/build/transfers/connect/routes/){target=\_blank} page, this is referred to as the automatic route in the Token Bridge section. + +Trustless relayers can execute the second transaction on behalf of the user, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. + +This route appears if all of the following conditions are satisfied: + +- Both the origin and destination chains support Token Bridge +- Both the origin and destination chains support Token Bridge relayer +- No non-Token Bridge routes are available for the selected token +- The relayer supports the selected token on the origin chain + +### Circle CCTP {: #circle-cctp} + +[Circle](https://www.circle.com/en/){target=\_blank}, the issuer of USDC, provides a native way for native USDC to be transferred between [CCTP-enabled](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank} chains. + +This route appears if all of the following conditions are satisfied: + +- Both the origin and destination chains support Circle CCTP +- The selected token is native Circle-issued USDC + +### ETH Bridge {: #eth-bridge} + +[Powered by Uniswap liquidity pools](https://github.com/wormhole-foundation/example-uniswap-liquidity-layer){target=\_blank}, this route can transfer native ETH or wstETH between certain EVMs without going through the native bridges. + +This route appears if all of the following conditions are satisfied: + +- Both the origin and destination chains support the ETH Bridge +- The selected token is native ETH, wstETH, or canonical wETH + +### Gas Drop Off {: #gas-drop-off} + +A relayer can drop off some gas tokens on the destination chain by swapping some of the assets transferred to the native gas token. This is useful if the user wishes to transfer assets to a chain where they don't already have gas. This way, they don't need to onboard into the ecosystem from a centralized exchange. + +This route appears if all of the following conditions are satisfied: + +- Both the origin and destination chains support gas drop off +- An automatic route is selected +- The relayer accepts the selected token to swap into the gas token +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/ +--- BEGIN CONTENT --- +--- +title: Wormhole Connect +description: Wormhole Connect is a React widget offering an easy-to-use interface to facilitate multichain asset transfers via Wormhole directly in a web application. +--- + +# Wormhole Connect + +Wormhole Connect is a customizable widget that brings wrapped and native token cross-chain asset transfers into your dApp in as few as 3 lines of code. Connect is available as a React component or hosted version via CDN so you can easily configure any application to transfer tokens via Wormhole. + +## Build with Connect + +[timeline left(wormhole-docs/.snippets/text/build/transfers/connect/connect-timeline.json)] + +## See It In Action + +Wormhole Connect is deployed live in several production apps. Here are a few: + +- [Portal Bridge](https://portalbridge.com/){target=\_blank} +- [Jupiter](https://jup.ag/onboard/cctp){target=\_blank} +- [Pancake Swap](https://bridge.pancakeswap.finance/wormhole){target=\_blank} + +Visit the [Use Cases](/docs/build/start-building/use-cases/){target=\_blank} page to learn how to combine Connect with other Wormhole products, including Native Token Transfer (NTT). + +## Next Steps + +
+ +- :octicons-tools-16:{ .lg .middle} **Get Started Now** + + --- + + Follow this series of how-to guides to integrate Connect into your React dApp and configure options to fit your user's needs. + + [:custom-arrow: Get started](/docs/build/transfers/connect/overview/#integrate-connect) + +- :octicons-tools-16:{ .lg .middle } **Multichain Swap** + + --- + + This tutorial guides you step-by-step through integrating Connect into your React dApp to transfer tokens from Sui to Avalanche Fuji. This tutorial is readily adaptable to work with other [supported networks](/docs/build/start-building/supported-networks/){target=\_blank}. + + + [:custom-arrow: Get started](/docs/tutorials/by-product/connect/react-dapp/) + + +- :octicons-tools-16:{ .lg .middle } **Connect FAQs** + + --- + + Common questions and detailed answers about using Wormhole Connect, including supported assets, chains, customization, and integration options. + + [:custom-arrow: Visit FAQs](/docs/build/transfers/connect/faqs/) + +- :octicons-tools-16:{ .lg .middle } **Supported Features by Chain** + + --- + + Get a more detailed look at Wormhole Connect features with a breakdown of supported features by chain. + + [:custom-arrow: Supported Features](/docs/build/transfers/connect/features/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/overview/ +--- BEGIN CONTENT --- +--- +title: Overview +description: Explore Wormhole Connect, the React widget that allows you to offer an easy-to-use UI for cross-chain asset transfers via Wormhole in a web application. +--- + +# Wormhole Connect + +## Introduction {: #introduction } + +Wormhole Connect is a React widget that lets developers offer an easy-to-use interface to facilitate cross-chain asset transfers via Wormhole directly in a web application. Check out the [Wormhole Connect GitHub repository](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank}. + +The [Wormhole TypeScript SDK](https://docs.wormhole.com/wormhole/reference/sdk-docs){target=\_blank} allows you to implement the same functionality as the Connect widget but in your own UI. Check out the docs for more information on using the SDK instead of Connect. + +## Features {: #features } + +Wormhole Connect is easy to customize to suit your application's needs. You can specify technical details like supported assets and custom RPCs or forgo customization and have a full-featured widget. The widget UI is highly customizable, with extensive styling options available, including a user-friendly no code styling interface for those who prefer a more visual approach to design. The features of Wormhole Connect include: + +- Multiple ways to bridge assets ([routes](/docs/build/transfers/connect/routes/){target=\_blank}) +- Extensive ways to style the UI (including the [no code styling interface](https://connect-in-style.wormhole.com/){target=\_blank}) +- Ways to [configure](/docs/build/transfers/connect/configuration/){target=\_blank} what feature set to offer +- Ability to configure any token to bridge via Wormhole +- [Ability to drop off some gas](/docs/build/transfers/connect/features/){target=\_blank} at the destination + +For more details about the features of Wormhole Connect and a breakdown of supported features by chain, be sure to check [the features page](/docs/build/transfers/connect/features/){target=\_blank}. + +## Integrate Connect {: #integrate-connect } + +### Import Directly into a React App {: #import-directly-into-a-react-app} + +First, install the Wormhole Connect npm package. You can read more about the package by clicking on the following button: [![npm version](https://img.shields.io/npm/v/@wormhole-foundation/wormhole-connect.svg)](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect){target=\_blank} + +```bash +npm i @wormhole-foundation/wormhole-connect +``` + +Now you can import the React component: + +```ts +import WormholeConnect from '@wormhole-foundation/wormhole-connect'; + +function App() { + return ; +} +``` + +### Use Hosted Version via CDN {: #use-hosted-version-via-cdn} + +If you're not using React, you can still embed Connect on your website by using the hosted version. This uses pre-built packages (which include React) served from NPM by jsdelivr.net. + +```ts title="v1.x" +import { wormholeConnectHosted } from '@wormhole-foundation/wormhole-connect'; + +// Existing DOM element where you want to mount Connect +const container = document.getElementById('bridge-container'); + +wormholeConnectHosted(container); +``` + +For help migrating from Connect v0.x to v1.x, see the [v1 Migration](/docs/build/transfers/connect/upgrade/){target=\_blank} guide. + +???- code "v0.x" + Simply copy and paste the following into your HTML body, and replace the ```INSERT_WORMHOLE_CONNECT_VERSION``` in the links with the most recent production version of Wormhole Connect. You can check what the most recent version is on [NPM](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/latest){target=\_blank}. + + ```html + +
+ + + + + ``` + + For example, for [0.3.13](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/0.3.13){target=\_blank}: + + ```html + +
+ + + + + ``` + +It is important to periodically update your Wormhole Connect instance to the latest version, as there are frequent functionality and security releases. + +## Configuration {: #configuration} + +This is just an overview of what's possible. Check the [Configuration docs](/docs/build/transfers/connect/configuration/){target=\_blank} for details about all the configuration options. + +The default configuration of Wormhole Connect may not be exactly what you're looking for. You may want to: + + - Use custom styles + - Restrict the chains that you allow in your app + - Add support for your project's token, and eliminate tokens you don't want to reduce noise + - Configuring custom RPC URLs (This is highly recommended as default public RPCs are heavily throttled) + - Restrict the [routes](/docs/build/transfers/connect/routes/){target=\_blank} that are available + +For additional information on the preceding options, check the [configuration options](/docs/build/transfers/connect/configuration/){target=\_blank} and customize your widget however you like. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/routes/ +--- BEGIN CONTENT --- +--- +title: Routes +description: Explore Wormhole Connect's routing capabilities for asset transfers, featuring Token Bridge, CCTP, NTT, and various blockchain-specific routes for optimal UX. +--- + +## Routes Overview {: #routes-overview} + +This page explains the concept of routes in Wormhole Connect. To configure routes for your widget, check the [Wormhole Connect Configuration](/docs/build/transfers/connect/configuration/){target=\_blank}. + +Routes are methods by which the widget will transfer the assets. Wormhole Connect supports Token Bridge transfers for any arbitrary token, and for specific tokens, it also supports more advanced transfer methods that provide superior UX. + +When you select the source chain, source token, and destination chain, Wormhole Connect will display the best routes available for that particular combination. In practice, if routes other than the Token Bridge are available, only those will be displayed. Check the [feature matrix](/docs/build/transfers/connect/features/){target=\_blank} to see under which exact conditions the routes appear. + +## Token Bridge Routes {: #token-bridge-routes} + +The Token Bridge is Wormhole's best-known transfer method. It locks assets on the source chain and mints Wormhole-wrapped "IOU" tokens on the destination chain. To transfer the assets back, the Wormhole-wrapped tokens are burned, unlocking the tokens on their original chain. + +#### Manual Route {: #manual-route} + +The manual route transfer method requires two transactions: one on the origin chain to lock the tokens (or burn the Wormhole-wrapped tokens) and one on the destination chain to mint the Wormhole-wrapped tokens (or unlock the original tokens). To offer this option, enable the `bridge` route in the configuration. + +#### Automatic Route {: #automatic-route} + +Trustless relayers can execute the second transaction on the user's behalf, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically - for a small fee. Wormhole Connect automatically detects whether the relayer supports a token and will display the option if the `relay` route is enabled in the configuration. + +## CCTP Routes (USDC) {: #cctp-routes-usdc} + +[Circle](https://www.circle.com/en/){target=\_blank}, the issuer of USDC, provides a native way for native USDC to be transferred between [CCTP-enabled](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank} chains. Wormhole Connect can facilitate such transfers. + +Note that if native USDC is transferred from the CCTP-enabled chains to any other outside of this list, the transfer will be routed through the Token Bridge, and the resulting asset will be a Wormhole-wrapped token instead of native USDC. + +#### Manual Route {: #manual-route-cctp} + +This transfer method requires two transactions: one on the origin chain to burn the USDC and one on the destination chain to mint the USDC. The manual CCTP route relies on CCTP only and doesn't use Wormhole messaging in the background. Enable the `cctpManual` route in the configuration to offer this option. + +#### Automatic Route {: #automatic-route-cctp} + +Trustless relayers can execute the second transaction on the user's behalf. Therefore, the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. To offer this option, enable the `cctpRelay` route in the configuration. + +## Native Token Transfers (NTT) Routes {: #native-token-transfers-ntt-routes} + +[Wormhole's Native Token Transfer (NTT) framework](https://github.com/wormhole-foundation/native-token-transfers/){target=\_blank} enables token issuers to retain full ownership of their tokens across any number of chains, unlike the Token Bridge. The token issuer must deploy NTT contracts, and Wormhole Connect needs to be [configured](/docs/build/transfers/connect/configuration/){target=\_blank} with the appropriate `nttGroups` before such tokens are recognized as transferrable via NTT. Refer to the [documentation in the NTT repository](https://github.com/wormhole-foundation/native-token-transfers?tab=readme-ov-file#overview){target=\_blank} for more information about the contracts needed and the framework in general. + +#### Manual Route {: #manual-route-ntt} + +This transfer method requires two transactions: one on the origin chain to burn or lock the tokens and one on the destination chain to mint them. To offer this option, enable the `nttManual` route in the configuration. + +#### Automatic Route {: #automatic-route-ntt} + +Trustless relayers can execute the second transaction on the user's behalf, so the user only needs to perform one transaction on the origin chain to have the tokens delivered to the destination automatically—for a small fee. Wormhole Connect automatically detects whether the relayer supports a token and will display the option if the `nttRelay` route is enabled in the configuration. + +## ETH Bridge Route for Native ETH and wstETH {: #eth-bridge-route-for-native-eth-and-wsteth} + +[Powered by Uniswap liquidity pools](https://github.com/wormhole-foundation/example-uniswap-liquidity-layer){target=\_blank}, this route can transfer native ETH or wstETH between certain EVMs without going through the native bridges. For example, you can transfer native ETH from Arbitrum to Optimism and end up with Optimism ETH all in one go. Supported chains are Ethereum, Arbitrum, Optimism, Base, Polygon (canonical wETH), BSC (canonical wETH), and Avalanche (canonical wETH). + +#### Automatic Route {: #automatic-route-eth} + +Only the relayed route is available due to the complexity of the transaction that needs to be executed at the destination. To offer this option, enable the `ethBridge` and/or `wstETHBridge` route in the configuration to provide this option. + +## USDT Bridge Route {: #usdt-bridge-route} + +Operating on the same technology as the ETH Bridge, this route can transfer USDT between certain EVMs without going through the native bridges. The resulting token will be the canonical USDT token on the destination instead of the Wormhole-wrapped variant. Supported chains are Ethereum, Polygon, Avalanche, Arbitrum, Optimism, BSC, and Base. + +#### Automatic Route {: #automatic-route-usdt} + +Only the relayed route is available due to the complexity of the transaction that needs to be executed on the destination. Enable the `usdtBridge` route in the configuration to offer this option. + +## tBTC Route {: #tbtc-route} + +You can bridge [Threshold's Bitcoin](https://threshold.network/){target=\_blank} via this hybrid solution that combines the Token Bridge and Threshold's contracts. Native tBTC is first locked in the Wormhole Token Bridge, transferred to the destination in the form of Wormhole-wrapped tBTC, which is then immediately locked in Threshold's contract that mints native tBTC for it. The net result is that the user ends up with native tBTC on chains where this Threshold contract is deployed (e.g., Solana, Polygon, Arbitrum, Optimism, or Base). + +Note that if native tBTC is transferred out of these chains to any other outside of this list, the transfer will be routed through the Token Bridge, and the resulting asset will be a Wormhole-wrapped token instead of native tBTC. + +#### Manual Route {: #manual-route-tbtc} + +This transfer method requires two transactions: one on the origin chain to burn or lock the tokens and one on the destination chain to mint them. To provide this option, enable the `tbtc` route in the configuration. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/connect/upgrade/ +--- BEGIN CONTENT --- +--- +title: Wormhole Connect v1.0 Migration Guide +description: Learn how to migrate to Wormhole Connect v1.0, with step-by-step guidance on updating your package and configuration. +--- + +# Wormhole Connect v1.0 Migration Guide + +## Overview + +The Wormhole Connect feature has been updated to **version 1.0**, introducing a modernized design and improved routing for faster native-to-native token transfers. This stable release comes with several breaking changes in how to configure the application, requiring minor updates to your integration. + +This guide will help you migrate to the new version in just a few simple steps. By following this migration guide, you'll learn how to: + + - Update to the latest Connect package + - Apply configuration changes to the **`WormholeConnectConfig`** object + - Understand new routing capabilities and plugin options + +These updates ensure better performance and a smoother integration experience. + +For complete documentation on the previous version of Wormhole Connect, please refer to the [Wormhole Connect guide](/docs/build/transfers/connect/){target=\_blank}. + +## Update the Connect Package + +To begin the migration process, update the Wormhole Connect [**npm package**](https://www.npmjs.com/package/@wormhole-foundation/wormhole-connect/v/1.0.0-beta.6-development?activeTab=readme){target=\_blank} to the latest version 1.0. Updating to the latest version provides access to the newest features and improvements, including the modernized design and enhanced routing capabilities. + +Run the following command in your terminal: + +```bash +npm install @wormhole-foundation/wormhole-connect@^1.0 +``` + +This command installs the latest stable version of Wormhole Connect and prepares your environment for the new configuration changes. + +## Update the `WormholeConnectConfig` Object + +In version 1.0, the `WormholeConnectConfig` object underwent several breaking changes. Most of these changes are minor and can be applied quickly. Below is a summary of the key changes, followed by detailed examples. + +### Summary of Breaking Changes + +- Chain names are now capitalized: `solana` → `Solana` +- `env` renamed to `network` and is now capitalized: `mainnet` → `Mainnet` +- `networks` renamed to `chains`, with capitalized names +- `routes` updated to use route plugins +- `nttGroups` removed in favor of route plugin configuration +- `tokensConfig` updated, with a new key `wrappedTokens` added +- Many UI-related properties consolidated under a top-level `ui` key +- `customTheme` and `mode` were removed, replaced by a top-level `theme` property + +These changes are explained in more detail below, with examples for easy reference. + +### Capitalize Chain Names + +In version 1.0, chain names are now consistent with the `Chain` type from the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank}, and must be capitalized. This affects all config properties where a chain is referenced, including `rpcs`, `rest`, `graphql`, and `chains`. + +=== "v0.x" + + ```typescript + const config: WormholeConnectConfig = { + rpcs: { + ethereum: 'INSERT_ETH_RPC_URL', + solana: 'INSERT_SOLANA_RPC_URL', + }, + }; + ``` +=== "v1.x" + + ```typescript + const config: WormholeConnectConfig = { + rpcs: { + Ethereum: 'INSERT_ETH_RPC_URL', + Solana: 'INSERT_SOLANA_RPC_URL', + }, + }; + ``` + +You can find the complete list of supported chain names in the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/fa4ba4bc349a7caada809f209090d79a3c5962fe/core/base/src/constants/chains.ts#L12-L66){target=\_blank}. + +### Rename `env` to `network` + +The `env` property has been renamed to `network`, with capitalized values. This change affects how you configure Testnet and Mainnet environments. + +=== "v0.x" + + ```typescript + const config: WormholeConnectConfig = { + env: 'testnet', + }; + ``` +=== "v1.x" + + ```typescript + const config: WormholeConnectConfig = { + network: 'Testnet', + }; + ``` + +If you don’t explicitly set the `network` value, Connect will default to `Mainnet`. + +```typescript +// Defaults to Mainnet +const config: WormholeConnectConfig = {}; +``` + +For more information, refer to the [network constants list](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/core/base/src/constants/networks.ts){target=\_blank}. + +### Rename `networks` to `chains` + +The `networks` property, which allowed whitelisting chains, is now renamed `chains`, and the chain names are capitalized. + +=== "v0.x" + + ```typescript + const config: WormholeConnectConfig = { + networks: ['solana', 'ethereum'], + }; + ``` +=== "v1.x" + + ```typescript + const config: WormholeConnectConfig = { + chains: ['Solana', 'Ethereum'], + }; + ``` + +### Update `routes` to Use Route Plugins + +The `routes` property in Wormhole Connect version 1.0 has significantly improved. Previously, `routes` was a simple array of strings. The latest version has been transformed into a flexible plugin system, allowing you to include specific routes for various protocols. + +By default, if no `routes` property is set, Wormhole Connect will provide routes for two core protocols: + + - [Wormhole Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} + - [CCTP](/docs/learn/transfers/cctp/){target=\_blank} + +For most use cases, integrators require more than the default routes. The new `routes` property allows you to specify which protocols to include and exclude any routes unnecessary for your application, including both default and third-party routes. + +#### Available `route` Plugins + +The `@wormhole-foundation/wormhole-connect` package offers a variety of `route` plugins to give you flexibility in handling different protocols. You can choose from the following `route` exports for your integration: + +???- tip "`route` Plugins" + - **`TokenBridgeRoute`** - manually redeemed Wormhole Token Bridge route + - **`AutomaticTokenBridgeRoute`** - automatically redeemed (relayed) Token Bridge route + - **`CCTPRoute`** - manually redeemed CCTP route + - **`AutomaticCCTPRoute`** - automatically redeemed (relayed) CCTP route + - **`DEFAULT_ROUTES`** - array containing the four preceding routes (TokenBridgeRoute, AutomaticTokenBridgeRoute, CCTPRoute, AutomaticCCTPRoute) + - **`nttAutomaticRoute(nttConfig)`** - function that returns the automatically-redeemed (relayed) Native Token Transfer (NTT) route + - **`nttManualRoute(nttConfig)`** - function that returns the manually-redeemed NTT route + - **`nttRoutes(nttConfig)`** - function that returns both NTT routes as an array + - **`MayanRoute`** - route that offers multiple Mayan protocols + - **`MayanRouteSWIFT`** - route for Mayan’s Swift protocol only + - **`MayanRouteMCTP`** - route for Mayan’s MCTP protocol only + - **`MayanRouteWH`** - route for Mayan’s original Wormhole transfer protocol + +In addition to these routes, developers can create custom routes for their own Wormhole-based protocols. For examples, refer to the [NTT](https://github.com/wormhole-foundation/native-token-transfers/tree/main/sdk/route){target=\_blank} and the [Mayan](https://github.com/mayan-finance/wormhole-sdk-route){target=\_blank} example GitHub repositories. + +For further details on the Route plugin interface, refer to the [Wormhole TypeScript SDK route code](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/main/connect/src/routes/route.ts){target=\_blank}. + +Now that you know the available `route` plugins, let's explore some examples of configuring them. + +#### Example: Offer Only CCTP Transfers + +To configure Wormhole Connect to offer only USDC transfers via the CCTP route, use the following configuration: + +```typescript +import WormholeConnect, { + AutomaticCCTPRoute, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + routes: [AutomaticCCTPRoute], +}; + +; +``` + +#### Example: Offer All Default Routes and Third-Party Plugins + +In this example, Wormhole Connect is configured with routes for both default protocols (Token Bridge & CCTP), as well as third-party protocols like [Native Token Transfers (NTT)](/docs/build/transfers/native-token-transfers/){target=\_blank} and [Mayan Swap](https://swap.mayan.finance/){target=\_blank}. + +```typescript +import WormholeConnect, { + DEFAULT_ROUTES, + nttRoutes, + MayanRouteSWIFT, + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +import { myNttConfig } from './consts'; // Custom NTT configuration + +const config: WormholeConnectConfig = { + routes: [...DEFAULT_ROUTES, ...nttRoutes(myNttConfig), MayanRouteSWIFT], +}; + +; +``` + +This flexible plugin allows you to combine default routes (such as Token Bridge and CCTP) with third-party protocols, offering complete control over which routes are available in your application. + +### Update the `tokensConfig` Structure + +In Wormhole Connect version 1.0, the `tokensConfig` property has been updated to simplify the structure and improve flexibility for token handling across chains. The previous configuration has been streamlined, and a new key, `wrappedTokens,` has been introduced to handle foreign assets more effectively. + +Key Changes to `tokensConfig`: + + - **Capitalized chain names** - all chain names, like `ethereum`, must now be capitalized, such as `Ethereum`, to maintain consistency with the rest of the Wormhole SDK + - **`wrappedTokens`** - this new key replaces `foreignAssets` and defines the wrapped token addresses on foreign chains, making it easier to manage cross-chain transfers. It consolidates the wrapped token addresses into a cleaner structure. These addresses must be specified to enable token transfers to and from the foreign chain via token bridge routes + - **Simplified decimals** - instead of using a map of decimal values for different chains, you now only need to provide a single decimals value for the token's native chain + +=== "v0.x" + + In the old structure, the `foreignAssets` field defined the token’s presence on other chains, and `decimals` were mapped across multiple chains. + + ```typescript + import WormholeConnect, { + WormholeConnectConfig, + } from '@wormhole-foundation/wormhole-connect'; + + const config: WormholeConnectConfig = { + tokensConfig: { + WETH: { + key: 'WETH', + symbol: 'WETH', + nativeChain: 'ethereum', + icon: Icon.ETH, + tokenId: { + chain: 'ethereum', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + coinGeckoId: 'ethereum', + color: '#62688F', + decimals: { Ethereum: 18, default: 8 }, + foreignAssets: { + Solana: { + address: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', + decimals: 8, + }, + }, + }, + }, + }; + ``` +=== "v1.x" + + In v1.0, `foreignAssets` has been replaced with `wrappedTokens`, simplifying token transfers across chains by directly mapping wrapped token addresses. The `decimals` value is now a simple number representing the token’s decimals on its native chain. + + ```typescript + import WormholeConnect, { + WormholeConnectConfig, + } from '@wormhole-foundation/wormhole-connect'; + + const config: WormholeConnectConfig = { + tokensConfig: { + WETH: { + key: 'WETH', + symbol: 'WETH', + nativeChain: 'Ethereum', // Chain name now capitalized + icon: Icon.ETH, + tokenId: { + chain: 'Ethereum', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + coinGeckoId: 'ethereum', + color: '#62688F', + decimals: 18, // Simplified decimals field + }, + }, + wrappedTokens: { + WETH: { + Solana: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', + /* additional chains */ + }, + }, + }; + ``` + +### Update NTT Configuration + +In Wormhole Connect version 1.0, the `nttGroups` property, which was used to configure Native Token Transfers (NTT), has been removed. Instead, the NTT configuration is passed directly to the NTT route constructor. This update simplifies the setup and provides more flexibility for defining NTT routes. + +Key changes: + + - **Removed `nttGroups`** - the `nttGroups` property has been removed from the configuration and is now passed as an argument to the `nttRoutes` function + - **Direct NTT route configuration** - NTT routes are now defined more explicitly, allowing for a more organized structure when specifying tokens, chains, and managers + +This change simplifies the configuration process by providing a cleaner, more flexible way to handle NTT routes across different chains. + +=== "v0.x" + + In the previous version, `nttGroups` defined the NTT managers and transceivers for different tokens across multiple chains. + + ```typescript + import WormholeConnect, { + nttRoutes, + WormholeConnectConfig, + } from '@wormhole-foundation/wormhole-connect'; + + const config: WormholeConnectConfig = { + nttGroups: { + Lido_wstETH: { + nttManagers: [ + { + chainName: 'ethereum', + address: '0xb948a93827d68a82F6513Ad178964Da487fe2BD9', + tokenKey: 'wstETH', + transceivers: [ + { + address: '0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0', + type: 'wormhole', + }, + ], + }, + { + chainName: 'bsc', + address: '0x6981F5621691CBfE3DdD524dE71076b79F0A0278', + tokenKey: 'wstETH', + transceivers: [ + { + address: '0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986', + type: 'wormhole', + }, + ], + }, + ], + }, + }, + }; + ``` +=== "v1.x" + + In v1.0, `nttGroups` has been removed, and the configuration is passed to the NTT route constructor as an argument. The tokens and corresponding transceivers are now clearly defined within the `nttRoutes` configuration. + + ```typescript + import WormholeConnect, { + nttRoutes, + WormholeConnectConfig, + } from '@wormhole-foundation/wormhole-connect'; + + const config: WormholeConnectConfig = { + routes: [ + ...nttRoutes({ + tokens: { + Lido_wstETH: [ + { + chain: 'Ethereum', + manager: '0xb948a93827d68a82F6513Ad178964Da487fe2BD9', + token: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', + transceiver: [ + { + address: '0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0', + type: 'wormhole', + }, + ], + }, + { + chain: 'Bsc', + manager: '0x6981F5621691CBfE3DdD524dE71076b79F0A0278', + token: '0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C', + transceiver: [ + { + address: '0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986', + type: 'wormhole', + }, + ], + }, + ], + }, + }), + /* other routes */ + ], + }; + ``` + + In this new structure, NTT routes are passed directly through the `nttRoutes` function, with the `token`, `chain`, `manager` and `transceiver` clearly defined for each supported asset. + +### Update UI Configuration + +In Wormhole Connect version 1.0, the user interface configuration has been significantly updated. Several previously scattered UI properties have now been consolidated under a new `ui` key, making the UI configuration cleaner and easier to manage. + +Key UI changes: + + - **Consolidated UI properties** - many UI-related properties moved under a new top-level ui key for better organization + - **Removed `customTheme` and `mode`** - these properties have been removed in favor of a new top-level prop called `theme`, which simplifies theming and allows dynamic switching between themes + +#### UI Properties + +The following properties that were previously defined at the root level of the configuration are now part of the `ui` key: + + - `explorer` → `ui.explorer` - specifies the explorer to use for viewing transactions + - `bridgeDefaults` → `ui.defaultInputs` - sets default input values for the bridge, such as the source and destination chains and token + - `pageHeader` → `ui.pageHeader` - sets the title and header for the page + - `menu` → `ui.menu` - defines the menu items displayed in the interface + - `searchTx` → `ui.searchTx` - configures the transaction search functionality + - `partnerLogo` → `ui.partnerLogo` - displays a partner's logo on the interface + - `walletConnectProjectId` → `ui.walletConnectProjectId` - integrates WalletConnect into the UI + - `showHamburgerMenu` → `ui.showHamburgerMenu` - enables or disables the hamburger menu for navigation + +Additionally, there are two new properties under `ui`: + + - **`ui.title`** - sets the title rendered in the top left corner of the UI. The default is "Wormhole Connect" + - **`ui.getHelpUrl`** - URL that Connect will render when an unknown error occurs, allowing users to seek help. This can link to a Discord server or any other support channel + +```typescript +import WormholeConnect, { + WormholeConnectConfig, +} from '@wormhole-foundation/wormhole-connect'; + +const config: WormholeConnectConfig = { + ui: { + title: 'My Custom Bridge Example', + getHelpUrl: 'https://examplehelp.com/', + menu: [ + { + label: 'Support', + href: 'https://examplehelp.com/support', + target: '_blank', + order: 1, // Order of appearance in the menu + }, + { + label: 'About', + href: 'https://examplehelp.com/about', + target: '_blank', + order: 2, + }, + ], + showHamburgerMenu: false, + }, +}; +``` + +#### UI Configuration + +In the old structure, UI-related settings like `explorer` and `bridgeDefaults` were defined at the root level of the configuration. In version 1.0, these properties are now organized under the `ui` key, improving the configuration's readability and manageability. + +=== "v0.x" + + ```typescript + const config: WormholeConnectConfig = { + bridgeDefaults: { + fromNetwork: 'solana', + toNetwork: 'ethereum', + tokenKey: 'USDC', + requiredNetwork: 'solana', + }, + showHamburgerMenu: true, + }; + ``` +=== "v1.x" + + ```typescript + const config: WormholeConnectConfig = { + ui: { + defaultInputs: { + fromChain: 'Solana', // Chain names now capitalized + toChain: 'Ethereum', + tokenKey: 'USDC', + requiredChain: 'Solana', + }, + showHamburgerMenu: true, + }, + }; + ``` + +#### Remove `customTheme` and `mode` Properties + +In version 1.0, the `customTheme` and `mode` properties, which were previously used to set themes, have been removed. They have been replaced by a new top-level prop called `theme`, which allows for more flexibility and dynamic updates to themes. + +Important details: + + - The `theme` prop is not part of the `config` object and is passed separately to Wormhole Connect + - `config` cannot be modified after Connect has mounted, but the `theme` can be updated dynamically to support changes such as switching between light and dark modes or updating color schemes + +=== "v0.x" + + ```typescript + const config: WormholeConnectConfig = { + customTheme: { + primaryColor: '#4266f5', + secondaryColor: '#ff5733', + }, + mode: 'dark', + }; + + ; + ``` +=== "v1.x" + + ```typescript + const theme: WormholeConnectTheme = { + mode: 'dark', // Can be dynamically changed + font: 'Arial', + button: { + primary: '#4266f5', + }, + }; + + ; + ``` + +### Removed Configuration Properties + +Several configuration properties have been removed in Wormhole Connect version 1.0. These keys no longer have any effect, and providing values for them in the configuration will not result in any changes. + +Removed config keys: + + - `cta` + - `cctpWarning` + - `pageSubHeader` + - `moreTokens` + - `moreChains` + - `ethBridgeMaxAmount` + - `wstETHBridgeMaxAmount` + - `customTheme` + - `mode` + +If your current setup includes any of these properties, you can safely remove them, as they are no longer supported in v1.0. + +## Use the CDN-Hosted Version of Wormhole Connect + +For those using the CDN-hosted version of Wormhole Connect, the package's installation and integration have been updated. You must install the Connect package from npm and use the new `wormholeConnectHosted` utility function. + +### Install and Integrate the Hosted Version + +1. Install the Connect package via npm: + + ```bash + npm install @wormhole-foundation/wormhole-connect@^1.0 + ``` + +2. After installing the package, you can embed Wormhole Connect into your page by adding the following code: + + ```typescript + import { wormholeConnectHosted } from '@wormhole-foundation/wormhole-connect'; + + const container = document.getElementById('connect')!; + + wormholeConnectHosted(container); + ``` + +### Example: Custom Configuration for Hosted Version + +The `wormholeConnectHosted` function accepts two parameters: `config` and `theme`. This allows you to customize the routes and apply a theme directly within the hosted version. Here’s an example of how you can pass a custom configuration: + +```typescript +import { + wormholeConnectHosted, + MayanRoute, +} from '@wormhole-foundation/wormhole-connect'; + +const container = document.getElementById('connect')!; + +wormholeConnectHosted(container, { + config: { + routes: [MayanRoute], + eventHandler: (e) => { + console.log('Connect event', e); + }, + }, + theme: { + background: { + default: '#004547', + }, + }, +}); +``` + +In this example, the `config` object defines the routes (in this case, using the Mayan route), while the `theme` object allows customization of the Connect interface (e.g., background color). +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/ +--- BEGIN CONTENT --- +--- +title: Multichain Transfers +description: This section guides you through using Wormhole products to securely and efficiently transfer assets and messages across multiple blockchains. +--- + +# Multichain Transfers + +Wormhole transfer products offer multiple asset transfer options to meet developer needs and use cases. These sections include guides to integrate and use Wormhole transfer products to securely and efficiently transfer assets and messages across multiple blockchains. + +Use the following links to jump directly to each Wormhole transfer product page or continue on for a feature-based product comparison. + +- [**Connect**](/docs/build/transfers/connect/) - a pre-built bridging UI for cross-chain token transfers, requiring minimal setup +- [**Native Token Transfers (NTT)**](/docs/build/transfers/native-token-transfers/) - a mechanism to transfer native tokens cross-chain seamlessly without converting to a wrapped asset +- [**Token Bridge**](/docs/learn/transfers/token-bridge/) - a bridging solution that uses a lock and mint mechanism +- [**Settlement**](/docs/build/transfers/settlement/) - an intent protocol suite for fast multichain transfers, optimizing liquidity flows and interoperability without relying on traditional bridging methods + +## Products By Feature + +While all of these products handle token transfers, there are additional features to consider when selecting the best fit for your project needs. + +
+ +- :octicons-file-code-16:{ .lg .middle } **Message Payload** + + --- + + Send message payloads for social platforms, NFTs, and more with Token Bridge's lock and mint wrapped token mechanism. + + [:custom-arrow: Discover Token Bridge](/docs/build/transfers/token-bridge/) + +- :octicons-file-code-16:{ .lg .middle } **Native Assets** + + --- + + Eliminate the need for wrapped tokens and issue native multichain assets with Native Token Transfers (NTT). + + [:custom-arrow: Discover Native Token Transfers](/docs/build/transfers/native-token-transfers/) + + +- :octicons-file-code-16:{ .lg .middle } **Speed at Scale** + + --- + + Unleash institutional-scale digital asset settlement with Wormhole Settlement's intent-based asset transfers and liquidity layer. + + [:custom-arrow: Discover Settlement](/docs/build/transfers/settlement/) + +- :octicons-gear-16:{ .lg .middle } **Plug-and-Play UI** + + --- + + Add Wormhole's bridge UI to your dApp, no smart contract development required, with Connect. + + [:custom-arrow: Discover Connect](/docs/build/transfers/connect/) + +
+ +## Additional Resources + +
+ +- :octicons-tools-16:{ .lg .middle } **Product Comparison** + + --- + + Compare Wormhole's cross-chain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. + + [:custom-arrow: Compare Products](/docs/build/start-building/products/) + +- :octicons-book-16:{ .lg .middle } **Use Cases** + + --- + + Explore Wormhole's use cases, from cross-chain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. + + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) + + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/cli-commands/ +--- BEGIN CONTENT --- +--- +title: NTT CLI Commands +description: A comprehensive guide to the Native Token Transfers (NTT) CLI, detailing commands for managing token transfers across chains within the Wormhole ecosystem. +--- + +# NTT CLI Commands + +## Introduction + +The NTT Command-Line Interface (CLI) is a powerful tool for managing native token transfers across multiple blockchain networks within the Wormhole ecosystem. This page provides a comprehensive list of available commands, their descriptions, and examples to help you interact with and configure the NTT system effectively. Whether initializing deployments, updating configurations, or working with specific chains, the NTT CLI simplifies these operations through its intuitive commands. + +If you haven't installed the NTT CLI yet, follow the [NTT Installation Guide](/docs/build/transfers/native-token-transfers/deployment-process/installation/#installation){target=\_blank} to set it up before proceeding. + +## Table of Commands + +The following table lists the available NTT CLI commands, descriptions, and examples. + +To explore detailed information about any NTT CLI command, including its options and examples, you can append `--help` to the command. This will display a comprehensive guide for the specific command. + +### General Commands + +| Command | Description | Examples | +|-----------------------------------------|-------------------------------------------------------|--------------------------| +| `ntt update` | update the NTT CLI | `ntt update` | +| `ntt new ` | create a new NTT project | `ntt new my-ntt-project` | +| `ntt add-chain ` | add a chain to the deployment file | `ntt add-chain Ethereum --token 0x1234... --mode burning --latest`| +| `ntt upgrade ` | upgrade the contract on a specific chain | `ntt upgrade Solana --ver 1.1.0`| +| `ntt clone
` | initialize a deployment file from an existing contract| `ntt clone Mainnet Solana Sol5678...`| +| `ntt init ` | initialize a deployment file | `ntt init devnet` | +| `ntt pull` | pull the remote configuration | `ntt pull` | +| `ntt push` | push the local configuration | `ntt push` | +| `ntt status` | check the status of the deployment | `ntt status` | + +### Configuration Commands + +| Command | Description | Examples | +|---------------------------------------------|----------------------------------------|-------------------------------------| +| `ntt config set-chain `| set a configuration value for a chain | `ntt config set-chain Ethereum scan_api_key`| +| `ntt config unset-chain ` | unset a configuration value for a chain| `ntt config unset-chain Ethereum scan_api_key`| +| `ntt config get-chain ` | get a configuration value for a chain | `ntt config get-chain Ethereum scan_api_key`| + +### Solana Commands + +| Command | Description | Examples | +|-----------------------------------------------|---------------------------------------------------------|------------------| +| `ntt solana key-base58 ` | print private key in base58 | `ntt solana key-base58 /path/to/keypair.json`| +| `ntt solana token-authority ` | print the token authority address for a given program ID| `ntt solana token-authority Sol1234...`| +| `ntt solana ata `| print the token authority address for a given program ID| `ntt solana ata Mint123... Owner123... token22`| + +## Where to Go Next + +
+ + +- :octicons-gear-16:{ .lg .middle } **Configure NTT** + + --- + + Find information on configuring NTT, including guidance on setting Owner and Pauser access control roles and management of rate-limiting. + + [:custom-arrow: Configure your NTT deployment](/docs/build/transfers/native-token-transfers/configuration/) + +- :octicons-question-16:{ .lg .middle } **NTT FAQs** + + --- + + Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. + + [:custom-arrow: Check out the FAQs](/docs/build/transfers/native-token-transfers/faqs/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/access-control/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Access Control +description: Learn about the owner and pauser access roles for the NTT manager contract, which can be used to pause and un-pause token transfers. +--- + +## Owner and Pauser Roles + +Pausing the Native Toke Transfer (NTT) Manager Contract will disallow initiating new token transfers. While the contract is paused, in-flight transfers can still be redeemed (subject to rate limits if configured). + +NTT can be paused on a particular chain by updating the `paused` parameter on the deployment to `true` via the NTT CLI, then performing `ntt push` to sync the local configuration with the on-chain deployment. + +- **Owner** - full control over NTT contracts, can perform administrative functions. Has the ability to un-pause contracts if they have been paused +- **Pauser** - can pause NTT contracts to halt token transfers temporarily. This role is crucial for responding quickly to adverse events without a prolonged governance process. Cannot un-pause contracts + +You may verify the current owner, pauser, and paused status of the NTT Manager contract on the `deployment.json` file in your NTT project directory. + +```json +{ + "network": "Testnet", + "chains": { + "Sepolia": { + "version": "1.1.0", + "mode": "burning", + "paused": true, // set to true to pause the contract + "owner": "0x0088DFAC40029f266e0FF62B82E47A07467A0345", + "manager": "0x5592809cf5352a882Ad5E9d435C6B7355B716357", + //... + "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" + } + } +} +``` + +!!! note + While the `Pauser` can pause contracts, the ability to un-pause contracts is callable only by the `Owner`. + +The `Owner` and the `Pauser` addresses can each pause the contract. Since the contract `Owner` address is typically a multisig or a more complex DAO governance contract, and pausing the contract only affects the availability of token transfers, protocols can choose to set the `Pauser` address to be a different address. Creating a separate `Pauser` helps protocols respond quickly to potential risks without going through a drawn-out process. + +Consider separating `Owner` and `Pauser` roles for your multichain deployment. `Owner` and `Pauser` roles are defined directly on the `NttManager` contract. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers (NTT) - Configuration +description: This section contains information on configuring Native Token Transfers (NTT), including guidance on setting Owner and Pauser access control roles and management of rate-limiting. +--- + +# Configure Native Token Transfers (NTT) + +## Get Started + +This section contains information on configuring Native Token Transfers (NTT), including guidance on setting Owner and Pauser access control roles and management of rate-limiting. + +
+ +- :octicons-clock-16:{ .lg .middle } **Rate Limiting** + + --- + + Discover options for configuring rate limits and how queueing effects transaction flow. + + [:custom-arrow: Explore rate limit options](/docs/build/transfers/native-token-transfers/configuration/rate-limiting/) + +- :octicons-unlock-16:{ .lg .middle } **Access Control** + + --- + + Learn more about access control, including why you should consider setting a separate Pauser address as part of your development security plan. + + [:custom-arrow: Explore access control roles](/docs/build/transfers/native-token-transfers/configuration/access-control/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/configuration/rate-limiting/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Rate Limiting +description: Learn about rate limits in Wormhole NTT by configuring send/receive limits, queuing, and canceling flows to manage multichain token transfers efficiently. +--- + +## Introduction + +The Native Token Transfer (NTT) framework provides configurable per-chain rate limits for sending and receiving token transfers. Integrators can manage these limits via their own governance processes to quickly adapt to on-chain activity. + +If a transfer is rate-limited on the source chain and queueing is enabled via `shouldQueue = true`, the transfer is placed into an outbound queue and can be released after the rate limit expires. + +You can configure the following limits on every chain where NTT is deployed directly using the manager: + +- **Sending limit** - a single outbound limit for sending tokens from the chain +- **Per-chain receiving limits** - the maximum receiving limit, which can be configured on a per-chain basis. For example, allowing 100 tokens to be received from Ethereum but only 50 tokens to be received from Arbitrum + +Rate limits are replenished every second over a fixed duration. While the default duration is 24 hours, the value is configurable at contract creation. Rate-limited transfers on the destination chain are added to an inbound queue with a similar release delay. + +## Update Rate Limits + +To configure or update the sending and receiving rate limits, follow these steps: + +1. **Locate the deployment file** - open the `deployment.json` file in your NTT project directory. This file contains the configuration for your deployed contracts + +2. **Modify the limits section** - for each chain, locate the limits field and update the outbound and inbound values as needed + + ```json + "limits": { + "outbound": "1000.000000000000000000", + "inbound": { + "Ethereum": "100.000000000000000000", + "Arbitrum": "50.000000000000000000" + } + } + ``` + + - **`outbound`** - sets the maximum tokens allowed to leave the chain + - **`inbound`** - configures per-chain receiving limits for tokens arriving from specific chains + +3. **Push the configuration** - use the NTT CLI to synchronize the updated configuration with the blockchain + + ```bash + ntt push + ``` + +4. **Verify the changes** - after pushing, confirm the new rate limits by checking the deployment status + + ```bash + ntt status + ``` + +???- note "`deployment.json` example" + ```json + { + "network": "Testnet", + "chains": { + "Sepolia": { + "version": "1.1.0", + "mode": "burning", + "paused": false, + "owner": "0x0088DFAC40029f266e0FF62B82E47A07467A0345", + "manager": "0x5592809cf5352a882Ad5E9d435C6B7355B716357", + "token": "0x5CF5D6f366eEa7123BeECec1B7c44B2493569995", + "transceivers": { + "threshold": 1, + "wormhole": { + "address": "0x91D4E9629545129D427Fd416860696a9659AD6a1", + "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" + } + }, + "limits": { + "outbound": "184467440737.095516150000000000", + "inbound": { + "ArbitrumSepolia": "500.000000000000000000" + } + }, + "pauser": "0x0088DFAC40029f266e0FF62B82E47A07467A0345" + } + } + } + ``` + +## Queuing Mechanism + +When a transfer exceeds the rate limit, it is held in a queue and can be released after the set rate limit duration has expired. The sending and receiving queuing behavior is as follows: + +- **Sending** - if an outbound transfer violates rate limits, users can either revert and try again later or queue their transfer. Users must return after the queue duration has expired to complete sending their transfer +- **Receiving** - if an inbound transfer violates rate limits, it is in a queue. Users or relayers must return after the queue duration has expired to complete receiving their transfer on the destination chain + +Queuing is configured dynamically during each transfer by passing the `shouldQueue` parameter to the [`transfer` function](https://github.com/wormhole-foundation/native-token-transfers/blob/5e7ceaef9a5e7eaa13e823a67c611dc684cc0c1d/evm/src/NttManager/NttManager.sol#L171-L182){target=\_blank} in the `NttManager` contract. + +## Cancel Flows + +If users bridge frequently between a given source chain and destination chain, the capacity could be exhausted quickly. Loss of capacity can leave other users rate-limited, potentially delaying their transfers. The outbound transfer cancels the inbound rate limit on the source chain to avoid unintentional delays. This allows for refilling the inbound rate limit by an amount equal to the outbound transfer amount and vice-versa, with the inbound transfer canceling the outbound rate limit on the destination chain and refilling the outbound rate limit with an amount. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers EVM Deployment +description: Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. +--- + +# Native Token Transfers (NTT) EVM Development + +## Deploy Your Token and Ensure Compatibility + +If you still need to do so, deploy the token contract to the destination or spoke chains. + +### Requirements for Token Deployment + +Wormhole’s NTT is an open framework that supports various deployment modes. The NTT CLI currently supports two deployment modes: burn-and-mint and hub-and-spoke. These modes differ in how tokens are managed across chains. + +#### Burn-and-Mint Mode + +Tokens integrated with `NttManager` in `burning` mode require the following two functions to be present: + +- `burn(uint256 amount)` +- `mint(address account, uint256 amount)` + +These functions aren't part of the standard ERC-20 interface. The [`INttToken` interface](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} documents the required functions and convenience methods, errors, and events. + +??? code "View the complete `INttToken` Interface`" + ```solidity + // SPDX-License-Identifier: Apache 2 +pragma solidity >=0.8.8 <0.9.0; + +interface INttToken { + /// @notice Error when the caller is not the minter. + /// @dev Selector 0x5fb5729e. + /// @param caller The caller of the function. + error CallerNotMinter(address caller); + + /// @notice Error when the minter is the zero address. + /// @dev Selector 0x04a208c7. + error InvalidMinterZeroAddress(); + + /// @notice Error when insufficient balance to burn the amount. + /// @dev Selector 0xcf479181. + /// @param balance The balance of the account. + /// @param amount The amount to burn. + error InsufficientBalance(uint256 balance, uint256 amount); + + /// @notice The minter has been changed. + /// @dev Topic0 + /// 0x0b5e7be615a67a819aff3f47c967d1535cead1b98db60fafdcbf22dcaa8fa5a9. + /// @param newMinter The new minter. + event NewMinter(address previousMinter, address newMinter); + + // NOTE: the `mint` method is not present in the standard ERC20 interface. + function mint(address account, uint256 amount) external; + + // NOTE: the `setMinter` method is not present in the standard ERC20 interface. + function setMinter(address newMinter) external; + + // NOTE: NttTokens in `burn` mode require the `burn` method to be present. + // This method is not present in the standard ERC20 interface, but is + // found in the `ERC20Burnable` interface. + function burn(uint256 amount) external; +} + ``` + +Later, you set mint authority to the corresponding `NttManager` contract. You can also follow the scripts in the [example NTT token](https://github.com/wormhole-foundation/example-ntt-token){target=\_blank} repository to deploy a token contract. + +#### Hub-and-Spoke Mode + +A central hub chain (e.g., Ethereum) manages the total token supply in hub-and-spoke mode. Other chains (spokes) mint or burn tokens during cross-chain transfers, ensuring consistency with the locked tokens on the hub chain. + + - **Hub chain** - tokens are locked on the hub chain when transferring to spoke chains + - **Spoke chains** - tokens are native to the spoke chains and are either minted or burned during cross-chain transfers + +!!! note + The only requirement for using the NTT framework is an ERC20 token, which can be newly deployed or existing. Steps like setting mint authority apply only to spoke chains. + +For example, when transferring tokens from Ethereum (hub) to Polygon (spoke), the NTT Manager locks tokens on Ethereum, and the corresponding amount is minted on Polygon. Similarly, transferring tokens back from Polygon to Ethereum burns the tokens on Polygon and unlocks the equivalent tokens on Ethereum. + +This process ensures that the total token supply remains consistent across all chains, with the hub chain acting as the source of truth. + +For more detailed information, see the [Deployment Models](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank} page. + +### Key Differences Between Modes + + - **Burn-and-mint** - tokens must implement custom `mint` and `burn` functions, allowing each chain to manage token issuance independently + - **Hub-and-spoke** - tokens only need to be ERC20 compliant, with the hub chain acting as the source of truth for supply consistency + +## Deploy NTT + +Create a new NTT project: + +```bash +ntt new my-ntt-deployment +cd my-ntt-deployment +``` + +Initialize a new `deployment.json` file specifying the network: + +=== "Testnet" + + ```bash + ntt init Testnet + ``` + +=== "Mainnet" + + ```bash + ntt init Mainnet + ``` + +Ensure you have set up your environment correctly: + +```bash +export ETH_PRIVATE_KEY=INSERT_PRIVATE_KEY +``` + +Add each chain you'll be deploying to. The following example demonstrates configuring NTT in burn-and-mint mode on Ethereum Sepolia and Arbitrum Sepolia: + +```bash +# Set scanner API Keys as environment variables +export SEPOLIA_SCAN_API_KEY=INSERT_ETHERSCAN_SEPOLIA_API_KEY +export ARBITRUMSEPOLIA_SCAN_API_KEY=INSERT_ARBISCAN_SEPOLIA_API_KEY + +# Add each chain +# The contracts will be automatically verified using the scanner API keys above +ntt add-chain Sepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS +ntt add-chain ArbitrumSepolia --latest --mode burning --token INSERT_YOUR_TOKEN_ADDRESS +``` + +While not recommended, you can pass the `-skip-verify` flag to the `ntt add-chain` command if you want to skip contract verification. + +The `ntt add-chain` command takes the following parameters: + +- Name of each chain +- Version of NTT to deploy (use `--latest` for the latest contract versions) +- Mode (either `burning` or `locking`) +- Your token contract address + +The NTT CLI prints detailed logs and transaction hashes, so you can see exactly what's happening under the hood. + +## Configure NTT + +The NTT CLI takes inspiration from [git](https://git-scm.com/){target=\_blank}. You can run: + +- `ntt status` - checks whether your `deployment.json` file is consistent with what is on-chain +- `ntt pull` - syncs your `deployment.json` file with the on-chain configuration and set up rate limits with the appropriate number of decimals, depending on the specific chain. For example: + + For Solana, the limits are set with 9 decimal places: + ```json + "inbound": { + "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana + } + ``` + + For Sepolia (Ethereum Testnet), the limits are set with 18 decimal places: + ```json + "inbound": { + "Solana": "1000.000000000000000000" // inbound limit from Solana to Sepolia + } + ``` + + This initial configuration ensures that the rate limits are correctly represented for each chain's token precision + +- `ntt push` - syncs the on-chain configuration with local changes made to your `deployment.json` file + +After you deploy the NTT contracts, ensure that the deployment is properly configured and your local representation is consistent with the actual on-chain state by running `ntt status` and following the instructions shown on the screen. + +## Set Token Minter to NTT Manager + +The final step in the deployment process is to set the NTT Manager as a minter of your token on all chains you have deployed to in `burning` mode. When performing a hub-and-spoke deployment, it is only necessary to set the NTT Manager as a minter of the token on each spoke chain. + +!!! note + The required NTT Manager address can be found in the `deployment.json` file. + +- If you followed the [`INttToken`](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/interfaces/INttToken.sol){target=\_blank} interface, you can execute the `setMinter(address newMinter)` function + ```json + cast send $TOKEN_ADDRESS "setMinter(address)" $NTT_MANAGER_ADDRESS --private-key $ETH_PRIVATE_KEY --rpc-url $YOUR_RPC_URL + ``` + +- If you have a custom process to manage token minters, you should now follow that process to add the corresponding NTT Manager as a minter + +By default, NTT transfers to EVM blockchains support automatic relaying via the Wormhole relayer, which doesn't require the user to perform a transaction on the destination chain to complete the transfer. + +!!!important + To proceed with testing and find integration examples, check out the [NTT Post Deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} page. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Solana Deployment +description: Deploy and configure Wormhole's Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. +--- + +# Deploy Native Token Transfers on Solana + +[Native Token Transfers (NTT)](/docs/learn/transfers/native-token-transfers/overview/){target=\_blank} enable seamless multichain transfers of SPL tokens on Solana using Wormhole's messaging protocol. Instead of creating wrapped tokens, NTT allows native assets to move across chains while maintaining their original properties. + +This guide walks you through deploying NTT on Solana, including setting up dependencies, configuring token compatibility, and using the NTT CLI to deploy in hub-and-spoke or burn-and-mint mode. + +By the end, a fully deployed NTT will be set up, allowing your token to transfer between Solana and other supported chains. + +## Prerequisites + +Before deploying NTT on Solana, ensure you have the following: + +- [Rust](https://www.rust-lang.org/tools/install){target=\_blank} +- [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** +- [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** + +Use the Solana and Anchor versions listed above to avoid compatibility issues while following this guide. + +## Overview of the Deployment Process + +Deploying NTT with the CLI on Solana follows a structured process: + +1. **Choose your token setup**: + + - **Use an existing SPL token** - if your token is already deployed on Solana, you can skip token creation and move directly to the [Set Up NTT](#set-up-ntt) section + - **Create a new SPL token** - if you don't already have an SPL token deployed, you'll need to deploy and configure it on Solana before integrating with Wormhole's NTT + +2. **Choose your [deployment model](/docs/learn/transfers/native-token-transfers/deployment/){target=\_blank}**: + + - **Hub-and-spoke** - tokens are locked on a hub chain and minted on destination spoke chains. Since the token supply remains controlled by the hub chain, no changes to the minting authority are required + - **Burn-and-mint** - tokens are burned on the source chain and minted on the destination chain. This requires transferring the SPL token's minting authority to the Program Derived Address (PDA) controlled by the NTT program + +3. **Deploy and configure NTT** - use the NTT CLI to initialize and deploy the NTT program, specifying your SPL token and deployment mode + + +Following this process, your token will fully integrate with NTT, enabling seamless transfers between Solana and other chains. + +By default, NTT transfers to Solana require manual [relaying](/docs/learn/infrastructure/relayer/){target=\_blank}, meaning users must complete a transaction on Solana to finalize the transfer. For automatic relaying, where transactions are completed without user intervention, additional setup is required. [Contact Wormhole contributors](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank} to enable automatic relaying support for your deployment. + +## Create and Mint Tokens + +This section walks you through generating a Solana wallet, deploying an SPL token, creating a token account, and minting tokens. + +If you already have an SPL token, skip to [Set Up NTT](#set-up-ntt). + +1. **Generate a Solana key pair** - run the following command to create a new wallet: + + ```bash + solana-keygen grind --starts-with w:1 --ignore-case + ``` + +2. **Set Solana configuration** - configure the Solana CLI to use the generated key pair using the following command: + + ```bash + solana config set --keypair INSERT_PATH_TO_KEYPAIR_JSON + ``` + +3. **Select an RPC URL** - configure Solana to use the appropriate network using one of the following commands: + + === "Mainnet" + ```bash + solana config set -um + ``` + + === "Testnet" + ```bash + solana config set -ut + ``` + + === "Devnet" + ```bash + solana config set -ud + ``` + +4. **Fund your wallet** - ensure you have enough SOL to create a token. If deploying on devnet, request an airdrop with the following commands: + + ```bash + solana airdrop 2 + solana balance + ``` + +5. **Install SPL Token CLI** - install or update the required [CLI tool](https://spl.solana.com/token){target=\_blank} + + ```bash + cargo install spl-token-cli + ``` + +6. **Create a new SPL token** - initialize the token on Solana + + ```bash + spl-token create-token + ``` + +7. **Create a token account** - generate an account to hold the token + + ```bash + spl-token create-account INSERT_TOKEN_ADDRESS + ``` + +8. **Mint tokens** - send 1000 tokens to the created account + + ```bash + spl-token mint INSERT_TOKEN_ADDRESS 1000 + ``` + +NTT versions `>=v2.0.0+solana` support SPL tokens with [transfer hooks](https://spl.solana.com/transfer-hook-interface){target=\_blank}. + +## Set Up NTT + +To integrate your token with NTT on Solana, you must initialize the deployment and configure its parameters. This process sets up the required contracts and may generate key pairs if they don't exist. These key pairs are used to sign transactions and authorize actions within the NTT deployment. + +The [NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/){target=\_blank} manages deployments, configures settings, and interacts with the NTT system. Follow these steps to set up NTT using the CLI tool: + +1. **Create a new NTT project** - set up a deployment workspace + + ```bash + ntt new INSERT_PROJECT_NAME + cd INSERT_PROJECT_NAME + ``` + +2. **Initialize the deployment** - generate a `deployment.json` file with your deployment settings + + === "Mainnet" + + ```bash + ntt init Mainnet + ``` + + === "Testnet" + + ```bash + ntt init Testnet + ``` + + === "Devnet" + + ```bash + ntt init Devnet + ``` + +### Set Mint Authority + +If you use burn-and-mint mode, follow these steps to enable the NTT program to mint tokens on Solana. This involves deriving the PDA as the token authority and updating the SPL token's minting permissions. + +If you want to use hub-and-spoke, skip this section and proceed to [Deploy and Configure NTT](#deploy-and-configure-ntt). + +Before updating the mint authority, you must create metadata for your SPL token. You can visit this repository to see an example of [how to create metadata for your SPL token](https://github.com/wormhole-foundation/demo-metaplex-metadata/blob/main/src/token-metadata.ts){target=\_blank}. + +Follow these steps to set the mint authority using the NTT CLI: + +1. **Generate an NTT program key pair** - create a unique key pair for the NTT program. The key pair must start with "ntt" to identify it as belonging to the NTT deployment + + ```bash + solana-keygen grind --starts-with ntt:1 --ignore-case + ``` + +2. **Derive the token authority** - generate the PDA, which will manage token minting + + ```bash + ntt solana token-authority INSERT_YOUR_NTT_PROGRAM_KEY_PAIR + ``` + +3. **Set SPL token mint authority** - delegate minting control to the derived PDA + + ```bash + spl-token authorize INSERT_TOKEN_ADDRESS mint INSERT_DERIVED_PDA + ``` + +## Deploy and Configure NTT + +After setting up your deployment, finalize the configuration and deploy the NTT program on Solana by following these steps: + +1. **Deploy NTT to Solana** - run the appropriate command based on your deployment mode: + + === "Burn-and-Mint" + + ```bash + ntt add-chain Solana --latest --mode burning --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ``` + + === "Hub-and-Spoke" + + ```bash + ntt add-chain Solana --latest --mode locking --token INSERT_TOKEN_ADDRESS --payer INSERT_YOUR_KEYPAIR_JSON --program-key INSERT_YOUR_NTT_PROGRAM_KEYPAIR_JSON + ``` + + !!! tip + The `add-chain` command accepts an optional `--solana-priority-fee` flag, which sets the priority fee in microlamports. The default is `50000`. + +2. **Verify deployment status** - after deployment, check if your `deployment.json` file matches the on-chain configuration using the following command: + + ```bash + ntt status + ``` + + If needed, sync your local configuration with the on-chain state: + + ```bash + ntt pull + ``` + +3. **Configure inbound and outbound rate limits** - by default, the inbound and outbound limits are set to `0` and must be updated before deployment. For EVM chains, values must be set using 18 decimals, while Solana uses nine decimals. + + Open your `deployment.json` file and adjust the values based on your use case: + + ```json + "inbound": { + "Sepolia": "1000.000000000" // inbound limit from Sepolia to Solana + }, + "outbound": { + "Sepolia": "1000.000000000" // outbound limit from Solana to Sepolia + } + ``` + +4. **Push the final deployment** - once rate limits are set, push the deployment to Solana using the specified key pair to cover gas fees + + ```bash + ntt push --payer INSERT_YOUR_KEYPAIR_JSON + ``` + +### Troubleshoot Deployment Issues + +If your deployment fails, it may be due to leftover program buffer accounts taking up storage on Solana. These temporary accounts are created during deployment but may persist if interrupted. Refer to the [Solana program deployment guide](https://solana.com/docs/programs/deploying#program-buffer-accounts){target=\_blank} for instructions on finding and closing these buffer accounts to free up space and allow redeployment. + +## Where to Go Next + +
+ +- :octicons-globe-16:{ .lg .middle } **Deploy NTT on EVM Chains** + + --- + + After deploying NTT on Solana, deploy and integrate it on EVM chains to enable seamless multichain transfers. + + [:custom-arrow: Deploy NTT on EVM](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} + +- :octicons-tools-16:{ .lg .middle } **Test Your Deployment** + + --- + + Follow the NTT Post Deployment Guide for integration examples and testing instructions. + + [:custom-arrow: Test Your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/){target=\_blank} + +- :octicons-tools-16:{ .lg .middle } **Add NTT to Your dApp** + + --- + + Configure Wormhole Connect, a plug-and-play bridging UI, to enable multichain transfers for your token. + + [:custom-arrow: Use Connect to Integrate NTT](/docs/build/transfers/connect/){target=\_blank} + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ +--- BEGIN CONTENT --- +--- +title: Deploy Native Token Transfers with Launchpad +description: Deploy a new token or extend an existing one across multiple chains with the NTT Launchpad. Manage transfers, supply, and settings—all from a single platform. +--- + +# Deploy Native Token Transfers with Launchpad + +## Introduction + +The [Native Token Transfers (NTT) Launchpad](https://ntt.wormhole.com/){target=\_blank} is a Wormhole-managed UI application that provides a step-by-step interface for deploying NTT across multiple blockchains. + +Instead of manually deploying contracts on each chain, configuring relayers, and managing cross-chain communication, you can quickly launch or expand tokens with just a few clicks. + +The Launchpad automates deployment, reducing complexity and saving time. + +This guide covers: + + - Launching a new cross-chain token + - Expanding an existing token for NTT + - Managing tokens via the dashboard and settings + +## Prerequisites + + - An EVM-compatible wallet (e.g., [MetaMask](https://metamask.io/){target=\_blank}, [Phantom](https://phantom.com/){target=\_blank}, etc.) + - Minimum ETH (or equivalent) for gas fees per deployment + +## Supported Blockchains + +The NTT Launchpad currently supports deployments on the following mainnet chains: + + - Ethereum + - Optimism Mainnet + - Arbitrum One + - Base + +## Choose Your Path + +Once ready, choose an option to proceed: + + - [**Launch a Cross-Chain Token**](#launch-a-cross-chain-token) - deploy a brand-new token that is NTT-ready from day one, enabling seamless transfers across multiple blockchains + - [**Expand Your Existing Token**](#expand-your-existing-token) - if you already have a token deployed on different chains, integrate it with NTT to enable NTT without modifying its original contract + +## Launch a Cross-Chain Token + +Deploy a new NTT-compatible token that can be transferred across multiple chains. This process sets up your token on a home network and deploys it to additional blockchains. Follow the below steps to get started: + +1. Open the [NTT Launchpad](https://ntt.wormhole.com/){target=\_blank}, connect your wallet, and click **Get Started** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp) + +2. Select **Launch a Cross-Chain Token** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-2.webp) + +3. Set the token details: + 1. Select the **home network** from the dropdown menu + 2. Enter the **name** for the token + 3. Enter the **symbol** of the token + 4. Provide the **initial supply** + 5. To the token details, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-3.webp) + +4. Select the deployment chains: + 1. The home network where your token will be deployed will be populated (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 3. To continue, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-4.webp) + +5. To deploy on the first chain (Optimism), click on **Deploy**; if prompted, switch your wallet to the correct network and confirm the transaction + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp) + +6. Once deployed, you can view the transaction in a block explorer and add the token to your wallet + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp) + +7. Repeat the previous step to deploy the token on the second chain (Base). The supply of tokens on Base will be zero since the tokens were all minted on Optimism in the previous step + +8. Once both deployments are completed, proceed to the [**Dashboard**](#explore-the-launchpad-dashboard) to manage your token. + +## Expand Your Existing Token + +Expand an existing token to support NTT across multiple chains. This process integrates your deployed token with NTT without modifying its original contract. Follow the steps below to get started: + +1. Open the [NTT Launchpad](https://ntt.wormhole.com/){target=\_blank}, connect your wallet, and click **Get Started** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-1.webp) + +2. Select **Expand Your Existing Token** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-7.webp) + +3. Enter the token details: + 1. Choose the home network where your token is already deployed (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 3. To continue, click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-8.webp) + +4. Select the chains to deploy your token to: + 1. The home network where your token is already deployed will be populated (e.g., Optimism) + 2. Choose any additional chains to deploy your token to (e.g., Base) + 1. Click **Next** + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-9.webp) + +5. To deploy on the first chain (Optimism), click on **Deploy**; if prompted, switch your wallet to the correct network and confirm the transaction + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-5.webp) + +6. Once deployed, you can view the transaction in a block explorer and add the token to your wallet + + ![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-6.webp) + +7. Repeat the previous step to deploy the token on the second chain (Base). The supply of tokens on Base will be zero since the tokens were all minted on Optimism in the previous step + +8. Now that your token has been deployed on multiple chains click [**Dashboard**](#explore-the-launchpad-dashboard) to review its details + +## Explore the Launchpad Dashboard + +To access the **Dashboard** from the [Launchpad home page](https://ntt.wormhole.com/){target=\_blank}, click on **Manage Deployment**. Here, you can view deployment status, monitor supply across chains, and configure transfer settings. + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-10.webp) + +The dashboard provides a high-level view of your token across all deployed chains, including: + + - Token addresses for each chain + - Supply distribution visualization + - List of deployed chains, including inbound and outbound transfer limits, which can be modified in [**Settings**](#settings) + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-11.webp) + +## Settings + +The **Settings** page allows you to configure security parameters, role management, and transfer limits for your deployed token. You can switch between chains to manage these settings independently for each deployment. + +### Chain Management + +Use the drop-down menu at the top to select the chain you want to configure. The available options correspond to the chains where your token has already been deployed. Once selected, the page displays token details specific to that chain. + +From this section, you can also: + + - **Pause the token** – temporarily turn off transfers on the selected chain + - **Deploy to a new chain** – expand your token by deploying it to an additional chain + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-12.webp) + +### Role Management + +This section displays key [roles](/docs/build/transfers/native-token-transfers/configuration/access-control/){target=\_blank} involved in token governance. You can view and modify these roles by selecting a new address and confirming the update. + + - **Manager’s Owner** – the owner through the `NTTOwner` proxy + - **Pauser** – the address authorized to pause transfers + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-13.webp) + +### Security Threshold + +Determine and update how transceivers interact with the token. [Transceivers](/docs/build/transfers/native-token-transfers/managers-transceivers/#transceivers){target=\_blank} route NTT transfers between blockchains, ensuring tokens are correctly sent and received across networks. + +A higher transceiver threshold increases security by requiring more approvals before processing a transfer, but it may also slow down transactions. A lower threshold allows faster transfers but reduces redundancy in message verification. + + - **Registered Transceivers** – displays the number of registered transceivers and their addresses + - **Transceivers Threshold** – a configurable value that must be less than or equal to the number of transceivers + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-14.webp) + +### Peer Chains Limits + +Define the transfer restrictions for each connected network. You can adjust: + + - **Sending Limits** – the maximum amount of tokens that can be sent from the home chain + - **Receiving Limits** – the maximum amount of tokens that can be received for each of the supported peer chains + +Enter a new value to adjust limits and click **Update**. The changes will take effect immediately. + +![](/docs/images/build/transfers/native-token-transfers/deployment-process/evm-launchpad/ntt-launchpad-15.webp) +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers (NTT) - Deployment +description: This section provides information on installing Wormhole's Native Token Transfer framework, deployment to EVM and Solana, and post deployment NTT maintenance. +--- + +# Deploy Native Token Transfers (NTT) + +## Get Started + +This section provides information on installing Wormhole's Native Token Transfer framework, deployment to EVM and Solana, and post deployment NTT maintenance. + +
+ +- :octicons-download-16:{ .lg .middle } **Installation** + + --- + + Prerequisites and commands for installing the NTT CLI and working with the NTT framework. + + [:custom-arrow: Install the NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/installation/) + +- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM** + + --- + + Find information on preparing for NTT deployment to EVM, including an example NTT token repository. + + [:custom-arrow: Deploy token and NTT contracts](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/) + +- :octicons-rocket-16:{ .lg .middle } **Deploy to EVM Chains via Launchpad** + + --- + + Deploy a new token or extend an existing one across multiple chains with the NTT Launchpad. Manage transfers, supply, and settings—all from a single platform. + + [:custom-arrow: Deploy via Launchpad](/docs/build/transfers/native-token-transfers/deployment-process/evm-launchpad/) + +- :octicons-rocket-16:{ .lg .middle } **Deploy to Solana** + + --- + + Your guide to NTT deployment to Solana, including setup, token compatibility, mint/burn modes, and CLI usage. + + [:custom-arrow: Deploy token and NTT contracts](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/) + +- :octicons-search-16:{ .lg .middle } **Post Deployment** + + --- + + Learn how to best monitor and maintain your NTT deployment to get the most out of your Wormhole integration while providing security for users. + + [:custom-arrow: Explore next steps](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/) + +- :octicons-alert-16:{ .lg .middle } **Troubleshooting** + + --- + + Explore solutions and detailed guidance in our troubleshooting guide to resolve issues with NTT deployment. + + [:custom-arrow: Get help](/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/installation/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Installation +description: Learn how to Install Wormhole’s Native Token Transfers (NTT) framework, a flexible and composable framework for transferring tokens across blockchains. +--- + +# Install the Native Token Transfers CLI + +In this video, the Wormhole team walks you through installing the [Native Token Transfers (NTT) CLI](https://github.com/wormhole-foundation/native-token-transfers/tree/main/cli){target=\_blank}. You’ll see a practical demonstration of running commands, verifying your installation, and addressing common issues that might arise. If you prefer to follow written instructions or want a quick reference for each step, scroll down for the detailed installation guide. + +
+ +## Install NTT CLI + +The fastest way to deploy Native Token Transfers (NTT) is using the NTT CLI. As prerequisites, ensure you have the following installed: + +- Install [Bun](https://bun.sh/){target=\_blank} + +Follow these steps to install the NTT CLI: + +1. Run the installation command in your terminal: + + ```bash + curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash + ``` + +2. Verify the NTT CLI is installed: + + ```bash + ntt --version + ``` + +3. Once installed, check out the available [NTT CLI Commands](/docs/build/transfers/native-token-transfers/cli-commands/){target=\_blank} to start using the CLI + +## Update NTT CLI + +To update an existing NTT CLI installation, run the following command in your terminal: + +```bash +ntt update +``` + +NTT CLI installations and updates will always pick up the latest tag with name vX.Y.Z+cli and verify that the underlying commit is included in main. + +For local development, you can update your CLI version from a specific branch or install from a local path. + +To install from a specific branch, run: + +```bash +ntt update --branch foo +``` + +To install locally, run: +```bash +ntt update --path path/to/ntt/repo +``` + +Git branch and local installations enable a fast iteration loop as changes to the CLI code will immediately be reflected in the running binary without having to run any build steps. + +## Where to Go Next + +
+ + +- :octicons-tools-16:{ .lg .middle } **Deploy to EVM Chains** + + --- + + Deploy and configure Wormhole’s Native Token Transfers (NTT) for EVM chains, including setup, token compatibility, mint/burn modes, and CLI usage. + + [:custom-arrow: Deploy NTT to EVM chains](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/) + +- :octicons-tools-16:{ .lg .middle } **Deploy to Solana** + + --- + + Deploy and configure Wormhole's Native Token Transfers (NTT) for Solana, including setup, token compatibility, mint/burn modes, and CLI usage. + + [:custom-arrow: Deploy NTT to Solana](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Post Deployment +description: Learn post-deployment guidelines for optimizing Wormhole NTT, which include testing, security, frontend integration, ecosystem coordination, and monitoring. +--- + +# Native Token Transfers Post Deployment + +To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed Native Token Transfers (NTT): + +- Implement a robust testing plan for your multichain token before launching +- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits +- Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience +- Alternatively the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately +- Monitor and maintain your multichain deployment + +## Manual Relaying for Solana Transfers + +By default, NTT transfers to Solana require manual relaying, meaning that after initiating a cross-chain transfer, the recipient must submit an on-chain transaction to claim the tokens. + +This step ensures that tokens are properly minted or unlocked on Solana and prevents unauthorized claims. + +[Wormhole Connect](/docs/build/applications/connect/){target=\_blank} support this process automatically. + +## Where to Go Next + +
+ +- :octicons-code-16:{ .lg .middle } **Wormhole NTT Connect Demo** + + --- + + Check out an example project that uses a Vite-React TypeScript application and integrates it with Wormhole Connect, a customizable widget for cross-chain asset transfers. + + [:custom-arrow: Explore the NTT Connect demo](https://github.com/wormhole-foundation/demo-ntt-connect) + +- :octicons-code-16:{ .lg .middle } **Wormhole NTT TypeScript SDK Demo** + + --- + + Reference an example project that uses the Wormhole TypeScript SDK to facilitate token transfers between different blockchain networks after deploying the NTT framework. + + [:custom-arrow: Explore the NTT TypeScript SDK demo](https://github.com/wormhole-foundation/demo-ntt-ts-sdk) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/deployment-process/troubleshooting/ +--- BEGIN CONTENT --- +--- +title: Troubleshooting NTT Deployment +description: Resolve common issues in NTT deployment with this troubleshooting guide covering Solana, EVM, mint authority, decimals, and rate limits. +--- + +# Troubleshooting NTT Deployment + +If you encounter issues during the NTT deployment process, check the following common points: + +- **Solana and Anchor versions** - ensure you are using the expected versions of Solana and Anchor as outlined in the [deployment page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#install-dependencies){target=\_blank} + - [Solana](https://docs.solanalabs.com/cli/install){target=\_blank} **`{{ ntt.solana_cli_version }}`** + - [Anchor](https://www.anchor-lang.com/docs/installation){target=\_blank} **`{{ ntt.anchor_version }}`** +- **Token compliance on EVM** - verify that your token is an ERC20 token on the EVM chain +- **Mint authority transfer** + - **For burn or spoke tokens on Solana** - ensure the token mint authority was transferred as described in the [set SPL Token Mint Authority](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#set-spl-token-mint-authority){target=\_blank} section + - **For EVM tokens** - confirm the token minter was set to the NTT Manager. Refer to the [set Token Minter to NTT Manager](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/#set-token-minter-to-ntt-manager){target=\_blank} section for details +- **Decimal configuration** - run `ntt pull` to correctly configure the decimals in your `deployment.json` file. More details in the [configure NTT](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/#configure-ntt){target=\_blank} section +- **Rate limit configuration** - increase your rate limits to a value greater than zero. A rate limit of zero can cause transactions to get stuck. Learn more on how to [configure rate limits](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/#configure-ntt){target=\_blank} +- **Docker environment based on Ubuntu 20.04 with all dependencies required for Wormhole NTT CLI development** - run `docker compose up -d` to start the container in your terminal from the directory containing the `docker-compose.yml` file + + ???- interface "Dockerfile" + + ```Dockerfile + FROM ubuntu:20.04 + # Set environment variables to prevent interactive prompts during installation + ENV DEBIAN_FRONTEND=noninteractive + + # Update and install necessary dependencies + RUN apt-get update && apt-get install -y \ + curl \ + wget \ + git \ + build-essential \ + libssl-dev \ + libudev-dev \ + pkg-config \ + python3 \ + python3-pip \ + software-properties-common \ + ca-certificates \ + unzip \ + clang \ + cmake \ + protobuf-compiler \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + + # Install Rust + RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + ENV PATH="/root/.cargo/bin:$PATH" + + # Install Solana CLI ({{ntt.solana_cli_version}}) + RUN sh -c "$(curl -sSfL https://release.solana.com/{{ntt.solana_cli_version}}/install)" + ENV PATH="/root/.local/share/solana/install/active_release/bin:$PATH" + + # Install Anchor using avm + RUN cargo install --git https://github.com/coral-xyz/anchor avm --locked --force \ + && avm install 0.29.0 \ + && avm use 0.29.0 + ENV PATH="/root/.avm/bin:$PATH" + + + ENV NVM_DIR=/root/.nvm + RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash \ + && . "$NVM_DIR/nvm.sh" \ + && nvm install 22 \ + && nvm use 22 \ + && nvm alias default 22 + ENV PATH="$NVM_DIR/versions/node/v22.12.0/bin:$PATH" + + # Install Bun + RUN curl -fsSL https://bun.sh/install | bash + ENV PATH="/root/.bun/bin:$PATH" + + # Install Foundry + RUN curl -L https://foundry.paradigm.xyz | bash + ENV PATH="/root/.foundry/bin:${PATH}" + RUN /bin/bash -c "source /root/.bashrc && foundryup" + + # Install Wormhole NTT CLI + RUN curl -fsSL https://raw.githubusercontent.com/wormhole-foundation/native-token-transfers/main/cli/install.sh | bash + + # Add a default working directory + WORKDIR /app + + # Expose port for development if needed + EXPOSE 8899 + + # Entry point for the container + CMD ["bash"] + ``` + + ???- interface "docker-compose.yml" + ```yml + services: + portal-ntt: + build: + context: . + dockerfile: Dockerfile + platform: linux/amd64 + volumes: + - ./src:/app + working_dir: /app + tty: true + ``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/faqs/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers FAQs +description: Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. +--- + +# Wormhole NTT FAQs + +## Do you have an example of how cross-chain lending can be implemented using Wormhole? + +Yes, we have an example of cross-chain lending that leverages [Wormhole’s Token Bridge](/learn/transfers/token-nft-bridge/){target=\_blank}. In this example, collateral deposits (such as ETH on Ethereum) are bridged to a hub chain. Once the collateral is deposited, the borrowed assets, like wrapped BNB, are bridged to Binance Smart Chain. You can explore the full implementation in this [cross-chain lending example repository](https://github.com/wormhole-foundation/example-wormhole-lending){target=_blank}. + +Alternatively, you can also implement cross-chain lending using [Wormhole’s core messaging](/learn/transfers/native-token-transfers/){target=\_blank} instead of the Token Bridge, which avoids the limitations imposed by governor limits. ETH would be custodied on Ethereum, and BNB on the Binance spoke during this setup. When a user deposits ETH on Ethereum, a core bridge message is sent to the hub for accounting purposes. The hub then emits a message that can be redeemed on Binance to release the BNB. This approach allows for more direct asset control across chains while reducing reliance on Token Bridge limits. + +## What causes the "No protocols registered for Evm" error in Wormhole SDK? + +This error typically occurs when the [Wormhole SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} cannot recognize or register the necessary EVM protocols, which are required for interacting with Ethereum-based networks. The most common reason for this error is that the relevant EVM package for Wormhole's NTT has not been imported correctly. + +To resolve this issue, ensure you have imported the appropriate Wormhole SDK package for EVM environments. The necessary package for handling NTT on EVM chains is `@wormhole-foundation/sdk-evm-ntt`. Here's the correct import statement: + +```rust +import '@wormhole-foundation/sdk-evm-ntt'; +``` + +By importing this package, the Wormhole SDK can register and utilize the required protocols for EVM chains, enabling cross-chain token transfers using the NTT framework. Ensure to include this import at the start of your code, especially before attempting any interactions with EVM chains in your project. + +## How can I transfer ownership of NTT to a multisig? + +Transferring ownership of Wormhole's NTT to a multisig is a two-step process for safety. This ensures that ownership is not transferred to an address that cannot claim it. Refer to the `transfer_ownership` method in the [NTT Manager Contract](https://github.com/wormhole-foundation/native-token-transfers/blob/main/solana/programs/example-native-token-transfers/src/instructions/admin.rs#L16-L60){target=\_blank} to initiate the transfer. + +1. **Initiate transfer** - use the `transfer_ownership` method on the NTT Manager contract to set the new owner (the multisig) +2. **Claim ownership** - the multisig must then claim ownership via the `claim_ownership` instruction. If not claimed, the current owner can cancel the transfer +3. **Single-step transfer (Riskier)** - you can also use the `transfer_ownership_one_step_unchecked` method to transfer ownership in a single step, but if the new owner cannot sign, the contract may become locked. Be cautious and ensure the new owner is a Program Derived Address (PDA) + +For a practical demonstration of transferring ownership of Wormhole's NTT to a multisig on Solana, visit the [GitHub demo](https://github.com/wormhole-foundation/demo-ntt-solana-multisig-tools){target=\_blank} providing scripts and guidance for managing an NTT program using Squads multisig functionality, including ownership transfer procedures. + +## How can I specify a custom RPC for NTT? + +To specify a custom RPC for Wormhole's NTT, create an `overrides.json` file in the root of your deployment directory. This file allows you to define custom RPC endpoints, which can be helpful when you need to connect to specific nodes or networks for better performance, security, or control over the RPC connection. + +Below’s an example of how the `overrides.json` file should be structured: + +???- code "`overrides.json`" + ```json + { + "chains": { + "Bsc": { + "rpc": "http://127.0.0.1:8545" + }, + "Sepolia": { + "rpc": "http://127.0.0.1:8546" + }, + "Solana": { + "rpc": "http://127.0.0.1:8899" + } + } + } + ``` + +## How can I redeem tokens if NTT rate limits block them on the target chain? + +If the rate limits on Wormhole's NTT block tokens from being received on the target chain, the transaction will typically be paused until the rate limits are adjusted. Rate limits are implemented to manage congestion and prevent chain abuse, but they can occasionally delay token redemptions. + +To resolve this: + +1. **Adjust rate limits** - the rate limits must be modified by an administrator or through the appropriate configuration tools to allow the blocked transaction to proceed +2. **Resume transaction flow** - once the rate limits are adjusted, you can resume the flow, which should be visible in the UI. The tokens will then be redeemable on the target chain + +In most cases, the transaction will resume automatically once the rate limits are adjusted, and the UI will guide you through the redemption process. + +## What are the challenges of deploying NTT to non-EVM chains? + +NTT requires the same transceiver for all routes, limiting flexibility when deploying across EVM and non-EVM chains. For example, if you're deploying to Ethereum, Arbitrum, and Solana, you can't use Wormhole and Axelar as transceivers because Axelar doesn't support Solana. This constraint forces integrators to use a single transceiver (e.g., Wormhole) for all chains, reducing flexibility in optimizing cross-chain transfers. + +## Does the NTT manager function as an escrow account for a hub chain? + +Yes, the NTT manager acts like an escrow account for non-transferable tokens on a hub chain. To manage non-transferable tokens, you would add the NTT manager to the allowlist, ensuring that only the NTT manager can hold and control the tokens as they are transferred across chains. + +## Which functions or events does Connect rely on for NTT integration? + +Connect relies on the NTT SDK for integration, with platform-specific implementations for both [Solana](https://github.com/wormhole-foundation/native-token-transfers/blob/main/solana/ts/sdk/ntt.ts){target=\_blank} and [EVM](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/ts/src/ntt.ts){target=\_blank}. The key methods involved include: + +- **Initiate and redeem functions** - these functions are essential for initiating token transfers and redeeming them on the destination chain +- **Rate capacity methods** - methods for fetching inbound and outbound rate limits are also critical for controlling the flow of tokens and preventing congestion + +These functions ensure Connect can handle token transfers and manage chain-rate limits. + +## How does the relayer contract determine which transceiver to call? + +The source chain's transceiver includes the destination chain's transceiver in the message via the relayer contract. The admin configures each transceiver's mapping of its peers on other chains. This mapping allows the destination transceiver to verify that the message came from a trusted source. + +## How do I create a verifier or transceiver? + +To run your verifier, you need to implement a transceiver. This involves approximately 200 lines of code, leveraging the base functionality provided by the [abstract transceiver contract](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/Transceiver/Transceiver.sol){target=\_blank}. + +For reference, you can review the [Axelar transceiver implementation](https://github.com/wormhole-foundation/example-wormhole-axelar-wsteth/blob/main/src/axelar/AxelarTransceiver.sol){target=\_blank}. + +## Can I use Hetzner for the NTT deployment? + +No, using Hetzner servers for Solana deployments is not recommended. Hetzner has blocked Solana network activity on its servers, leading to connection issues. Hetzner nodes will return a `ConnectionRefused: Unable to connect` error for Solana deployments. Therefore, choosing alternative hosting providers that support Solana deployments is advisable to ensure seamless operation. + +## How can I transfer tokens with NTT with an additional payload? + +You can include an extra payload in NTT messages by overriding specific methods in the [NttManager contract](https://github.com/wormhole-foundation/native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol){target=\_blank}. + +- On the source chain, override the [`_handleMsg` function](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol#L216-L226){target=\_blank} to query any additional data you need for the transfer. The extra payload can then be added to the message +- On the destination chain override the [`_handleAdditionalPayload` function](https://github.com/wormhole-foundation/example-native-token-transfers/blob/main/evm/src/NttManager/NttManager.sol#L262-L275){target=\_blank} to process and utilize the extra payload sent in the message + +!!!Important + You cannot pass the additional data as part of the entry point directly. Instead, the data must be queried on-chain via the `_handleMsg` method, ensuring the payload is properly included and processed. + +## Why use NTT over xERC20? + +Shortcomings of xERC20: + +- **Single point of failure** - xERC20 relies on multiple bridges, but a compromise in any single bridge can jeopardize the token. It enforces a 1-of-n design rather than a more robust m-of-n approach +- **No pausing** - xERC20 lacks mechanisms to pause operations during emergencies +- **No access control** - there are no built-in access controls for managing token transfers securely +- **Limited rate limiting** - rate limits are bridge-specific and cannot be set per chain, reducing flexibility and security +- **No integration with relaying systems** - xERC20 does not natively support relayer systems, limiting its usability in automated or dynamic setups + +While xERC20 is an extension of the ERC20 standard, NTT is designed as a framework rather than a rigid standard. It is compatible with any token that supports `burn` and `mint` functions and allows the NTT manager to act as a minter. + +## How can I start transferring tokens to a chain that is in burning mode, if no tokens are locked yet? + +To begin transferring tokens to a chain in burning mode when no tokens are locked, you must first send tokens to the NTT manager to back the supply. The address of the NTT manager can be found in the `deployment.json` file. + +## Is there a way to use NTT tokens with chains that don't currently support NTT? + +Yes. NTT tokens can be used with chains that do not support NTT by leveraging the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank}. For example: + +- **Wrapped token scenario** - a token, such as the W token, can be bridged to non-NTT networks using the Token Bridge. When the token is bridged to a chain like Sui, a wrapped version of the token is created (e.g., Wrapped W token) +- **Unwrapping requirement** - tokens bridged using the Token Bridge cannot be directly transferred to NTT-supported chains. To transfer them, they must first be unwrapped on the non-NTT chain and then transferred via the appropriate mechanism +- **Messaging consistency** - the Token Bridge exclusively uses Wormhole messaging, ensuring consistent communication across all chains, whether or not they support NTT + +This approach ensures interoperability while maintaining the integrity of the token's cross-chain movement. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers (NTT) +description: This section provides comprehensive guidance on configuring, deploying, and managing your Native Token Transfers (NTT) integration. +--- + +# Native Token Transfers + +## Get Started + +This section provides comprehensive guidance on configuring, deploying, and managing your Native Token Transfers (NTT) integration. It includes information relevant to both new token deployments and existing token management. + +
+ +- :octicons-rocket-16:{ .lg .middle } **Deployment Process** + + --- + + Guidance on installation, deployment to EVM and Solana, and maintaining your NTT after deployment. + + [:custom-arrow: Start the deployment process](/docs/build/transfers/native-token-transfers/deployment-process/) + +- :octicons-gear-16:{ .lg .middle } **Configure NTT** + + --- + + Find information on configuring NTT, including guidance on setting Owner and Pauser access control roles and management of rate-limiting. + + [:custom-arrow: Configure your NTT deployment](/docs/build/transfers/native-token-transfers/configuration/) + +- :octicons-question-16:{ .lg .middle } **NTT FAQs** + + --- + + Frequently asked questions about Wormhole Native Token Transfers, including cross-chain lending, SDK usage, custom RPCs, and integration challenges. + + [:custom-arrow: Check out the FAQs](/docs/build/transfers/native-token-transfers/faqs/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/native-token-transfers/managers-transceivers/ +--- BEGIN CONTENT --- +--- +title: Managers and Transceivers +description: Explore the roles of Managers and Transceivers in NTT cross-chain token transfers, including key functions, lifecycle events, and rate-limiting mechanisms. +--- + +# Managers and Transceivers + +## Managers + +_Managers_ oversee the token transfer process and handle rate-limiting and message attestation. They manage interactions with multiple transceivers and ensure that tokens are locked or burned on the source chain before being minted or unlocked on the destination chain. Each NTT manager corresponds to a single token but can control multiple transceivers. Key functions include: + +- **`transfer`** - initiate the transfer process where tokens on the source chain are locked or burned. This process ensures that an equivalent amount of tokens can be minted or unlocked on the destination chain + + ```solidity + function transfer( + uint256 amount, // amount (in atomic units) + uint16 recipientChain, // chain ID (Wormhole formatted) + bytes32 recipient // recipient address (Wormhole formatted) + ) external payable nonReentrant whenNotPaused returns (uint64) + ``` + +- **`quoteDeliveryPrice`** - calculate the cost of sending messages across chains by querying the transceivers for estimates on message delivery fees, allowing users to know the price before initiating a transfer + + ```solidity + function quoteDeliveryPrice( + uint16 recipientChain, // chain ID (Wormhole formatted) + bytes memory transceiverInstructions // extra instructions for transceivers (Transceiver-dependent on whether extra instructions are used/accepted) + ) public view returns (uint256[] memory, uint256) + ``` + +- **`setPeer`** - to maintain secure cross-chain communication, managers establish trust relationships between different instances of NTT manager contracts across chains. By recognizing each other as peers, they ensure that the token transfers happen securely and that rate limits on inbound transactions are respected + + ```solidity + function setPeer( + uint16 peerChainId, // chain ID (Wormhole formatted) + bytes32 peerContract, // peer NTT Manager address (Wormhole formatted) + uint8 decimals, // token decimals on the peer chain + uint256 inboundLimit // inbound rate limit (in atomic units) + ) public onlyOwner + ``` + +## Transceivers + +_Transceivers_ are responsible for routing NTT transfers through the manager on the source chain and ensuring they are delivered to the corresponding manager on the recipient chain. They work with managers to ensure that messages are accurately processed and tokens are correctly transferred, providing a reliable system for cross-chain token transfers. Transceivers can be defined independently of the Wormhole core and modified to support any verification backend. Key functions: + +- **`sendMessage`** - this external function sends token transfer messages to a specified recipient chain. It encodes the token transfer details into a message format recognized by the system + + ```solidity + function sendMessage( + uint16 recipientChain, // chain ID (Wormhole formatted) + TransceiverStructs.TransceiverInstruction memory instruction, // extra instruction for the Transceiver (optional, dependent on whether extra instructions are used/accepted for this Transceiver) + bytes memory nttManagerMessage, // serialized NTT Manager message, provided by the NTT Manager + bytes32 recipientNttManagerAddress, // NTT Manager address on the recipient chain (Wormhole formatted) + bytes32 refundAddress // address to receive refunds on the destination chain in case of excess quotes (Wormhole formatted) + ) external payable nonReentrant onlyNttManager + ``` + +- **`quoteDeliveryPrice`** - provides an estimation of the cost associated with delivering a message to a target chain and gauges transaction fees + + ```solidity + function quoteDeliveryPrice( + uint16 targetChain, // chain ID (Wormhole formatted) + TransceiverStructs.TransceiverInstruction memory instruction // extra instruction for the Transceiver (optional, dependent on whether extra instructions are used/accepted for this Transceiver) + ) external view returns (uint256) + ``` + +## Lifecycle of a Message + +### EVM + +#### Transfer + +A client calls on `transfer` to initiate an NTT transfer. The client must specify, at minimum, the transfer amount, the recipient chain, and the recipient address on the recipient chain. `transfer` also supports a flag to specify whether the `NttManager` should queue rate-limited transfers or revert. Clients can also include additional instructions to forward along to the transceiver on the source chain. Depending on the mode set in the initial configuration of the `NttManager` contract, transfers are either "locked" or "burned." Once the transfer has been forwarded to the transceiver, the `NttManager` emits the `TransferSent` event. + +**Events** + +```ts +/// @notice Emitted when a message is sent from the nttManager. +/// @dev Topic0 +/// 0x9716fe52fe4e02cf924ae28f19f5748ef59877c6496041b986fbad3dae6a8ecf +/// @param recipient The recipient of the message. +/// @param amount The amount transferred. +/// @param fee The amount of ether sent along with the tx to cover the delivery fee. +/// @param recipientChain The chain ID of the recipient. +/// @param msgSequence The unique sequence ID of the message. +event TransferSent( + bytes32 recipient, uint256 amount, uint256 fee, uint16 recipientChain, uint64 msgSequence +); +``` + +#### Rate Limit + +A transfer can be rate-limited on both the source and destination chains. If a transfer is rate-limited on the source chain and the `shouldQueue` flag is enabled, it is added to an outbound queue. The transfer can be released after the configured `_rateLimitDuration` has expired via the `completeOutboundQueuedTransfer` method. The `OutboundTransferQueued` and `OutboundTransferRateLimited` events are emitted. + +If the client attempts to release the transfer from the queue before the expiry of the `rateLimitDuration`, the contract reverts with an `OutboundQueuedTransferStillQueued` error. + +Similarly, rate-limited transfers on the destination chain are added to an inbound queue. These transfers can be released from the queue via the `completeInboundQueuedTransfer` method, and the `InboundTransferQueued` event is emitted. + +If the client attempts to release the transfer from the queue before the `rateLimitDuration` expires, the contract reverts with an `InboundQueuedTransferStillQueued` error. + +To deactivate the rate limiter, set `_rateLimitDuration` to 0 and enable the `_skipRateLimiting` field in the `NttManager` constructor. Configuring this incorrectly will throw an error. If the rate limiter is deactivated, the inbound and outbound rate limits can be set to 0. + +**Events** + +```ts +/// @notice Emitted whenn an outbound transfer is queued. +/// @dev Topic0 +/// 0x69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f. +/// @param queueSequence The location of the transfer in the queue. +event OutboundTransferQueued(uint64 queueSequence); +``` + +```ts +/// @notice Emitted when an outbound transfer is rate limited. +/// @dev Topic0 +/// 0x754d657d1363ee47d967b415652b739bfe96d5729ccf2f26625dcdbc147db68b. +/// @param sender The initial sender of the transfer. +/// @param amount The amount to be transferred. +/// @param currentCapacity The capacity left for transfers within the 24-hour window. +event OutboundTransferRateLimited( + address indexed sender, uint64 sequence, uint256 amount, uint256 currentCapacity +); +``` + +```ts +/// @notice Emitted when an inbound transfer is queued +/// @dev Topic0 +/// 0x7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f3162. +/// @param digest The digest of the message. +event InboundTransferQueued(bytes32 digest); +``` + +#### Send + +Once the `NttManager` forwards the message to the transceiver, the message is transmitted via the `sendMessage method`. The method signature is enforced by the transceiver but transceivers are free to determine their own implementation for transmitting messages. (e.g. a message routed through the Wormhole transceiver can be sent via Wormhole relaying, a custom relayer, or manually published via the core bridge). + +Once the message has been transmitted, the contract emits the `SendTransceiverMessage` event. + +**Events** + +```ts +/// @notice Emitted when a message is sent from the transceiver. +/// @dev Topic0 +/// 0x53b3e029c5ead7bffc739118953883859d30b1aaa086e0dca4d0a1c99cd9c3f5. +/// @param recipientChain The chain ID of the recipient. +/// @param message The message. +event SendTransceiverMessage( + uint16 recipientChain, TransceiverStructs.TransceiverMessage message +); +``` + +#### Receive + +Once a message has been emitted by a transceiver on the source chain, an off-chain process (for example, a relayer) will forward the message to the corresponding transceiver on the recipient chain. The relayer interacts with the transceiver via an entry point to receive messages. For example, the relayer will call the `receiveWormholeMessage` method on the `WormholeTransceiver` contract to execute the message. The `ReceiveRelayedMessage` event is emitted during this process. + +This method should also forward the message to the `NttManager` on the destination chain. Note that the transceiver interface doesn't declare a signature for this method because receiving messages is specific to each transceiver, and a one-size-fits-all solution would be overly restrictive. + +The `NttManager` contract allows an M of N threshold for transceiver attestations to determine whether a message can be safely executed. For example, if the threshold requirement is 1, the message will be executed after a single transceiver delivers a valid attestation. If the threshold requirement is 2, the message will only be executed after two transceivers deliver valid attestations. When a transceiver attests to a message, the contract emits the `MessageAttestedTo` event. + +NTT implements replay protection, so if a given transceiver attempts to deliver a message attestation twice, the contract reverts with `TransceiverAlreadyAttestedToMessage` error. NTT also implements replay protection against re-executing messages. This check also acts as reentrancy protection as well. + +If a message has already been executed, the contract ends execution early and emits the `MessageAlreadyExecuted` event instead of reverting via an error. This mitigates the possibility of race conditions from transceivers attempting to deliver the same message when the threshold is less than the total number of available of transceivers (i.e. threshold < totalTransceivers) and notifies the client (off-chain process) so they don't attempt redundant message delivery. + +**Events** + +```ts +/// @notice Emitted when a relayed message is received. +/// @dev Topic0 +/// 0xf557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475 +/// @param digest The digest of the message. +/// @param emitterChainId The chain ID of the emitter. +/// @param emitterAddress The address of the emitter. +event ReceivedRelayedMessage(bytes32 digest, uint16 emitterChainId, bytes32 emitterAddress); +``` + +```ts +/// @notice Emitted when a message is received. +/// @dev Topic0 +/// 0xf6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0. +/// @param digest The digest of the message. +/// @param emitterChainId The chain ID of the emitter. +/// @param emitterAddress The address of the emitter. +/// @param sequence The sequence of the message. +event ReceivedMessage( + bytes32 digest, uint16 emitterChainId, bytes32 emitterAddress, uint64 sequence +); +``` + +```ts +/// @notice Emitted when a message has already been executed to notify client of against retries. +/// @dev Topic0 +/// 0x4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2. +/// @param sourceNttManager The address of the source nttManager. +/// @param msgHash The keccak-256 hash of the message. +event MessageAlreadyExecuted(bytes32 indexed sourceNttManager, bytes32 indexed msgHash); +``` + +#### Mint or Unlock + +Once a transfer has been successfully verified, the tokens can be minted (if the mode is "burning") or unlocked (if the mode is "locking") to the recipient on the destination chain. Note that the source token decimals are bounded between `0` and `TRIMMED_DECIMALS` as enforced in the wire format. The transfer amount is untrimmed (scaled-up) if the destination chain token decimals exceed `TRIMMED_DECIMALS`. Once the appropriate number of tokens have been minted or unlocked to the recipient, the `TransferRedeemed` event is emitted. + +**Events** + +```ts +/// @notice Emitted when a transfer has been redeemed +/// (either minted or unlocked on the recipient chain). +/// @dev Topic0 +/// 0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91. +/// @param digest The digest of the message. +event TransferRedeemed(bytes32 indexed digest); +``` + +### Solana + +#### Transfer + +A client calls the `transfer_lock` or `transfer_burn` instruction based on whether the program is in `LOCKING` or `BURNING` mode. The program mode is set during initialization. When transferring, the client must specify the amount of the transfer, the recipient chain, the recipient address on the recipient chain, and the boolean flag `should_queue` to specify whether the transfer should be queued if it hits the outbound rate limit. If `should_queue` is set to false, the transfer reverts instead of queuing if the rate limit were to be hit. + +!!! note + Using the wrong transfer instruction, i.e. `transfer_lock` for a program that is in `BURNING` mode, will result in an `InvalidMode` error. + +Depending on the mode and instruction, the following will be produced in the program logs: + +```ts +Program log: Instruction: TransferLock +Program log: Instruction: TransferBurn +``` + +Outbound transfers are always added to an Outbox via the `insert_into_outbox` method. This method checks the transfer against the configured outbound rate limit amount to determine whether the transfer should be rate-limited. An `OutboxItem` is a Solana Account that holds details of the outbound transfer. The transfer can be released from the Outbox immediately if no rate limit is hit. The transfer can be released from the Outbox immediately unless a rate limit is hit, in which case it will only be released after the delay duration associated with the rate limit has expired. + +#### Rate Limit + +During the transfer process, the program checks rate limits via the `consume_or_delay` function. The Solana rate-limiting logic is equivalent to the EVM rate-limiting logic. + +If the transfer amount fits within the current capacity: + +- Reduce the current capacity +- Refill the inbound capacity for the destination chain +- Add the transfer to the Outbox with `release_timestamp` set to the current timestamp, so it can be released immediately. + +If the transfer amount doesn't fit within the current capacity: + +- If `shouldQueue = true`, add the transfer to the Outbox with `release_timestamp` set to the current timestamp plus the configured `RATE_LIMIT_DURATION`. +- If `shouldQueue = false`, revert with a `TransferExceedsRateLimit` error + +#### Send + +The caller then needs to request each transceiver to send messages via the `release_outbound` instruction. To execute this instruction, the caller needs to pass the account of the Outbox item to be released. The instruction will then verify that the transceiver is one of the specified senders for the message. Transceivers then send the messages based on the verification backend they are using. + +For example, the Wormhole transceiver will send by calling `post_message` on the Wormhole program, so that the Wormhole Guardians can observe and verify the message. + +!!! note + When `revert_on_delay` is true, the transaction will revert if the release timestamp hasn't been reached. When `revert_on_delay` is false, the transaction succeeds, but the outbound release isn't performed. + +The following will be produced in the program logs: + +```ts +Program log: Instruction: ReleaseOutbound +``` + +#### Receive + +Similar to EVM, transceivers vary in how they receive messages since message relaying and verification methods may differ between implementations. + +The Wormhole transceiver receives a verified Wormhole message on Solana via the `receive_message` entrypoint instruction. Callers can use the `receive_wormhole_message` Anchor library function to execute this instruction. The instruction verifies the Wormhole Verified Action Approvals (VAAs) and stores it in a `VerifiedTransceiverMessage` account. + +The following will be produced in the program logs: + +```ts +Program log: Instruction: ReceiveMessage +``` + +`redeem` checks the inbound rate limit and places the message in an Inbox. Logic works the same as the outbound rate limit mentioned previously. + +The following will be produced in the program logs: + +```ts +Program log: Instruction: Redeem +``` + +#### Mint or Unlock + +The inbound transfer is released and the tokens are unlocked or minted to the recipient through either `release_inbound_mint` if the mode is `BURNING`, or `release_inbound_unlock` if the mode is `LOCKING`. Similar to transfer, using the wrong transfer instruction (such as `release_inbound_mint` for a program that is in locking mode) will result in `InvalidMode` error. + +!!! note + When `revert_on_delay` is true, the transaction will revert if the release timestamp hasn't been reached. When `revert_on_delay` is false, the transaction succeeds, but the minting/unlocking isn't performed. + +Depending on the mode and instruction, the following will be produced in the program logs: + +```ts +Program log: Instruction: ReleaseInboundMint +Program log: Instruction: ReleaseInboundUnlock +``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/faqs/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement FAQs +description: Frequently asked questions about Wormhole Settlement, including smart contract usage, auction fallback, and message execution. +--- + +# Wormhole Settlement FAQs + +## Can I use Wormhole Settlement from a smart contract? If so, how is a message signed and relayed? + +Yes, Wormhole Settlement can be used from a smart contract. The composing protocol's relayer relays the message. For example, Mayan Shuttle (formerly Swap Layer) has a relayer that redeems the VAA on the destination chain to mint USDC and execute the `callData` contained in the payload. + +## What happens if no solver participates in the auction? + +If an auction does not start within the specified deadline, a standard CCTP transfer will proceed directly from the source chain to the destination chain. This is why parameters like `deadline` exist in the token router interface, ensuring a fallback mechanism in case no solver participates. + +## What guarantees does Wormhole Settlement provide for message execution? + +After the user receives the token upfront, the execution of additional contract calls depends on the relayer of the composing protocol. For example, in Mayan Shuttle, the relayer will attempt the swap multiple times, but its success is subject to the parameters defined in the `callData` (e.g., slippage). + +If the slippage tolerance is set too low, the user may receive USDC on the destination chain instead of the intended swap outcome. However, the four basis points (bps) fee is non-refundable, as the service provided by Liquidity Layer (LL) solvers (ensuring front-finality) is separate from the composing protocol's services, such as swaps or deposits. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement +description: Start building with Wormhole Settlement; integrate with the Liquidity Layer and set up Solvers to enable seamless cross-chain asset transfers. +--- + +# Wormhole Settlement + +## Get Started + +This section provides resources to build with Wormhole Settlement, including integrating the Liquidity Layer into your application and running a Solver for efficient cross-chain asset transfers. + +
+ +- :octicons-code-16:{ .lg .middle } **Build on the Liquidity Layer** + + --- + + Integrate seamlessly with Wormhole's Liquidity Layer, learn key EVM contract functions for fast and secure cross-chain transfers. + + [:custom-arrow: Build on the Liquidity layer](/docs/build/transfers/settlement/liquidity-layer/) + +- :octicons-code-16:{ .lg .middle } **Run a Settlement Solver** + + --- + + Set up, configure, and run a Wormhole Settlement Solver on Solana's Matching Engine to fulfill cross-chain transfers efficiently and securely. + + [:custom-arrow: Run a Solver](/docs/build/transfers/settlement/solver/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/liquidity-layer/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement Liquidity Layer +description: Learn how to build on the Wormhole Liquidity Layer, the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems. +--- + +# Build on the Wormhole Liquidity Layer + +## Introduction + +The Wormhole Liquidity Layer is the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems. It allows these protocols to bundle call data containing arbitrary actions that can be executed atomically alongside each transfer. This feature enables developers to create fully chain-abstracted user experiences, including constructing natively cross-chain decentralized exchanges (DEXs), borrow-lend protocols, payment protocols, and other applications atop this layer. The following section describes the key smart contract components for teams seeking to build atop Wormhole Settlement. + +## EVM Functions + +The EVM Token Router is a simple interface against which to integrate. For an integrator, the contracts have two main entry points: `placeMarketOrder` and `placeFastMarketOrder`. + +### Fast Market Order + +The `placeFastMarketOrder` function allows the caller to elect for a _faster-than-finality_ transfer of USDC (with an arbitrary message payload) to the destination chain by setting the `maxFee` and `deadline` parameters. Using this interface does not guarantee that the caller's transfer will be delivered faster than finality; however, any willing market participants can compete for the specified `maxFee` by participating in an auction on the Solana `MatchingEngine` + +```solidity title="`placeFastMarketOrder` Interface" +function placeFastMarketOrder( + uint128 amountIn, + uint16 targetChain, + bytes32 redeemer, + bytes calldata redeemerMessage, + uint128 maxFee, + uint32 deadline +) external payable returns (uint64 sequence, uint64 fastSequence); +``` + +??? interface "Parameters `placeFastMarketOrder()`" + + `amountIn` ++"uint128"++ + + The amount to transfer. + + --- + + `targetChain` ++"uint16"++ + + Target chain ID. + + --- + + `redeemer` ++"bytes32"++ + + Redeemer contract address. + + --- + + `redeemerMessage` ++"bytes"++ + + An arbitrary payload for the redeemer. + + --- + + `maxFee` ++"uint128"++ + + The maximum fee the user wants to pay to execute a fast transfer. + + --- + + `deadline` ++"uint32"++ + + The deadline for the fast transfer auction to start. Note: This timestamp should be for the `MatchingEngine` chain (such as Solana) to avoid any clock drift issues between different blockchains. Integrators can set this value to `0` if they don't want to use a deadline. + +The `placeFastMarketOrder` function returns a sequence number for the Wormhole Fill message. This function requires the caller to provide a `msg.value` equal to the amount returned by the `messageFee()` function on the `IWormhole.sol` interface. + +### Market Order + +The `placeMarketOrder` function is a _wait-for-full-finality_ USDC transfer with an arbitrary message payload. The Swap Layer, built on top of the Wormhole Settlement, uses this function if the auction on the matching engine for `placeFastMarketOrder` doesn't start within a specific deadline. + +```solidity title="`placeMarketOrder` Interface" +function placeMarketOrder( + uint128 amountIn, + uint16 targetChain, + bytes32 redeemer, + bytes calldata redeemerMessage, +) external payable returns (uint64 sequence, uint64 protocolSequence); +``` + +??? interface "Parameters `placeMarketOrder()`" + + `amountIn` ++"uint128"++ + + The amount to transfer. + + --- + + `targetChain` ++"uint16"++ + + Target chain ID. + + --- + + `redeemer` ++"bytes32"++ + + Redeemer contract address. + + --- + + `redeemerMessage` ++"bytes"++ + + An arbitrary payload for the redeemer. + +The `placeMarketOrder` function returns a sequence number for the Wormhole Fill message. This function requires the caller to provide a `msg.value` equal to the amount returned by the `messageFee()` function on the `IWormhole.sol` interface. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/settlement/solver/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement Solver +description: Set up, configure, and run a Wormhole Settlement Solver on Solana's Matching Engine to fulfill cross-chain transfers efficiently and securely. +--- + +# Run a Wormhole Settlement Solver + +## Introduction + +This page provides instructions on how to set up, configure, and run a Solver for Wormhole Settlement using the [example solver](https://github.com/wormholelabs-xyz/example-liquidity-layer/tree/update-solver-example/solver){target=\_blank}. + +A Solver is an off-chain agent responsible for: + +- Listening to cross-chain transfer requests sent over Wormhole +- Bidding in auctions (on Solana) to fulfill each request +- Facilitating the actual cross-chain transfer by locking/burning assets on Solana and minting/unlocking them on the destination chain +- Rebalancing once the origin chain transaction finalizes and is redeemed back on Solana + +For information on how the protocol functions and its core features, please visit the [Wormhole Settlement](/docs/learn/transfers/settlement/overview/){target=\_blank} page. + +## Background + +The Solana Matching Engine's permissionless English auction is a central component of Wormhole Settlement protocol architecture. The Matching Engine contract allows any third-party solver to interact with the matching engine to place bids or improve existing ones. The contract includes four key instructions: + +1. `initialize_auction` - creates a new auction account on-chain and sets basic parameters like the auction's token mint, the amount required, and the bidding period details +2. `bid` - allows a solver to place or update a bid on the active auction +3. `finalize_auction` - following the conclusion of the auction, this instruction completes the fast transfer by sending funds to the recipient on the target chain. This instruction may call the Circle CCTP contract or release an NTT contract in the future, depending on the shuttle asset in question. Failure to execute this message within a predefined grace period may result in a penalty for the winning bidder. +4. `cancel_auction` - cancels an open auction when the auction is no longer valid or was created by mistake. The program returns all locked funds to their respective owners + +These instructions work together to carry out the auction as follows: + +- The solver transfers the bid amount to the program escrow account, which ensures they have liquidity +- With each successful call of `bid`, the program updates the auction to the new highest bidder, and the prior bid is atomically sent back to the originating solver +- The originating solver can repurpose the returned funds and use them to improve their bid +- Following the auction, the winning solver has to call an instruction on the matching engine to execute the intent + +When placing a bid, whether initial or improved, the solver must deposit the required funds plus a security deposit into the matching engine contract. In this permissionless auction, the requirement of this principal amount plus the security deposit ensures a solver's credible commitment to fulfill the transfer. Malicious actors could place hollow bids without this safeguard, undermining the auction's credibility and hindering true price discovery. + +If the winning solver fails to call the `finalize_auction` instruction, other competing solvers may permissionlessly 'slash' the solver by executing the instruction on their behalf and collecting a portion of the original security deposit as a reward. The remaining portion is routed to the user as compensation for the unanticipated delay. This mechanism properly incentivizes timely execution through solver redundancy and competition. + +## Testnet Example Solver + +You can clone the Wormhole [`example-liquidity-layer`](https://github.com/wormholelabs-xyz/example-liquidity-layer){target=\_blank} repository to use the included [`solver`](https://github.com/wormholelabs-xyz/example-liquidity-layer/tree/main/solver){target=\_blank} directory as an example solver to fulfill fast orders by interacting with the Matching Engine on Solana. + +!!!warning + This example is not optimized for performance, has only been tested on Solana devnet, and is not intended for production use. Any assumptions made in this example may not translate to mainnet. + +### Prerequisites + +In order to build and install dependencies locally in this repo, you will need: + +- node v20.18.1 +- npmv - get started by installing `nvm` using this [installation guide](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating){target=\_blank} + +Navigate into the `solver` directory, then run the command below to set up your environment and install the node dependencies and Matching Engine package: + +```sh +make dependencies +``` + +### Set up Config + +The following is an example of a `config.json` file for Solana devnet. The keys here are required for both the publisher and example solver processes. + +```json title="config.json" +{ + "environment": "Testnet", + "zmqChannels": { + "fastVaa": "tcp://localhost:6001", + "finalizedVaa": "tcp://localhost:6002" + }, + "publisher": { + "log": { + "level": "info" + }, + "vaaSpy": { + "host": "localhost:7073", + "enableObservationCleanup": true, + "observationSeenThresholdMs": 1500000, + "observationCleanupIntervalMs": 500, + "observationsToRemovePerInterval": 5, + "delayedThresholdMs": 60000 + } + }, + "solver": { + "log": { + "level": "info", + "filename": "logs/solver.log" + }, + "connection": { + "rpc": "", + "maxTransactionsPerSecond": 5, + "commitment": "processed", + "addressLookupTable": "YourAddressLookupTab1eHere11111111111111111", + "matchingEngine": "mPydpGUWxzERTNpyvTKdvS7v8kvw5sgwfiP8WQFrXVS", + "mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", + "knownAtaOwners": [ + "Payer11111111111111111111111111111111111111", + "Payer11111111111111111111111111111111111112", + "Payer11111111111111111111111111111111111113" + ] + } + }, + "routerEndpoints": [ + { + "chain": "Sepolia", + "endpoint": "0xE57D917bf955FedE2888AAbD056202a6497F1882", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "Avalanche", + "endpoint": "0x8Cd7D7C980cd72eBD16737dC3fa04469dcFcf07A", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "OptimismSepolia", + "endpoint": "0x6BAa7397c18abe6221b4f6C3Ac91C88a9faE00D8", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "ArbitrumSepolia", + "endpoint": "0xe0418C44F06B0b0D7D1706E01706316DBB0B210E", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "BaseSepolia", + "endpoint": "0x824Ea687CD1CC2f2446235D33Ae764CbCd08e18C", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + }, + { + "chain": "Polygon", + "endpoint": "0xa098368AaaDc0FdF3e309cda710D7A5f8BDEeCD9", + "rollbackRisk": 0.0069, + "offerEdge": 0.042 + } + ] +} +``` + +The rollback risks and offer edges configured in the sample config are arbitrary placeholders. You should use historical data and your risk tolerance, to determine appropriate values for your project. + +### Listen to Activity + +The example solver listens to attested Wormhole messages (VAAs) published on the Wormhole Guardian gossip network. To listen to this gossip network and run the VAA publisher, run the command below. Docker compose is used to listen to the Pyth Beacon and start the [`publishActivity`](https://github.com/wormholelabs-xyz/example-liquidity-layer/blob/update-solver-example/solver/app/publishActivity.ts){target=\_blank} process. + +```sh +NETWORK=testnet CONFIG=path/to/config.json make run-publisher +``` + +You should see output resembling: + +
+ Start logging with info level. + 2025-01-21 16:38:28.145 [publisher] info: Environment: Testnet + 2025-01-21 16:38:36.631 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33635, vaaTime=1737499116 + 2025-01-21 16:38:51.044 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33637, vaaTime=1737499130 + 2025-01-21 16:40:24.890 [publisher] info: Fast VAA. chain=OptimismSepolia, sequence=33639, vaaTime=1737499224 +
+ +To set up the Pyth Beacon (which is run using make `run-publisher`), you may need to increase the UDP buffer size for the OS: + +=== "Linux" + + ```sh + sudo sysctl -w net.core.rmem_max=2097152 + sudo sysctl -w net.core.rmem_default=2097152 + ``` + +=== "MacOS" + + ```sh + sudo sysctl -w net.inet.udp.recvspace=2097152 + ``` + +### Running the Example Solver + +Using the same config for your publisher, run the example solver with the command below. + +```sh +CONFIG=path/to/config.json make run-solver +``` + +It is recommended you write log output to a file so errors can be tracked. The example config above specifies an example log filename. + +This process reads the following environment variables: + +```sh +SOLANA_PRIVATE_KEY_1= +SOLANA_PRIVATE_KEY_2= +SOLANA_PRIVATE_KEY_3= +SOLANA_PRIVATE_KEY_4= +SOLANA_PRIVATE_KEY_5= +``` + +At least one of these environment variables must be defined as a keypair encoded in base64 format. These payers must have SOL to send transactions on Solana devnet. If they need funds, they can request them from the [Solana devnet faucet](https://faucet.solana.com/){target=\_blank}. + +The example solver assumes that these payers own USDC Associated Token Accounts(ATAs), which will be used to fulfill fast transfers. These ATAs must be funded with Solana Devnet USDC. If your ATAs need funds, request some at the [Circle testnet faucet](https://faucet.circle.com/){target=\_blank}. + +Wallets and their corresponding ATA will be disabled if there are insufficient funds to pay for transactions or fulfill fast transfers. These constraints can be modified using the `updatePayerMinimumLamports` and `updateTokenMinimumBalance` methods. + +An address lookup table is required to execute some transactions. Use the command below to create one. + +```sh +CONFIG=path/to/config.json make create-lut +``` + +`SOLANA_PRIVATE_KEY_1` must be defined for this script to work. + +The example solver has the following toggles depending on which orders you want to fulfill: + +- `enableCctpOrderPipeline()` +- `enableLocalOrderPipeline()` +- `enablePlaceInitialOffer()` +- `enableImproveOffer()` + +See the comments in [runExampleSolver](https://github.com/wormholelabs-xyz/example-liquidity-layer/blob/update-solver-example/solver/app/runExampleSolver.ts){target=\_blank} for more information. + +This example solver does NOT do the following: + +- Discriminate between the CCTP source networks. You must add logic to determine whether you want to constrain fulfilling orders from specific networks. This solver will try to fulfill all orders as long as `enableCctpOrderPipeline()` is called +- Discriminate among fulfillment sizes. No logic determines how small or large fast order transfer sizes should be. This solver will try to fulfill anything as long as your balance can handle it +- Add auctions to auction history. We recommend that after settling a complete auction (one that you have won), you write the auction pubkey to a database and have a separate process to add auction history entries to reclaim rent from these auction accounts. The auction history time delay is two hours after the VAA timestamp. This example does not prescribe any specific database, so add whichever you want +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/build/transfers/token-bridge/ +--- BEGIN CONTENT --- +--- +title: Get Started with Token Bridge +description: Learn how to integrate Wormhole's Token Bridge for seamless multichain token transfers with a lock-and-mint mechanism and cross-chain asset management. +--- + +# Token Bridge + +## Introduction + +Wormhole's Token Bridge enables seamless cross-chain token transfers using a lock-and-mint mechanism. The bridge locks tokens on the source chain and mints them as wrapped assets on the destination chain. Additionally, the Token Bridge supports [contract-controlled transfers (transfers with messages)](/docs/learn/infrastructure/vaas/#token-transfer-with-message){target=\_blank}, where arbitrary byte payloads can be attached to the token transfer, enabling more complex chain interactions. + +This page outlines the core contract methods needed to integrate Token Bridge functionality into your smart contracts. To understand the theoretical workings of the Token Bridge, refer to the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} page in the Learn section. + +## Prerequisites + +To interact with the Wormhole Token Bridge, you'll need the following: + +- [The address of the Token Bridge contract](/docs/build/reference/contract-addresses/#token-bridge){target=\_blank} on the chains you're working with +- [The Wormhole chain ID](/docs/build/reference/chain-ids/){target=\_blank} of the chains you're targeting for token transfers + +## How to Interact with Token Bridge Contracts + +The primary functions of the Token Bridge contracts revolve around: + +- **Attesting a token** - registering a new token for cross-chain transfers +- **Transferring tokens** - locking and minting tokens across chains +- **Transferring tokens with a payload** - including additional data for contract-controlled transfers + +### Attest a token + +Suppose a token has never been transferred to the target chain before transferring it cross-chain. In that case, its metadata must be registered so the Token Bridge can recognize it and create a wrapped version if necessary. + +The attestation process doesn't require you to manually input token details like name, symbol, or decimals. Instead, the Token Bridge contract retrieves these values from the token contract itself when you call the `attestToken()` method. + +```solidity +function attestToken( + address tokenAddress, + uint32 nonce +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `tokenAddress` ++"address"++ + + The contract address of the token to be attested. + + --- + + `nonce` ++"uint32"++ + + An arbitrary value provided by the caller to ensure uniqueness. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the attestation transaction. + +When `attestToken()` is called, the contract emits a Verifiable Action Approval (VAA) containing the token's metadata, which the Guardians sign and publish. + +You must ensure the token is ERC-20 compliant. If it does not implement the standard functions, the attestation may fail or produce incomplete metadata. + +### Transfer Tokens + +Once a token is attested, a cross-chain token transfer can be initiated following the lock-and-mint mechanism. On the source chain, tokens are locked (or burned if they're already a wrapped asset), and a VAA is emitted. On the destination chain, that VAA is used to mint or release the corresponding amount of wrapped tokens. + +Call `transferTokens()` to lock/burn tokens and produce a VAA with transfer details. + +```solidity +function transferTokens( + address token, + uint256 amount, + uint16 recipientChain, + bytes32 recipient, + uint256 arbiterFee, + uint32 nonce +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `token` ++"address"++ + + The address of the token being transferred. + + --- + + `amount` ++"uint256"++ + The amount of tokens to be transferred. + + --- + + `recipientChain` ++"uint16"++ + The Wormhole chain ID of the destination chain. + + --- + + `recipient` ++"bytes32"++ + The recipient's address on the destination chain. + + --- + + `arbiterFee` ++"uint256"++ + Optional fee to be paid to an arbiter for relaying the transfer. + + --- + + `nonce` ++"uint32"++ + A unique identifier for the transaction. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the transfer transaction. + +Once a transfer VAA is obtained from the Wormhole Guardian network, the final step is to redeem the tokens on the destination chain. Redemption verifies the VAA's authenticity and releases (or mints) tokens to the specified recipient. To redeem the tokens, call `completeTransfer()`. + +```solidity +function completeTransfer(bytes memory encodedVm) external; +``` + +??? interface "Parameters" + + `encodedVm` ++"bytes memory"++ + + The signed VAA containing the transfer details. + +!!!note + - The Token Bridge normalizes token amounts to 8 decimals when passing them between chains. Make sure your application accounts for potential decimal truncation + - The VAA ensures the integrity of the message. Only after the Guardians sign the VAA can it be redeemed on the destination chain + +### Transfer tokens with payload + +While a standard token transfer moves tokens between chains, a transfer with a payload allows you to embed arbitrary data in the VAA. This data can be used on the destination chain to execute additional logic—such as automatically depositing tokens into a DeFi protocol, initiating a swap on a DEX, or interacting with a custom smart contract. + +Call `transferTokensWithPayload()` instead of `transferTokens()` to include a custom payload (arbitrary bytes) with the token transfer. + +```solidity +function transferTokensWithPayload( + address token, + uint256 amount, + uint16 recipientChain, + bytes32 recipient, + uint32 nonce, + bytes memory payload +) external payable returns (uint64 sequence); +``` + +??? interface "Parameters" + + `token` ++"address"++ + + The address of the token being transferred. + + --- + + `amount` ++"uint256"++ + The amount of tokens to be transferred. + + --- + + `recipientChain` ++"uint16"++ + The Wormhole chain ID of the destination chain. + + --- + + `recipient` ++"bytes32"++ + The recipient's address on the destination chain. + + --- + + `nonce` ++"uint32"++ + A unique identifier for the transaction. + + --- + + `payload` ++"bytes memory"++ + Arbitrary data payload attached to the transaction. + +??? interface "Returns" + + `sequence` ++"uint64"++ + + A unique identifier for the transfer transaction. + +After initiating a transfer on the source chain, the Wormhole Guardian network observes and signs the resulting message, creating a Verifiable Action Approval (VAA). You'll need to fetch this VAA and then call `completeTransferWithPayload()`. + +Only the designated recipient contract can redeem tokens. This ensures that the intended contract securely handles the attached payload. On successful redemption, the tokens are minted (if foreign) or released (if native) to the recipient address on the destination chain. For payload transfers, the designated contract can execute the payload's logic at this time. + +```solidity +function completeTransferWithPayload(bytes memory encodedVm) external returns (bytes memory); +``` + +??? interface "Parameters" + + `encodedVm` ++"bytes memory"++ + + The signed VAA containing the transfer details. + +??? interface "Returns" + + `bytes memory` + + The extracted payload data. + +## Source Code References + +For a deeper understanding of the Token Bridge implementation and to review the actual source code, please refer to the following links: + +- [Token Bridge contract](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol){target=\_blank} +- [Token Bridge interface](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/main/src/interfaces/ITokenBridge.sol){target=\_blank} + +## Portal Bridge + +A practical implementation of the Wormhole Token Bridge can be seen in [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides an easy-to-use interface for transferring tokens across multiple blockchain networks. It leverages the Wormhole infrastructure to handle cross-chain asset transfers seamlessly, offering users a convenient way to bridge their assets while ensuring security and maintaining token integrity. + +## FAQs + +### Can ownership of wrapped tokens be transferred from the Token Bridge? + +No, you cannot transfer ownership of wrapped token contracts from the [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} because the Token Bridge deploys and retains ownership of these contracts and tokens. + + - **On EVM chains** - when you attest a token, the Token Bridge deploys a new ERC-20 contract as a beacon proxy. The upgrade authority for these contracts is the Token Bridge contract itself + - **On Solana** - the Token Bridge deploys a new SPL token, where the upgrade authority is a Program Derived Address (PDA) controlled by the Token Bridge + +The logic behind deploying these token contracts involves submitting an attestation VAA, which allows the Token Bridge to verify and deploy the wrapped token contract on the destination chain. + +Relevant contracts: + + - [Ethereum ERC-20](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/token/Token.sol){target=\_blank} + - [Solana SPL](https://github.com/wormhole-foundation/wormhole/blob/main/solana/modules/token_bridge/program/src/api/create_wrapped.rs#L128-L145){target=\_blank} + - [Attestation VAA and Token Contract Deployment Logic](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/Bridge.sol#L385-L431){target=\_blank} + +### How do I update the metadata of a wrapped token? + +Because wrapped tokens are deployed and controlled by the Token Bridge program, which is under the authority of the Wormhole Guardians, there is no direct way for you to update their metadata. Instead, you must coordinate with the respective block explorer teams to request and apply metadata changes. + +### How do I calculate the current gas costs for Ethereum Mainnet VAA verification? + +You can refer to the [core-bridge repository](https://github.com/nonergodic/core-bridge){target=\_blank} for guidance on how to calculate the current gas costs associated with verifying VAAs on Ethereum Mainnet. This repository provides up-to-date references and examples to help you gauge costs accurately. + +### How can I update my wrapped token image on Solscan? + +Updating the metadata (such as the token image, name, or symbol) of a wrapped token on [Solscan](https://solscan.io/){target=\_blank} requires [contacting the Solscan team](https://solscan.io/contactus){target=\_blank} directly. Wormhole cannot make these updates for you because the wrapped token contracts are owned and controlled by the Token Bridge, not individual developers or projects. + +To request an update, contact Solscan via [support@solscan.io](mailto:support@solscan.io) or their [contact form](https://solscan.io/contactus){target=\_blank}. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/infrastructure/ +--- BEGIN CONTENT --- +--- +title: Run Infrastructure Services +description: Follow the guides in this section to learn how to run off-chain infrastructure services, such as running a spy or a customized relayer. +template: root-index-page.html +--- + +# Infrastructure + +## Get Started + +Follow the guides in this section to learn how to run off-chain infrastructure services, such as running a spy or a customized relayer. + +
+ +- :octicons-terminal-16:{ .lg .middle } **Relayers** + + --- + + Learn how to develop your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. + + [:custom-arrow: Run a relayer](/docs/infrastructure/relayers/run-relayer/) + +
+ +
+ +- :octicons-terminal-16:{ .lg .middle } **Spy** + + --- + + Learn how to run a Spy locally to listen for and forward messages (Verifiable Action Approvals, or VAAs) published on the Wormhole network. + + [:custom-arrow: Run a Spy](/docs/infrastructure/spy/run-spy/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/infrastructure/relayers/ +--- BEGIN CONTENT --- +--- +title: Relayers +description: Learn how to develop your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. +--- + +# Relayers + +## Get Started + +
+ +- :octicons-terminal-16:{ .lg .middle } **Run a Custom Relayer** + + --- + + This section guides you through developing your own custom off-chain relaying service, giving you greater control and flexibility than using Wormhole-deployed relayers. + +
+ + Benefits of running your own relayer: + + - You can add logic to customize the delivery of messages + - You can perform off-chain computations resulting in optimized gas costs + +
+ + Requirements for running your own relayer: + + - You are responsible for developing and hosting your relayer + - You are responsible for paying target chain fees + - You are responsible for the liveness of your relayer + +
+ + [:custom-arrow: Get started now](/docs/infrastructure/relayers/run-relayer/) + +
+ +## Additional Resources + +
+ +- :octicons-question-16:{ .lg .middle } **What is a Relayer?** + + --- + + Learn about what a relayer is, what role it plays in the delivery of cross-chain messages, and the different types of relayers in the Wormhole ecosystem. + + [:custom-arrow: Learn more about relayers](/docs/learn/infrastructure/relayer/) + +- :octicons-gear-16:{ .lg .middle } **Simplify the Development Process** + + --- + + Use the Wormhole Relayer Engine package as a foundational toolkit to develop your own customized off-chain relaying service, enabling tailored message handling. + + [:custom-arrow: Check out the Relayer Engine source code](https://github.com/wormhole-foundation/relayer-engine){target=\_blank} + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/infrastructure/relayers/run-relayer/ +--- BEGIN CONTENT --- +--- +title: Run a Relayer +description: Learn how to build and configure your own off-chain custom relaying solution to relay Wormhole messages for your applications using the Relayer Engine. +--- + +# Run a Custom Relayer + +## Introduction + +Relayers play a crucial role in cross-chain communication, ensuring that messages are transferred seamlessly between different blockchains. While Wormhole relayers provide a reliable way to handle these transfers, they might not always meet every application's unique requirements. + +Custom relayers address these limitations by offering tailored solutions that cater to the distinct needs of your application. Developing a custom relayer gives you complete control over message processing, delivery mechanisms, and integration with existing systems. This customization allows for optimized performance and the ability to implement specific features that Wormhole-deployed relayers might not support. + +A custom relayer might be as simple as an in-browser process that polls the API for the availability of a VAA after submitting a transaction and delivers it to the target chain. It might also be implemented with a Spy coupled with some daemon listening for VAAs from a relevant chain ID and emitter, then taking action when one is observed. + +This guide teaches you how to set up and configure a custom relayer for efficient message handling. You'll start by understanding how to uniquely identify a VAA using its emitter address, sequence ID, and chain ID. Then, you'll explore the Relayer Engine, a package that provides a framework for building custom relayers, and learn how to fetch and handle VAAs using the Wormhole SDK. + +## Get Started with a Custom Relayer + +To start building a custom relayer, it's essential to grasp the components you'll be managing as part of your relaying service. Your relayer must be capable of retrieving and delivering VAAs. + +
+ ![Custom relayer](/docs/images/infrastructure/relayers/run-relayer/relayer-1.webp) +
The off-chain components outlined in blue must be implemented.
+
+ +### How to Uniquely Identify a VAA + +Regardless of the environment, to get the VAA you intend to relay, you need: + +- The `emitter` address +- The `sequence` ID of the message you're interested in +- The `chainId` for the chain that emitted the message + +With these three components, you're able to uniquely identify a VAA and process it. + +## Use the Relayer Engine + +The [`relayer-engine`](https://github.com/wormhole-foundation/relayer-engine){target=\_blank} is a package that provides the structure and a starting point for a custom relayer. + +With the Relayer Engine, a developer can write specific logic for filtering to receive only the messages they care about. + +Once a Wormhole message is received, the developer may apply additional logic to parse custom payloads or submit the Verifiable Action Approvals (VAA) to one or many destination chains. + +To use the Relayer Engine, a developer may specify how to relay Wormhole messages for their app using an idiomatic Express/Koa middleware-inspired API, then let the library handle all the details. + +### Install the Relayer Engine + +First, install the `relayer-engine` package with your favorite package manager: + +```bash +npm i @wormhole-foundation/relayer-engine +``` + +### Get Started with the Relayer Engine + +In the following example, you'll: + +1. Set up a `StandardRelayerApp`, passing configuration options for our relayer +2. Add a filter to capture only those messages our app cares about, with a callback to do _something_ with the VAA once received +3. Start the relayer app + +```typescript +import { + Environment, + StandardRelayerApp, + StandardRelayerContext, +} from '@wormhole-foundation/relayer-engine'; +import { CHAIN_ID_SOLANA } from '@certusone/wormhole-sdk'; + +(async function main() { + // Initialize relayer engine app and pass relevant config options + const app = new StandardRelayerApp( + Environment.TESTNET, + // Other app specific config options can be set here for things + // like retries, logger, or redis connection settings + { + name: 'ExampleRelayer', + } + ); + + // Add a filter with a callback that will be invoked + // on finding a VAA that matches the filter + app.chain(CHAIN_ID_SOLANA).address( + // Emitter address on Solana + 'DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe', + // Callback function to invoke on new message + async (ctx, next) => { + const vaa = ctx.vaa; + const hash = ctx.sourceTxHash; + console.log( + `Got a VAA with sequence: ${vaa.sequence} from with txhash: ${hash}` + ); + } + ); + + // Add and configure any other middleware here + + // Start app. Blocks until unrecoverable error or process is stopped + await app.listen(); +})(); +``` + +The first meaningful line instantiates the `StandardRelayerApp`, a subclass of the `RelayerApp` with standard defaults. + +```typescript +export class StandardRelayerApp< + ContextT extends StandardRelayerContext = StandardRelayerContext, +> extends RelayerApp { + // ... + constructor(env: Environment, opts: StandardRelayerAppOpts) { +``` + +The only field you pass in the `StandardRelayerAppOpts` is the name to help identify log messages and reserve a namespace in Redis. + +??? code "`StandardRelayerAppOpts`" + + Other options can be passed to the `StandardRelayerApp` constructor to configure the app further. + + ```typescript + wormholeRpcs?: string[]; // List of URLs from which to query missed VAAs +concurrency?: number; // How many concurrent requests to make for workflows +spyEndpoint?: string; // The hostname and port of our Spy +logger?: Logger; // A custom Logger +privateKeys?: Partial<{ [k in ChainId]: any[]; }>; // A set of keys that can be used to sign and send transactions +tokensByChain?: TokensByChain; // The token list we care about +workflows?: { retries: number; }; // How many times to retry a given workflow +providers?: ProvidersOpts; // Configuration for the default providers +fetchSourceTxhash?: boolean; // whether or not to get the original transaction ID/hash +// Redis config +redisClusterEndpoints?: ClusterNode[]; +redisCluster?: ClusterOptions; +redis?: RedisOptions; + ``` + +The next meaningful line in the example adds a filter middleware component. This middleware will cause the relayer app to request a subscription from the Spy for any VAAs that match the criteria and invoke the callback with the VAA. + +If you'd like your program to subscribe to `multiple` chains and addresses, you can call the same method several times or use the `multiple` helper. + +```typescript +app.multiple( + { + [CHAIN_ID_SOLANA]: 'DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe', + [CHAIN_ID_ETH]: ['0xabc1230000000...', '0xdef456000...'], + }, + myCallback +); +``` + +The last line in the simple example runs `await app.listen()`, which starts the relayer engine. Once started, the Relayer Engine issues subscription requests to the Spy and begins any other workflows (e.g., tracking missed VAAs). + +This will run until the process is killed or encounters an unrecoverable error. To gracefully shut down the relayer, call `app.stop()`. + +The source code for this example is available in the [`relayer-engine` repository](https://github.com/wormhole-foundation/relayer-engine/blob/main/examples/simple/src/app.ts){target=\_blank}. + +## Start Background Processes + +!!! note + These processes _must_ be running for the relayer app below to work. + +Next, you must start a Spy to listen for available VAAs published on the Guardian network. You also need a persistence layer. This example uses Redis. + +More details about the Spy are available in the [Spy Documentation](/docs/learn/infrastructure/spy){target=\_blank}. + +### Wormhole Network Spy + +For our relayer app to receive messages, a local Spy must be running that watches the Guardian network. Our relayer app will receive updates from this Spy. + +=== "Mainnet Spy" + + ```bash + docker run --pull=always --platform=linux/amd64 \ + -p 7073:7073 \ + --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ + spy \ + --nodeKey /node.key \ + --spyRPC "[::]:7073" \ + --env mainnet + ``` + +=== "Testnet Spy" + + ```bash + docker run --pull=always --platform=linux/amd64 \ + -p 7073:7073 \ + --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ + spy \ + --nodeKey /node.key \ + --spyRPC "[::]:7073" \ + --env testnet + ``` + +### Redis Persistence + +!!! note + While you're using [Redis](https://redis.io/docs/latest/develop/get-started/){target=\_blank} here, the persistence layer can be swapped out for some other database by implementing the appropriate [interface](https://github.com/wormhole-foundation/relayer-engine/blob/main/relayer/storage/redis-storage.ts){target=\_blank}. + +A Redis instance must also be available to persist job data for fetching VAAs from the Spy. + +```bash +docker run --rm -p 6379:6379 --name redis-docker -d redis +``` + +## Use the Wormhole SDK + +You can also use the Wormhole SDK to poll the Guardian RPC until a signed VAA is ready using the SDK's `getSignedVAAWithRetry` function. + +```ts +import { + getSignedVAAWithRetry, + parseVAA, + CHAIN_ID_SOLANA, + CHAIN_ID_ETH, +} from '@certusone/wormhole-sdk'; + +const RPC_HOSTS = [ + /* ...*/ +]; + +async function getVAA( + emitter: string, + sequence: string, + chainId: number +): Promise { + // Wait for the VAA to be ready and fetch it from the guardian network + const { vaaBytes } = await getSignedVAAWithRetry( + RPC_HOSTS, + chainId, + emitter, + sequence + ); + return vaaBytes; +} + +const vaaBytes = await getVAA('INSERT_EMITTER_ADDRESS', 1, CHAIN_ID_ETH); +``` + +Once you have the VAA, the delivery method is chain-dependent. + +=== "EVM" + + On EVM chains, the bytes for the VAA can be passed directly as an argument to an ABI method. + + ```ts + // Set up eth wallet +const ethProvider = new ethers.providers.StaticJsonRpcProvider( + 'INSERT_RPC_URL' +); +const ethWallet = new ethers.Wallet('INSERT_PRIVATE_KEY', ethProvider); + +// Create client to interact with our target app +const ethHelloWorld = HelloWorld__factory.connect( + 'INSERT_CONTRACT_ADDRESS', + ethWallet +); + +// Invoke the receiveMessage on the ETH contract and wait for confirmation +const receipt = await ethHelloWorld + .receiveMessage(vaaBytes) + .then((tx: ethers.ContractTransaction) => tx.wait()) + .catch((msg: any) => { + console.error(msg); + return null; + }); + ``` + +=== "Solana" + + On Solana, the VAA is first posted to the core bridge, and then a custom transaction is prepared to process and validate the VAA. + + ```ts + import { CONTRACTS } from '@certusone/wormhole-sdk'; + +export const WORMHOLE_CONTRACTS = CONTRACTS[NETWORK]; +export const CORE_BRIDGE_PID = new PublicKey(WORMHOLE_CONTRACTS.solana.core); + +// First, post the VAA to the core bridge +await postVaaSolana( + connection, + wallet.signTransaction, + CORE_BRIDGE_PID, + wallet.key(), + vaaBytes +); + +const program = createHelloWorldProgramInterface(connection, programId); +const parsed = isBytes(wormholeMessage) + ? parseVaa(wormholeMessage) + : wormholeMessage; + +const ix = program.methods + .receiveMessage([...parsed.hash]) + .accounts({ + payer: new PublicKey(payer), + config: deriveConfigKey(programId), + wormholeProgram: new PublicKey(wormholeProgramId), + posted: derivePostedVaaKey(wormholeProgramId, parsed.hash), + foreignEmitter: deriveForeignEmitterKey(programId, parsed.emitterChain), + received: deriveReceivedKey( + programId, + parsed.emitterChain, + parsed.sequence + ), + }) + .instruction(); + +const transaction = new Transaction().add(ix); +const { blockhash } = await connection.getLatestBlockhash(commitment); +transaction.recentBlockhash = blockhash; +transaction.feePayer = new PublicKey(payerAddress); + +const signed = await wallet.signTxn(transaction); +const txid = await connection.sendRawTransaction(signed); + +await connection.confirmTransaction(txid); + ``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/infrastructure/spy/ +--- BEGIN CONTENT --- +--- +title: Spy +description: Discover everything you need to about the Wormhole Spy, a daemon that watches the Guardian Network and subscribe to signed messages. +--- + +# Spy + +## Get Started + +
+ +- :octicons-terminal-16:{ .lg .middle } **Run a Spy** + + --- + + The content in this section shows you how you can run your own infrastructure and spin up a Spy daemon locally to subscribe to a stream of messages, also known as Verifiable Action Approvals (VAAs). + + [:custom-arrow: Get started now](/docs/infrastructure/spy/run-spy/) + +
+ +## Additional Resources + +
+ +- :octicons-question-16:{ .lg .middle } **What is a Spy?** + + --- + + Learn about what a Spy is and what role it plays in the delivery of cross-chain messages. + + [:custom-arrow: Learn more about Spies](/docs/learn/infrastructure/spy/) + +- :octicons-code-16:{ .lg .middle } **Interact with a Spy** + + --- + + Use the Wormhole Spy SDK to subscribe to the stream of signed messages. + + [:custom-arrow: Use the Wormhole Spy SDK](https://github.com/wormhole-foundation/wormhole/blob/main/spydk/js/README.md){target=\_blank} + +- :octicons-bookmark-16:{ .lg .middle } **Alternative Implementations** + + --- + + Check out Beacon, an alternative highly available version of the Wormhole Spy. + + [:custom-arrow: Use Pyth Beacon](https://github.com/pyth-network/beacon){target=\_blank} + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/infrastructure/spy/run-spy/ +--- BEGIN CONTENT --- +--- +title: Run a Spy +description: Learn how to run a Spy locally to listen for and forward messages (Verifiable Action Approvals, or VAAs) published on the Wormhole network. +--- + +# Run a Spy + +## Introduction + +The Spy is a lightweight component in the Wormhole infrastructure designed to listen for and forward messages (Verifiable Action Approvals (VAAs)) published on the Wormhole network. Running a Spy locally allows developers to subscribe to a filtered stream of these messages, facilitating the development of custom relayers or other integrations with Wormhole. + +For a more comprehensive understanding of the Spy and its role within the Wormhole ecosystem, refer to the [Spy Documentation](/docs/learn/infrastructure/spy/){target=\_blank}. + +## How to Start a Spy + +To start a Spy locally, run the following Docker command: + +=== "Mainnet" + + ```sh + docker run --pull=always --platform=linux/amd64 \ + -p 7073:7073 \ + --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ + spy \ + --nodeKey /node.key \ + --spyRPC "[::]:7073" \ + --env mainnet + ``` + +=== "Testnet" + + ```sh + docker run --pull=always --platform=linux/amd64 \ + -p 7073:7073 \ + --entrypoint /guardiand ghcr.io/wormhole-foundation/guardiand:latest \ + spy \ + --nodeKey /node.key \ + --spyRPC "[::]:7073" \ + --env testnet + ``` + +If you want to run the Spy built from source, change `ghcr.io/wormhole-foundation/guardiand:latest` to `guardian` after building the `guardian` image. + +Optionally, add the following flags to skip any VAAs with invalid signatures: + +=== "Mainnet" + + ```sh + --ethRPC https://eth.drpc.org + --ethContract 0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B + ``` + +=== "Testnet" + + ```sh + --ethRPC https://sepolia.drpc.org/ + --ethContract 0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78 + ``` + +Optionally, add the following flags to prevent unbounded log growth: + +```sh +--log-opt max-size=10m \ +--log-opt max-file=3 +``` + +## Subscribe to Filtered VAAs + +Once running, a [gRPC](https://grpc.io/){target=\_blank} client (i.e., your program) can subscribe to a filtered stream of messages (VAAs). + +Use this [proto-spec file](https://github.com/wormhole-foundation/wormhole/blob/main/proto/spy/v1/spy.proto){target=\_blank} to generate a client for the gRPC service. + +!!! note + If using JavaScript/TypeScript, the [Spydk](https://www.npmjs.com/package/@certusone/wormhole-spydk){target=\_blank} makes setting up a client easier. + +## Data Persistence + +The Spy does not have a built-in persistence layer, so it is typically paired with something like Redis or an SQL database to record relevant messages. + +The persistence layer needs to implement the appropriate interface. For example, you can check out the [Redis interface](https://github.com/wormhole-foundation/relayer-engine/blob/main/relayer/storage/redis-storage.ts){target=\_blank} used by the Relayer Engine, a package that implements a client and persistence layer for messages received from a Spy subscription. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/glossary/ +--- BEGIN CONTENT --- +--- +title: Glossary +description: Explore a comprehensive glossary of technical terms and key concepts used in the Wormhole network, covering Chain ID, Guardian, VAA, and more. +--- + +# Glossary + +This glossary is an index of technical term definitions for words commonly used in Wormhole documentation. + +## Chain ID + +Wormhole assigns a unique `u16` integer chain ID to each supported blockchain. These chain IDs are specific to Wormhole and may differ from those used by blockchains to identify their networks. + +You can find each chain ID documented on the [Wormhole Chain IDs](/docs/build/reference/chain-ids/){target=\_blank} page. + +## Consistency Level + +The level of finality (consistency) a transaction should meet before being signed by a Guardian. See the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} reference page for details. + +## Delivery Provider + +A Delivery Provider monitors for Wormhole Relayer delivery requests and delivers those requests to the intended target chain as instructed. + +## Emitter + +The emitter contract makes the call to the Wormhole Core Contract. The published message includes the emitter contract address and, a sequence number for the message is tracked to provide a unique ID. + +## Finality + +The finality of a transaction depends on its blockchain properties. Once a transaction is considered final, you can assume the resulting state changes it caused won't be reverted. + +## Guardian + +A [Guardian](/docs/learn/infrastructure/guardians/){target=\_blank} is one of the 19 parties running validators in the Guardian Network contributing to the VAA multisig. + +## Guardian Network + +Validators in their own P2P network who serve as Wormhole's oracle by observing activity on-chain and generating signed messages attesting to that activity. + +## Guardian Set + +The Guardian Set is a set of guardians responsible for validating a message emitted from the core contracts. Occasionally, the members of the set will change through a governance action. + +## Heartbeat + +Each Guardian will issue a `heartbeat` on a 15-second interval to signal that it is still running and convey details about its identity, uptime, version, and the status of the connected nodes. + +You can view the heartbeats on the [Wormhole dashboard](https://wormhole-foundation.github.io/wormhole-dashboard/#/?endpoint=Mainnet){target=\_blank}. + +## Observation + +An Observation is a data structure describing a message emitted by the Core Contract and noticed by the Guardian node. + +## Relayer + +A relayer is any process that delivers VAAs to a destination. + +## Sequence + +A nonce, strictly increasing, which is tracked by the Wormhole Core Contract and unique to the emitter chain and address. + +## Spy + +A Spy is a daemon that eavesdrops on the messages passed between Guardians, typically to track VAAs as they get signed. + +## VAA + +[Verifiable Action Approvals](/docs/learn/infrastructure/vaas/){target=\_blank} (VAAs) are the base data structure in the Wormhole ecosystem. They contain the messages emitted by [xDapps](#xdapp) along with information such as what contract emitted the message. + +## Validator + +A daemon configured to monitor a blockchain node and observe messages emitted by the Wormhole contracts. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/governance/architecture/ +--- BEGIN CONTENT --- +--- +title: MultiGov Architecture +description: Discover MultiGov's hub-and-spoke architecture, enabling secure cross-chain governance with Wormhole’s interoperability and decentralized coordination. +--- + +# MultiGov Architecture + +MultiGov employs a hub-and-spoke model to enable cross-chain governance, utilizing Wormhole's interoperability infrastructure for secure cross-chain communication. This architecture allows coordinated decision-making across multiple blockchain networks while maintaining a central coordination point. + +## Key Components + +### Hub Chain Contracts + +The hub chain is the central point for managing proposals, tallying votes, executing decisions, and coordinating governance across connected chains. + + - **`HubGovernor`** - central governance contract managing proposals and vote tallying + - **`HubVotePool`** - receives aggregated votes from spokes and submits them to `HubGovernor` + - **`HubMessageDispatcher`** - relays approved proposal executions to spoke chains + - **`HubProposalExtender`** - allows trusted actors to extend voting periods if needed + - **`HubProposalMetadata`** - helper contract returning `proposalId` and vote start for `HubGovernor` proposals + - **`HubEvmSpokeAggregateProposer`** - aggregates cross-chain voting weight for an address and proposes via the `HubGovernor` if eligible + +### Spoke Chains Contracts + +Spoke chains handle local voting, forward votes to the hub, and execute approved proposals from the hub for decentralized governance. + + - **`SpokeVoteAggregator`** - collects votes on the spoke chain and forwards them to the hub + - **`SpokeMessageExecutor`** - receives and executes approved proposals from the hub + - **`SpokeMetadataCollector`** - fetches proposal metadata from the hub for spoke chain voters + - **`SpokeAirlock`** - acts as governance's "admin" on the spoke, has permissions, and its treasury + +### Spoke Solana Staking Program + +The Spoke Solana Staking Program handles local voting from users who have staked W tokens or are vested in the program, forwards votes to the hub, and executes approved proposals from the hub for decentralized governance. + +The program implements its functionality through instructions, using specialized PDA accounts where data is stored. Below are the key accounts in the program: + + - **`GlobalConfig`** - global program configuration + - **`StakeAccountMetadata`** - stores user's staking information + - **`CustodyAuthority`** - PDA account managing custody and overseeing token operations related to stake accounts + - **`StakeAccountCustody`** - token account associated with a stake account for securely storing staked tokens + - **`CheckpointData`** - tracks delegation history + - **`SpokeMetadataCollector`** - collects and updates proposal metadata from the hub chain + - **`GuardianSignatures`** - stores guardian signatures for message verification + - **`ProposalData`** - stores data about a specific proposal, including votes and start time + - **`ProposalVotersWeightCast`** - tracks individual voter's weight for a proposal + - **`SpokeMessageExecutor`** - processes messages from a spoke chain via the Wormhole protocol + - **`SpokeAirlock`** - manages PDA signing and seed validation for secure instruction execution + - **`VestingBalance`** - stores total vesting balance and related staking information of a vester + - **`VestingConfig`** - defines vesting configuration, including mint and admin details + - **`Vesting`** - represents individual vesting allocations with maturation data + - **`VoteWeightWindowLengths`** - tracks lengths of vote weight windows + +Each account is implemented as a Solana PDA (Program Derived Address) and utilizes Anchor's account framework for serialization and management. + +## System Workflow + +The MultiGov system workflow details the step-by-step process for creating, voting on, and executing governance proposals across connected chains, from proposal creation to final cross-chain execution. + +### EVM Governance Workflow + +The EVM-based MultiGov workflow follows these steps: + +1. **Proposal creation**: + 1. A user creates a proposal through the `HubEvmSpokeAggregateProposer`, which checks eligibility across chains, or directly on the `HubGovernor` via the `propose` method + 2. The proposal is submitted to the `HubGovernor` if the user meets the proposal threshold +2. **Proposal metadata distribution**: + 1. `HubProposalMetadata` creates a custom view method to be queried for use in the `SpokeMetadataCollector` + 2. `SpokeMetadataCollector` on each spoke chain queries `HubProposalMetadata` for proposal details +3. **Voting process**: + 1. Users on spoke chains vote through their respective `SpokeVoteAggregators` + 2. `SpokeVoteAggregators` send aggregated votes to the `HubVotePool` via Wormhole + 3. `HubVotePool` submits the aggregated votes to the `HubGovernor` +4. **Vote tallying and proposal execution**: + 1. `HubGovernor` tallies votes from all chains + 2. If a quorum is reached and there are more for votes than against votes, the vote passes and is queued for execution + 3. After the timelock delay, the proposal can be executed on the hub chain + 4. For cross-chain actions, a proposal should call the `dispatch` method in the `HubMessageDispatcher`, which sends execution messages to the relevant spoke chains + 5. `SpokeMessageExecutors` on each spoke chain receive and execute the approved actions through their respective `SpokeAirlocks` + +### Solana Governance Workflow + +The Solana-based MultiGov workflow follows these steps: + +1. **Proposal creation**: + 1. A user creates a proposal on `HubGovernor` by calling the `propose` method, provided they meet the proposal threshold + 2. For the proposal to be executed on the Solana blockchain, a `SolanaPayload` must be generated and included in the `calldata` parameter of the `propose` function + 3. The `SolanaPayload` contains encoded details specifying which instructions will be executed and which Solana program is responsible for execution + +2. **Proposal metadata distribution**: + 1. A user queries `getProposalMetadata` from `HubProposalMetadata` via the Wormhole query system to create a proposal on the **Spoke Solana Chain Staking Program** + 2. The retrieved metadata is used in the `AddProposal` instruction in the Solana program + 3. The proposal data is verified to ensure it matches the expected format + 4. Guardian signatures are posted using the `PostSignatures` instruction + 5. Once validated, the proposal is stored on-chain + +3. **Voting process**: + 1. Users vote on proposals stored in the `ProposalData` account on Solana + 2. The `CastVote` instruction records their choice (`for_votes`, `against_votes`, or `abstain_votes`) + 3. Eligibility and vote weight are verified using historical voter checkpoint data + 4. A **Query Wormhole** request retrieves vote data from a Solana PDA + 5. The signed response from Wormhole guardians is submitted to the `HubVotePool` on Ethereum for verification + 6. The `crossChainVote` function in `HubVotePool` processes the validated response and forwards the aggregated vote data to the `HubGovernor` to finalize the decision + +4. **Vote tallying and proposal execution**: + 1. `HubGovernor` tallies votes from all chains + 2. If a quorum is reached with more **for votes** than **against votes**, the proposal passes and is queued for execution + 3. After the timelock delay, the proposal can be executed either on the hub chain or another chain + 4. For cross-chain execution involving Solana, the proposal calls the `dispatch` method in `HubSolanaMessageDispatcher`, which sends execution messages to Solana + 5. On Solana, the `ReceiveMessage` instruction processes the approved message, and the `SpokeAirlock` executes the corresponding instructions + +## Cross-Chain Communication + +MultiGov relies on Wormhole's infrastructure for all cross-chain messaging, ensuring secure and reliable communication between chains. Wormhole's cross-chain state read system, known as Queries, is used for vote aggregation and proposal metadata. Additionally, cross-chain proposal execution messages are transmitted through Wormhole's custom relaying system, enabling seamless coordination across multiple blockchain networks. + +## Security Measures + +- **Vote weight window** - implements a moving window for vote weight checkpoints to mitigate cross-chain double voting + - **Proposal extension** - `HubProposalExtender` allows for extending voting periods by a trusted actor in the case of network issues or high-stakes decisions +- **Timelock** - a timelock period between proposal approval and execution allows for additional security checks and community review +- **Wormhole verification** - all cross-chain messages are verified using Wormhole's secure messaging protocol + +## Detailed Architecture Diagram + +This architecture ensures that MultiGov can operate securely and efficiently across multiple chains, allowing for truly decentralized and cross-chain governance while maintaining a unified decision-making process. + + +![detailed multigov architecture diagram](/docs/images/learn/governance/multigov-detailed.webp) +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/governance/faq/ +--- BEGIN CONTENT --- +--- +title: MultiGov Theoretical FAQs +description: Find answers to common questions about MultiGov, covering cross-chain governance, technical setup, security, proposal creation, and more. +--- + +# FAQs + +## General Questions + +### What is MultiGov? + +MultiGov is a cross-chain governance system that extends traditional DAO governance across multiple blockchain networks. It leverages Wormhole's interoperability infrastructure for seamless voting and proposal mechanisms across various chains. + +### How does MultiGov differ from traditional DAO governance? + +Unlike traditional DAO governance, which typically operates on a single blockchain, MultiGov allows for coordinated decision-making and proposal execution across multiple chains. This enables more inclusive participation from token holders on different networks and more complex, cross-chain governance actions. + +### What are the main components of MultiGov? + +The main components of MultiGov include: + +- **Hub chain** - central coordination point for governance activities +- **Spoke chains** - additional chains where token holders can participate in governance +- **Wormhole integration** - enables secure cross-chain message passing +- **Governance token** - allows holders to participate in governance across all integrated chains +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/governance/ +--- BEGIN CONTENT --- +--- +title: Learn about MultiGov +description: Explore the MultiGov documentation for a comprehensive guide covering architecture, deployment, upgrading, integration, and FAQs. +--- + +# MultiGov + +Discover everything you need to know about MultiGov, Wormhole's cross-chain governance solution. Get an introduction to the core concepts, explore how the system's components work together, and find answers to common questions to help you navigate the platform effectively. + +## Get Started + +
+ +- :octicons-book-16:{ .lg .middle } **Overview** + + --- + + Explore MultiGov, a cross-chain governance system using Wormhole for seamless voting and proposal execution across multiple blockchain networks. + + [:custom-arrow: Take a first glance at MultiGov](/docs/learn/governance/overview/) + +- :octicons-book-16:{ .lg .middle } **Architecture** + + --- + + Discover MultiGov's hub-and-spoke architecture, enabling EVM and Solana cross-chain governance through coordinated decision-making. + + [:custom-arrow: Learn about MultiGov architecture](/docs/learn/governance/architecture/) + +- :octicons-question-16:{ .lg .middle } **Theoretical FAQs** + + --- + + Find answers to common theoretical questions about MultiGov. + + [:custom-arrow: Find the answer to your theoretical questions](/docs/learn/governance/faq/) + +
+ +## Next Steps + +
+ +- :octicons-checklist-16:{ .lg .middle } **Begin the MultiGov Integration Process** + + --- + + Learn how to get started with MultiGov, from evaluating cross-chain governance needs to deploying with help from the Tally team. + + [:custom-arrow: Start the integration process now](/docs/build/multigov/) + +- :octicons-rocket-16:{ .lg .middle } **Deployment** + + --- + + Set up and deploy MultiGov locally with step-by-step instructions for configuring, compiling, and deploying smart contracts across chains. + + [:custom-arrow: Discover how to deploy MultiGov](/docs/build/multigov/deployment/) + +- :octicons-code-square-16:{ .lg .middle } **Tutorials** + + --- + + Access step-by-step guides for executing cross-chain governance actions, including treasury management proposals with MultiGov and Wormhole. + + [:custom-arrow: Create MultiGov solutions](/docs/tutorials/by-product/multigov/) + +- :octicons-question-16:{ .lg .middle } **Technical FAQs** + + --- + + Find answers to common technical questions about MultiGov, covering technical setup, security, proposal creation, and more. + + [:custom-arrow: Find the answer to your technical questions](/docs/build/multigov/faq/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/governance/overview/ +--- BEGIN CONTENT --- +--- +title: MultiGov Overview +description: Explore MultiGov, a cross-chain governance system using Wormhole for seamless voting and proposal execution across multiple blockchain networks. +--- + +# MultiGov: Cross-Chain Governance with Wormhole + +## Overview + +### What Is MultiGov and Why Is It Important? + +MultiGov is a cross-chain governance system that extends traditional DAO governance across multiple blockchain networks. By leveraging Wormhole's interoperability infrastructure, MultiGov enables seamless voting and proposal mechanisms across various chains. + +MultiGov is important because it: + +- **Increases participation** by allowing token holders from multiple chains to engage in governance +- **Enhances security** by leveraging Wormhole's robust cross-chain communication +- **Improves scalability** by integrating any chain supported by Wormhole +- **Enables unified governance** and coordinated decision-making across multiple networks + +### Key Features + +- **Hub and spoke model** - central coordination on a hub chain with participation from multiple spoke chains. A hub chain is where the governance state lives, while the spoke chains can be considered extensions of governance that allow for participation by token holders on other chains +- **Cross-chain voting** - token holders on any integrated chain can cast votes +- **Vote aggregation** - votes from all chains are collected and tallied on the hub +- **Cross-chain proposal execution** - approved proposals can be executed across multiple chains +- **Wormhole integration** - secure and reliable cross-chain communication +- **Flexible architecture** - can integrate with any Wormhole-supported blockchain + +### High-Level Architecture Diagram + +The diagram below represents MultiGov's high-level architecture, focusing on its hub-and-spoke model for decentralized governance across multiple chains. The hub chain acts as the central governance controller, managing proposal creation, vote tallying, and execution, while the spoke chains handle local voting and proposal execution on individual chains. The hub and spoke chains communicate via Wormhole's cross-chain messaging infrastructure, ensuring secure and efficient governance across multiple blockchain networks. + +For a deeper understanding of the system's structure and how the components interact, refer to the [MultiGov Architecture](/docs/learn/governance/architecture/){target=\_blank} page. + + +![High-level architecture diagram illustrating the hub-and-spoke structure of the MultiGov system. The diagram shows three key components: Hub Chain and two Spoke Chains, interconnected via Wormhole for cross-chain governance.](/docs/images/learn/governance/multigov-high-level.webp) +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/ +--- BEGIN CONTENT --- +--- +title: Learn about Wormhole +description: Learn the basics of Wormhole, covering its architecture, messaging protocols, and how it enables multichain communication and asset transfers. +template: root-index-page.html +--- + +# Learn + +These informational sections will help you get to know Wormhole. Start with the fundamentals, then discover Wormhole's multichain transfer products and governance system. + +## Fundamentals + +To understand Wormhole from the ground up, visit the following sections. + +
+ +- :octicons-book-16:{ .lg .middle } **Introduction to Wormhole** + + --- + + Learn more about the problems Wormhole solves, explore use cases, and view a list of supported blockchains. + + [:custom-arrow: Introduction to Wormhole](/docs/learn/introduction/) + +- :octicons-book-16:{ .lg .middle } **Messaging Infrastructure** + + --- + + Investigate the messaging protocol architecture with an in-depth exploration of the individual components powering Wormhole's infrastructure. + + [:custom-arrow: Understand Wormhole's infrastructure](/docs/learn/infrastructure/) + +
+ +## Multichain Transfers + +Wormhole transfer products offer multiple options to meet your project's needs. Which product is best for your use depends upon the asset transfer type you want to add to your dApp. + +### Wrapped Tokens + +This method is likely familiar to you if you've previously built bridging projects. + +
+ +- :octicons-book-16:{ .lg .middle } **Token Bridge** + + --- + + - Use Wormhole deployed contracts to simplify development + - Multichain token transfers through lock-and-mint-mechanism + - Option to include message payload for uses like social platforms + + [:custom-arrow: Learn about Token Bridge](/docs/learn/transfers/token-bridge/) + +
+ +### Native Tokens + +Eliminate wrapped assets to preserve your token's native properties across chains. + +
+ +- :octicons-book-16:{ .lg .middle } **Native Token Transfers** + + --- + + - Deploy custom smart contracts to retain token ownership and upgrade authority with complete customizability + - No wrapped tokens or liquidity pools to avoid slippage and MEV risk + - Custom attestation is available by adding external verifiers + + [:custom-arrow: Learn about Native Token Transfers](/docs/learn/transfers/native-token-transfers/) + +
+ +### Intent-Based Transfers + +Institutional-scale digital asset settlement for individual users and insitutions. + +
+ +- :octicons-book-16:{ .lg .middle } **Settlement** + + --- + + - Leverages three protocols, providing flexibility and redundancy + - Chain-agnostic to liquidity on chains, enabling broader chain support + - English auction determines the winning solver for settlement + - USDC as the shuttle asset for seamless cross-chain settlement + + [:custom-arrow: Learn about Settlement](/docs/learn/transfers/settlement/) + +
+ +## Governance + +Explore MultiGov, Wormhole's multichain governance solution. + +
+ +- :octicons-book-16:{ .lg .middle } **Multichain Governance** + + --- + + - Multichain voting and proposal execution + - Aggregates votes from all chains + - Can integrate with any Wormhole-supported blockchain + + [:custom-arrow: Learn about MultiGov](/docs/learn/governance/) + +
+ +## Additional Resources + +
+ +- :octicons-book-16:{ .lg .middle } **Product Comparison** + + --- + + Compare Wormhole's multichain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. + + [:custom-arrow: Compare Products](/docs/build/start-building/products/){target=\_blank} + +- :octicons-book-16:{ .lg .middle } **Use Cases** + + --- + + Explore Wormhole's use cases, from multichain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. + + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/architecture/ +--- BEGIN CONTENT --- +--- +title: Architecture +description: Overview of Wormhole's architecture, detailing key on-chain and off-chain components like the Core Contract, Guardian Network, and relayers. +--- + +# Architecture Overview + +## Architecture + +Wormhole has several noteworthy components. Before discussing each component in depth, this page will provide an overview of how the major pieces fit together. + +![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/infrastructure/architecture/architecture-1.webp) + +The diagram outlines the end-to-end flow of cross-chain communication through Wormhole's architecture: + +1. **Source chain** - a source contract emits a message by interacting with the [Wormhole Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank} on the source chain, which publishes the message in the blockchain's transaction logs +2. **Guardian Network** - [Guardians](/docs/learn/infrastructure/guardians/){target=\_blank} validate these messages and sign them to produce [Verifiable Action Approvals (VAAs)](/docs/learn/infrastructure/vaas/){target=\_blank} +3. **Relayers** - off-chain relayers or applications fetch the VAA and relay it to the target chain +4. **Target chain** - on the target chain, the message is consumed by the appropriate contract. This contract interacts with the Wormhole Core Contract to verify the VAA and execute the intended cross-chain operation. The flow from the relayer to the target chain involves an entry point contract, which could vary based on the use case: + + - In some applications, the target contract acts as the entry point and performs verification via the Core Contract + - In products like the Token Bridge, the Token Bridge contract itself interacts with the Core Contract + +## On-Chain Components + +- **Emitter** - a contract that calls the publish message method on the Core Contract. The Core Contract will write an event to the transaction logs with details about the emitter and sequence number to identify the message. This may be your [xDapp](/docs/learn/glossary/#xdapp){target=\_blank} or an existing ecosystem protocol +- **[Wormhole Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank}** - primary contract, this is the contract which the Guardians observe and which fundamentally allows for cross-chain communication +- **Transaction logs** - blockchain-specific logs that allow the Guardians to observe messages emitted by the Core Contract + +## Off-Chain Components + +- **Guardian Network** - validators that exist in their own P2P network. Guardians observe and validate the messages emitted by the Core Contract on each supported chain to produce VAAs (signed messages) +- **[Guardian](/docs/learn/infrastructure/guardians/){target=\_blank}** - one of 19 validators in the Guardian Network that contributes to the VAA multisig +- **[Spy](/docs/learn/infrastructure/spy/){target=\_blank}** - a daemon that subscribes to messages published within the Guardian Network. A Spy can observe and forward network traffic, which helps scale up VAA distribution +- **[API](https://docs.wormholescan.io/){target=\_blank}** - a REST server to retrieve details for a VAA or the Guardian Network +- **[VAAs](/docs/learn/infrastructure/vaas/){target=\_blank}** - Verifiable Action Approvals (VAAs) are the signed attestation of an observed message from the Wormhole Core Contract +- **[Relayer](/docs/learn/infrastructure/relayer/){target=\_blank}** - any off-chain process that relays a VAA to the target chain + - **Wormhole relayers** - a decentralized relayer network that delivers messages that are requested on-chain via the Wormhole relayer contract + - **Custom relayers** - relayers that only handle VAAs for a specific protocol or cross-chain application. They can execute custom logic off-chain, reducing gas costs and increasing cross-chain compatibility. Currently, cross-chain application developers are responsible for developing and hosting custom relayers +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/core-contracts/ +--- BEGIN CONTENT --- +--- +title: Core Contracts +description: Discover Wormhole's Core Contracts, enabling cross-chain communication with message sending, receiving, and multicast features for efficient synchronization. +--- + +# Core Contracts + +## Introduction + +The Wormhole Core Contract is a fundamental component of the Wormhole interoperability protocol deployed across each supported blockchain network. This contract acts as the foundational layer that enables secure and efficient cross-chain messaging, as all cross-chain applications either interact directly with the Core Contract or with another contract that does. + +This guide summarizes the key functions of the Core Contract and outlines how the Core Contract works. + +## Key Functions of the Wormhole Core Contract + +- **Cross-chain messaging** - the Core Contract enables the transfer of messages between different blockchain networks connected via Wormhole. It standardizes and secures the message format, ensuring consistent communication across multiple chains. This capability allows developers to build cross-chain applications that leverage the unique features of each network + +- **Verification and validation** - the Core Contract is responsible for verifying and validating all VAAs received on the target chain. When a message is transmitted from one blockchain, it is signed by the Wormhole Guardians (a decentralized set of validators). The Core Contract on the target chain checks this signature to confirm that the message is legitimate and has not been tampered with + +- **Guardian Network coordination** - the Core Contract coordinates with Wormhole's Guardian Network to facilitate secure, trustless communication across chains. By relying on a quorum of Guardians to verify cross-chain messages and transactions, the contract ensures that only validated interactions are processed, enhancing the protocol's overall security and reliability + +- **Event emission for monitoring** - the Core Contract emits events for every cross-chain message it processes, allowing dApps and developers to monitor activity on the network. These events are critical for tracking message statuses, debugging, and building responsive applications that can react to cross-chain events in real time + +## How the Core Contract Works + +The Wormhole Core Contract is central in facilitating secure and efficient cross-chain transactions. It enables communication between different blockchain networks by packaging transaction data into standardized messages, verifying their authenticity, and ensuring they are executed correctly on the destination chain. This process involves several steps, from the initial message submission to final execution, all while leveraging the Wormhole Guardian network to maintain trust and security. + +Below is a simplified breakdown that focuses on the role of the Wormhole Core Contract in these operations: + +1. **Message submission** - when a user initiates a cross-chain transaction, the Wormhole Core Contract on the source chain packages the transaction data into a standardized message payload and submits it to the Guardian Network for verification +2. **Guardian verification** - the Guardians observe and sign the message independently. Once enough Guardians have signed the message, the collection of signatures is combined with the message and metadata to produce a VAA +3. **Message reception and execution** - on the target chain, the Wormhole Core Contract receives the verified message, checks the Guardians' signatures, and executes the corresponding actions, such as minting tokens, updating states, or calling specific smart contract functions + +For a closer look at how messages flow between chains and all of the components involved, you can refer to the [Architecture Overview](/docs/learn/infrastructure/architecture/) page. + +### Message Submission + +When sending a cross-chain message from the source chain Core Contract, you'll call a function that publishes the message. The implementation strategy for publishing messages differs by chain. However, the general strategy consists of the Core Contract posting the following items to the blockchain logs: + +- `emitterAddress` - the contract which made the call to publish the message +- `sequenceNumber` - a unique number that increments for every message for a given emitter (and implicitly chain) +- `consistencyLevel`- the level of finality to reach before the Guardians will observe and attest the emitted event. This is a defense against reorgs and rollbacks since a transaction, once considered "final," is guaranteed not to have the state changes it caused rolled back. Since different chains use different consensus mechanisms, each one has different finality assumptions, so this value is treated differently on a chain-by-chain basis. See the options for finality for each chain in the [Wormhole Finality](/docs/build/reference/consistency-levels/){target=\_blank} reference page + +There are no fees to publish a message except when publishing on Solana, but this is subject to change in the future. + +### Message Reception + +When receiving a cross-chain message on the target chain Core Contract, the general approach involves parsing and verifying the [components of a VAA](/docs/learn/infrastructure/vaas#vaa-format). + +The process of receiving and verifying a VAA ensures that the message was properly attested by the Guardian Network, maintaining the integrity and authenticity of the data transmitted between chains. + +## Multicast + +Multicast refers to simultaneously broadcasting a single message or transaction across different blockchains. This means there is no destination address or chain for the sending and receiving functions. This is possible because VAAs attest that "this contract on this chain said this thing." Therefore, VAAs are multicast by default and will be verified as authentic on any chain where they are used. + +This multicast-by-default model makes it easy to synchronize the state across the entire ecosystem because a single blockchain can make its data available to every chain in a single action with low latency. This reduces the complexity of the n^2 problems encountered by routing data to a large number of blockchains. + +This doesn't mean an application _cannot_ specify a destination address or chain. For example, the Token Bridge and Wormhole relayer contracts require that some destination details be passed and verified on the destination chain. + +Because the VAA creation is separate from relaying, the multicast model does not incur an additional cost when a single chain is targeted. If the data isn't needed on a certain blockchain, don't relay it there, and it won't cost anything. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/guardians/ +--- BEGIN CONTENT --- +--- +title: Guardians +description: Explore Wormhole's Guardian Network, a decentralized system for secure, scalable cross-chain communication across various blockchain ecosystems. +--- + +## Guardian + +Wormhole relies on a set of distributed nodes that monitor the state on several blockchains. In Wormhole, these nodes are referred to as Guardians. The current Guardian set can be seen in the [Dashboard](https://wormhole-foundation.github.io/wormhole-dashboard/#/?endpoint=Mainnet){target=\_blank}. + +It is the Guardians' role to observe messages and sign the corresponding payloads. Each Guardian performs this step in isolation, combining the resulting signatures with other Guardians as a final step. The resulting collection of independent observations forms a multisig, representing proof that the majority of the Wormhole network has observed and agreed upon a state. These multisigs are referred to as VAAs in Wormhole. + +## Guardian Network + +The Guardian Network is designed to serve as Wormhole's oracle component, and the entire Wormhole ecosystem is founded on its technical underpinnings. It is the most critical element of the Wormhole ecosystem and represents the most crucial component to learn about if you want a deep understanding of it. + +To understand not just _how_ the Guardian Network works but _why_ it works the way it does, it is important to review the key design considerations. To become the best-in-class interoperability platform, Wormhole needed to have five critical features: + +- **Decentralization** - control of the network needs to be distributed amongst many parties +- **Modularity** - disparate parts of the ecosystem, such as the oracle, relayer, applications, and others, should be kept as separate and modular as possible so they can be designed, modified, and upgraded independently +- **Chain Agnosticism** - Wormhole should be able to support not only EVM but also chains like Solana, Algorand, Cosmos, and even platforms that still need to be created. It also shouldn't have any one chain as a single point of failure +- **Scalability** - Wormhole should be able to secure a large amount of value immediately and be able to handle the large transaction volume +- **Upgradeable** - as the decentralized computing ecosystem evolves, Wormhole will need to be able to change the implementation of its existing modules without breaking integrators + +Next, the ways by which Wormhole achieves this will be examined individually. + +### Decentralization + +Decentralization is the biggest concern. Previous interoperability solutions have largely been entirely centralized, and even newer solutions utilizing things like adversarial relayers still tend to have single points of failure or collusion thresholds as low as one or two. + +When designing a decentralized oracle network, the first option to consider is likely a Proof-of-Stake (PoS) system however, this is a suboptimal solution. PoS is designed for blockchain consensus in smart contract-enabled environments, so it's less suitable when the network verifies the output of many blockchains and doesn't support its own smart contracts. While it looks appealing from a decentralization perspective, network security remains to be seen, and it can make some of the other outlined goals more challenging to achieve. Different options need to be explored. + +Another option is to use Zero-Knowledge Proofs (ZKP) to secure the network. This would be a good solution from a decentralization perspective, as it's trustless. However, ZKPs are still a nascent technology, and verifying them on-chain isn't feasible, especially on chains with limited computational environments. That means a form of multisig will be needed to secure the network. + +In the current De-Fi landscape, most of the top blockchains are secured by the same handful of validator companies. Currently, only a limited number of companies in the world have the skills and capital to run top-notch validator companies. + +If a protocol could unite a large number of those validator companies into a purpose-built consensus mechanism optimized for chain interoperability, that design would likely be more performant and secure than a network bootstrapped by a tokenomics model. Assuming the validators would be on board, how many could Wormhole realistically utilize? + +If Wormhole used threshold signatures, the answer would be "as many as are willing to participate." However, threshold signatures need more support across the blockchain world, meaning verifying the signatures would be difficult and expensive, ultimately limiting scalability and chain agnosticism. Thus, a t-schnorr multisig presents itself as the best option: cheap and well-supported, even though its verification costs increase linearly with the number of signatures included. + +All these things considered, 19 seems to be the maximum number and a good tradeoff. If two-thirds of the signatures are needed for consensus, then 13 signatures must be verified on-chain, which remains reasonable from a gas-cost perspective. + +Rather than securing the network with tokenomics, it is better to initially secure the network by involving robust companies that are heavily invested in De-Fi's success. The 19 Guardians aren't anonymous or small, they are many of the largest and most widely known validator companies in cryptocurrency. + +This led to a network of 19 Guardians, each with an equal stake, and joined in a purpose-built Proof-of-Authority consensus mechanism. As threshold signatures become better supported, the Guardian Set can expand, and once ZKPs are ubiquitous, the Guardian Network will become fully trustless. + +With the perspective on Decentralization laid out, the remaining elements fall into place. + +### Modularity + +The Guardian Network is robust and trustworthy by itself, so there's no need for components like the relayer to contribute to the security model. That makes Wormhole able to have simple components that are very good at their one thing. Guardians only need to verify on-chain activity and produce VAAs, while relayers only need to interact with blockchains and deliver messages. + +The VAAs' signing scheme can be changed without affecting downstream users, and multiple relay mechanisms can exist independently. xAssets can be implemented purely at the application layer, and cross-chain applications can use whatever components suit them. + +### Chain Agnosticism + +Today, Wormhole supports a broader range of ecosystems than any other interoperability protocol because it uses simple tech (t-schnorr signatures), an adaptable, heterogeneous relayer model, and a robust validator network. + +Wormhole can expand to new ecosystems as quickly as a Core Contract can be developed for the smart contract runtime. Relayers don't need to be factored into the security model; they just need to be able to upload messages to the blockchain. The Guardians are able to observe every transaction on every chain without taking shortcuts. + +### Scalability + +Wormhole scales well, as demonstrated by its ability to handle huge total value locked (TVL) and transaction volume even during tumultuous events. + +The requirements for running a Guardian are relatively heavy, as they must run a full node for every single blockchain in the ecosystem. This is another reason why a limited number of robust validator companies are beneficial for this design. + +However, once all the full nodes are running, the Guardian Network's actual computation and network overheads become lightweight. The blockchains' performance tends to be the bottleneck in Wormhole rather than anything happening inside the Guardian Network. + +### Upgradeable + +Over time, the Guardian Set can be expanded beyond 19 using threshold signatures. Various relaying models will emerge, each with their own strengths and weaknesses. ZKPs can be used on chains where they are well-supported. The cross-chain application ecosystem will grow, and cross-chain applications will become increasingly intermingled. There are very few APIs in Wormhole, and most items are implementation details from the integrator perspective. This creates a clear pathway towards a fully trustless interoperability layer that spans decentralized computing. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/ +--- BEGIN CONTENT --- +--- +title: Infrastructure Components +description: Explore Wormhole's infrastructure, including the key components that enable secure multichain communication and asset transfers across blockchain networks. +--- + +# Infrastructure Components + +This section examines the core components that power Wormhole's infrastructure, including Guardians, relayers, VAAs, and the Spy. + +## Get Started + +Start here for an overview of Wormhole architecture components and security mechanisms: + +
+ +- :octicons-book-16:{ .lg .middle } **Architecture Overview** + + --- + + Overview of Wormhole's architecture, detailing key on-chain and off-chain components like the Core Contract, Guardian Network, and relayers. + + [:custom-arrow: Learn About Architecture](/docs/learn/infrastructure/architecture/) + +- :octicons-book-16:{ .lg .middle } **Security** + + --- + + Explore Wormhole's security features, including the Guardian network, governance, and monitoring. + + [:custom-arrow: Learn About Security](/docs/learn/security/) + +
+ +## Explore Components + +The relationship between individual components can be demonstrated through the simplified flow of a multichain message from a source-chain contract to a target-chain contract. Select the title of each step to learn more about that component: + +[timeline left(wormhole-docs/.snippets/text/learn/infrastructure/infrastructure-index-timeline.json)] + +The [Spy](/docs/learn/infrastructure/spy/) continuously runs in the background to subscribe to gossiped messages across the Guardian Network and enable real-time network activity monitoring. + +## Next Steps + +
+ +- :octicons-book-16:{ .lg .middle } **Messaging Components** + + --- + + Learn more about individual messaging components such as Core Contracts, VAAs, Guardians, and relayers + + [:custom-arrow: Explore Core Contracts](/docs/learn/infrastructure/core-contracts/) + +- :octicons-people-16:{ .lg .middle } **Core Messaging Guides** + + --- + + Explore this section for guides to using Wormhole Relayer and Core Contracts in your project. + + [:custom-arrow: Build with Core Messaging](/docs/build/core-messaging/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/relayer/ +--- BEGIN CONTENT --- +--- +title: Relayers +description: Discover the role of relayers in the Wormhole network, including client-side, custom, and Wormhole-deployed types, for secure cross-chain communication. +--- + +# Relayers + +This documentation provides a comprehensive guide to relayers within the Wormhole network, describing their role, types, and benefits in facilitating cross-chain processes. + +Relayers in the Wormhole context are processes that deliver [Verified Action Approvals (VAAs)](/docs/learn/infrastructure/vaas/){target=\_blank} to their destination, playing a crucial role in Wormhole's security model. They can't compromise security, only availability, and act as delivery mechanisms for VAAs without the capacity to tamper with the outcome. + +There are three primary types of relayers discussed: + +- **Client-side relaying** - a cost-efficient, no-backend-infrastructure approach relying on user-facing front ends. It provides a simple solution, although it can complicate the user experience due to the manual steps involved +- **Custom relayers** - backend components that handle parts of the cross-chain process, offering a smoother user experience and allowing off-chain calculations to reduce gas costs. These relayers could operate through direct listening to the Guardian Network (Spy relaying) +- **Wormhole-deployed relayers** - a decentralized relayer network that can deliver arbitrary VAAs, reducing the developer's need to develop, host, or maintain relayers. However, they require all calculations to be done on-chain and might be less gas-efficient + +## Fundamentals + +This section highlights the crucial principles underpinning the operation and handling of relayers within the Wormhole network. + +Relayers are fundamentally trustless entities within the network. This means that while they don't require your trust, they shouldn't be trusted implicitly. They function as delivery mechanisms, transporting VAAs from their source to their destination. + +Key characteristics of VAAs include: + +- Public emission from the Guardian Network +- Authentication through signatures from the Guardian Network +- Verifiability by any entity or any Wormhole Core Contract +- As a result of these characteristics, anyone can pick up a VAA and deliver it anywhere, but no one can alter the VAA content without invalidating the signatures + +When designing contracts, it's crucial to only trust information contained within your contract or a VAA. Relying on information from a relayer could expose you to input attacks. + +Advanced strategies can involve relayers performing trustless off-chain computation passed into the destination contract. These strategies can optimize gas costs but also create attack vectors if not used correctly. + +In summary, the design of a relayer should ensure that there's a single, deterministic way to process messages in your protocol. In an optimally designed protocol, relayers should have a "correct" implementation, mirroring "crank turner" processes used elsewhere in blockchain. + +## Client-Side Relaying + +Client-side relaying relies on user-facing front ends, such as a webpage or a wallet, to complete the cross-chain process. + +**Key Features** + +- **Cost-efficiency** - users only pay the transaction fee for the second transaction, eliminating any additional costs +- **No backend infrastructure** - the process is completely client-based, eliminating the need for a backend relaying infrastructure + +**Implementation** + +Users themselves carry out the three steps of the cross-chain process: + +1. Perform an action on chain A +2. Retrieve the resulting VAA from the Guardian Network +3. Perform an action on chain B using the VAA + +**Considerations** + +!!! note + Though simple, this type of relaying is generally not recommended if your aim is a highly polished user experience. It can, however, be useful for getting a Minimum Viable Product (MVP) up and running. + +- Users must sign all required transactions with their own wallet +- Users must have funds to pay the transaction fees on every chain involved +- The user experience may be cumbersome due to the manual steps involved + +## Custom Relayers + +Custom relayers are purpose-built components within the Wormhole protocol, designed to relay messages for specific applications. They are capable of performing off-chain computations and can be customized to suit a variety of use cases. + +The main method of setting up a custom relayer is by listening directly to the Guardian Network via a [Spy](/learn/infrastructure/spy/). + +**Key Features** + +- **Optimization** - capable of performing trustless off-chain computations which can optimize gas costs +- **Customizability** - allows for specific strategies like batching, conditional delivery, multi-chain deliveries, and more +- **Incentive structure** - developers have the freedom to design an incentive structure suitable for their application +- **Enhanced UX** - the ability to retrieve a VAA from the Guardian Network and perform an action on the target chain using the VAA on behalf of the user can simplify the user experience + +**Implementation** + +!!! note + To make the development of custom relayers easier, a plugin relayer is available in the [main Wormhole repository](https://github.com/wormhole-foundation/wormhole/tree/main/relayer){target=\_blank}. This sets up the basic infrastructure for relaying, allowing developers to focus on implementing the specific logic for their application. + +**Considerations** + +Remember, despite their name, custom relayers still need to be considered trustless. VAAs are public and can be submitted by anyone, so developers shouldn't rely on off-chain relayers to perform any computation considered "trusted." + +- Development work and hosting of relayers are required +- The fee-modeling can become complex, as relayers are responsible for paying target chain fees +- Relayers are responsible for availability, adding dependency for the cross-chain application + +## Wormhole Relayers + +Wormhole relayers are a component of a decentralized network in the Wormhole protocol, facilitating the delivery of VAAs to recipient contracts compatible with the standard relayer API. + +**Key Features** + +- **Lower operational costs** - no need to develop, host, or maintain individual relayers +- **Simplified integration** - because there is no need to run a relayer, integration is as simple as calling a function and implementing an interface + +**Implementation** + +The Wormhole relayer integration involves two key steps: + +- **Delivery request** - request delivery from the ecosystem Wormhole relayer contract +- **Relay reception** - implement a [`receiveWormholeMessages`](https://github.com/wormhole-foundation/wormhole-solidity-sdk/blob/bacbe82e6ae3f7f5ec7cdcd7d480f1e528471bbb/src/interfaces/IWormholeReceiver.sol#L44-L50){target=\_blank} function within their contracts. This function is invoked upon successful relay of the VAA + +**Considerations** + +!!! note + Developers should note that the choice of relayers depends their project's specific requirements and constraints. Wormhole relayers offer simplicity and convenience but limit customization and optimization opportunities compared to custom relayers. + +- All computations are performed on-chain +- Potentially less gas-efficient compared to custom relayers +- Optimization features like conditional delivery, batching, off-chain calculations might be restricted +- Support may not be available for all chains +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/spy/ +--- BEGIN CONTENT --- +--- +title: Spy +description: Discover Wormhole's Spy daemon, which subscribes to gossiped messages in the Guardian Network, including VAAs and Observations, with setup instructions. +--- + +# Spy + +## Introduction + +In Wormhole’s ecosystem, the _Spy_ is a daemon, a continuously running background process that monitors messages within the Guardian Network. Unlike Guardians, Spies don’t perform validation; instead, they serve as an interface for observing the network’s message traffic, enabling applications and users to access live data transmitted over Wormhole. + +The primary purpose of a Spy is to subscribe to the gossiped messages across the Guardian Network, tracking key message types that allow integrators and applications to monitor real-time network activity without directly engaging in consensus operations. + +## Key Features of the Spy + +### Monitor Spy-Accessible Messages + +Spies can access the following categories of messages shared over the gossip protocol:: + +- [Verifiable Action Approvals (VAAs)](/docs/learn/infrastructure/vaas/){target=\_blank} - packets of cross-chain data. The Spy can detect whether a VAA has been approved by the Guardian Network, making it a valuable tool for applications needing real-time cross-chain verification +- [Observations](/docs/learn/glossary/#observation){target=\_blank} - emitted by Wormhole’s core contracts, observations are picked up by the Guardians and relayed across the network. Spies allow users to monitor these messages, adding transparency and insight into blockchain events +- [Guardian heartbeats](/docs/learn/glossary/#heartbeat){target=\_blank} - heartbeat messages represent Guardian node statusn. By monitoring heartbeats, a Spy can signal the liveness and connectivity of Guardians in the network + +## Integrator Use Case + +The Spy provides a valuable mechanism for integrators to observe real-time network activity in the Guardian Network without directly engaging in validation or consensus. By running a Spy, integrators can track cross-chain events, and message flows — such as VAAs, observations, and Guardian heartbeats — to monitor network activity essential to their applications. + +This monitoring capability is especially beneficial for applications that need immediate insights into cross-chain data events. Integrators can run a Spy to ensure their applications are promptly informed of message approvals, observations, or Guardian liveness signals, supporting timely and responsive app behavior without additional overhead on network resources. + +## Resources + +For more information, you can check out the following resources: + +- The source code for the Go implementation of the Spy is available on [GitHub](https://github.com/wormhole-foundation/wormhole/blob/main/node/cmd/spy/spy.go){target=\_blank} +- To find out how to [start and run a Spy](/docs/infrastructure/spy/run-spy/){target=\_blank}, refer to the infrastructure section. This setup enables integrators to create a custom endpoint that applications can use to observe message flows in the Guardian Network, providing greater flexibility and control over cross-chain monitoring +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/infrastructure/vaas/ +--- BEGIN CONTENT --- +--- +title: VAAs +description: Learn about Verified Action Approvals (VAAs) in Wormhole, their structure, validation, and role in cross-chain communication. +--- + +# Verified Action Approvals + +VAAs are Wormhole's core messaging primitive. They are packets of cross-chain data emitted whenever a cross-chain application contract interacts with the Core Contract. + +The Guardians must validate messages emitted by contracts before sending them to the target chain. Once a majority of Guardians observe the message and determine finality, the Guardians sign a keccak256 hash of the message body. + +The message is wrapped up in a structure called a VAA, which combines the message with the Guardian signatures to form a proof. + +VAAs are uniquely indexed by the (`emitter_chain`, `emitter_address`, `sequence`) tuple. To obtain a VAA, one can query the [Wormholescan API](https://docs.wormholescan.io/){target=\_blank} with this information. + +!!!note + The `sequence` field depends on the final ordering of blocks on the emitter chain. When a lower consistency level is chosen (i.e., not waiting for finality), there is a chance that chain reorganizations could lead to multiple, different VAAs appearing for what looks like the “same” message on the user side. The tuple (`emitter_chain`, `emitter_address`, `sequence`) can only be considered unique if the chain does not undergo a reorg and the block containing the message has effectively reached finality. However, there is always a small chance of an extended reorg that could invalidate or alter a previously emitted sequence number. + +These VAAs are ultimately what a smart contract on a receiving chain must process to receive a Wormhole message. + +## VAA Format + +The basic VAA has two components: a header and a body. + +### Header + +The header holds metadata about the current VAA, the Guardian set that is currently active, and the list of signatures gathered so far. + +- `version` ++"byte"++ - the VAA Version +- `guardian_set_index` ++"u32"++ - indicates which Guardian set is signing +- `len_signatures` ++"u8"++ - the number of signatures stored +- `signatures` ++"[]signature"++ - the collection of Guardian signatures + +Where each `signature` is: + +- `index` ++"u8"++ - the index of this Guardian in the Guardian set +- `signature` ++"[65]byte"++ - the ECDSA signature + +### Body + +The body is _deterministically_ derived from an on-chain message. Any two Guardians processing the same message must derive the same resulting body. This requirement exists so that there is always a one-to-one relationship between VAAs and messages to avoid double-processing messages. + +!!!note + While the body is derived from the on-chain message, this is only strictly true once the chain's state is finalized (i.e., no further reorgs). If a reorg occurs and a transaction that previously appeared in block X is replaced by block Y, Guardians observing different forks may generate different VAAs for what the emitter contract believes is the “same” message. + + This scenario is less likely once a block is sufficiently buried, but it can still happen if you choose a faster (less finalized) consistency level. + +- `timestamp` ++"u32"++ - the timestamp of the block this message was published in +- `nonce` ++"u32"++ +- `emitter_chain` ++"u16"++ - the id of the chain that emitted the message +- `emitter_address` ++"[32]byte"++ - the contract address (Wormhole formatted) that called the Core Contract +- `sequence` ++"u64"++ - the auto-incrementing integer that represents the number of messages published by this emitter +- `consistency_level` ++"u8"++ - the [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}, required by this emitter +- `payload` ++"[]byte"++ - arbitrary bytes containing the data to be acted on + +The body contains relevant information for entities, such as contracts, or other systems, that process or utilize VAAs. When a function like `parseAndVerifyVAA` is called, the body is returned, allowing verification of the `emitterAddress` to determine if the VAA originated from a trusted contract. + +!!! note + Because VAAs have no destination, they are effectively multicast. Any Core Contract on any chain in the network will verify them as authentic. If a VAA has a specific destination, relayers are entirely responsible for completing that delivery appropriately. + +## Consistency and Finality + +The [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank}, determines whether Guardians wait for a chain’s final commitment state or issue a VAA sooner under less-final conditions. This choice is especially relevant for blockchains without instant finality, where the risk of reorganization remains until a block is deeply confirmed. + +Guardian watchers are specialized processes that monitor each blockchain in real time. They enforce the selected consistency level by deciding whether enough commitment has been reached before signing and emitting a VAA. Some chains allow only one commitment level (effectively final), while others let integrators pick between near-final or fully finalized states. Choosing a faster option speeds up VAA production but increases reorg risk; choosing a more conservative option takes longer but reduces the likelihood of rollback. + +## Signatures + +The body of the VAA is hashed twice with `keccak256` to produce the signed digest message. + +```js +// hash the bytes of the body twice +digest = keccak256(keccak256(body)) +// sign the result +signature = ecdsa_sign(digest, key) +``` + +!!! note + Different implementations of the ECDSA signature validation may apply a keccak256 hash to the message passed, so care must be taken to pass the correct arguments. + + For example, the [Solana secp256k1 program](https://docs.solanalabs.com/runtime/programs#secp256k1-program){target=\_blank} will hash the message passed. In this case, the argument for the message should be a single hash of the body, not the twice-hashed body. + +## Payload Types + +Different applications built on Wormhole may specify a format for the payloads attached to a VAA. This payload provides information on the target chain and contract so it can take action (e.g., minting tokens to a receiver address). + +### Token Transfer + +Tokens are transferred between chains using a lockup/mint and burn/unlock mechanism. Many bridges use such a basic method, but the implementation described leverages the generic message-passing protocol provided by Wormhole to handle the routing of lock and burn events across chains. This approach ensures that Wormhole's Token Bridge is chain-agnostic. The bridge can be rapidly integrated into any network with a Wormhole contract. Wormhole's generic message-passing doesn't require any program to send messages to understand the specific implementation details of other chains. + +To transfer tokens from Chain A to Chain B, you must lock them on A and mint them on B. The tokens on A must be proven to be locked before the minting can occur on B. To facilitate this process, Chain A first locks the tokens and emits a message indicating that the locking has been completed. This message has the following structure and is referred to as a transfer message: + +- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `1` for a token transfer +- `amount` ++"u256"++ - amount of tokens being transferred +- `token_address` ++"u8[32]"++ - address on the source chain +- `token_chain` ++"u16"++ - numeric ID for the source chain +- `to` ++"u8[32]"++ - address on the destination chain +- `to_chain` ++"u16"++ - numeric ID for the destination chain +- `fee` ++"u256"++ - portion of amount paid to a relayer + +This structure contains everything the receiving chain needs to learn about a lockup event. Once Chain B receives this payload, it can mint the corresponding asset. + +Note that Chain B is agnostic regarding how the tokens on the sending side were locked. They could have been burned by a mint or locked in a custody account. The protocol relays the event once enough Guardians have attested to its existence. + +### Attestation + +The Transfer event in the preceding section needs an important detail added. While the program on Chain B can trust the message to inform it of token lockup events, it has no way of verifying the correct token is locked up. The address alone is a meaningless value to most users. To solve this, the Token Bridge supports token attestation. + +For a token attestation, Chain A emits a message containing metadata about a token, which Chain B may use to preserve the name, symbol, and decimal precision of a token address. + +The message format for this action is as follows: + +- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `2` for an attestation +- `token_address` ++"[32]byte"++ - address of the originating token contract +- `token_chain` ++"u16"++ - chain ID of the originating token +- `decimals` ++"u8"++ - number of decimals this token should have +- `symbol` ++"[32]byte"++ - short name of asset +- `name` ++"[32]byte"++ - full name of asset + +Attestations use a fixed-length byte array to encode UTF8 token name and symbol data. + +!!! note + Because the byte array is fixed length, the data contained may truncate multibyte Unicode characters. + +When sending an attestation VAA, it is recommended to send the longest UTF-8 prefix that doesn't truncate a character and then right-pad it with zero bytes. + +When parsing an attestation VAA, it is recommended to trim all trailing zero bytes and converting the remainder to UTF-8 via any lossy algorithm. + +!!! note + Be mindful that different on-chain systems may have different VAA parsers, resulting in different names/symbols on different chains if the string is long or contains invalid UTF8. + +Without knowing a token's decimal precision, Chain B cannot correctly mint the number of tokens when processing a transfer. For this reason, the Token Bridge requires an attestation for each token transfer. + +### Token Transfer with Message + +!!! note + This VAA type is also referred to as a payload3 message or a Contract Controlled Transfer. + +The Token Transfer with Message data structure is identical to the token-only data structure, except for the `fee` field, which is replaced with the `from_address` field, and the addition of a `payload` field containing arbitrary bytes. In this arbitrary byte field, an app may include additional data in the transfer to inform some application-specific behavior. + +- `payload_id` ++"u8"++ - the ID of the payload. This should be set to `3` for a token transfer with message +- `amount` ++"u256"++ - amount of tokens being transferred +- `token_address` ++"u8[32]"++ - address on the source chain +- `token_chain` ++"u16"++ - numeric ID for the source chain +- `to` ++"u8[32]"++ - address on the destination chain +- `to_chain` ++"u16"++ - numeric ID for the destination chain +- `from_address` ++"u8[32]"++ - address that called the Token Bridge on the source chain +- `payload` ++"[]byte"++ - message, arbitrary bytes, app specific + +### Governance + +Governance VAAs don't have a `payload_id` field like the preceding formats. They're used to trigger some action in the deployed contracts (for example, upgrade). + +### Action Structure + +Governance messages contain pre-defined actions, which can target the various Wormhole modules currently deployed on-chain. The structure contains the following fields: + +- `module` ++"u8[32]"++ - contains a right-aligned module identifier +- `action` ++"u8"++ - predefined governance action to execute +- `chain` ++"u16"++ - chain the action is targeting. This should be set to `0` for all chains +- `args` ++"any"++ - arguments to the action + +Below is an example message containing a governance action triggering a code upgrade to the Solana Core Contract. The module field here is a right-aligned encoding of the ASCII Core, represented as a 32-byte hex string. + +```js +module: 0x0000000000000000000000000000000000000000000000000000436f7265 +action: 1 +chain: 1 +new_contract: 0x348567293758957162374959376192374884562522281937446234828323 +``` + +### Actions + +The meaning of each numeric action is pre-defined and documented in the Wormhole design documents. For each application, the relevant definitions can be found via these links: + +- [Core governance actions](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0002_governance_messaging.md){target=\_blank} +- [Token Bridge governance actions](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0003_token_bridge.md){target=\_blank} + +## Lifetime of a Message + +!!! note + Anyone can submit the VAA to the target chain. The Guardians typically don't perform this step to avoid transaction fees. Instead, applications built on top of Wormhole can acquire the VAA via the Guardian RPC and make the submission in a separate flow. + +With the concepts now defined, it is possible to illustrate what a full flow for message passing between two chains looks like. The following stages demonstrate each step of processing that the Wormhole network performs to route a message. + +1. **A message is emitted by a contract running on Chain A** - any contract can emit messages, and the Guardians are programmed to observe all chains for these events. Here, the Guardians are represented as a single entity to simplify the graphics, but the observation of the message must be performed individually by each of the 19 Guardians +2. **Signatures are aggregated** - Guardians observe and sign the message independently. Once enough Guardians have signed the message, the collection of signatures is combined with the message and metadata to produce a VAA +3. **VAA submitted to target chain** - the VAA acts as proof that the Guardians have collectively attested the existence of the message payload; to complete the final step, the VAA itself is submitted (or relayed) to the target chain to be processed by a receiving contract + +![Lifetime of a message diagram](/docs/images/learn/infrastructure/vaas/lifetime-vaa-diagram.webp) +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/introduction/ +--- BEGIN CONTENT --- +--- +title: Introduction to Wormhole +description: Wormhole is a protocol for seamless communication between blockchains, enabling cross-chain applications and integrations. +--- + +# Introduction to Wormhole + +In the rapidly evolving landscape of blockchain technology, interoperability between different blockchains remains a significant challenge. Developers often face hurdles in creating applications that can seamlessly operate across multiple blockchains, limiting innovation and the potential of decentralized ecosystems. + +Wormhole addresses this problem by providing a _generic message-passing_ protocol that enables secure and efficient communication between blockchains. By allowing data and asset transfers across various blockchain networks, Wormhole breaks down the walls that traditionally separate these ecosystems. + +Wormhole is distinguished by its focus on robust security, scalability, and transparency. The protocol is supported by a decentralized network of validators that ensure the integrity of every cross-chain transaction. This, combined with Wormhole’s proven performance in real-world applications, gives developers a dependable platform to create and scale multichain applications confidently. + +![Message-passing process in the Wormhole protocol](/docs/images/learn/introduction/introduction-1.webp) + +!!! note + The above is an oversimplified illustration of the protocol; details about the architecture and components are available on the [architecture page](/docs/learn/infrastructure/architecture/){target=\_blank}. + +Wormhole allows developers to leverage the strengths of multiple blockchain ecosystems without being confined to one. This means applications can benefit from the unique features of various networks—such as Solana's high throughput, Ethereum's security, and Cosmos's interoperability while maintaining a unified, efficient user experience. + +This page introduces the key concepts and components necessary to understand how Wormhole enables fast, secure, and scalable cross-chain communication. + +## What Problems Does Wormhole Solve? + +Interoperability is a critical challenge in the rapidly evolving blockchain landscape. Individual blockchains are often isolated, limiting the potential for integrated applications operating across multiple ecosystems. Wormhole solves this problem by enabling seamless communication between blockchains, allowing developers to create multichain applications that can leverage the unique features of each network. + +Critical problems Wormhole addresses include: + +- **Blockchain isolation** - Wormhole connects disparate blockchains, enabling the transfer of assets, data, and governance actions across networks +- **Cross-chain complexity** - by abstracting the complexities of cross-chain communication, Wormhole makes it easier for developers to build and deploy cross-chain applications +- **Security and decentralization** - Wormhole prioritizes security through a decentralized Guardian network that validates and signs messages, ensuring the integrity of cross-chain interactions + +## What Does Wormhole Offer? + +Wormhole provides a suite of tools and protocols that support a wide range of use cases: + +- **Cross-chain messaging** - securely transfer arbitrary data between blockchains, enabling the development of cross-chain decentralized applications (xDapps) +- **Asset transfers** - facilitate the movement of tokens and NFTs across supported chains with ease, powered by protocols built on Wormhole like [Portal](https://portalbridge.com/){target=\_blank} +- **Developer tools** - leverage [Wormhole’s SDKs](/docs/build/toolkit/typescript-sdk/){target=\_blank}, [APIs](/docs/build/toolkit/#wormhole-api-docs){target=\_blank}, [Wormhole Scan](https://wormholescan.io/){target=\_blank}, and documentation to build and deploy cross-chain applications quickly and efficiently + +## What Isn't Wormhole? + +- **Wormhole is _not_ a blockchain** - it acts as a communication layer that connects different blockchains, enabling them to interact without being a blockchain itself +- **Wormhole is _not_ a token bridge** - while it facilitates token transfers, Wormhole also supports a wide range of cross-chain applications, making it much more versatile than a typical bridge + +## Use Cases of Wormhole + +Consider the following examples of potential applications enabled by Wormhole: + +- **Cross-chain exchange** - using [Wormhole Connect](/docs/build/transfers/connect/overview/){target=\_blank}, developers can build exchanges that allow deposits from any Wormhole-connected chain, significantly increasing liquidity access +- **[Cross-chain governance](https://wormhole.com/blog/stake-for-governance-is-now-live-for-w-token-holders){target=\_blank}** - NFT collections on different networks can use Wormhole to communicate votes cast on their respective chains to a designated "voting" chain for combined proposals +- **Cross-chain game** - games can be developed on a performant network like Solana, with rewards issued as NFTs on another network, such as Ethereum + +## Explore + +Discover more about the Wormhole ecosystem, components, and protocols: + +- **[Architecture](/docs/learn/infrastructure/architecture/){target=\_blank}** - explore the components of the protocol +- **[Protocol Specifications](https://github.com/wormhole-foundation/wormhole/tree/main/whitepapers){target=\_blank}** - learn about the protocols built on top of Wormhole + +## Demos + +Demos offer more realistic implementations than tutorials: + +- **[Wormhole Scaffolding](https://github.com/wormhole-foundation/wormhole-scaffolding){target=\_blank}** - quickly set up a project with the Scaffolding repository +- **[xDapp Book Projects](https://github.com/wormhole-foundation/xdapp-book/tree/main/projects){target=\_blank}** - run and learn from example programs + + + +!!! note + Wormhole Integration Complete? + + Let us know so we can list your project in our ecosystem directory and introduce you to our global, multichain community! + + **[Reach out now!](https://forms.clickup.com/45049775/f/1aytxf-10244/JKYWRUQ70AUI99F32Q){target=\_blank}** + +## Supported Blockchains + +Wormhole supports a growing number of blockchains. + + + +
+ +### EVM + +
BlockchainEnvironmentMainnetTestnetQuick Links
EthereumEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
AcalaEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
ArbitrumEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
AvalancheEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BaseEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BerachainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BlastEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
BNB Smart ChainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
CeloEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
FantomEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
GnosisEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
HyperEVMEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
InkEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
KaiaEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
KaruraEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
LineaEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MantleEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MezoEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MonadEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MoonbeamEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
NeonEVM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OasisEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OptimismEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
PolygonEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
ScrollEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
SeievmEVM:x::white_check_mark:
SNAXchainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
UnichainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
World ChainEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
X LayerEVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### SVM + +
BlockchainEnvironmentMainnetTestnetQuick Links
SolanaSVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
PythnetSVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### AVM + +
BlockchainEnvironmentMainnetTestnetQuick Links
AlgorandAVM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### CosmWasm + +
BlockchainEnvironmentMainnetTestnetQuick Links
InjectiveCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
NeutronCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
OsmosisCosmWasm:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
SeiCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
TerraCosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
Terra 2.0CosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
XPLACosmWasm:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### Move VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
AptosMove VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
MovementMove VM:x::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### NEAR VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
NEARNEAR VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +### Sui Move VM + +
BlockchainEnvironmentMainnetTestnetQuick Links
SuiSui Move VM:white_check_mark::white_check_mark: + :material-web: Website
+ :material-file-document: Developer Docs
+ :octicons-package-16: Block Explorer
+ +
+ +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/security/ +--- BEGIN CONTENT --- +--- +title: Security +description: Explore Wormhole's security features, including the Guardian network, governance, monitoring, open-source development, and bug bounty programs. +--- + +# Security + +## Core Security Assumptions + +At its core, Wormhole is secured by a network of [Guardian](/docs/learn/infrastructure/guardians/){target=\_blank} nodes that validate and sign messages. If a super majority (e.g., 13 out of 19) of Guardians sign the same message, it can be considered valid. A smart contract on the target chain will verify the signatures and format of the message before approving any transaction. + +- Wormhole's core security primitive is its signed messages (signed [VAAs](/docs/learn/glossary/#vaa){target=\_blank}) +- The Guardian network is currently secured by a collection of 19 of the world's top [validator companies](https://wormhole-foundation.github.io/wormhole-dashboard/#/?endpoint=Mainnet){target=\_blank} +- Guardians produce signed state attestations (signed VAAs) when requested by a Core Contract integrator +- Every Guardian runs full nodes (rather than light nodes) of every blockchain in the Wormhole network, so if a blockchain suffers a consensus attack or hard fork, the blockchain will disconnect from the network rather than potentially produce invalid signed VAAs +- Any Signed VAA can be verified as authentic by the Core Contract of any other chain +- [Relayers](/docs/learn/glossary/#relayer){target=\_blank} are considered untrusted in the Wormhole ecosystem + +In summary: + +- **Core integrators aren't exposed to risk from chains and contracts they don't integrate with** +- By default, you only trust Wormhole's signing process and the core contracts of the chains you're on +- You can expand your contract and chain dependencies as you see fit + +Core assumptions aside, many other factors impact the real-world security of decentralized platforms. Here is more information on additional measures that have been put in place to ensure the security of Wormhole. + +## Guardian Network + +Wormhole is an evolving platform. While the Guardian set currently comprises 19 validators, this is a limitation of current blockchain technology. + +### Governance + +Governance is the process through which contract upgrades happen. Guardians manually vote on governance proposals that originate inside the Guardian Network and are then submitted to ecosystem contracts. + +This means that governance actions are held to the same security standard as the rest of the system. A two-thirds supermajority of the Guardians is required to pass any governance action. + +Governance messages can target any of the various wormhole modules, including the core contracts and all currently deployed token bridge contracts. When a Guardian signs such a message, its signature implies a vote on the action in question. Once more than two-thirds of the Guardians have signed, the message and governance action are considered valid. + +All governance actions and contract upgrades have been managed via Wormhole's on-chain governance system. + +Via governance, the Guardians can: + +- Change the current Guardian set +- Expand the Guardian set +- Upgrade ecosystem contract implementations + +The governance system is fully open source in the core repository. See the [Open Source section](#open-source){target=\_blank} for contract source. + +## Monitoring + +A key element of Wormhole's defense-in-depth strategy is that each Guardian is a highly competent validator company with its own in-house processes for running, monitoring, and securing blockchain operations. This heterogeneous approach to monitoring increases the likelihood that fraudulent activity is detected and reduces the number of single failure points in the system. + +Guardians are not just running Wormhole validators; they're running validators for every blockchain inside of Wormhole as well, which allows them to perform monitoring holistically across decentralized computing rather than just at a few single points. + +Guardians monitor: + +- Block production and consensus of each blockchain - if a blockchain's consensus is violated, it will be disconnected from the network until the Guardians resolve the issue +- Smart contract level data - via processes like the Governor, Guardians constantly monitor the circulating supply and token movements across all supported blockchains +- Guardian level activity - the Guardian Network functions as an autonomous decentralized computing network, ensuring independent security measures across its validators + +## Asset Layer Protections + +One key strength of the Wormhole ecosystem is the Guardians’ ability to validate and protect the integrity of assets across multiple blockchains. + +To enforce the Wormhole Asset Layer’s core protections, the Global Accountant tracks the total circulating supply of all Wormhole assets across all chains, preventing any blockchain from bridging assets that could violate the supply invariant. + +In addition to the Global Accountant, Guardians may only sign transfers that do not violate the requirements of the Governor. The [Governor](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0007_governor.md){target=\_blank} tracks inflows and outflows of all blockchains and delays suspicious transfers that may indicate an exploit. + +## Open Source + +Wormhole builds in the open and is always open source. + +- **[Wormhole core repository](https://github.com/wormhole-foundation/wormhole){target=\_blank}** +- **[Wormhole Foundation GitHub organization](https://github.com/wormhole-foundation){target=\_blank}** +- **[Wormhole contract deployments](/docs/learn/infrastructure/core-contracts/){target=\_blank}** + +## Audits + +Wormhole has been heavily audited, with _29 third-party audits completed_ and more started. Audits have been performed by the following firms: + +- [Trail of Bits](https://www.trailofbits.com/){target=\_blank} +- [Neodyme](https://neodyme.io/en/){target=\_blank} +- [Kudelski](https://kudelskisecurity.com/){target=\_blank} +- [OtterSec](https://osec.io/){target=\_blank} +- [Certik](https://www.certik.com/){target=\_blank} +- [Hacken](https://hacken.io/){target=\_blank} +- [Zellic](https://www.zellic.io/){target=\_blank} +- [Coinspect](https://www.coinspect.com/){target=\_blank} +- [Halborn](https://www.halborn.com/){target=\_blank} +- [Cantina](https://cantina.xyz/welcome){target=\_blank} + +All audits and final reports can be found in [security page of the GitHub Repo](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md#3rd-party-security-audits){target=\blank}. + +## Bug Bounties + +Wormhole has one of the largest bug bounty programs in software development and has repeatedly shown commitment to engaging with the white hat community. + +Wormhole runs a bug bounty program through [Immunefi](https://immunefi.com/bug-bounty/wormhole/){target=\blank} program, with a top payout of **5 million dollars**. + +If you are interested in contributing to Wormhole security, please look at this section for [Getting Started as a White Hat](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md#white-hat-hacking){target=\blank}, and follow the [Wormhole Contributor Guidelines](https://github.com/wormhole-foundation/wormhole/blob/main/CONTRIBUTING.md){target=\blank}. + +For more information about submitting to the bug bounty programs, refer to the [Wormhole Immunefi page](https://immunefi.com/bug-bounty/wormhole/){target=\blank}. + +## Learn More + +The [SECURITY.md](https://github.com/wormhole-foundation/wormhole/blob/main/SECURITY.md){target=\blank} from the official repository has the latest security policies and updates. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/cctp/ +--- BEGIN CONTENT --- +--- +title: Circle's CCTP Bridge +description: Unlock fast USDC transfers with Wormhole's integration of Circle's CCTP, featuring automatic relaying via the Wormhole relayer and native gas solutions. +--- + +# Circle's CCTP Bridge + +Wormhole Connect and the Wormhole TypeScript SDK support fast, cheap, native USDC bridging between all networks supported by Circle's [Cross-Chain Transfer Protocol](https://www.circle.com/en/cross-chain-transfer-protocol){target=\_blank}. CCTP is Circle's native USDC cross-chain transfer attestation service. + +While this protocol is wholly separate from Wormhole itself, Wormhole builds on top of CCTP and adds several valuable augmentations, making it more straightforward to use and more useful for end users. These features include: + +- **Automated relaying** - eliminates the need for users to redeem USDC transfers themselves +- **Gas payment on the destination chain** - allows users to transfer USDC without needing to pay gas on the destination chain +- **Gas drop off** - enables users to convert a portion of USDC into the destination chain's gas token upon a successful transfer + +!!! note + Wormhole supports all CCTP-supported chains but at the moment only a [handful of chains](https://developers.circle.com/stablecoins/docs/supported-domains){target=\_blank} are supported by Circle. + +You can use Wormhole's CCTP-powered USDC bridging by embedding the [Connect Widget](/docs/build/transfers/connect/overview/){target=\_blank} or by integrating the [TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} directly. + +## Automatic Relaying + +To complete a CCTP transfer, the [Circle Attestation](https://developers.circle.com/api-reference/stablecoins/common/get-attestation){target=\_blank} must be delivered to the destination chain. + +This attestation delivery may be difficult or impossible in some contexts. For example, in a browser context, the user doesn't wish to wait for finality to deliver the attestation. To address this difficulty, the Wormhole CCTP relayer may be used either with the [Wormhole Connect Widget](/docs/build/transfers/connect/overview/){target=\_blank} or more directly with the [Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank}. + +The Wormhole CCTP Relayer charges a fee to deliver the attestation and complete the transfer. + +| Chain | Fee | +|:---------------:|:---------------:| +| Ethereum | 1.0 USDC | +| Everything else | 0.1 USDC | + + + +## Native Gas Drop Off + +Another advantage of using the automatic relaying feature is the opportunity to transfer some native gas to the receiver on the destination chain. This feature is referred to as _native gas drop off_. + +The ability to perform native gas drop off addresses the common issue where a user may hold a balance of USDC but has no native gas to perform subsequent transactions. + + +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/ +--- BEGIN CONTENT --- +--- +title: Multichain Transfers +description: This section introduces the core messaging protocols that power seamless multichain communication and asset transfer within the Wormhole ecosystem. +--- + +# Multichain Transfers + +These sections include information about Wormhole's transfer products to help you learn how they work and determine the best transfer product to fit your needs. + +Use the following links to jump directly to each Wormhole transfer product information page or continue for a product comparison: + +- [**Native Token Transfers (NTT)**](/docs/learn/transfers/native-token-transfers/) - a mechanism to transfer native tokens multichain seamlessly without converting to a wrapped asset +- [**Settlement**](/docs/learn/transfers/settlement/) - intent-based protocols enabling fast multichain transfers, optimized liquidity flows, and interoperability without relying on traditional bridging methods +- [**Token Bridge**](/docs/learn/transfers/token-bridge/) - a bridging solution that uses a lock and mint mechanism + +## Compare Transfer Products + +A few key comparisons can help you readily differentiate between Wormhole transfer product offerings. Use the following sections to help compare and select products: + +### NTT vs. Token Bridge + +Understand the key differences between Native Token Transfers (NTT) and Token Bridge to determine which solution best fits your needs. + +- Native Token Transfers (NTT) move tokens in their original form without wrapping them, ensuring compatibility with on-chain applications but requiring custom contracts on both the source and destination chains +- Token Bridge locks tokens on the source chain and mints wrapped versions on the destination chain. This method does not require changes to existing token contracts and supports additional message payloads for more complex use cases + +
+ +| Supports | NTT | Token Bridge | +|---------------------------|--------------------|--------------------| +| Message Payload | :white_check_mark: | :white_check_mark: | +| Wrapped Assets | :x: | :white_check_mark: | +| Native Assets | :white_check_mark: | :x: | +| Contract-Free Development | :x: | :white_check_mark: | +| User-Owned Contracts | :white_check_mark: | :x: | + +
+ +In the following video, Wormhole Foundation DevRel Pauline Barnades walks you through the key differences between Wormhole’s Native Token Transfers (NTT) and Token Bridge and how to select the best option for your use case: + +
+ + +### Settlement + +Settlement enables fast and efficient multichain transfers by optimizing liquidity without relying on traditional bridging methods. Unlike NTT, which moves native assets directly between chains, and Token Bridge, which locks tokens and mints wrapped versions, Settlement uses intent-based execution. Users specify the desired transfer outcome, and solvers compete to fulfill it most efficiently. + +By leveraging a decentralized solver network, Settlement ensures efficient cross-chain liquidity without locking assets or requiring asset wrapping, providing a seamless and capital-efficient solution for multichain transactions. + +## Additional Resources + +
+ +- :octicons-tools-16:{ .lg .middle } **Product Comparison** + + --- + + Compare Wormhole's multichain solutions for bridging, native transfers, data queries, and governance to enable seamless blockchain interoperability. + + [:custom-arrow: Compare Products](/docs/build/start-building/products/#transfer-products) + +- :octicons-book-16:{ .lg .middle } **Use Cases** + + --- + + Explore Wormhole's use cases, from multichain swaps to DeFi, lending, gaming, and more. See how projects integrate Wormhole solutions. + + [:custom-arrow: Discover Use Cases](/docs/build/start-building/use-cases/) + + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/architecture/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Architecture +description: Explore Wormhole's Native Token Transfers architecture, which covers components, message flow, rate limiting, and custom transceivers. +--- + +## Introduction + +The Native Token Transfers (NTT) architecture within the Wormhole ecosystem offers a robust framework for secure and efficient token transfers across multiple blockchains. This architecture relies on the manager and transceiver core components that work together to manage cross-chain communication and token operations complexities. + +For the technical implementations of the functions, refer to the [Managers and Transceivers](/docs/build/transfers/native-token-transfers/managers-transceivers/){target=\_blank} page. + +## System Components + +The NTT framework is composed of managers, which oversee the transfer process, and transceivers, which handle cross-chain messaging, ensuring smooth and reliable token transfers. + +### Managers + +_Managers_ are responsible for handling the flow of token transfers between different blockchains and ensuring that tokens are locked or burned on the source chain before being minted or unlocked on the destination chain. The main tasks of managers include rate-limiting transactions, verifying message authenticity (message attestation), and managing the interaction between multiple transceivers, who are responsible for cross-chain communications. + +Each manager is assigned to a specific token but can operate across multiple chains. Their key responsibility is to ensure that tokens are securely locked or burned on the source chain before being minted or unlocked on the destination chain. This provides the integrity of token transfers and prevents double-spending. + +A manager is responsible for: + +- **Handling token transfer flow** - upon a transfer request, `NttManager` either locks or burns tokens depending on the configuration, emits a `TransferSent` event, and ensures tokens can’t be accessed on the source chain before leasing them on the destination chain. This process safeguards against double-spending and maintains a secure transfer +- **Rate-limiting** - the `NttManager` contract includes rate-limiting functionality to prevent overloading the network or flooding the target chain. The `NttManager` applies rate limits to manage transfer flow and prevent network congestion. Limits apply to both outgoing and incoming transfers + - **Outbound** - transfers exceeding the outbound limit are queued (if `shouldQueue` is true) or reverted + - **Inbound** - similar limits apply on the destination chain, delaying transfers if capacity is exceeded + + Rate limit duration and queuing are customizable per chain, and events notify users when transfers hit the limit + +- **Message authenticity verification** - the `NttManager` ensures transfer security by verifying message authenticity through multiple attestations from transceivers. For each transfer, a threshold number of attestation signatures must be gathered from transceivers. Once verified, `NttManager` releases tokens on the destination chain, ensuring only authenticated transfers are processed +- **Interaction with transceivers** - `NttManager` collaborates with transceivers, forwarding transfer messages between chains and handling message verification. Transceivers route messages with transfer details to the destination chain, coordinating with `NttManager` to verify that tokens are locked or burned before releasing them on the other side. Transceivers can be customized to work with different security protocols, adding flexibility + +### Transceivers + +_Transceivers_ facilitate cross-chain token transfers by ensuring the accurate transmission of messages between different blockchains. They work in conjunction with managers to route token transfers from the source chain to the recipient chain. Their primary function is to ensure that messages regarding the transfer process are delivered correctly, and that tokens are safely transferred across chains. + +While transceivers operate closely with Wormhole's ecosystem, they can also be configured independently of Wormhole's core system, allowing for flexibility. This adaptability allows them to be integrated with various verification backends to accommodate different security needs or platform-specific requirements. + +Transceivers are entrusted with several responsibilities: + +- **Message transmission** - transceivers handle the routing of transfer messages between chains. When a transfer is initiated, the transceiver sends the message (including transfer details like recipient and amount) to the destination chain’s manager for verification and processing +- **Manager coordination** - transceivers work with managers to ensure tokens are locked or burned on the source chain before issuance on the destination chain, reinforcing the security of each transfer +- **Custom verification support** - transceivers can integrate with custom verification backends, allowing flexibility to adapt to different security protocols or chain requirements. This customization enables protocols to use different attestation standards as needed + +How it works: + +1. The transceiver receives instructions from the manager to send messages across chains +2. It quotes delivery fees, handles cross-chain message relaying, and verifies delivery to ensure tokens are safely transferred +3. For each message, the transceiver coordinates with managers, ensuring only authorized transfers are processed on the destination chain + +![NTT architecture diagram](/docs/images/learn/transfers/native-token-transfers/architecture/architecture-1.webp) + +!!! note + [Learn more](/docs/learn/transfers/native-token-transfers/architecture/#lifecycle-of-a-message){target=\_blank} about the architecture of Native Token Transfers message lifecycles. + +#### Custom Transceivers + +The NTT framework supports advanced features such as custom transceivers for specialized message verification, enhancing security and adaptability. The architecture includes detailed processes for initiating transfers, managing rate limits, and finalizing token operations, with specific instructions and events outlined for EVM-compatible chains and Solana. + +NTT has the flexibility to support custom message verification in addition to Wormhole Guardian message verification. Custom verifiers are implemented as transceiver contracts and can be protocol-specific or provided by other third-party attesters. Protocols can also configure the threshold of attestations required to mark a token transfer as valid — for example, 2/2, 2/3, 3/5. + +![Custom Attestation with NTT diagram](/docs/images/learn/transfers/native-token-transfers/architecture/architecture-2.webp) + +The verifier performs checks based on predefined criteria and issues approval for transactions that meet these requirements. This approval is incorporated into the Wormhole message, ensuring that only transactions verified by both the Wormhole Guardian Network and the additional verifier are processed. The model includes an extra verifier in the bridging process, enhancing security and providing an added assurance of transaction integrity. + +For more details, to collaborate, or to see examples of custom transceivers, [contact](https://discord.com/invite/wormholecrypto){target=\_blank} Wormhole contributors. + +## Lifecycle of a Message + +The lifecycle of a message in the Wormhole ecosystem for Native Token Transfers (NTT) involves multiple steps to ensure secure and accurate cross-chain token transfers. This lifecycle can vary depending on the blockchain being used, and the following explanations focus on the EVM and Solana implementations. The key stages include initiating the transfer, handling rate limits, sending and receiving messages, and finally, minting or unlocking tokens on the destination chain. + +### Transfer + +The process begins when a client initiates a transfer. For EVM, this is done using the `transfer` function, whereas in Solana, the client uses either the `transfer_lock` or `transfer_burn` instruction, depending on whether the program is in locking or burning mode. The client specifies the transfer amount, recipient chain ID, recipient address, and a flag (`should_queue` on both EVM and Solana) to decide whether the transfer should be queued if it hits the rate limit. + +In both cases: + +- If the source chain is in locking mode, the tokens are locked on the source chain to be unlocked on the destination chain +- If the source chain is in burning mode, the tokens are burned on the source chain, and new tokens are minted on the destination chain + +Once initiated, an event (such as `TransferSent` on EVM or a corresponding log on Solana) is emitted to signal that the transfer process has started. + +### Rate Limit + +Both EVM and Solana implement rate-limiting for transfers to prevent abuse or network overload. Rate limits apply to both the source and destination chains. If transfers exceed the current capacity, depending on whether the `shouldQueue` flag is set to true, they can be queued. + +- On EVM, the transfer is added to an outbound queue if it hits the rate limit, with a delay corresponding to the configured rate limit duration. If `shouldQueue` is set to false, the transfer is reverted with an error +- On Solana, the transfer is added to an **Outbox** via the `insert_into_outbox method`, and if the rate limit is hit, the transfer is queued with a `release_timestamp`. If `shouldQueue` is false, the transfer is reverted with a `TransferExceedsRateLimit` error + +Both chains emit events or logs when transfers are rate-limited or queued. + +### Send + +After being forwarded to the Transceiver, the message is transmitted across the chain. Transceivers are responsible for delivering the message containing the token transfer details. Depending on the Transceiver's implementation, messages may be routed through different systems, such as Wormhole relayers or other custom relaying solutions. Once the message is transmitted, an event is emitted to signal successful transmission. + +- In EVM, the message is sent using the `sendMessage` function, which handles the transmission based on the Transceiver's implementation. The Transceiver may use Wormhole relayers or custom relaying solutions to forward the message +- In Solana, the transfer message is placed in an Outbox and released via the `release_outbound` instruction. The Solana transceiver, such as the Wormhole Transceiver, may send the message using the `post_message` instruction, which Wormhole Guardians observe for verification + +In both cases, an event or log (e.g., `SendTransceiverMessage` on EVM or a similar log on Solana) is emitted to signal that the message has been transmitted. + +### Receive + +Upon receiving the message on the destination chain, an off-chain relayer forwards the message to the destination Transceiver for verification. + +- In EVM, the message is received by the `NttManager` on the destination chain, which verifies the message's authenticity. Depending on the M of N threshold set for the attestation process, the message may require attestations from multiple transceivers +- In Solana, the message is received via the `receive_message` instruction in the Wormhole Transceiver program. The message is verified and stored in a `VerifiedTransceiverMessage` account, after which it is placed in an Inbox for further processing + +In both chains, replay protection mechanisms ensure that a message cannot be executed more than once. Events or logs are emitted (e.g., `ReceivedMessage` on EVM or `ReceiveMessage` on Solana) to notify that the message has been successfully received. + +### Mint or Unlock + +Finally, after the message is verified and attested to, the tokens can be either minted (if they were burned on the source chain) or unlocked (if they were locked). The tokens are then transferred to the recipient on the destination chain, completing the cross-chain token transfer process. + +- On EVM, tokens are either minted (if burned on the source chain) or unlocked (if locked on the source chain). The `TransferRedeemed` event signals that the tokens have been successfully transferred +- On Solana, the tokens are unlocked or minted depending on whether the program is in locking or burning mode. The `release_inbound_unlock` or `release_inbound_mint` instruction is used to complete the transfer, and a corresponding log is produced + +In both cases, once the tokens have been released, the transfer process is complete, and the recipient receives the tokens. Events are emitted to indicate that the transfer has been fully redeemed. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/deployment/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers - Deployment Models +description: Explore Wormhole's Native Token Transfers deployment models——hub-and-spoke, burn-and-mint——for seamless cross-chain token transfers. +--- + +# Deployment Models + +The Wormhole framework offers two deployment models, each catering to different token management needs: the hub-and-spoke model and the burn-and-mint model. These models provide flexible solutions for both existing token deployments and new projects looking to enable secure and seamless multichain token transfers. + +## Hub-and-Spoke + +The hub-and-spoke model involves locking tokens on a central hub chain and minting them on destination spoke chains. This model maintains the total supply on the hub chain and is backward-compatible with any existing token deployment. + +This model is ideal for existing token deployments that don't want to alter existing token contracts. It maintains the canonical balance on a hub chain while allowing for secure native deployment to new blockchains. + +- **Hub chain** - tokens are locked when initiating a transfer +- **Spoke chains** - Equivalent tokens are minted on the destination chain + +When transferring tokens back to the original hub chain, the tokens on the source spoke chain are burned, and the previously locked tokens on the hub chain are unlocked. However, when transferring tokens directly between spoke chains, the tokens are burned on the source spoke chain and minted on the destination spoke chain. + +## Burn-and-Mint + +The burn-and-mint model involves burning tokens on the source chain and minting them on the destination chain. This results in a simplified multichain transfer process that distributes the total supply across multiple chains and produces a native multichain token. + +This model best suits new token deployments or projects willing to upgrade existing contracts. + +- **Source chain** - tokens are burned when initiating a transfer +- **Destination chain** - equivalent tokens are minted on the destination chain +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/ +--- BEGIN CONTENT --- +--- +title: A Quick Look at Native Token Transfers +description: This section covers Wormhole's Native Token Transfers (NTT), an open source, flexible, and composable framework for transferring tokens across blockchains. +--- + +# Native Token Transfers + +## Get Started + +This section covers Wormhole's Native Token Transfers (NTT), an open source, flexible, and composable framework for transferring tokens across blockchains. + +
+ +- :octicons-question-16:{ .lg .middle } **Overview** + + --- + + Dive into an introduction to NTT and discover what NTT is, what its key features are, and the available integration paths. + + [:custom-arrow: Learn more about NTT](/docs/learn/transfers/native-token-transfers/overview/) + +- :octicons-question-16:{ .lg .middle } **Architecture** + + --- + + Explore NTT's architecture to understand its core components and how they work together to manage cross-chain communication. + + [:custom-arrow: Discover how NTT works](/docs/learn/transfers/native-token-transfers/architecture/) + +- :octicons-book-16:{ .lg .middle } **Deployment Models** + + --- + + The NTT framework offers two deployment models for different token management needs: the hub-and-spoke and burn-and-mint models. + + [:custom-arrow: Check out the deployment models](/docs/learn/transfers/native-token-transfers/deployment/) + +- :octicons-shield-lock-16:{ .lg .middle } **Security** + + --- + + Explore NTT's security measures, including the Global Accountant and governance strategies for seamless token safety. + + [:custom-arrow: Review the security measures](/docs/learn/transfers/native-token-transfers/security/) + +
+ +## Next Steps + +Ready to dive in and start building? Check out the following resources to begin the deployment process and make the most of your deployment. + +
+ +- :octicons-rocket-16:{ .lg .middle } **Deploy NTT** + + --- + + Explore detailed guides that walk you through the entire deployment process, from installing the NTT CLI to deploying NTT across supported chains. + + [:custom-arrow: Deploy now using the NTT CLI](/docs/build/transfers/native-token-transfers/deployment-process/) + +- :octicons-checklist-16:{ .lg .middle } **Post Deployment Recommendations** + + --- + + Already deployed your NTT project? Check out these post deployment recommendations and integration demos to get the most out of your deployment. + + [:custom-arrow: Get the most of out your NTT deployment](/docs/build/transfers/native-token-transfers/deployment-process/post-deployment/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/overview/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Overview +description: Explore Wormhole's Native Token Transfers for flexible cross-chain transfers with full control over token behavior, security, and integration features. +--- + +# Native Token Transfers + +!!!tip "Looking to deploy NTT?" + If you're ready to deploy NTT or access the CLI, follow the detailed [NTT Deployment Section](/docs/build/transfers/native-token-transfers/deployment-process/){target=\_blank}. + + - For deployment steps on EVM, visit the [Deploy to EVM page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-evm/){target=\_blank} + - For deployment steps on Solana, visit the [Deploy to Solana page](/docs/build/transfers/native-token-transfers/deployment-process/deploy-to-solana/){target=\_blank} + +## Introduction + +Wormhole's Native Token Transfers (NTT) is an open source, flexible, and composable framework for transferring tokens across blockchains. By eliminating wrapped assets, NTT preserves each token’s native properties across chains, letting you maintain complete control over metadata, ownership, upgrade authority, and other custom features. + +The framework offers two modes of operation for existing token deployments. In locking mode, the original token supply is preserved on a single chain. In contrast, the burning mode enables the deployment of multichain tokens, distributing the supply across various chains. + +## Key Features + +Wormhole's Native Token Transfers (NTT) framework offers a comprehensive and flexible solution for seamless token transfers across blockchains. Below are some of the key features that make this framework stand out: + +- **No wrapped tokens** – tokens remain native on every chain where NTT is deployed. All token properties and metadata remain consistent, avoiding any confusion or overhead introduced by wrapped tokens +- **Unified user experience** - tokens retain their properties on each chain, remaining completely fungible and ensuring a consistent user experience +- **No liquidity pools** - transfer tokens without the need for liquidity pools, avoiding fees, slippage, and MEV risk +- **Integrator flexibility** - retained ownership, upgrade authority, and complete customizability over token contracts +- **Advanced rate limiting** - inbound and outbound rate limits are configurable per chain and over arbitrary periods, preventing abuse while managing network congestion and allowing for controlled deployments to new chains +- **Global Accountant** - ensures accounting integrity across chains by checking that the number of tokens burned and transferred out of a chain never exceeds the number of tokens minted +- **Access control** - to prevent unauthorized calls to administrative functions, protocols can choose to assign specific functions, such as the Pauser role, to a separate address from the owner +- **Maximum composability** - open source and extensible for widespread adoption and integration with other protocols +- **Custom attestation** - optionally add external verifiers and configure custom message attestation thresholds + +## Integration Paths + +Integrators looking to deploy their token to connected chains can use the NTT framework or the Token Bridge. Both options carry a distinct integration path and feature set depending on your requirements, as outlined in the following sections. + +### Native Token Transfers Framework + +The Native Token Transfers Framework is highly customizable and ideal for applications such as a DeFi governance token deployed across multiple chains, which seeks to achieve fungible multichain liquidity and direct integration into governance processes. + +- **Mechanism** - can entirely utilize a burn-and-mint mechanism or can be paired for a hub-and-spoke model +- **Security** - fully configurable rate limiting, pausing, access control, and threshold attestations. Integrated with the Global Accountant +- **Contract ownership** - retain ownership and upgrade authority of token contracts on each chain +- **Token contracts** - native contracts owned by your protocol governance +- **Integration** - streamlined, customizable framework allows for more sophisticated and bespoke deployments + +The following example projects demonstrate the use of the Wormhole NTT framework through Wormhole Connect and the TypeScript SDK: + +- [NTT Connect](https://github.com/wormhole-foundation/demo-ntt-connect){target=\_blank} +- [NTT TS SDK](https://github.com/wormhole-foundation/demo-ntt-ts-sdk){target=\_blank} + +### Token Bridge + +The Token Bridge offers a secure, low-effort integration suitable for applications like a Web3 game that wants to make its token tradable across multiple chains. + +- **Mechanism** - solely utilizes a lock and mint model. Unlike NTT, the Token Bridge issues a wrapped asset on the destination chain, rather than preserving the original token contract +- **Security** - preconfigured rate limiting and integrated Global Accountant +- **Contract ownership** - Token Bridge contracts are upgradeable via [Wormhole Governance](/docs/learn/security/){target=\_blank} +- **Token contracts** - wrapped asset contract owned by the Wormhole Token Bridge contract, upgradeable via a 13/19 Guardian governance process +- **Integration** - straightforward and permissionless method to deploy on multiple chains + +!!! note + [Learn more](/docs/learn/infrastructure/vaas/){target=\_blank} about the core messaging primitives in the Wormhole network. + +## Supported Token Standards + +Native Token Transfers (NTT) in Wormhole primarily support **ERC-20 tokens**, the most widely used standard for fungible tokens on the Ethereum network and other EVM-compatible blockchains. The NttManager contract leverages the IERC20 interface and SafeERC20 utility from OpenZeppelin to ensure secure and efficient token transfers. Additionally, it supports ERC-20 Burnable tokens, allowing tokens to be burned on the source chain when needed for cross-chain transfers. At this time, NTT focuses on ERC-20 tokens, and other token standards, such as ERC-721 (non-fungible tokens) or ERC-1155 (multi-token standard), are not natively supported. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/native-token-transfers/security/ +--- BEGIN CONTENT --- +--- +title: Native Token Transfers Security +description: Explore the security measures of Native Token Transfers, including the Global Accountant and governance strategies for seamless token safety. +--- + +# Security + +## Global Accountant + +The Global Accountant is a defense-in-depth security feature that checks the integrity of every token transfer. It ensures that chain balances remain isolated and more tokens cannot be burned and transferred out of a chain than were ever minted. + +This feature ensures native asset fungibility remains in 1:1 parity. At no time will assets coming from a spoke chain exceed the number of native assets sent to that spoke chain. The Guardians, with their role in enforcing accounting transparency, provide a reassuring layer of security, attesting to a Native Token Transfer (NTT) only if it passes integrity checks. + +[Contact](https://discord.com/invite/wormholecrypto){target=\_blank} Wormhole contributors if you are interested in configuring the Global Accountant for your multichain deployment. + +## Governance and Upgradeability + +Integrators should implement governance mechanisms to manage the addition and removal of transceivers and to upgrade contracts using proxy patterns, as demonstrated in the upgrade functions in the `NttManager` contracts. These processes can also set thresholds and rules for attestation and message approval. + +The registry component of the NTT system is crucial for maintaining a trusted list of transceivers and managing their status. Governance processes for the following actions can be submitted directly to the corresponding contract on-chain, whether it is one or multiple of the bridging contracts or one of the token contracts: + +- Adding or removing a transceiver address from the registry +- Setting the token contract address on a bridging contract +- Setting the Wormhole Core Contract address on a bridging contract +- Setting the registered bridging contract address on the token contract + +This governance model ensures that the system remains secure while being adaptable to new requirements in any environment where it is deployed. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/architecture/ +--- BEGIN CONTENT --- +--- +title: Settlement Protocol Architecture +description: Explore Wormhole Settlement's native swap protocols—Liquidity Layer, Mayan Swift, and MCTP—for scalable, efficient cross-chain asset transfers. +--- + +# Settlement Protocol Architecture + +## Introduction + +This page describes the high-level mechanics of the underlying native swap protocols in the Wormhole SDK. While built on Wormhole messaging, each protocol uses a novel architecture with unique price discovery, scalability, and latency tradeoffs. These designs enable redundancy to handle highly asymmetric flows and sharp volume changes. These sections will cover the following: + +- **Wormhole Liquidity Layer** - a cross-chain transfer protocol that utilizes Solana as the central orchestration layer for cross-chain intents, allowing solvers to deploy liquidity from a single Solana-based hub rather than distributing it across each supported chain +- **Mayan Swift** - a flexible cross-chain intent protocol that embeds a competitive on-chain price auction to determine the best possible execution for the expressed user intent +- **Mayan MCTP** - a cross-chain intents protocol that leverages Circle's CCTP (Cross-Chain Transfer Protocol) mechanism and Wormhole messaging to enable secure, fee-managed asset transfers across chains + +## Wormhole Liquidity Layer + +Wormhole Liquidity Layer is a cross-chain transfer protocol that enables faster-than-finality transfers across the Wormhole ecosystem through a novel, Solana-based hub-and-spoke architecture. The hub-and-spoke model leverages interoperable token standards like Circle's CCTP (and Wormhole's NTT), allowing the solver to natively mint and burn assets between chains for intent fulfillment. This architecture allows solvers to facilitate cross-chain transfers by fronting assets on the destination chain and assuming the finality risk of the originating source chain transaction. + +Solvers concentrate their liquidity entirely on Solana, where they participate in permissionless on-chain English auctions (open ascending-price auctions where bidders publicly raise bids until only one bidder remains) to fulfill each cross-chain transfer. Upon the conclusion of each auction, the winning solver initiates a transfer from Solana to the specified destination chain. The solver rebalances inventory once the originating source chain transaction reaches finality and arrives to Solana. + +![Wormhole Settlments Liquidity layer architecture diagram: source chain to hub to destination chain](/docs/images/learn/transfers/settlement/architecture/architecture-1.webp) + +The Wormhole Liquidity Layer serves as the underlying chain abstraction infrastructure layer for protocols across Wormhole-connected ecosystems by enabling protocols to bundle call data containing arbitrary protocol actions, which can be executed atomically alongside each transfer. This feature allows developers to create fully chain-abstracted user experiences, including constructing natively cross-chain decentralized exchanges (DEXs), borrow-lend protocols, payment protocols, and other applications atop this layer. + +### Solvers and Liquidity Fragmentation + +Traditional intent-based protocols require solvers to distribute their capital across each supported chain in the network. This liquidity fragmentation leads to capital inefficiency and requires complex rebalancing to manage asymmetric flows between chains. As the number of chains increases, solvers face scalability challenges, which can result in market concentration, reducing competition and potentially impacting price discovery in intent execution. + +Using a hub-and-spoke model, the Wormhole Liquidity Layer solves these challenges by consolidating solver liquidity on a single chain, Solana. This model eliminates the need for complex cross-chain rebalancing and simplifies solvers' infrastructure requirements. Solvers only need to consider the finality risk of the originating source chain transaction and the payload size when bidding on transfers. By concentrating liquidity on Solana, the protocol can handle large transfer volumes with a smaller capital base, enhancing capital efficiency and lowering barriers to entry for solvers. This approach promotes competition, improves overall market efficiency, and ultimately benefits users with better prices while still preserving the speed of transactions. + +### Enable Unified Liquidity + +The novel hub-and-spoke liquidity architecture relies on interoperable token standards that enable cross-chain token fungibility, such as Circle's Cross-Chain Transfer Protocol (CCTP) and Wormhole's Native Token Transfers (NTT). These protocols allow assets to move seamlessly between chains, making unified liquidity possible. On the liquidity hub (Solana), solvers concentrate their liquidity in NTT or CCTP-supported assets, such as USDC. These assets act as the shuttle between chains but may not necessarily be the user's original or final asset. + +After the Solana auction concludes, the appropriate instructions are called on the CCTP or NTT contract, initiating the transfer from Solana to the destination chain by burning/locking the asset on Solana and sequentially minting on the destination chain. Solvers rebalance their inventory on Solana using these interoperable token standards as well. Once the originating source chain transaction reaches finality and arrives to Solana, the solver can redeem the NTT or CCTP message, minting the inventory for use once again. + +By leveraging interoperable token standards like NTT, this model of liquidity facilitation for cross-chain intents can arbitrarily scale to any chain or ecosystem while preserving fully unified liquidity—eliminating the need for solver "buy-in" for new chain expansion. Additionally, this means new chains, even without proven traction, can access the same amount of liquidity for cross-chain intent fulfillment from day one of mainnet launch as they would if they were long-standing ecosystems with clear evidence of adoption — commonly overlooked by solvers who must aggressively prioritize high flow chains to due high opportunity costs. This includes new ecosystems without Centralized Exchange (CEX) enabled withdrawals. + +### Protocol Flow: How It Works + +1. **Initiation** - users or protocols initiate a transfer via an interface or directly on-chain. They choose between a standard transfer (waiting for finality on the sending chain) or a fast transfer (triggering the auction process). For fast transfers, users or the protocol specify a maximum fee and an auction start deadline + + !!! Note + If an auction doesn't start within the set deadline, a standard transfer will proceed directly from the source to the destination chain. + +2. **Auction** - solvers monitor the Wormhole network for these fast transfer requests and initiate an auction on Solana by offering to fulfill the transfer at or below the user's maximum fee. To start the auction, the solver must transfer the requested funds plus a small security deposit to the Matching Engine contract +3. **Competition** - once initiated, other solvers can participate by submitting lower bids in a simple English auction, aiming to provide users with the best rate. If a new solver submits a better offer, the previous solver's funds and security deposit are returned, with the latest offer taking precedence atomically. This competition ensures that users receive the best possible transfer rate +4. **Fulfillment** - after the auction concludes, the winning solver must complete the transfer within a predefined grace period to earn their fee and reclaim their security deposit. Failure to do so may result in the security deposit being slashed, with the slashed amount compensating the user for delays. This mechanism incentivizes prompt execution. Upon successful completion, the Fast Transfer hub sends the USDC to the user's destination wallet, and the solver receives their security deposit and transfer fee +5. **Settlement** - once the source chain transaction reaches finality, the winning solver can use the finalized Wormhole message to settle the auction with the matching engine and rebalance. This allows the solver to retrieve the original transfer amount into their wallet + +## Mayan Swift + +Mayan Swift is a flexible cross-chain intent protocol that embeds a competitive on-chain price auction to determine the best possible execution for the expressed user intent. + +### On-Chain Competitive Price Discovery Mechanism + +Traditional intent-based protocols essentially function as cross-chain limit orders. If the order is profitable, solvers will compete to fulfill it, leading to MEV-like competition focused on speed. While functional, this methodology presents two clear inefficiencies and drawbacks. + +First, they lack a competitive price discovery mechanism as limit order prices are typically determined through centralized off-chain systems. Second, in this MEV-like market structure, only a single solver can win, while the others lose out on transaction fees. This dynamic of deadweight loss results in solvers prioritizing high-margin orders, ultimately resulting in elevated fees for end-users without commensurate benefits. + +Mayan Swift addresses these limitations by implementing competitive on-chain English auctions on Solana as an embedded price discovery mechanism, fundamentally shifting solver competition from speed-based to price-based execution. Through this architecture, the solver offering the best possible price secures the right to fulfill the order within pre-specified deadline parameters. + +![Mayan Swift - Intent-centric design](/docs/images/learn/transfers/settlement/architecture/architecture-2.webp) + +### Protocol Flow: How It Works + +1. **Initiation** - the user creates an order by signing a transaction that locks one of the primary assets (USDC or ETH) into the Mayan smart contract, specifying the desired outcome. + + !!!note + If the input asset is not a primary asset, it is converted into a primary asset within the same transaction before the order is submitted. + + Each order includes properties such as destination chain, destination wallet address, output token address, minimum output amount, gas drop amount, deadline, and 32 bytes of random hex to prevent collisions. A Keccak-256 hash is then calculated to identify the order + +2. **Auction** - solvers observe on-chain data or subscribe to the Mayan explorer web socket (solvers using the Mayan explorer verify the order's integrity by checking the data against the on-chain hash). Once the new order is verified, an on-chain auction on Solana is initiated by passing the order ID and the bid amount, which cannot be lower than the minimum amount. Other solvers can increase the bid by submitting a higher amount before the auction ends +3. **Fulfillment** - the auction ends three seconds after the initial bid. Once the auction ends, the winning solver can execute an instruction that passes their wallet address on the destination chain. This triggers a Wormhole message containing the order ID and the winner's wallet address. Wormhole Guardians then sign this message, allowing the winning solver to fulfill the order on the destination chain by submitting proof of their win and the promised amount to the Mayan contract before the deadline. The Mayan contract deducts a protocol fee (currently 3 basis points) and a referral fee (if applicable), transferring the remaining amount to the user's destination wallet. It also triggers a Wormhole message as proof of fulfillment +4. **Settlement** - after the Wormhole Guardians sign the fulfillment message, the winning solver can submit this message on the source chain to unlock the user's funds and transfer them to their own wallet. Upon fulfillment, the solver has the option to delay triggering a Wormhole message immediately. Instead, they can batch the proofs and, once the batch reaches a certain threshold, issue a batched proof to unlock all orders simultaneously, saving on gas fees + +## Mayan MCTP + +Mayan MCTP is a cross-chain intents protocol that leverages Circle's CCTP (Cross-Chain Transfer Protocol) mechanism and Wormhole messaging to enable secure, fee-managed asset transfers across chains. + +![Mayan MCTP diagram](/docs/images/learn/transfers/settlement/architecture/architecture-3.webp) + +### Protocol Flow: How It Works + +1. **Initiation** - the user creates an order by signing a transaction that locks one USDC into the Mayan smart contract, specifying the desired outcome. + + !!!note + If the input asset is not USDC, it is converted into a primary asset within the same transaction before the order is submitted. + + The contract constructs a `BridgeWithFeeMsg` structure, which includes parameters such as the action type, payload type, nonce, destination address, gas drop, redeem fee, and an optional custom payload hash + +2. **Intent submission** - the contract calls the CCTP messenger to deposit the tokens for bridging. A unique nonce is generated, and a corresponding fee-lock record is created in the contract's storage. This record includes the locked fee, gas drop parameters, and destination details. The constructed message is hashed and published through Wormhole. The protocol fee is deducted during this step, and the Wormhole message is broadcast with the specified [consistency (finality) level](/docs/build/reference/consistency-levels/){target=\_blank} +3. **Fulfillment** - on the destination chain, the protocol receives a CCTP message with corresponding signatures and verifies the payload using Wormhole's verification mechanism. Once validated, the redeemed tokens are transferred to the intended recipient, deducting the redeem fee as per protocol rules + +The protocol provides mechanisms for unlocking the fee once the bridging process is completed. This can occur immediately upon fulfillment or be batched for efficiency. In the fee unlock flow, the contract verifies the unlock message via Wormhole and then releases the locked fee to the designated unlocker address. + +## Where to Go Next + +- To learn more about available EVM functions, see the [Build on the Wormhole Liquidity Layer](/docs/build/transfers/settlement/liquidity-layer/){target=\_blank} guide +- To learn how to integrate settlement routes into your application, see the [Integrate Wormhole Settlement Routes Using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank} tutorial +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement +description: Learn about Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. +--- + +# Wormhole Settlement + +## Get Started + +This section covers Wormhole Settlement, an intent-based solution enabling fast and efficient asset transfers across Ethereum, Solana, Sui, and more. + +
+ +- :octicons-question-16:{ .lg .middle } **Overview** + + --- + + Discover Wormhole Settlement, enabling fast, intent-based asset transfers across Ethereum, Solana, Sui, and more for institutions and builders. + + [:custom-arrow: Learn more about Wormhole Settlement](/docs/learn/transfers/settlement/overview/) + +- :octicons-question-16:{ .lg .middle } **Protocol Architectures** + + --- + + Explore Wormhole Settlement's native swap protocols—Liquidity Layer, Mayan Swift, and MCTP — for scalable, efficient cross-chain asset transfers. + + [:custom-arrow: Discover protocol architectures](/docs/learn/transfers/settlement/architecture/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/settlement/overview/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlement Overview +description: Discover Wormhole Settlement, enabling fast, intent-based asset transfers across Ethereum, Solana, Sui, and more for institutions and builders. +--- + +# Wormhole Settlement Overview + +## Introduction + +Wormhole Settlement is a fast, institutional-scale digital asset settlement — a new way to transfer assets across chains. + +With Wormhole Settlement, an intent-based asset transfer for individual users and institutions, you can swap, bridge, and build across multiple chains. You can implement cross-chain functionality within your dApps extremely simply and without compromising user experience, widening the horizons of your product offerings and the number and type of users you can cater to. + +The Settlement supports Ethereum, Ton, Optimism, Arbitrum, Base, Avalanche, Unichain, Polygon, Solana, and Sui, with many more on the horizon. It is powered by Wormhole Messaging, Wormhole Native Token Transfer (NTT), and Circle's CCTP and built in collaboration with the intent experts at Mayan Finance. + +Settlement represents Wormhole's first step towards optimizing the bridging experience and building a product that users and institutions use daily. Use it to send assets between chains, rebalance institutional inventories on-chain cheaply and quickly, or allow your application to be accessible by any user no matter what assets they hold or what chain they call home. + +## Key Features + +- **Integrator flexibility** - apps leveraging the SDK can select any one of three potential routes surfaced, each with its tradeoffs concerning time vs cost; they may extend this to users as well +- **Scalable liquidity** - taking into account the sometimes idiosyncratic yet sharp inflows into the Solana ecosystem, the hub-spoke model of the Wormhole Liquidity Layer and the flexible design of Swift are designed for capital efficiency +- **Arbitrary payload support** - integrators can bundle `callData` containing arbitrary protocol actions to enable seamless one-click user experiences, such as swap plus stake + +## Integrator Paths + +### SDK Integrators + +Wormhole provides an SDK that enables apps to abstract away the complexity of cross-chain token swaps. The SDK handles route discovery, fee estimation, and transaction construction. Apps can embed this feature in their backend or create an interface for users to bridge into their respective ecosystems quickly. + +### NTT Integrators + +NTT partners, current and future, can leverage Wormhole Settlement for near-instant NTT transfers from any chain, including Ethereum mainnet and its L2s. This eliminates waiting for slow source chain confirmation times (sometimes 15 minutes or more). If interested, please [fill out this interest form](https://wormhole.com/contact){target=\_blank}. + +### Chain Integrators + +Due to the hub-spoke model of liquidity, new chains without proven traction can access the same level of liquidity for cross-chain intent fulfillment from day one of mainnet launch as established ecosystems with clear evidence of adoption. + +!!!tip + Looking to integrate Wormhole Settlement? If you're ready, check out how to [integrate Wormhole Settlement Routes using the SDK](https://github.com/wormhole-foundation/demo-mayanswift){target=\_blank}. + +## Related Resources + +- To learn more about the architecture of Wormhole-native swap protocols, see the [Settlement Protocol Architectures](/docs/learn/transfers/settlement/architecture/){target=\_blank} page +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/learn/transfers/token-bridge/ +--- BEGIN CONTENT --- +--- +title: Token Bridge +description: Learn about Wormhole's Token Bridge for cross-chain transfers using lock and mint mechanisms, ensuring secure and efficient asset movement. +--- + +# Token Bridge + +Transferring tokens across blockchain networks is challenging due to the lack of interoperability. Maintaining token properties such as value, name, and precision while ensuring security during transfers often requires complex and costly solutions like liquidity pools or native swaps, which can introduce inefficiencies and risks. + +Wormhole’s Token Bridge addresses these challenges by providing a decentralized protocol for seamless cross-chain token transfers through a lock-and-mint mechanism. Using Wormhole’s message-passing protocol, the Token Bridge allows standards-compliant tokens, like ERC-20 on Ethereum or SPL on Solana, to be transferred between different blockchains while preserving their original attributes. + +Offering a more efficient, scalable, and secure alternative to traditional solutions, the Token Bridge ensures that assets retain their properties across multiple blockchain ecosystems. Additionally, it supports flexible features like [Contract Controlled Transfers](/docs/learn/infrastructure/vaas/#token-transfer-with-message){target=\_blank}, enabling custom interactions by allowing tokens to carry additional data for smart contract integration on the destination chain. + +This page introduces the core concepts and functions of Wormhole’s Token Bridge, explaining how it operates, its key features, and how it enables secure and efficient cross-chain token transfers. + +### How Does It Work? + +At the core of the Token Bridge lies the lock-and-mint mechanism, which uses the [Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank} with a specific [payload](/docs/learn/infrastructure/vaas/#token-transfer){target=\_blank} to pass information about the transfer. Tokens on the source chain are locked, and wrapped tokens are minted on the destination chain. This approach guarantees that token transfers are secure and consistent, ensuring that token properties such as name, symbol, and decimal precision are preserved across chains. + +Before a token can be transferred to a new chain, the token’s metadata must be [attested](/docs/learn/infrastructure/vaas/#attestation){target=\_blank}. This process registers the token details (such as decimals and symbol) on the destination chain, enabling the creation of wrapped assets. + +While the [Core Contract](/docs/learn/infrastructure/core-contracts/){target=\_blank} has no specific receiver by default, transfers sent through the Token Bridge do have a specific receiver chain and address to ensure the tokens are minted to the expected recipient. + +In addition to standard token transfers, the Token Bridge supports [Contract Controlled Transfers](/docs/learn/infrastructure/vaas/#token-transfer-with-message){target=\_blank}. This functionality allows users to attach additional data to token transfers, enabling more complex interactions with smart contracts on the destination chain. For instance, a token transfer can include a payload that triggers specific actions, such as interacting with a decentralized exchange (DEX) or automated market maker (AMM). + +### Token Transfer Flow + +The transfer process is simple yet secure, involving a few key steps: + +1. **Attestation** - first, a token's metadata is attested on the source chain, ensuring that its properties are consistent across chains +2. **Locking** - on the source chain, the native token is locked in a custody account +3. **Message emission** - a message detailing the transfer is sent through Wormhole’s Guardian Network, which verifies the transfer and signs the message +4. **Verification and minting** - on the destination chain, the transfer message is verified, and wrapped tokens are minted, or native tokens are released from custody + +![Token Bridge detailed flow](/docs/images/learn/transfers/token-bridge/token-bridge-diagram.webp) + +### Key Features of the Token Bridge + +The Token Bridge creates wrapped versions when tokens are transferred to a different chain. These wrapped assets represent the locked tokens on the source chain and allow users to interact with them on the destination chain. This mechanism ensures seamless functionality without needing liquidity pools or native token swaps. + +The Token Bridge employs a universal token representation that is compatible with various virtual machine (VM) data types. This allows the tokens to interact with decentralized applications (dApps) across different chains without issues related to differing token standards. + +### Message and Payload Structure + +To facilitate cross-chain communication, the Token Bridge uses specialized payloads that carry the necessary information for token transfers and attestations. These payloads ensure that the correct tokens are minted or unlocked on the destination chain. + +- `Transfer` - this payload initiates the transfer of tokens, either by minting wrapped tokens or releasing locked tokens +- `TransferWithPayload` - in addition to transferring tokens, this payload carries additional data, allowing integration with smart contracts or dApps on the target chain +- `AssetMeta` - before a token can be transferred for the first time, this payload is used to attest to the token’s metadata, including decimals, symbol, and name +- `RegisterChain` - register the Token Bridge contract (emitter address) for a foreign chain +- `UpgradeContract` - upgrade the contract + +Each payload type is designed to serve a specific function in the token transfer process, ensuring that the bridge operates efficiently and securely. + +One of the key challenges in cross-chain token transfers is maintaining the correct token precision. The Token Bridge addresses this using the `AssetMeta` payload to store token metadata. Before transferring a token to a new chain, metadata such as its decimal precision, name, and symbol must be attested. The bridge ensures token amounts are truncated to a maximum of 8 decimals, guaranteeing compatibility with chains that may not support higher decimal precision. For example, an 18-decimal token on Ethereum will be represented with only eight decimals on the destination chain, simplifying integration with various decentralized applications. + +### Security and Authorization + +The Token Bridge uses an emitter chain and address authorization system to verify the validity of messages. Each Token Bridge endpoint is registered on its respective chain, ensuring only trusted contracts can send or receive transfer messages. + +The [Wormhole Guardian Network](/docs/learn/infrastructure/guardians/#guardian-network){target=\_blank} plays a critical role in verifying each transfer and ensuring that the message is signed and relayed securely between chains. + +### Portal Bridge + +A real-world example of Wormhole's Token Bridge in action is the [Portal Bridge](https://portalbridge.com/){target=\_blank}, which provides users with a simple interface to transfer tokens across multiple blockchains. Using the Wormhole infrastructure, Portal Bridge guarantees secure and seamless cross-chain transfers, making it easier for users to move assets between different blockchain ecosystems. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/connect/ +--- BEGIN CONTENT --- +--- +title: Wormhole Connect Tutorials +description: Enable cross-chain connectivity with Wormhole Connect. Learn integration and simplify user experiences across multiple blockchains. +--- + +# Connect Tutorials + +Wormhole Connect makes it simple to link your application to multiple blockchain ecosystems. These tutorials will teach you how to integrate Connect into your projects, streamline cross-chain interactions, simplify user onboarding, and deliver a smoother overall experience. + +
+ +- :octicons-repo-16:{ .lg .middle } **Integrate Connect into a React DApp** + + --- + + Learn how to incorporate Wormhole Connect into a React application. This step-by-step tutorial guides you through enabling cross-chain token transfers and interactions, bridging assets between networks, and enhancing the user experience with streamlined blockchain connectivity. + + [:custom-arrow: Start building](/docs/tutorials/by-product/connect/react-dapp/) + +
+ +## Additional Resources + +
+ +- :octicons-tools-16:{ .lg .middle } **Connect** + + --- + + Get deeper insights into setting up and customizing Wormhole Connect. Explore advanced guides, best practices, and configuration tips to streamline your cross-chain integrations. + + [:custom-arrow: Learn more](/docs/build/transfers/connect/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/connect/react-dapp/ +--- BEGIN CONTENT --- +--- +title: Integrate Connect into a React DApp Tutorial +description: Learn how to use Wormhole Connect to transfers tokens cross-chain seamlessly between Sui and Avalanche Fuji with this step-by-step guide. +--- + +# Integrate Connect into a React DApp + +:simple-github: [Source code on GitHub](https://github.com/wormhole-foundation/demo-basic-connect){target=\_blank} + +## Introduction + +In this tutorial, we’ll explore how to integrate [Wormhole Connect](https://github.com/wormhole-foundation/wormhole-connect){target=\_blank} to enable cross-chain token transfers and interactions. Wormhole Connect offers a simplified interface for developers to facilitate seamless token transfers between blockchains. Using Wormhole Connect, you can easily bridge assets across multiple ecosystems without diving into the complex mechanics of cross-chain communication. + +While this tutorial will guide you through the process using a specific blockchain as an example, the principles and steps outlined here can be applied to any blockchain supported by Wormhole. In this example, we’ll work with Sui as our source blockchain and Avalanche Fuji as the destination blockchain. + +## Prerequisites + +To get started with Wormhole Connect, we'll first need to set up a basic environment that allows for cross-chain token transfers. +Before starting this tutorial, ensure you have the following: + +- [Node.js and npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm){target=\_blank} installed on your machine +- A [Sui wallet](https://suiwallet.com/){target=\_blank} set up and ready for use +- A [compatible wallet](https://support.avax.network/en/articles/5520938-what-are-the-official-avalanche-wallets){target=\_blank} for Avalanche Fuji, such as [MetaMask](https://metamask.io/){target=\_blank} +- Testnet tokens for [Sui](https://docs.sui.io/guides/developer/getting-started/get-coins){target=\_blank} and [Fuji](https://core.app/tools/testnet-faucet/?subnet=c&token=c){target=\_blank} to cover gas fees + +## Set Up Connect for Sui Transfers + +### Create a React Project + +Start by setting up your React app: + +1. Open your terminal and run the following command to create a new React app: + + ```bash + npx create-react-app connect-tutorial + ``` + +2. Navigate into the project directory: + + ```bash + cd connect-tutorial + ``` + +### Install Wormhole Connect + +Next, install the Wormhole Connect package as a dependency by running the following command inside your project directory: + +```bash +npm install @wormhole-foundation/wormhole-connect +``` + +### Integrate Connect into the Application + +Now, we need to modify the default `App.js` file to integrate Wormhole Connect. We are going to use [version V1.0](/docs/build/transfers/connect/upgrade/){target=\_blank}, make sure to check which version of connect you are using. Open `src/App.js` and replace the content with the following code: + +=== "JavaScript" + + ```js + import logo from './logo.svg'; + import './App.css'; + import WormholeConnect from '@wormhole-foundation/wormhole-connect'; + + const config = { + network: 'Testnet', + chains: ['Sui', 'Avalanche'], + }; + + function App() { + return ; + } + + export default App; + ``` + +=== "TypeScript" + + ```ts + import './App.css'; + import WormholeConnect, { + WormholeConnectConfig, + WormholeConnectTheme, + } from '@wormhole-foundation/wormhole-connect'; + + function App() { + const config: WormholeConnectConfig = { + network: 'Testnet', + chains: ['Sui', 'Avalanche'], + + ui: { + title: 'SUI Connect TS Demo', + }, + }; + + const theme: WormholeConnectTheme = { + mode: 'dark', + primary: '#78c4b6', + }; + + return ; + } + + export default App; + ``` + +- Set `network` to `testnet` - this ensures that Wormhole Connect uses the testnet environment +- Set `chains` to `['Sui', 'Avalanche']` - configures the app to allow transfers between Sui and Avalanche Fuji, the testnet for Avalanche + +### Customize Wormhole Connect + +To further customize Wormhole Connect for your application, such as adjusting the UI, adding custom tokens, or configuring specific chain settings, you can refer to the [Wormhole Connect Configuration guide](/docs/build/transfers/connect/configuration/#introduction){target=\_blank}. + +### Run the Application + +Make sure you’re in the root directory of your React app, and run the following command to start the application: + +```bash +npm start +``` + +Now your React app should be up and running, and Wormhole Connect should be visible on `http://localhost:3000/`. You should see the Wormhole Connect component, which will include a UI for selecting networks and tokens for cross-chain transfers. + +## Transfer Tokens from Sui to Fuji + +Before transferring token ensure you have enough testnet SUI and Fuji tokens to cover the gas fees for the transfer. + +To transfer tokens from Sui to Fuji in the Wormhole Connect interface: + +1. Select **Sui** as the source network, connect your Sui wallet, and choose **SUI** as the asset you wish to transfer +2. Choose **Fuji** as the destination network and connect your wallet with the Fuji network +3. Enter the amount of SUI tokens you wish to transfer + + ![](/docs/images/tutorials/by-product/connect/react-dapp/connect-1.webp) + +4. Choose to view other routes + + ![](/docs/images/tutorials/by-product/connect/react-dapp/connect-2.webp) + +5. Select the manual bridge option, which will require two transactions: one on the source chain (Sui) and one on the destination chain (Fuji) + + !!! note + It is recommended to use the manual bridge option for this tutorial. The automatic bridge feature is currently undergoing improvements, while the manual bridge ensures that transfers complete successfully. + + ![](/docs/images/tutorials/by-product/connect/react-dapp/connect-3.webp) + +6. Review and confirm the transfer on Sui. This will lock your tokens on the Sui chain + + ![](/docs/images/tutorials/by-product/connect/react-dapp/connect-4.webp) + +7. Follow the on-screen prompts to approve the transaction. You will be asked to sign with your Sui wallet + + ![](/docs/images/tutorials/by-product/connect/react-dapp/connect-5.webp) + +Once the transaction has been submitted, Wormhole Connect will display the progress of the transfer. Monitor the status until you’re prompted to complete the transaction on the destination chain. You can also track your transactions on [Wormholescan](https://wormholescan.io/#/?network=Testnet){target=\_blank}. + +## Claim Tokens on Fuji + +After the Sui transaction is complete, confirm the final transaction on Fuji by claiming the wrapped tokens. You will be asked to confirm the transaction with your Fuji wallet. + +![](/docs/images/tutorials/by-product/connect/react-dapp/connect-6.webp) + +Once confirmed, check your Fuji wallet to verify that the wrapped SUI tokens have been successfully received. + +![](/docs/images/tutorials/by-product/connect/react-dapp/connect-7.webp) + +## Resources + +If you'd like to explore the complete project or need a reference while following this tutorial, you can find the entire codebase in the [Sui-Connect GitHub repository](https://github.com/wormhole-foundation/demo-basic-connect){target=\_blank}. The repository includes an integration of Wormhole Connect in a React app for bridging tokens between the Sui and Fuji (Avalanche Testnet) networks. + +## Conclusion + +In this tutorial, you’ve gained hands-on experience with integrating Wormhole Connect to enable cross-chain token transfers. You’ve learned to configure a React app for seamless interactions between Sui and Avalanche Fuji, providing users with the ability to bridge assets across chains with ease. + +By following these steps, you've learned how to: + +- Set up a React project tailored for cross-chain transfers +- Install and configure Wormhole Connect to support multiple blockchains +- Implement a streamlined UI for selecting source and destination chains, connecting wallets, and initiating transfers +- Execute a token transfer from Sui to Avalanche Fuji, monitoring each step and confirming the transaction on both networks + +With these tools and knowledge, you’re now equipped to build powerful cross-chain applications using Wormhole Connect, opening up possibilities for users to move assets across ecosystems securely and efficiently. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/ +--- BEGIN CONTENT --- +--- +title: Create Cross-Chain Contracts +description: Learn how to create cross-chain contracts using Wormhole's Solidity SDK. Deploy contracts on Avalanche and Celo Testnets and send messages across chains. +--- + +# Create Cross-Chain Messaging Contracts + +:simple-github: [Source code on GitHub](https://github.com/wormhole-foundation/demo-wormhole-messaging){target=\_blank} + +## Introduction + +Wormhole's cross-chain messaging allows smart contracts to interact seamlessly across multiple blockchains. This enables developers to build decentralized applications that leverage the strengths of different networks, whether it's Avalanche, Celo, Ethereum, or beyond. In this tutorial, we'll explore using [Wormhole's Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank} to create cross-chain contracts to send and receive messages across chains. + +Wormhole's messaging infrastructure simplifies data transmission, event triggering, and transaction initiation across blockchains. In this tutorial, we'll guide you through a simple yet powerful hands-on demonstration that showcases this practical capability. We'll deploy contracts on two Testnets—Avalanche Fuji and Celo Alfajores—and send messages from one chain to another. This tutorial is perfect for those new to cross-chain development and seeking hands-on experience with Wormhole's powerful toolkit. + +By the end of this tutorial, you will have not only built a fully functioning cross-chain message sender and receiver using Solidity but also developed a comprehensive understanding of how to interact with the Wormhole relayer, manage cross-chain costs, and ensure your smart contracts are configured correctly on both source and target chains. + +This tutorial assumes a basic understanding of Solidity and smart contract development. Before diving in, it may be helpful to review [the basics of Wormhole](/docs/learn/){target=\_blank} to familiarize yourself with the protocol. + +## Wormhole Overview + +We'll interact with two key Wormhole components: the [Wormhole relayer](/docs/learn/infrastructure/relayer/){target=\_blank} and the [Wormhole Core Contracts](/docs/learn/infrastructure/core-contracts/){target=\_blank}. The relayer handles cross-chain message delivery and ensures the message is accurately received on the target chain. This allows smart contracts to communicate across blockchains without developers worrying about the underlying complexity. + +Additionally, we'll rely on the Wormhole relayer to automatically determine cross-chain transaction costs and facilitate payments. This feature simplifies cross-chain development by allowing you to specify only the target chain and the message. The relayer handles the rest, ensuring that the message is transmitted with the appropriate fee. + +![Wormhole architecture detailed diagram: source to target chain communication.](/docs/images/learn/infrastructure/architecture/architecture-1.webp) + +## Prerequisites + +Before starting this tutorial, ensure you have the following: + +- [Node.js and npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm){target=\_blank} installed on your machine +- [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} for deploying contracts +- Testnet tokens for [Avalanche-Fuji](https://core.app/tools/testnet-faucet/?token=C){target=\_blank} and [Celo-Alfajores](https://faucet.celo.org/alfajores){target=\_blank} to cover gas fees +- Wallet private key + +## Build Cross-Chain Messaging Contracts + +In this section, we'll deploy two smart contracts: one to send a message from Avalanche Fuji and another to receive it on Celo Alfajores. The contracts interact with the Wormhole relayer to transmit messages across chains. + +At a high level, our contracts will: + +1. Send a message from Avalanche to Celo using the Wormhole relayer +2. Receive and process the message on Celo, logging the content of the message + +Before diving into the deployment steps, let's first break down key parts of the contracts. + +### Sender Contract: MessageSender + +The `MessageSender` contract is responsible for quoting the cost of sending a message cross-chain and then sending that message. + +Key functions include: + + - **`quoteCrossChainCost`** - calculates the cost of delivering a message to the target chain using the Wormhole relayer + - **`sendMessage`** - encodes the message and sends it to the target chain and contract address using the Wormhole relayer + +Here's the core of the contract: + +```solidity +uint16 targetChain, + address targetAddress, + string memory message + ) external payable { + uint256 cost = quoteCrossChainCost(targetChain); + + require( + msg.value >= cost, + "Insufficient funds for cross-chain delivery" + ); + + wormholeRelayer.sendPayloadToEvm{value: cost}( + targetChain, + targetAddress, + abi.encode(message, msg.sender), + 0, + GAS_LIMIT + ); + } +``` + +You can find the full code for the `MessageSender.sol` below. + +??? code "MessageSender.sol" + + ```solidity + // SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import "lib/wormhole-solidity-sdk/src/interfaces/IWormholeRelayer.sol"; + +contract MessageSender { + IWormholeRelayer public wormholeRelayer; + uint256 constant GAS_LIMIT = 50000; + + constructor(address _wormholeRelayer) { + wormholeRelayer = IWormholeRelayer(_wormholeRelayer); + } + + function quoteCrossChainCost( + uint16 targetChain + ) public view returns (uint256 cost) { + (cost, ) = wormholeRelayer.quoteEVMDeliveryPrice( + targetChain, + 0, + GAS_LIMIT + ); + } + + function sendMessage( + uint16 targetChain, + address targetAddress, + string memory message + ) external payable { + uint256 cost = quoteCrossChainCost(targetChain); + + require( + msg.value >= cost, + "Insufficient funds for cross-chain delivery" + ); + + wormholeRelayer.sendPayloadToEvm{value: cost}( + targetChain, + targetAddress, + abi.encode(message, msg.sender), + 0, + GAS_LIMIT + ); + } +} + ``` + +### Receiver Contract: MessageReceiver + +The `MessageReceiver` contract handles incoming cross-chain messages. When a message arrives, it decodes the payload and logs the message content. It ensures that only authorized contracts can send and process messages, adding an extra layer of security in cross-chain communication. + +#### Emitter Validation and Registration + +In cross-chain messaging, validating the sender is essential to prevent unauthorized contracts from sending messages. The `isRegisteredSender` modifier ensures that messages can only be processed if they come from the registered contract on the source chain. This guards against malicious messages and enhances security. + +Key implementation details include: + + - **`registeredSender`** - stores the address of the registered sender contract + - **`setRegisteredSender`** - registers the sender's contract address on the source chain. It ensures that only registered contracts can send messages, preventing unauthorized senders + - **`isRegisteredSender`** - restricts the processing of messages to only those from registered senders, preventing unauthorized cross-chain communication + +```solidity + +require( + registeredSenders[sourceChain] == sourceAddress, + "Not registered sender" + ); + _; + } + + function setRegisteredSender( + uint16 sourceChain, + bytes32 sourceAddress + ) public { + require( + msg.sender == registrationOwner, + "Not allowed to set registered sender" + ); + registeredSenders[sourceChain] = sourceAddress; + } +``` + +#### Message Processing + +The `receiveWormholeMessages` is the core function that processes the received message. It checks that the Wormhole relayer sent the message, decodes the payload, and emits an event with the message content. It is essential to verify the message sender to prevent unauthorized messages. + +```solidity +bytes memory payload, + bytes[] memory, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 + ) public payable override isRegisteredSender(sourceChain, sourceAddress) { + require( + msg.sender == address(wormholeRelayer), + "Only the Wormhole relayer can call this function" + ); + + // Decode the payload to extract the message + string memory message = abi.decode(payload, (string)); + + // Example use of sourceChain for logging + if (sourceChain != 0) { + emit SourceChainLogged(sourceChain); + } + + // Emit an event with the received message + emit MessageReceived(message); + } +``` + +You can find the full code for the `MessageReceiver.sol` below. + +??? code "MessageReceiver.sol" + + ```solidity + // SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import "lib/wormhole-solidity-sdk/src/interfaces/IWormholeRelayer.sol"; +import "lib/wormhole-solidity-sdk/src/interfaces/IWormholeReceiver.sol"; + +contract MessageReceiver is IWormholeReceiver { + IWormholeRelayer public wormholeRelayer; + address public registrationOwner; + + // Mapping to store registered senders for each chain + mapping(uint16 => bytes32) public registeredSenders; + + event MessageReceived(string message); + event SourceChainLogged(uint16 sourceChain); + + constructor(address _wormholeRelayer) { + wormholeRelayer = IWormholeRelayer(_wormholeRelayer); + registrationOwner = msg.sender; // Set contract deployer as the owner + } + + modifier isRegisteredSender(uint16 sourceChain, bytes32 sourceAddress) { + require( + registeredSenders[sourceChain] == sourceAddress, + "Not registered sender" + ); + _; + } + + function setRegisteredSender( + uint16 sourceChain, + bytes32 sourceAddress + ) public { + require( + msg.sender == registrationOwner, + "Not allowed to set registered sender" + ); + registeredSenders[sourceChain] = sourceAddress; + } + + // Update receiveWormholeMessages to include the source address check + function receiveWormholeMessages( + bytes memory payload, + bytes[] memory, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 + ) public payable override isRegisteredSender(sourceChain, sourceAddress) { + require( + msg.sender == address(wormholeRelayer), + "Only the Wormhole relayer can call this function" + ); + + // Decode the payload to extract the message + string memory message = abi.decode(payload, (string)); + + // Example use of sourceChain for logging + if (sourceChain != 0) { + emit SourceChainLogged(sourceChain); + } + + // Emit an event with the received message + emit MessageReceived(message); + } +} + ``` + +## Deploy Contracts + +This section will guide you through deploying the cross-chain messaging contracts on the Avalanche Fuji and Celo Alfajores Testnets. Follow these steps to get your contracts up and running. + +### Deployment Tools +We use _Foundry_ to deploy our smart contracts. However, you can use any tool you're comfortable with, such as: + + - [Remix](https://remix.ethereum.org/){target=\_blank} for a browser-based IDE + - [Hardhat](https://hardhat.org/hardhat-runner/docs/getting-started#installation){target=\_blank} for a more extensive JavaScript/TypeScript workflow + - [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} for a CLI-focused experience with built-in scripting and testing features + +The contracts and deployment steps remain the same regardless of your preferred tool. The key is to ensure you have the necessary Testnet funds and are deploying to the right networks. + +### Repository Setup + +To get started with cross-chain messaging using Wormhole, first clone the [GitHub repository](https://github.com/wormhole-foundation/demo-wormhole-messaging){target=\_blank}. This repository includes everything you need to deploy, interact, and test the message flow between chains. + +This demo focuses on using the scripts, so it's best to take a look at them, starting with `deploySender.ts`, `deployReceiver.ts`, and `sendMessage.ts`. + +To configure the dependencies properly, run the following command: + +```bash +npm install +``` + +The repository includes: + +- Two Solidity contracts: + + - **`MessageSender.sol`** - contract that sends the cross-chain message from Avalanche + - **`MessageReceiver.sol`** - contract that receives the cross-chain message on Celo + +- Deployment scripts located in the `script` directory: + + - **`deploySender.ts`** - deploys the `MessageSender` contract to Avalanche + - **`deployReceiver.ts`** - deploys the `MessageReceiver` contract to Celo + - **`sendMessage.ts`** - sends a message from Avalanche to Celo + +- Configuration files and ABI JSON files for easy deployment and interaction: + + - **`chains.json`** - configuration file that stores key information for the supported Testnets, including the Wormhole relayer addresses, RPC URLs, and chain IDs. You likely won't need to modify this file unless you're working with different networks + + - A dedicated `interfaces` directory inside the `src` folder for TypeScript type definitions: + + - **`ChainsConfig.ts`** - defines the types for the `chains.json` configuration file + - **`DeployedContracts.ts`** - contains types for deployed contract addresses and related information + - **`MessageJsons.ts`** - includes types for ABI and bytecode JSONs used by the deployment scripts + - **`index.ts`** - serves as an export aggregator for the interfaces, simplifying imports in other files + +### Important Setup Steps + +1. **Add your private key** - create a `.env` file in the root of the project and add your private key: + + ```env + touch .env + ``` + + Inside `.env`, add your private key in the following format: + + ```env + PRIVATE_KEY=INSERT_PRIVATE_KEY + ``` + +2. **Compile the contracts** - ensure everything is set up correctly by compiling the contracts: + + ```bash + forge build + ``` + +The expected output should be similar to this: + +
+ forge build + > [⠒] Compiling... + > [⠰] Compiling 30 files with 0.8.23 + [⠔] Solc 0.8.23 finished in 2.29s + Compiler run successful! + +
+ +### Deployment Process + +Both deployment scripts, `deploySender.ts` and `deployReceiver.ts`, perform the following key tasks: + +1. **Load configuration and contract details** - each script begins by loading the necessary configuration details, such as the network's RPC URL and the contract's ABI and bytecode. This information is essential for deploying the contract to the correct blockchain network + + === "`chains.json`" + + ```json + { + "chains": [ + { + "description": "Avalanche testnet fuji", + "chainId": 6, + "rpc": "https://api.avax-test.network/ext/bc/C/rpc", + "tokenBridge": "0x61E44E506Ca5659E6c0bba9b678586fA2d729756", + "wormholeRelayer": "0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB", + "wormhole": "0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C" + }, + { + "description": "Celo Testnet", + "chainId": 14, + "rpc": "https://alfajores-forno.celo-testnet.org", + "tokenBridge": "0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153", + "wormholeRelayer": "0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84", + "wormhole": "0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56" + } + ] +} + ``` + + === "`deploySender.ts`" + + ```typescript + const chains: ChainsConfig = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../deploy-config/chains.json'), + 'utf8' + ) + ); + + // Get the Avalanche Fuji configuration + const avalancheChain = chains.chains.find((chain) => + chain.description.includes('Avalanche testnet') + ); + ``` + + === "`deployReceiver.ts`" + + ```typescript + const chains: ChainsConfig = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../deploy-config/chains.json'), + 'utf8' + ) + ); + + // Get the Celo Testnet configuration + const celoChain = chains.chains.find((chain) => + chain.description.includes('Celo Testnet') + ); + ``` + + !!! note + The `chains.json` file contains the configuration details for the Avalanche Fuji and Celo Alfajores Testnets. You can modify this file to add more networks if needed. For a complete list of contract addresses, visit the [reference page](/docs/build/reference/){target=\_blank}. + +2. **Set up provider and wallet** - the scripts establish a connection to the blockchain using a provider and create a wallet instance using a private key. This wallet is responsible for signing the deployment transaction + + === "`deploySender.ts`" + + ```typescript + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider); + ``` + + === "`deployReceiver.ts`" + + ```typescript + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider); + ``` + +3. **Deploy the contract** - the contract is deployed to the network specified in the configuration. Upon successful deployment, the contract address is returned, which is crucial for interacting with the contract later on + + === "`deploySender.ts`" + + ```typescript + avalancheChain.wormholeRelayer + ); + await senderContract.waitForDeployment(); + ``` + + === "`deployReceiver.ts`" + + ```typescript + celoChain.wormholeRelayer + ); + await receiverContract.waitForDeployment(); + ``` + +4. **Register the `MessageSender` on the target chain** - after you deploy the `MessageReceiver` contract on the Celo Alfajores network, the sender contract address from Avalanche Fuji needs to be registered. This ensures that only messages from the registered `MessageSender` contract are processed + + This additional step is essential to enforce emitter validation, preventing unauthorized senders from delivering messages to the `MessageReceiver` contract + + ```typescript + const avalancheSenderAddress = deployedContracts.avalanche?.MessageSender; + if (!avalancheSenderAddress) { + throw new Error('Avalanche MessageSender address not found.'); + } + + // Define the source chain ID for Avalanche Fuji + const sourceChainId = 6; + + // Call setRegisteredSender on the MessageReceiver contract + const tx = await (receiverContract as any).setRegisteredSender( + sourceChainId, + ethers.zeroPadValue(avalancheSenderAddress, 32) + ); + await tx.wait(); + ``` + +You can find the full code for the `deploySender.ts` and `deployReceiver.ts` below. + +??? code "deploySender.ts" + + ```typescript + import { ethers } from 'ethers'; +import fs from 'fs'; +import path from 'path'; +import dotenv from 'dotenv'; +import { + ChainsConfig, + DeployedContracts, + MessageSenderJson, +} from './interfaces'; + +dotenv.config(); + +async function main(): Promise { + // Load the chain configuration from JSON + const chains: ChainsConfig = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../deploy-config/chains.json'), + 'utf8' + ) + ); + + // Get the Avalanche Fuji configuration + const avalancheChain = chains.chains.find((chain) => + chain.description.includes('Avalanche testnet') + ); + if (!avalancheChain) { + throw new Error( + 'Avalanche testnet configuration not found in chains.json.' + ); + } + + // Set up the provider and wallet + const provider = new ethers.JsonRpcProvider(avalancheChain.rpc); + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider); + + // Load the ABI and bytecode of the MessageSender contract + const messageSenderJson: MessageSenderJson = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../out/MessageSender.sol/MessageSender.json'), + 'utf8' + ) + ); + + const { abi, bytecode } = messageSenderJson; + + // Create a ContractFactory for MessageSender + const MessageSender = new ethers.ContractFactory(abi, bytecode, wallet); + + // Deploy the contract using the Wormhole Relayer address for Avalanche Fuji + const senderContract = await MessageSender.deploy( + avalancheChain.wormholeRelayer + ); + await senderContract.waitForDeployment(); + + console.log('MessageSender deployed to:', senderContract.target); // `target` is the address in ethers.js v6 + + // Update the deployedContracts.json file + const deployedContractsPath = path.resolve( + __dirname, + '../deploy-config/deployedContracts.json' + ); + const deployedContracts: DeployedContracts = JSON.parse( + fs.readFileSync(deployedContractsPath, 'utf8') + ); + + deployedContracts.avalanche = { + MessageSender: senderContract.target as any, + deployedAt: new Date().toISOString(), + }; + + fs.writeFileSync( + deployedContractsPath, + JSON.stringify(deployedContracts, null, 2) + ); +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); + ``` + +??? code "deployReceiver.ts" + + ```typescript + import { ethers } from 'ethers'; +import fs from 'fs'; +import path from 'path'; +import dotenv from 'dotenv'; +import { + ChainsConfig, + DeployedContracts, + MessageReceiverJson, +} from './interfaces'; + +dotenv.config(); + +async function main(): Promise { + // Load the chain configuration from the JSON file + const chains: ChainsConfig = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../deploy-config/chains.json'), + 'utf8' + ) + ); + + // Get the Celo Testnet configuration + const celoChain = chains.chains.find((chain) => + chain.description.includes('Celo Testnet') + ); + if (!celoChain) { + throw new Error('Celo Testnet configuration not found.'); + } + + // Set up the provider and wallet + const provider = new ethers.JsonRpcProvider(celoChain.rpc); + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider); + + // Load the ABI and bytecode of the MessageReceiver contract + const messageReceiverJson: MessageReceiverJson = JSON.parse( + fs.readFileSync( + path.resolve( + __dirname, + '../out/MessageReceiver.sol/MessageReceiver.json' + ), + 'utf8' + ) + ); + + const { abi, bytecode } = messageReceiverJson; + + // Create a ContractFactory for MessageReceiver + const MessageReceiver = new ethers.ContractFactory(abi, bytecode, wallet); + + // Deploy the contract using the Wormhole Relayer address for Celo Testnet + const receiverContract = await MessageReceiver.deploy( + celoChain.wormholeRelayer + ); + await receiverContract.waitForDeployment(); + + console.log('MessageReceiver deployed to:', receiverContract.target); // `target` is the contract address in ethers.js v6 + + // Update the deployedContracts.json file + const deployedContractsPath = path.resolve( + __dirname, + '../deploy-config/deployedContracts.json' + ); + const deployedContracts: DeployedContracts = JSON.parse( + fs.readFileSync(deployedContractsPath, 'utf8') + ); + + // Retrieve the address of the MessageSender from the deployedContracts.json file + const avalancheSenderAddress = deployedContracts.avalanche?.MessageSender; + if (!avalancheSenderAddress) { + throw new Error('Avalanche MessageSender address not found.'); + } + + // Define the source chain ID for Avalanche Fuji + const sourceChainId = 6; + + // Call setRegisteredSender on the MessageReceiver contract + const tx = await (receiverContract as any).setRegisteredSender( + sourceChainId, + ethers.zeroPadValue(avalancheSenderAddress, 32) + ); + await tx.wait(); + + console.log( + `Registered MessageSender (${avalancheSenderAddress}) for Avalanche chain (${sourceChainId})` + ); + + deployedContracts.celo = { + MessageReceiver: receiverContract.target as any, + deployedAt: new Date().toISOString(), + }; + + fs.writeFileSync( + deployedContractsPath, + JSON.stringify(deployedContracts, null, 2) + ); +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); + ``` + +### Deploy the Sender Contract + +The sender contract will handle quoting and sending messages cross-chain. + +1. Run the following command to deploy the sender contract: + + ```bash + npm run deploy:sender + ``` + +2. Once deployed, the contract address will be displayed. You may check the contract on the [Avalanche Fuji Explorer](https://testnet.snowtrace.io/){target=\_blank} + +
+ npm run deploy:sender + > wormhole-cross-chain@1.0.0 deploy:sender + > node script/deploySender.ts + MessageSender deployed to: 0xf5c474f335fFf617fA6FD04DCBb17E20ee0cEfb1 + +
+ + +### Deploy the Receiver Contract + +The receiver contract listens for cross-chain messages and logs them when received. + +1. Deploy the receiver contract with this command: + + ```bash + npm run deploy:receiver + ``` + +2. After deployment, note down the contract address. You may check the contract on the [Celo Alfajores Explorer](https://alfajores.celoscan.io/){target=\_blank}. + + +## Send a Cross-Chain Message + +Now that both the sender and receiver contracts are deployed, let's move on to the next exciting step: sending a cross-chain message from Avalanche Fuji to Celo Alfajores. + +In this example, we will use the `sendMessage.ts` script to transmit a message from the sender contract on Avalanche to the receiver contract on Celo. The script uses [Ethers.js](https://docs.ethers.org/v6/){target=\_blank} to interact with the deployed contracts, calculate the cross-chain cost dynamically, and handle the transaction. + +Let's break down the script step by step. + +1. **Load configuration files** + + 1. **`chains.json`** - contains details about the supported Testnet chains, such as RPC URLs and relayer addresses + 2. **`deployedContracts.json`** - stores the addresses of the deployed sender and receiver contracts. This file is dynamically updated when contracts are deployed, but users can also manually add their own deployed contract addresses if needed + + ```typescript + fs.readFileSync( + path.resolve(__dirname, '../deploy-config/chains.json'), + 'utf8' + ) + ); + + const deployedContracts: DeployedContracts = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../deploy-config/deployedContracts.json'), + 'utf8' + ) + ); + ``` + +2. **Configure the provider and signer** - the script first reads the chain configurations and extracts the contract addresses. One essential step in interacting with a blockchain is setting up a _provider_. A provider is your connection to the blockchain network. It allows your script to interact with the blockchain, retrieve data, and send transactions. In this case, we're using a JSON-RPC provider + + Next, we configure the wallet, which will be used to sign transactions. The wallet is created using the private key and the provider. This ensures that all transactions sent from this wallet are broadcast to the Avalanche Fuji network: + + ```typescript + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider); + ``` + + After setting up the wallet, the script loads the ABI for the `MessageSender.sol` contract and creates an instance of it: + + ```typescript + fs.readFileSync( + path.resolve(__dirname, '../out/MessageSender.sol/MessageSender.json'), + 'utf8' + ) + ); + ``` + +3. **Set up the message details** - the next part of the script defines the target chain (Celo) and the target address (the receiver contract on Celo): + + ```typescript + const targetAddress = deployedContracts.celo.MessageReceiver; + ``` + + You can customize the message that will be sent across chains: + + ```typescript + + ``` + +4. **Estimate cross-chain cost** - before sending the message, we dynamically calculate the cross-chain cost using the `quoteCrossChainCost` function: + + ```typescript + + ``` + + This ensures that the transaction includes enough funds to cover the gas fees for the cross-chain message. + +5. **Send a message** - with everything set up, the message is sent using the `sendMessage` function: + + ```typescript + targetChain, + targetAddress, + message, + { + value: txCost, + } + ); + ``` + + After sending, the script waits for the transaction to be confirmed: + + ```typescript + + ``` + +6. **Run the script** - to send the message, run the following command: + + ```bash + npm run send:message + ``` + +If everything is set up correctly, the message will be sent from the Avalanche Fuji Testnet to the Celo Alfajores Testnet. You can monitor the transaction and verify that the message was received on Celo using the [Wormhole Explorer](https://wormholescan.io/#/?network=TESTNET){target=\_blank}. + +The console should output something similar to this: + +
+ npm run send:message + > wormhole-cross-chain@1.0.0 send:message + > node script/sendMessage.ts + Sender Contract Address: 0xD720BFF42a0960cfF1118454A907a44dB358f2b1 + Receiver Contract Address: 0x692550997C252cC5044742D1A2BD91E4f4b46D39 + ... + Transaction sent, waiting for confirmation... + ... + Message sent! Transaction hash: + 0x9d359a66ba42baced80062229c0b02b4f523fe304aff3473dcf53117aee13fb6 + You may see the transaction status on the Wormhole Explorer: + https://wormholescan.io/#/tx/0x9d359a66ba42baced80062229c0b02b4f523fe304aff3473dcf53117aee13fb6?network=TESTNET + +
+ +You can find the full code for the `sendMessage.ts` below. + +??? code "sendMessage.ts" + + ```solidity + import { ethers } from 'ethers'; +import fs from 'fs'; +import path from 'path'; +import dotenv from 'dotenv'; +import { ChainsConfig, DeployedContracts } from './interfaces'; + +dotenv.config(); + +async function main(): Promise { + // Load the chain configuration and deployed contract addresses + const chains: ChainsConfig = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../deploy-config/chains.json'), + 'utf8' + ) + ); + + const deployedContracts: DeployedContracts = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../deploy-config/deployedContracts.json'), + 'utf8' + ) + ); + + console.log( + 'Sender Contract Address: ', + deployedContracts.avalanche.MessageSender + ); + console.log( + 'Receiver Contract Address: ', + deployedContracts.celo.MessageReceiver + ); + console.log('...'); + + // Get the Avalanche Fuji configuration + const avalancheChain = chains.chains.find((chain) => + chain.description.includes('Avalanche testnet') + ); + + if (!avalancheChain) { + throw new Error( + 'Avalanche testnet configuration not found in chains.json.' + ); + } + + // Set up the provider and wallet + const provider = new ethers.JsonRpcProvider(avalancheChain.rpc); + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider); + + // Load the ABI of the MessageSender contract + const messageSenderJson = JSON.parse( + fs.readFileSync( + path.resolve(__dirname, '../out/MessageSender.sol/MessageSender.json'), + 'utf8' + ) + ); + + const abi = messageSenderJson.abi; + + // Create a contract instance for MessageSender + const MessageSender = new ethers.Contract( + deployedContracts.avalanche.MessageSender, // Automatically use the deployed address + abi, + wallet + ); + + // Define the target chain and target address (the Celo receiver contract) + const targetChain = 14; // Wormhole chain ID for Celo Alfajores + const targetAddress = deployedContracts.celo.MessageReceiver; + + // The message you want to send + const message = 'Hello from Avalanche to Celo!'; + + // Dynamically quote the cross-chain cost + const txCost = await MessageSender.quoteCrossChainCost(targetChain); + + // Send the message (make sure to send enough gas in the transaction) + const tx = await MessageSender.sendMessage( + targetChain, + targetAddress, + message, + { + value: txCost, + } + ); + + console.log('Transaction sent, waiting for confirmation...'); + await tx.wait(); + console.log('...'); + + console.log('Message sent! Transaction hash:', tx.hash); + console.log( + `You may see the transaction status on the Wormhole Explorer: https://wormholescan.io/#/tx/${tx.hash}?network=TESTNET` + ); +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); + ``` + +## Conclusion + +You're now fully equipped to build cross-chain contracts using the Wormhole protocol! With this tutorial, you've learned how to: + +- Deploy sender and receiver contracts on different Testnets +- Send a cross-chain message from one blockchain to another +- Monitor the status of your cross-chain transactions using the Wormhole Explorer and Wormhole-Solidity-SDK +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/ +--- BEGIN CONTENT --- +--- +title: Cross-Chain Token Transfers +description: Learn how to create cross-chain token transfers using Wormhole's Solidity SDK. Build and deploy smart contracts to send tokens from one blockchain to another. +--- + +# Create Cross-Chain Token Transfer Contracts + +:simple-github: [Source code on GitHub](https://github.com/wormhole-foundation/demo-cross-chain-token-transfer){target=\_blank} + +## Introduction + +In this tutorial, you'll learn how to create a simple cross-chain token transfer system using the Wormhole protocol via the [Wormhole Solidity SDK](https://github.com/wormhole-foundation/wormhole-solidity-sdk){target=\_blank}. We'll guide you through building and deploying smart contracts that enable seamless token transfers of IERC-20 tokens between blockchains. Whether you're a developer looking to explore cross-chain applications or just interested in the Wormhole protocol, this guide will help you understand the fundamentals. + +By the end of this tutorial, you'll have a working cross-chain token transfer system built with the powerful tools provided by the Wormhole Solidity SDK, which you can further customize and integrate into your projects. + +## Prerequisites + +Before you begin, ensure you have the following: + +- [Node.js and npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm){target=\_blank} installed on your machine +- [Foundry](https://book.getfoundry.sh/getting-started/installation){target=\_blank} for deploying contracts +- Testnet tokens for [Avalanche-Fuji](https://core.app/tools/testnet-faucet/?token=C){target=\_blank} and [Celo-Alfajores](https://faucet.celo.org/alfajores){target=\_blank} to cover gas fees +- [USDC Testnet](https://faucet.circle.com/){target=\_blank} tokens on Avalanche-Fuji or/and Celo-Alfajores for cross-chain transfer +- Wallet private key + +## Valid Tokens for Transfer + +It's important to note that this tutorial leverages [Wormhole's TokenBridge](https://github.com/wormhole-foundation/wormhole/blob/6130bbb6f456b42b789a71f7ea2fd049d632d2fb/ethereum/contracts/bridge/TokenBridge.sol){target=\_blank} to transfer tokens between chains. So, the tokens you'd like to transfer must have an attestation on the `TokenBridge` contract of the target blockchain. + +To simplify this process, we've included a tool for verifying if a token has an attestation on the target chain. This tool uses the [`wrappedAsset`](https://github.com/wormhole-foundation/wormhole/blob/6130bbb6f456b42b789a71f7ea2fd049d632d2fb/ethereum/contracts/bridge/BridgeGetters.sol#L50-L52){target=\_blank} function from the `TokenBridge` contract. If the token has an attestation, the `wrappedAsset` function returns the address of the wrapped token on the target chain; otherwise, it returns the zero address. + +???- tip "Check Token Attestation" + 1. Clone the [repository](https://github.com/wormhole-foundation/demo-cross-chain-token-transfer){target=\_blank} and navigate to the project directory: + ```bash + git clone https://github.com/wormhole-foundation/demo-cross-chain-token-transfer.git + cd cross-chain-token-transfers + ``` + 2. Install the dependencies: + ```bash + npm install + ``` + + 3. Run the script to check token attestation: + ```bash + npm run verify + ``` + + 4. Follow the prompts: + + 1. Enter the RPC URL of the target chain + 2. Enter the `TokenBridge` contract address on the target chain + 3. Enter the token contract address on the source chain + 4. Enter the source chain ID + + 5. The expected output when the token has an attestation: + +
+ npm run verify + > cross-chain-token-transfer@1.0.0 verify + > npx ts-node script/check-attestation.ts + + Enter the TARGET chain RPC URL: https://alfajores-forno.celo-testnet.org + Enter the Token Bridge contract address on the TARGET chain: 0x05...E153 + Enter the token contract address on the SOURCE chain: 0x54...bc65 + Enter the SOURCE chain ID: 6 + The token is attested on the target chain. Wrapped token address: 0xDDB349c976cA2C873644F21f594767Eb5390C831 + +
+ + Using this tool ensures that you only attempt to transfer tokens with verified attestations, avoiding any potential issues during the cross-chain transfer process. + +## Project Setup + +Let's start by initializing a new Foundry project. This will set up a basic structure for our smart contracts. + +1. Open your terminal and run the following command to initialize a new Foundry project: + + ```bash + forge init cross-chain-token-transfers + ``` + + This will create a new directory named `cross-chain-token-transfers` with a basic project structure. This also initializes a new `git` repository. + +2. Navigate into the newly created project directory: + + ```bash + cd cross-chain-token-transfers + ``` + +3. Install the Wormhole Solidity SDK: + + ```bash + forge install wormhole-foundation/wormhole-solidity-sdk + ``` + + To ease development, we'll use the Wormhole Solidity SDK, which provides useful helpers for cross-chain development. + This SDK includes the `TokenSender` and `TokenReceiver` abstract classes, which simplify sending and receiving tokens across chains. + +## Build Cross-Chain Contracts + +In this section, we'll build two smart contracts to send tokens from a source chain and receive them on a target chain. These contracts will interact with the Wormhole protocol to facilitate secure and seamless cross-chain token transfers. + +At a high level, our contracts will: + +1. Send tokens from one blockchain to another using the Wormhole protocol +2. Receive and process the tokens on the target chain, ensuring they are correctly transferred to the intended recipient + +Before diving into the contract implementation steps, let’s first break down the key parts of the contracts. + +### Sender Contract: CrossChainSender + +The `CrossChainSender` contract calculates the cost of sending tokens across chains and then facilitates the actual token transfer. + +Let's start writing the `CrossChainSender` contract: + +1. Create a new file named `CrossChainSender.sol` in the `/src` directory: + + ```bash + touch src/CrossChainSender.sol + ``` + +2. Open the file. First, we'll start with the imports and the contract setup: + + ```solidity + pragma solidity ^0.8.13; + +import "lib/wormhole-solidity-sdk/src/WormholeRelayerSDK.sol"; +import "lib/wormhole-solidity-sdk/src/interfaces/IERC20.sol"; + +contract CrossChainSender is TokenSender { + uint256 constant GAS_LIMIT = 250_000; + + constructor( + address _wormholeRelayer, + address _tokenBridge, + address _wormhole + ) TokenBase(_wormholeRelayer, _tokenBridge, _wormhole) {} + ``` + + This sets up the basic structure of the contract, including the necessary imports and the constructor that initializes the contract with the Wormhole-related addresses. + +3. Next, let's add a function that estimates the cost of sending tokens across chains: + + ```solidity + uint16 targetChain + ) public view returns (uint256 cost) { + uint256 deliveryCost; + (deliveryCost, ) = wormholeRelayer.quoteEVMDeliveryPrice( + targetChain, + 0, + GAS_LIMIT + ); + + cost = deliveryCost + wormhole.messageFee(); + } + ``` + + This function, `quoteCrossChainDeposit`, helps calculate the cost of transferring tokens to a different chain. It factors in the delivery cost and the cost of publishing a message via the Wormhole protocol. + +4. Finally, we'll add the function that sends the tokens across chains: + + ```solidity + uint16 targetChain, + address targetReceiver, + address recipient, + uint256 amount, + address token + ) public payable { + uint256 cost = quoteCrossChainDeposit(targetChain); + require( + msg.value == cost, + "msg.value must equal quoteCrossChainDeposit(targetChain)" + ); + + IERC20(token).transferFrom(msg.sender, address(this), amount); + + bytes memory payload = abi.encode(recipient); + + sendTokenWithPayloadToEvm( + targetChain, + targetReceiver, + payload, + 0, + GAS_LIMIT, + token, + amount + ); + } +} + ``` + + This `sendCrossChainDeposit` function is where the actual token transfer happens. It sends the tokens to the recipient on the target chain using the Wormhole protocol. + +Here’s a breakdown of what happens in each step of the `sendCrossChainDeposit` function: + +1. **Cost calculation** - the function starts by calculating the cost of the cross-chain transfer using `quoteCrossChainDeposit`(`targetChain`). This cost includes both the delivery fee and the Wormhole message fee. The `sendCrossChainDeposit` function then checks that the user has sent the correct amount of Ether to cover this cost (`msg.value`) + +2. **Token transfer to contract** - the next step is to transfer the specified amount of tokens from the user to the contract itself using `IERC-20(token).transferFrom(msg.sender, address(this), amount)`. This ensures that the contract has custody of the tokens before initiating the cross-chain transfer + +3. **Payload encoding** - The recipient's address on the target chain is encoded into a payload using `abi.encode(recipient)`. This payload will be sent along with the token transfer, so the target contract knows who should receive the tokens on the destination chain + +4. **Cross-chain transfer** - the `sendTokenWithPayloadToEvm` function is called to initiate the cross-chain token transfer. This function: + - Specifies the `targetChain` (the Wormhole chain ID of the destination blockchain). + - Sends the `targetReceiver` contract address on the target chain that will receive the tokens. + - Attaches the payload containing the recipient's address. + - Sets the `GAS_LIMIT` for the transaction. + - Passes the token `address` and `amount` to transfer. + + This triggers the Wormhole protocol to handle the cross-chain messaging and token transfer, ensuring the tokens and payload reach the correct destination on the target chain. + +You can find the complete code for the `CrossChainSender.sol` below. + +??? code "MessageSender.sol" + + ```solidity + // SPDX-License-Identifier: MIT +pragma solidity ^0.8.13; + +import "lib/wormhole-solidity-sdk/src/WormholeRelayerSDK.sol"; +import "lib/wormhole-solidity-sdk/src/interfaces/IERC20.sol"; + +contract CrossChainSender is TokenSender { + uint256 constant GAS_LIMIT = 250_000; + + constructor( + address _wormholeRelayer, + address _tokenBridge, + address _wormhole + ) TokenBase(_wormholeRelayer, _tokenBridge, _wormhole) {} + + // Function to get the estimated cost for cross-chain deposit + function quoteCrossChainDeposit( + uint16 targetChain + ) public view returns (uint256 cost) { + uint256 deliveryCost; + (deliveryCost, ) = wormholeRelayer.quoteEVMDeliveryPrice( + targetChain, + 0, + GAS_LIMIT + ); + + cost = deliveryCost + wormhole.messageFee(); + } + + // Function to send tokens and payload across chains + function sendCrossChainDeposit( + uint16 targetChain, + address targetReceiver, + address recipient, + uint256 amount, + address token + ) public payable { + uint256 cost = quoteCrossChainDeposit(targetChain); + require( + msg.value == cost, + "msg.value must equal quoteCrossChainDeposit(targetChain)" + ); + + IERC20(token).transferFrom(msg.sender, address(this), amount); + + bytes memory payload = abi.encode(recipient); + + sendTokenWithPayloadToEvm( + targetChain, + targetReceiver, + payload, + 0, + GAS_LIMIT, + token, + amount + ); + } +} + ``` + +### Receiver Contract: CrossChainReceiver + +The `CrossChainReceiver` contract is designed to handle the receipt of tokens and payloads from another blockchain. It ensures that the tokens are correctly transferred to the designated recipient on the receiving chain. + +Let's start writing the `CrossChainReceiver` contract: + +1. Create a new file named `CrossChainReceiver.sol` in the `/src` directory: + + ```bash + touch src/CrossChainReceiver.sol + ``` + +2. Open the file. First, we'll start with the imports and the contract setup: + + ```solidity + pragma solidity ^0.8.13; + +import "lib/wormhole-solidity-sdk/src/WormholeRelayerSDK.sol"; +import "lib/wormhole-solidity-sdk/src/interfaces/IERC20.sol"; + +contract CrossChainReceiver is TokenReceiver { + // The Wormhole relayer and registeredSenders are inherited from the Base.sol contract + + constructor( + address _wormholeRelayer, + address _tokenBridge, + address _wormhole + ) TokenBase(_wormholeRelayer, _tokenBridge, _wormhole) {} + ``` + + Similar to the `CrossChainSender` contract, this sets up the basic structure of the contract, including the necessary imports and the constructor that initializes the contract with the Wormhole-related addresses. + +3. Next, let's add a function to handle receiving the payload and tokens: + + ```solidity + bytes memory payload, + TokenReceived[] memory receivedTokens, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 // deliveryHash + ) + internal + override + onlyWormholeRelayer + isRegisteredSender(sourceChain, sourceAddress) + { + require(receivedTokens.length == 1, "Expected 1 token transfer"); + + // Decode the recipient address from the payload + address recipient = abi.decode(payload, (address)); + + // Transfer the received tokens to the intended recipient + IERC20(receivedTokens[0].tokenAddress).transfer( + recipient, + receivedTokens[0].amount + ); + } +} + ``` + + This `receivePayloadAndTokens` function processes the tokens and payload sent from another chain, decodes the recipient address, and transfers the tokens to them using the Wormhole protocol. This function also validates the emitter (`sourceAddress`) to ensure the message comes from a trusted sender. + + This function ensures that: + + - It only processes one token transfer at a time + - The `sourceAddress` is checked against a list of registered senders using the `isRegisteredSender` modifier, which verifies if the emitter is allowed to send tokens to this contract + - The recipient address is decoded from the payload, and the received tokens are transferred to them using the ERC-20 interface + +After we call `sendTokenWithPayloadToEvm` on the source chain, the message goes through the standard Wormhole message lifecycle. Once a [VAA (Verifiable Action Approval)](/docs/learn/infrastructure/vaas/){target=\_blank} is available, the delivery provider will call `receivePayloadAndTokens` on the target chain and target address specified, with the appropriate inputs. + +??? tip "Understanding the `TokenReceived` Struct" + + Let’s delve into the fields provided to us in the `TokenReceived` struct: + + ```solidity + struct TokenReceived { + bytes32 tokenHomeAddress; + uint16 tokenHomeChain; + address tokenAddress; + uint256 amount; + uint256 amountNormalized; +} + ``` + + - **`tokenHomeAddress`** - the original address of the token on its native chain. This is the same as the token field in the call to `sendTokenWithPayloadToEvm` unless the original token sent is a Wormhole-wrapped token. In that case, this will be the address of the original version of the token (on its native chain) in Wormhole address format (left-padded with 12 zeros) + + - **`tokenHomeChain`** - the Wormhole chain ID corresponding to the home address above. This will typically be the source chain unless the original token sent is a Wormhole-wrapped asset, which will be the chain of the unwrapped version of the token + + - **`tokenAddress`** - the address of the IERC-20 token on the target chain that has been transferred to this contract. If `tokenHomeChain` equals the target chain, this will be the same as `tokenHomeAddress`; otherwise, it will be the Wormhole-wrapped version of the token sent + + - **`amount`** - the token amount sent to you with the same units as the original token. Since `TokenBridge` only sends with eight decimals of precision, if your token has 18 decimals, this will be the "amount" you sent, rounded down to the nearest multiple of 10^10 + + - **`amountNormalized`** - the amount of token divided by (1 if decimals ≤ 8, else 10^(decimals - 8)) + +You can find the complete code for the `CrossChainReceiver.sol` contract below: + +??? code "CrossChainReceiver.sol" + + ```solidity + // SPDX-License-Identifier: MIT +pragma solidity ^0.8.13; + +import "lib/wormhole-solidity-sdk/src/WormholeRelayerSDK.sol"; +import "lib/wormhole-solidity-sdk/src/interfaces/IERC20.sol"; + +contract CrossChainReceiver is TokenReceiver { + // The Wormhole relayer and registeredSenders are inherited from the Base.sol contract + + constructor( + address _wormholeRelayer, + address _tokenBridge, + address _wormhole + ) TokenBase(_wormholeRelayer, _tokenBridge, _wormhole) {} + + // Function to receive the cross-chain payload and tokens with emitter validation + function receivePayloadAndTokens( + bytes memory payload, + TokenReceived[] memory receivedTokens, + bytes32 sourceAddress, + uint16 sourceChain, + bytes32 // deliveryHash + ) + internal + override + onlyWormholeRelayer + isRegisteredSender(sourceChain, sourceAddress) + { + require(receivedTokens.length == 1, "Expected 1 token transfer"); + + // Decode the recipient address from the payload + address recipient = abi.decode(payload, (address)); + + // Transfer the received tokens to the intended recipient + IERC20(receivedTokens[0].tokenAddress).transfer( + recipient, + receivedTokens[0].amount + ); + } +} + ``` + +## Deploy the Contracts + +Now that you've written the `CrossChainSender` and `CrossChainReceiver` contracts, it's time to deploy them to your chosen networks. + +1. **Set up deployment configuration** - before deploying, you must configure the networks and the deployment environment. This information is stored in a configuration file + + 1. Create a directory named deploy-config in the root of your project: + + ```bash + mkdir deploy-config + ``` + + 2. Create a `config.json` file in the `deploy-config` directory: + + ```bash + touch deploy-config/config.json + ``` + + 3. Open the `config.json` file and add the following configuration: + + ```json + { + "chains": [ + { + "description": "Avalanche testnet fuji", + "chainId": 6, + "rpc": "https://api.avax-test.network/ext/bc/C/rpc", + "tokenBridge": "0x61E44E506Ca5659E6c0bba9b678586fA2d729756", + "wormholeRelayer": "0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB", + "wormhole": "0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C" + }, + { + "description": "Celo Testnet", + "chainId": 14, + "rpc": "https://alfajores-forno.celo-testnet.org", + "tokenBridge": "0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153", + "wormholeRelayer": "0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84", + "wormhole": "0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56" + } + ] +} + ``` + + This file specifies the details for each chain where you plan to deploy your contracts, including the RPC URL, the `TokenBridge` address, the Wormhole relayer, and the Wormhole Core Contract. + + For a complete list of Wormhole contract addresses on various blockchains, refer to the [Wormhole Contract Addresses](/docs/build/reference/contract-addresses/){target=_blank}. + + !!! note + You can add your desired chains to this file by specifying the required fields for each chain. In this example, we use the Avalanche Fuji and Celo Alfajores Testnets. + + 4. Create a `contracts.json` file in the `deploy-config` directory: + + ```bash + echo '{}' > deploy-config/contracts.json + ``` + + This file can be left blank initially. It will be automatically updated with the deployed contract addresses after a successful deployment + +2. **Set up your Node.js environment** - you'll need to set up your Node.js environment to run the deployment script + + 1. Initialize a Node.js project: + + ```bash + npm init -y + ``` + + 2. Install the necessary dependencies: + + ```bash + npm install ethers dotenv readline-sync @types/readline-sync + ``` + + These dependencies are required for the deployment script to work properly. + +3. **Compile your smart contracts** - compile your smart contracts using Foundry. This ensures that your contracts are up-to-date and ready for deployment + + - Run the following command to compile your contracts: + + ```bash + forge build + ``` + + This will generate the necessary ABI and bytecode files in a directory named `/out`. + + The expected output should be similar to this: + +
+ forge build + > [⠒] Compiling... + > [⠰] Compiling 30 files with 0.8.23 + [⠔] Solc 0.8.23 finished in 2.29s + Compiler run successful! + +
+ +4. **Write the deployment script** - you’ll need a script to automate the deployment of your contracts. Let’s create the deployment script + + 1. Create a new file named `deploy.ts` in the `/script` directory: + + ```bash + touch script/deploy.ts + ``` + + 2. Open the file and load imports and configuration: + + ```typescript + import * as fs from 'fs'; +import * as path from 'path'; +import * as dotenv from 'dotenv'; +import readlineSync from 'readline-sync'; + +dotenv.config(); + ``` + + Import the required libraries and modules to interact with Ethereum, handle file paths, load environment variables, and enable user interaction via the terminal. + + 3. Define interfaces to use for chain configuration and contract deployment: + + ```typescript + description: string; + chainId: number; + rpc: string; + tokenBridge: string; + wormholeRelayer: string; + wormhole: string; +} + +interface DeployedContracts { + [chainId: number]: { + networkName: string; + CrossChainSender?: string; + CrossChainReceiver?: string; + deployedAt: string; + }; +} + ``` + + These interfaces define the structure of the chain configuration and the contract deployment details. + + 4. Load and select the chains for deployment: + + ```typescript + const configPath = path.resolve(__dirname, '../deploy-config/config.json'); + return JSON.parse(fs.readFileSync(configPath, 'utf8')).chains; +} + +function selectChain( + chains: ChainConfig[], + role: 'source' | 'target' +): ChainConfig { + console.log(`\nSelect the ${role.toUpperCase()} chain:`); + chains.forEach((chain, index) => { + console.log(`${index + 1}: ${chain.description}`); + }); + + const chainIndex = + readlineSync.questionInt( + `\nEnter the number for the ${role.toUpperCase()} chain: ` + ) - 1; + return chains[chainIndex]; +} + ``` + + The `loadConfig` function reads the chain configuration from the `config.json` file, and the `selectChain` function allows the user to choose the source and target chains for deployment interactively. The user is prompted in the terminal to select which chains to use, making the process interactive and user-friendly. + + 5. Define the main function for deployment and load the chain configuration: + + ```typescript + const chains = loadConfig(); + + const sourceChain = selectChain(chains, 'source'); + const targetChain = selectChain(chains, 'target'); + ``` + + - The `main` function is the entry point for the deployment script + - We then call the `loadConfig` function we previously defined to load the chain configuration from the `config.json` file + + 6. Set up provider and wallet: + + ```typescript + const targetProvider = new ethers.JsonRpcProvider(targetChain.rpc); + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, sourceProvider); + ``` + + The scripts establish a connection to the blockchain using a provider and create a wallet instance using a private key. This wallet is responsible for signing the deployment transaction on the source chain. + + 7. Read the compiled contracts: + + ```typescript + fs.readFileSync( + path.resolve( + __dirname, + '../out/CrossChainSender.sol/CrossChainSender.json' + ), + 'utf8' + ) + ); + ``` + + - This code reads the `CrossChainSender.json` file, the compiled output of the `CrossChainSender.sol` contract + - The file is in the `../out/` directory, which contains the ABI (Application Binary Interface) and bytecode generated during contract compilation + - It uses the `fs.readFileSync` function to read the file and `JSON.parse` to convert the file contents (in JSON format) into a JavaScript object + + 8. Extract the contract ABI and bytecode: + + ```typescript + const bytecode = senderJson.bytecode; + ``` + + - **ABI (Application Binary Interface)** - defines the structure of the contract’s functions, events, and data types, allowing the front end to interact with the contract on the blockchain + - **Bytecode** - this is the compiled machine code that will be deployed to the blockchain to create the contract + + 9. Create the Contract Factory: + + ```typescript + abi, + bytecode, + wallet + ); + ``` + + - **`ethers.ContractFactory`** - creates a new contract factory using the ABI, bytecode, and a wallet (representing the signer). The contract factory is responsible for deploying instances of the contract to the blockchain + - This is a crucial step for deploying the contract since the factory will create and deploy the `CrossChainSender` contract + + 10. Deploy the `CrossChainSender` and `CrossChainReceiver` contracts: + + === "`CrossChainSender`" + ```typescript + const senderContract = await CrossChainSenderFactory.deploy( + sourceChain.wormholeRelayer, + sourceChain.tokenBridge, + sourceChain.wormhole + ); + await senderContract.waitForDeployment(); + ``` + + === "`CrossChainReceiver`" + ```typescript + process.env.PRIVATE_KEY!, + targetProvider + ); + const receiverJson = JSON.parse( + fs.readFileSync( + path.resolve( + __dirname, + '../out/CrossChainReceiver.sol/CrossChainReceiver.json' + ), + 'utf8' + ) + ); + const CrossChainReceiverFactory = new ethers.ContractFactory( + receiverJson.abi, + receiverJson.bytecode, + targetWallet + ); + + const receiverContract = await CrossChainReceiverFactory.deploy( + targetChain.wormholeRelayer, + targetChain.tokenBridge, + targetChain.wormhole + ); + await receiverContract.waitForDeployment(); + ``` + + Both functions deploy the respective contracts to the selected chains. + + For the `CrossChainReceiver` contract: + + - It defines the wallet related to the target chain + - The logic reads the compiled ABI and bytecode from the JSON file generated during compilation + - It creates a new contract factory using the ABI, bytecode, and wallet + - It deploys the contract to the selected chain passing in the Wormhole Relayer, `TokenBridge`, and Wormhole addresses + + 11. Save the deployed contract addresses: + + === "`senderAddress`" + ```typescript + console.log( + `CrossChainSender on ${sourceChain.description}: ${senderAddress}` + ); + ``` + + === "`receiverAddress`" + ```typescript + console.log( + `CrossChainReceiver on ${targetChain.description}: ${receiverAddress}` + ); + ``` + + You may display the deployed contract addresses in the terminal or save them to a JSON file for future reference. + + 12. Register the `CrossChainSender` address on the target chain: + + ```typescript + receiverAddress, + receiverJson.abi, + targetWallet + ); + + const tx = await CrossChainReceiverContract.setRegisteredSender( + sourceChain.chainId, + ethers.zeroPadValue(senderAddress as BytesLike, 32) + ); + + await tx.wait(); + ``` + + After you deploy the `CrossChainReceiver` contract on the target network, the sender contract address from the source chain needs to be registered. This ensures that only messages from the registered `CrossChainSender` contract are processed. + + This additional step is essential to enforce emitter validation, preventing unauthorized senders from delivering messages to the `CrossChainReceiver` contract. + + 13. Save the deployment details: + + ???- example "Save Deployment Details Example" + ```typescript + __dirname, + '../deploy-config/contracts.json' + ); + let deployedContracts: DeployedContracts = {}; + + if (fs.existsSync(deployedContractsPath)) { + deployedContracts = JSON.parse( + fs.readFileSync(deployedContractsPath, 'utf8') + ); + } + + // Update the contracts.json file: + // If a contract already exists on a chain, update its address; otherwise, add a new entry. + if (!deployedContracts[sourceChain.chainId]) { + deployedContracts[sourceChain.chainId] = { + networkName: sourceChain.description, + deployedAt: new Date().toISOString(), + }; + } + deployedContracts[sourceChain.chainId].CrossChainSender = + senderAddress.toString(); + deployedContracts[sourceChain.chainId].deployedAt = + new Date().toISOString(); + + if (!deployedContracts[targetChain.chainId]) { + deployedContracts[targetChain.chainId] = { + networkName: targetChain.description, + deployedAt: new Date().toISOString(), + }; + } + deployedContracts[targetChain.chainId].CrossChainReceiver = + receiverAddress.toString(); + deployedContracts[targetChain.chainId].deployedAt = + new Date().toISOString(); + + // Save the updated contracts.json file + fs.writeFileSync( + deployedContractsPath, + JSON.stringify(deployedContracts, null, 2) + ); + ``` + + Add your desired logic to save the deployed contract addresses in a JSON file (or another format). This will be important later when transferring tokens, as you'll need these addresses to interact with the deployed contracts. + + 14. Handle errors and finalize the script: + + ```typescript + if (error.code === 'INSUFFICIENT_FUNDS') { + console.error( + 'Error: Insufficient funds for deployment. Please make sure your wallet has enough funds to cover the gas fees.' + ); + } else { + console.error('An unexpected error occurred:', error.message); + } + process.exit(1); + } +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); + ``` + + The try-catch block wraps the deployment logic to catch any errors that may occur. + + - If the error is due to insufficient funds, it logs a clear message about needing more gas fees + - For any other errors, it logs the specific error message to help with debugging + + The `process.exit(1)` ensures that the script exits with a failure status code if any error occurs. + + You can find the full code for the `deploy.ts` file below: + + ??? code "deploy.ts" + + ```solidity + import { BytesLike, ethers } from 'ethers'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as dotenv from 'dotenv'; +import readlineSync from 'readline-sync'; + +dotenv.config(); + +interface ChainConfig { + description: string; + chainId: number; + rpc: string; + tokenBridge: string; + wormholeRelayer: string; + wormhole: string; +} + +interface DeployedContracts { + [chainId: number]: { + networkName: string; + CrossChainSender?: string; + CrossChainReceiver?: string; + deployedAt: string; + }; +} + +function loadConfig(): ChainConfig[] { + const configPath = path.resolve(__dirname, '../deploy-config/config.json'); + return JSON.parse(fs.readFileSync(configPath, 'utf8')).chains; +} + +function selectChain( + chains: ChainConfig[], + role: 'source' | 'target' +): ChainConfig { + console.log(`\nSelect the ${role.toUpperCase()} chain:`); + chains.forEach((chain, index) => { + console.log(`${index + 1}: ${chain.description}`); + }); + + const chainIndex = + readlineSync.questionInt( + `\nEnter the number for the ${role.toUpperCase()} chain: ` + ) - 1; + return chains[chainIndex]; +} + +async function main() { + const chains = loadConfig(); + + const sourceChain = selectChain(chains, 'source'); + const targetChain = selectChain(chains, 'target'); + + const sourceProvider = new ethers.JsonRpcProvider(sourceChain.rpc); + const targetProvider = new ethers.JsonRpcProvider(targetChain.rpc); + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, sourceProvider); + + const senderJson = JSON.parse( + fs.readFileSync( + path.resolve( + __dirname, + '../out/CrossChainSender.sol/CrossChainSender.json' + ), + 'utf8' + ) + ); + + const abi = senderJson.abi; + const bytecode = senderJson.bytecode; + + const CrossChainSenderFactory = new ethers.ContractFactory( + abi, + bytecode, + wallet + ); + + try { + const senderContract = await CrossChainSenderFactory.deploy( + sourceChain.wormholeRelayer, + sourceChain.tokenBridge, + sourceChain.wormhole + ); + await senderContract.waitForDeployment(); + + // Safely access the deployed contract's address + const senderAddress = (senderContract as ethers.Contract).target; + console.log( + `CrossChainSender on ${sourceChain.description}: ${senderAddress}` + ); + + const targetWallet = new ethers.Wallet( + process.env.PRIVATE_KEY!, + targetProvider + ); + const receiverJson = JSON.parse( + fs.readFileSync( + path.resolve( + __dirname, + '../out/CrossChainReceiver.sol/CrossChainReceiver.json' + ), + 'utf8' + ) + ); + const CrossChainReceiverFactory = new ethers.ContractFactory( + receiverJson.abi, + receiverJson.bytecode, + targetWallet + ); + + const receiverContract = await CrossChainReceiverFactory.deploy( + targetChain.wormholeRelayer, + targetChain.tokenBridge, + targetChain.wormhole + ); + await receiverContract.waitForDeployment(); + + // Safely access the deployed contract's address + const receiverAddress = (receiverContract as ethers.Contract).target; + console.log( + `CrossChainReceiver on ${targetChain.description}: ${receiverAddress}` + ); + + // Register the sender contract in the receiver contract + console.log( + `Registering CrossChainSender (${senderAddress}) as a valid sender in CrossChainReceiver (${receiverAddress})...` + ); + + const CrossChainReceiverContract = new ethers.Contract( + receiverAddress, + receiverJson.abi, + targetWallet + ); + + const tx = await CrossChainReceiverContract.setRegisteredSender( + sourceChain.chainId, + ethers.zeroPadValue(senderAddress as BytesLike, 32) + ); + + await tx.wait(); + console.log( + `CrossChainSender registered as a valid sender on ${targetChain.description}` + ); + + // Load existing deployed contract addresses from contracts.json + const deployedContractsPath = path.resolve( + __dirname, + '../deploy-config/contracts.json' + ); + let deployedContracts: DeployedContracts = {}; + + if (fs.existsSync(deployedContractsPath)) { + deployedContracts = JSON.parse( + fs.readFileSync(deployedContractsPath, 'utf8') + ); + } + + // Update the contracts.json file: + // If a contract already exists on a chain, update its address; otherwise, add a new entry. + if (!deployedContracts[sourceChain.chainId]) { + deployedContracts[sourceChain.chainId] = { + networkName: sourceChain.description, + deployedAt: new Date().toISOString(), + }; + } + deployedContracts[sourceChain.chainId].CrossChainSender = + senderAddress.toString(); + deployedContracts[sourceChain.chainId].deployedAt = + new Date().toISOString(); + + if (!deployedContracts[targetChain.chainId]) { + deployedContracts[targetChain.chainId] = { + networkName: targetChain.description, + deployedAt: new Date().toISOString(), + }; + } + deployedContracts[targetChain.chainId].CrossChainReceiver = + receiverAddress.toString(); + deployedContracts[targetChain.chainId].deployedAt = + new Date().toISOString(); + + // Save the updated contracts.json file + fs.writeFileSync( + deployedContractsPath, + JSON.stringify(deployedContracts, null, 2) + ); + } catch (error: any) { + if (error.code === 'INSUFFICIENT_FUNDS') { + console.error( + 'Error: Insufficient funds for deployment. Please make sure your wallet has enough funds to cover the gas fees.' + ); + } else { + console.error('An unexpected error occurred:', error.message); + } + process.exit(1); + } +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); + ``` + +5. **Add your private key** - you'll need to provide your private key. It allows your deployment script to sign the transactions that deploy the smart contracts to the blockchain. Without it, the script won't be able to interact with the blockchain on your behalf + + Create a `.env` file in the root of the project and add your private key: + + ```bash + touch .env + ``` + + Inside `.env`, add your private key in the following format: + + ```env + PRIVATE_KEY=INSERT_PRIVATE_KEY + ``` + +6. **Run the deployment script** + + 1. Open a terminal and run the following command: + + ```bash + npx ts-node script/deploy.ts + ``` + + This will execute the deployment script, deploying both contracts to the selected chains. + + 2. Check the deployment output: + + - You will see the deployed contract addresses printed in the terminal if successful. The `contracts.json` file will be updated with these addresses + - If you encounter an error, the script will provide feedback, such as insufficient funds for gas + +If you followed the logic provided in the full code above, your terminal output should look something like this: + +
+ npx ts-node deploy.ts + > cross-chain-token-transfer@1.0.0 deploy + > npx ts-node script/deploy.ts + Select the SOURCE chain: + 1: Avalanche testnet fuji + 2: Celo Testnet + + Enter the number for the SOURCE chain: 1 + + Select the TARGET chain: + 1: Avalanche testnet fuji + 2: Celo Testnet + + Enter the number for the TARGET chain: 2 + CrossChainSender Avalanche testnet fuji: 0x1Cac52a183D02F9002fdb37b13eC2fAB950d44E3 + CrossChainReceiver Celo Testnet: 0xD720BFF42a0960cfF1118454A907a44dB358f2b1 + + Registering CrossChainSender (0x1Cac52a183D02F9002fdb37b13eC2fAB950d44E3) as a valid sender in CrossChainReceiver (0xD720BFF42a0960cfF1118454A907a44dB358f2b1)... + + CrossChainSender registered as a valid sender on Celo Testnet + +
+ + +## Transfer Tokens Across Chains + +### Quick Recap + +Up to this point, you've set up a new Solidity project using Foundry, developed two key contracts (`CrossChainSender` and `CrossChainReceiver`), and created a deployment script to deploy these contracts to different blockchain networks. The deployment script also saves the new contract addresses for easy reference. With everything in place, it's time to transfer tokens using the deployed contracts. + +In this step, you'll write a script to transfer tokens across chains using the `CrossChainSender` and `CrossChainReceiver` contracts you deployed earlier. This script will interact with the contracts and facilitate the cross-chain token transfer. + +### Transfer Script + +1. **Set up the transfer script** + + 1. Create a new file named `transfer.ts` in the `/script` directory: + + ```bash + touch script/transfer.ts + ``` + + 2. Open the file. Start with the necessary imports, interfaces and configurations: + + ```typescript + import * as fs from 'fs'; +import * as path from 'path'; +import * as dotenv from 'dotenv'; +import readlineSync from 'readline-sync'; + +dotenv.config(); + +interface ChainConfig { + description: string; + chainId: number; + rpc: string; + tokenBridge: string; + wormholeRelayer: string; + wormhole: string; +} + +interface DeployedContracts { + [chainId: number]: { + networkName: string; + CrossChainSender?: string; + CrossChainReceiver?: string; + deployedAt: string; + }; +} + ``` + + These imports include the essential libraries for interacting with Ethereum, handling file paths, loading environment variables, and managing user input. + + 3. Load configuration and contracts: + + + ```typescript + const configPath = path.resolve(__dirname, '../deploy-config/config.json'); + return JSON.parse(fs.readFileSync(configPath, 'utf8')).chains; +} + +function loadDeployedContracts(): DeployedContracts { + const contractsPath = path.resolve( + __dirname, + '../deploy-config/contracts.json' + ); + if ( + !fs.existsSync(contractsPath) || + fs.readFileSync(contractsPath, 'utf8').trim() === '' + ) { + console.error( + 'No contracts found. Please deploy contracts first before transferring tokens.' + ); + process.exit(1); + } + return JSON.parse(fs.readFileSync(contractsPath, 'utf8')); +} + ``` + + These functions load the network and contract details that were saved during deployment. + + 4. Allow users to select source and target chains: + + Refer to the deployed contracts and create logic as desired. In our example, we made this process interactive, allowing users to select the source and target chains from all the historically deployed contracts. This interactive approach helps ensure the correct chains are selected for the token transfer. + + ```typescript + chainId: number; + networkName: string; +} { + const sourceOptions = Object.entries(deployedContracts).filter( + ([, contracts]) => contracts.CrossChainSender + ); + + if (sourceOptions.length === 0) { + console.error('No source chains available with CrossChainSender deployed.'); + process.exit(1); + } + + console.log('\nSelect the source chain:'); + sourceOptions.forEach(([chainId, contracts], index) => { + console.log(`${index + 1}: ${contracts.networkName}`); + }); + + const selectedIndex = + readlineSync.questionInt(`\nEnter the number for the source chain: `) - 1; + return { + chainId: Number(sourceOptions[selectedIndex][0]), + networkName: sourceOptions[selectedIndex][1].networkName, + }; +} + +function selectTargetChain(deployedContracts: DeployedContracts): { + chainId: number; + networkName: string; +} { + const targetOptions = Object.entries(deployedContracts).filter( + ([, contracts]) => contracts.CrossChainReceiver + ); + + if (targetOptions.length === 0) { + console.error( + 'No target chains available with CrossChainReceiver deployed.' + ); + process.exit(1); + } + + console.log('\nSelect the target chain:'); + targetOptions.forEach(([chainId, contracts], index) => { + console.log(`${index + 1}: ${contracts.networkName}`); + }); + + const selectedIndex = + readlineSync.questionInt(`\nEnter the number for the target chain: `) - 1; + return { + chainId: Number(targetOptions[selectedIndex][0]), + networkName: targetOptions[selectedIndex][1].networkName, + }; +} + ``` + +2. **Implement the token transfer logic** + + 1. Start the `main` function: + + ```typescript + const chains = loadConfig(); + const deployedContracts = loadDeployedContracts(); + + // Select the source chain (only show chains with CrossChainSender deployed) + const { chainId: sourceChainId, networkName: sourceNetworkName } = + selectSourceChain(deployedContracts); + const sourceChain = chains.find((chain) => chain.chainId === sourceChainId)!; + + // Select the target chain (only show chains with CrossChainReceiver deployed) + const { chainId: targetChainId, networkName: targetNetworkName } = + selectTargetChain(deployedContracts); + const targetChain = chains.find((chain) => chain.chainId === targetChainId)!; + + // Set up providers and wallets + const sourceProvider = new ethers.JsonRpcProvider(sourceChain.rpc); + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, sourceProvider); + + // Load the ABI from the JSON file (use the compiled ABI from Forge or Hardhat) + const CrossChainSenderArtifact = JSON.parse( + fs.readFileSync( + path.resolve( + __dirname, + '../out/CrossChainSender.sol/CrossChainSender.json' + ), + 'utf8' + ) + ); + + const abi = CrossChainSenderArtifact.abi; + + // Create the contract instance using the full ABI + const CrossChainSender = new ethers.Contract( + deployedContracts[sourceChainId].CrossChainSender!, + abi, + wallet + ); + ``` + + The `main` function is where the token transfer logic will reside. It loads the chain and contract details, sets up the wallet and provider, and loads the `CrossChainSender` contract. + + 2. Ask the user for token transfer details: + + You'll now ask the user for the token contract address, the recipient address on the target chain, and the amount of tokens to transfer. + + ```typescript + 'Enter the token contract address: ' + ); + const recipientAddress = readlineSync.question( + 'Enter the recipient address on the target chain: ' + ); + + // Get the token contract + const tokenContractDecimals = new ethers.Contract( + tokenAddress, + [ + 'function decimals() view returns (uint8)', + 'function approve(address spender, uint256 amount) public returns (bool)', + ], + wallet + ); + + // Fetch the token decimals + const decimals = await tokenContractDecimals.decimals(); + + // Get the amount from the user, then parse it according to the token's decimals + const amount = ethers.parseUnits( + readlineSync.question('Enter the amount of tokens to transfer: '), + decimals + ); + ``` + + This section of the script prompts the user for the token contract address and the recipient's address, fetches the token's decimal value, and parses the amount accordingly. + + 3. Initiate the transfer: + + Finally, initiate the cross-chain transfer and log the details. + + ```typescript + // Approve the CrossChainSender contract to transfer tokens on behalf of the user + const tokenContract = new ethers.Contract( + tokenAddress, + ['function approve(address spender, uint256 amount) public returns (bool)'], + wallet + ); + + const approveTx = await tokenContract.approve( + deployedContracts[sourceChainId].CrossChainSender!, + amount + ); + await approveTx.wait(); + console.log(`Approved tokens for cross-chain transfer.`); + + // Initiate the cross-chain transfer + const transferTx = await CrossChainSender.sendCrossChainDeposit( + targetChainId, + deployedContracts[targetChainId].CrossChainReceiver!, + recipientAddress, + amount, + tokenAddress, + { value: cost } // Attach the necessary fee for cross-chain transfer + ); + await transferTx.wait(); + console.log( + `Transfer initiated from ${sourceNetworkName} to ${targetNetworkName}. Transaction Hash: ${transferTx.hash}` + ); +} + ``` + + This part of the script first approves the token transfer, then initiates the cross-chain transfer using the `CrossChainSender` contract, and finally logs the transaction hash for the user to track. + + 4. Finalize the script: + + ```typescript + console.error(error); + process.exit(1); +}); + ``` + + This section finalizes the script by calling the `main` function and handling any errors that may occur during the token transfer process. + +You can find the full code for the `transfer.ts` file below: + +??? code "transfer.ts" + + ```solidity + import { ethers } from 'ethers'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as dotenv from 'dotenv'; +import readlineSync from 'readline-sync'; + +dotenv.config(); + +interface ChainConfig { + description: string; + chainId: number; + rpc: string; + tokenBridge: string; + wormholeRelayer: string; + wormhole: string; +} + +interface DeployedContracts { + [chainId: number]: { + networkName: string; + CrossChainSender?: string; + CrossChainReceiver?: string; + deployedAt: string; + }; +} + +function loadConfig(): ChainConfig[] { + const configPath = path.resolve(__dirname, '../deploy-config/config.json'); + return JSON.parse(fs.readFileSync(configPath, 'utf8')).chains; +} + +function loadDeployedContracts(): DeployedContracts { + const contractsPath = path.resolve( + __dirname, + '../deploy-config/contracts.json' + ); + if ( + !fs.existsSync(contractsPath) || + fs.readFileSync(contractsPath, 'utf8').trim() === '' + ) { + console.error( + 'No contracts found. Please deploy contracts first before transferring tokens.' + ); + process.exit(1); + } + return JSON.parse(fs.readFileSync(contractsPath, 'utf8')); +} + +function selectSourceChain(deployedContracts: DeployedContracts): { + chainId: number; + networkName: string; +} { + const sourceOptions = Object.entries(deployedContracts).filter( + ([, contracts]) => contracts.CrossChainSender + ); + + if (sourceOptions.length === 0) { + console.error('No source chains available with CrossChainSender deployed.'); + process.exit(1); + } + + console.log('\nSelect the source chain:'); + sourceOptions.forEach(([chainId, contracts], index) => { + console.log(`${index + 1}: ${contracts.networkName}`); + }); + + const selectedIndex = + readlineSync.questionInt(`\nEnter the number for the source chain: `) - 1; + return { + chainId: Number(sourceOptions[selectedIndex][0]), + networkName: sourceOptions[selectedIndex][1].networkName, + }; +} + +function selectTargetChain(deployedContracts: DeployedContracts): { + chainId: number; + networkName: string; +} { + const targetOptions = Object.entries(deployedContracts).filter( + ([, contracts]) => contracts.CrossChainReceiver + ); + + if (targetOptions.length === 0) { + console.error( + 'No target chains available with CrossChainReceiver deployed.' + ); + process.exit(1); + } + + console.log('\nSelect the target chain:'); + targetOptions.forEach(([chainId, contracts], index) => { + console.log(`${index + 1}: ${contracts.networkName}`); + }); + + const selectedIndex = + readlineSync.questionInt(`\nEnter the number for the target chain: `) - 1; + return { + chainId: Number(targetOptions[selectedIndex][0]), + networkName: targetOptions[selectedIndex][1].networkName, + }; +} + +async function main() { + const chains = loadConfig(); + const deployedContracts = loadDeployedContracts(); + + // Select the source chain (only show chains with CrossChainSender deployed) + const { chainId: sourceChainId, networkName: sourceNetworkName } = + selectSourceChain(deployedContracts); + const sourceChain = chains.find((chain) => chain.chainId === sourceChainId)!; + + // Select the target chain (only show chains with CrossChainReceiver deployed) + const { chainId: targetChainId, networkName: targetNetworkName } = + selectTargetChain(deployedContracts); + const targetChain = chains.find((chain) => chain.chainId === targetChainId)!; + + // Set up providers and wallets + const sourceProvider = new ethers.JsonRpcProvider(sourceChain.rpc); + const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, sourceProvider); + + // Load the ABI from the JSON file (use the compiled ABI from Forge or Hardhat) + const CrossChainSenderArtifact = JSON.parse( + fs.readFileSync( + path.resolve( + __dirname, + '../out/CrossChainSender.sol/CrossChainSender.json' + ), + 'utf8' + ) + ); + + const abi = CrossChainSenderArtifact.abi; + + // Create the contract instance using the full ABI + const CrossChainSender = new ethers.Contract( + deployedContracts[sourceChainId].CrossChainSender!, + abi, + wallet + ); + + // Display the selected chains + console.log( + `\nInitiating transfer from ${sourceNetworkName} to ${targetNetworkName}.` + ); + + // Ask the user for token transfer details + const tokenAddress = readlineSync.question( + 'Enter the token contract address: ' + ); + const recipientAddress = readlineSync.question( + 'Enter the recipient address on the target chain: ' + ); + + // Get the token contract + const tokenContractDecimals = new ethers.Contract( + tokenAddress, + [ + 'function decimals() view returns (uint8)', + 'function approve(address spender, uint256 amount) public returns (bool)', + ], + wallet + ); + + // Fetch the token decimals + const decimals = await tokenContractDecimals.decimals(); + + // Get the amount from the user, then parse it according to the token's decimals + const amount = ethers.parseUnits( + readlineSync.question('Enter the amount of tokens to transfer: '), + decimals + ); + + // Calculate the cross-chain transfer cost + const cost = await CrossChainSender.quoteCrossChainDeposit(targetChainId); + + // Approve the CrossChainSender contract to transfer tokens on behalf of the user + const tokenContract = new ethers.Contract( + tokenAddress, + ['function approve(address spender, uint256 amount) public returns (bool)'], + wallet + ); + + const approveTx = await tokenContract.approve( + deployedContracts[sourceChainId].CrossChainSender!, + amount + ); + await approveTx.wait(); + console.log(`Approved tokens for cross-chain transfer.`); + + // Initiate the cross-chain transfer + const transferTx = await CrossChainSender.sendCrossChainDeposit( + targetChainId, + deployedContracts[targetChainId].CrossChainReceiver!, + recipientAddress, + amount, + tokenAddress, + { value: cost } // Attach the necessary fee for cross-chain transfer + ); + await transferTx.wait(); + console.log( + `Transfer initiated from ${sourceNetworkName} to ${targetNetworkName}. Transaction Hash: ${transferTx.hash}` + ); +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); + ``` + +### Transfer Tokens + +Now that your transfer script is ready, it’s time to execute it and perform a cross-chain token transfer. + +1. **Run the transfer script** + + Open your terminal and run the transfer script: + + ```bash + npx ts-node script/transfer.ts + ``` + + This command will start the script, prompting you to select the source and target chains, input the token address, recipient address, and the amount of tokens to transfer. + +2. **Follow the prompts** - the script will guide you through selecting the source and target chains and entering the necessary details for the token transfer. Once you provide all the required information, the script will initiate the token transfer + +3. **Verify the transaction** - after running the script, you should see a confirmation message with the transaction hash. You can use this transaction hash to check the transfer status on the respective blockchain explorers + +You can verify the transaction on the [Wormhole Explorer](https://wormholescan.io/){target=\_balnk} using the link provided in the terminal output. This explorer also offers the option to add the transferred token to your MetaMask wallet automatically. + +If you followed the logic provided in the `transfer.ts` file above, your terminal output should look something like this: + +
+ npx ts-node transfer.ts + > cross-chain-token-transfer@1.0.0 transfer + > npx ts-node script/transfer.ts + + Select the source chain: + 1: Avalanche testnet fuji + 2: Celo Testnet + + Enter the number for the SOURCE chain: 1 + + Select the target chain: + 1: Avalanche testnet fuji + 2: Celo Testnet + + Enter the number for the TARGET chain: 2 + + Initiating transfer from Avalanche testnet fuji to Celo Testnet + Enter the token contract address: 0x5425890298aed601595a70ab815c96711a31bc65 + Enter the recipient address on the target chain: INSERT_YOUR_WALLET_ADDRESS + Enter the amount of tokens to transfer: 2 + Approved tokens for cross-chain transfer. + Transfer initiated from Avalanche testnet fuji to Celo Testnet. Transaction Hash: 0x4a923975d955c1f226a1c2f61a1a0fa1ab1a9e229dc29ceaeadf8ef40acd071f + +
+ +!!! note + In this example, we demonstrated a token transfer from the Avalanche Fuji Testnet to the Celo Alfajores Testnet. We sent two units of USDC Testnet tokens using the token contract address `0x5425890298aed601595a70ab815c96711a31bc65`. You can replace these details with those relevant to your project or use the same for testing purposes. + +## Resources + +If you'd like to explore the complete project or need a reference while following this tutorial, you can find the complete codebase in the [Cross-Chain Token Transfers GitHub repository](https://github.com/wormhole-foundation/demo-cross-chain-token-transfer){target=\_blank}. The repository includes all the scripts, contracts, and configurations needed to deploy and transfer tokens across chains using the Wormhole protocol. + +## Conclusion + +Congratulations! You've successfully built and deployed a cross-chain token transfer system using Solidity and the Wormhole protocol. You've learned how to: + + - Set up a new Solidity project using Foundry + - Develop smart contracts to send and receive tokens across chains + - Write deployment scripts to manage and deploy contracts on different networks +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/contract-integrations/ +--- BEGIN CONTENT --- +--- +title: Cross-Chain Contract Integration Tutorials +description: Master cross-chain smart contracts with Wormhole. Learn messaging, token transfers, and secure, scalable dApp deployments across blockchains. +--- + +# Cross-Chain Contract Tutorials + +Expand the reach of your decentralized applications by building smart contracts that can communicate across multiple blockchains. Through these tutorials, you’ll learn to create robust cross-chain contracts, enabling your dApps to tap into global liquidity, diverse functionalities, and a broader user base. + +
+ +- :octicons-repo-16:{ .lg .middle } **Create Cross-Chain Messaging Contracts** + + --- + + Learn how to build and deploy smart contracts that communicate seamlessly across multiple blockchains. This tutorial walks you through using Wormhole’s Solidity SDK to send and receive messages between Avalanche Fuji and Celo Alfajores, helping you master emitter validation, relayer usage, and cross-chain cost management. + + [:custom-arrow: Start building](/docs/tutorials/by-product/contract-integrations/cross-chain-contracts/) + +- :octicons-repo-16:{ .lg .middle } **Create Cross-Chain Token Transfer Contracts** + + --- + + Discover how to create a fully functional cross-chain token transfer system using Wormhole’s Solidity SDK. This tutorial guides you through token attestation, contract deployment, and secure transfers of ERC-20 tokens between test networks. By the end, you’ll know how to tap into global liquidity and enrich your dApps with seamless multi-chain asset movement. + + [:custom-arrow: Start building](/docs/tutorials/by-product/contract-integrations/cross-chain-token-contracts/) + +
+ +## Additional Resources + +
+ +- :octicons-book-16:{ .lg .middle } **Core Contracts** + + --- + + Dive deeper into Wormhole’s foundational concepts for cross-chain contracts. Discover how messaging, guardians, and VAAs work together to enable secure, scalable dApps. + + [:custom-arrow: Explore Core Contracts](/docs/learn/infrastructure/core-contracts/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/ +--- BEGIN CONTENT --- +--- +title: Tutorials by Product +description: Discover product-specific Wormhole tutorials. Learn setup, integration, and advanced features to develop cross-chain apps confidently. +--- + +# Tutorials by Product + +In this section, you'll find tutorials focused on individual Wormhole products. Each product folder contains detailed guides to help you integrate and use specific Wormhole services, such as Token Bridge, Wormhole Connect, and more. Whether setting up your first product or diving deeper into advanced features, these tutorials will walk you through the entire process, from installation to implementation. + +
+ +- :octicons-arrow-switch-16:{ .lg .middle } **Connect** + + --- + + With Wormhole Connect, you can enable seamless connectivity between different blockchain ecosystems. These tutorials guide you through integrating Connect into your projects, allowing you to easily leverage cross-chain interactions, simplify onboarding, and improve user experience. + + [:custom-arrow: Start building](/docs/tutorials/by-product/connect/) + +- :octicons-file-code-16:{ .lg .middle } **Contract Integrations** + + --- + + Learn to build smart contracts that communicate across multiple blockchains. These tutorials show you how to create robust cross-chain contracts, allowing your dApps to move beyond a single network and tap into global liquidity, functionality, and user bases. + + [:custom-arrow: Start building](/docs/tutorials/by-product/contract-integrations/) + +- :octicons-people-16:{ .lg .middle } **MultiGov** + + --- + + Unleash the power of cross-chain governance with Multigov. These tutorials guide you through setting up and managing governance structures spanning multiple blockchains, enabling collective decision-making and coordinated upgrades across decentralized ecosystems. + + [:custom-arrow: Start building](/docs/tutorials/by-product/multigov/) + +- :octicons-code-square-16:{ .lg .middle } **Wormhole SDK** + + --- + + Master the tools to build cross-chain applications with the Wormhole SDK. These tutorials cover installation to advanced functionality, helping you streamline development, reduce complexity, and quickly bring your ideas to life. + + [:custom-arrow: Start building](/docs/tutorials/by-product/wormhole-sdk/) + +- :octicons-sync-16:{ .lg .middle } **Multichain Assets** + + --- + + Learn how to create, register, and manage wrapped multichain assets across multiple chains. These tutorials will guide you through the process of enabling asset transfers between supported networks. + + [:custom-arrow: Start building](/docs/tutorials/by-product/multichain-assets/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/multichain-assets/ +--- BEGIN CONTENT --- +--- +title: Multichain Assets Tutorials +description: Explore comprehensive, step-by-step tutorials on how to register, manage, and work with multichain assets within the Wormhole ecosystem. +--- + +# Multichain Assets + +Multichain assets, often represented as wrapped tokens, enable seamless cross-chain interoperability. This section provides step-by-step tutorials for registering, managing, and working with these assets across different blockchains. + +
+ +- :octicons-repo-16:{ .lg .middle } **Create Multichain Tokens** + + --- + + Learn how to register your token on both a source and target chain, and create a wrapped version for seamless interoperability. + + [:custom-arrow: Register your assets now](/docs/tutorials/by-product/multichain-assets/multichain-token/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/multichain-assets/multichain-token/ +--- BEGIN CONTENT --- +--- +title: Create Multichain Tokens +description: Learn how to create a multichain token, bridge tokens across blockchains, and update metadata for seamless multichain interoperability. +--- + +# Create Multichain Tokens + +## Introduction + +Blockchain ecosystems are becoming increasingly interconnected, with assets often needing to exist across multiple networks to maximize their utility and reach. For example, tokens created on one chain may want to expand to others to tap into broader audiences and liquidity pools. + +This guide explains how to create a multichain token—a token that seamlessly bridges across blockchains using the Wormhole protocol. The process is designed to be user-friendly. With just a few steps, your token can become multichain, enabling it to be traded or used on various networks. + +By the end of this tutorial, you'll learn: + +- How to register your token for bridging +- How to create a wrapped version of your token +- How to ensure its visibility on blockchain explorers + +Let’s begin with a straightforward, step-by-step process for creating a multichain token and expanding its reach. + +## Register the Token on the Source Chain + +The first step in creating a multichain token is registering your token on its source chain. This ensures the token is prepared for bridging across blockchains. Follow these steps: + +1. Open the [Portal Bridge](https://portalbridge.com/advanced-tools/#/register){target=\_blank} +2. Select the blockchain where your token is currently deployed (source chain) +3. Connect your wallet by following the on-screen instructions +4. Locate the **Asset** field and paste the token contract address +5. Click **Next** to proceed + +Source Chain Registration Screen + +## Register the Token on the Target Chain + +After registering your token on the source chain, the next step is to select the target chain—the blockchain where you want the wrapped version of your token to exist. This step connects your token to its destination network. + +1. Choose the blockchain where you want the token to be bridged (target chain) +2. Connect your wallet to the target chain +3. Click **Next** to finalize the registration process + +Target Chain Registration Screen + +## Send an Attestation +Attestation is a key step in the process. It verifies your token’s metadata, ensuring it is correctly recognized on the target chain’s blockchain explorer (e.g., [Etherscan](https://etherscan.io/){target=\_blank}). + +1. Click **Attest** to initiate the attestation process +2. Approve the transaction in your wallet when prompted + +Send Attestation Screen + +!!! note + - Attestation is crucial for token metadata to appear correctly on blockchain explorers like Etherscan, allowing users to identify and trust your token + - Ensure you have sufficient funds to cover transaction fees on the target chain + +## Create the Wrapped Token + +The final step is to create the wrapped token on the target chain. This token represents the original asset and enables its use within the target blockchain. + +1. Click **Create** to generate the wrapped token +2. Approve the transaction in your wallet when prompted + +Create Wrapped Token Screen + +Upon successful creation, you will see a confirmation screen displaying key details such as the source chain, target chain, and transaction status. This helps verify that the process was completed correctly. Refer to the image below as an example: + +Confirmation Screen + +## Additional Steps and Recommendations + +After creating your multichain token, there are a few optional but highly recommended steps to ensure the best experience for users interacting with your token. + +### Add Your Token to the Wormhole Metadata List (Legacy) + +For legacy compatibility in the [**Advanced Tools**](https://portalbridge.com/advanced-tools/){target=\_blank} section of Portal Bridge, you can request updates to your token metadata. Follow these steps: + +1. Join the [Wormhole Discord server](https://discord.com/invite/wormholecrypto){target=\_blank} +2. Submit a request for metadata updates in the appropriate support channel + +!!! note + These updates only apply to the **Advanced Tools** section of Portal Bridge and will not update how your token appears in other Wormhole-powered apps or on blockchain explorers like Etherscan. + +### Update Metadata on Blockchain Explorers + +It is recommended that you update your token’s metadata on blockchain explorers such as Etherscan. This includes adding details like the token logo, price, and contract verification. + +1. Create an account on the relevant scanner and go to the [token update section](https://etherscan.io/tokenupdate){target=\_blank} (or the relevant scanner that you would like to update metadata on) +2. Copy and paste the wrapped contract address in the **Token Update Application Form** +3. Before proceeding to the next step, you will need to verify as the contract address owner on [Etherscan’s address verification tool](https://etherscan.io/verifyAddress/){target=\_blank} +4. Follow the directions to verify contract address ownership via MetaMask by reviewing the [guide on verifying address ownership](https://info.etherscan.com/how-to-verify-address-ownership/){target=\_blank} + - Given that Wormhole may be the contract owner, use the manual verification process by reaching out through the [Etherscan contact form](https://etherscan.io/contactus){target=\_blank}. The team will provide support as needed +5. Once the step above is completed, follow the [instructions to update token information](https://info.etherscan.com/how-to-update-token-information-on-token-page/){target=\_blank} +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/multigov/ +--- BEGIN CONTENT --- +--- +title: Step-by-Step MultiGov Tutorials +description: Access step-by-step guides for executing cross-chain governance actions, including treasury management proposals with MultiGov and Wormhole. +--- + +# MultiGov Tutorials + +Welcome to the MultiGov tutorials section. In this section, you will find tutorials that walk you through the key steps of working with MultiGov, providing clear instructions to help you get started. As you explore, you'll gain a deeper understanding of MultiGov's features and functionality. + +## Get Started + +
+ +- :octicons-repo-16:{ .lg .middle } **Cross-Chain Treasury Management Proposal** + + --- + + Learn how to propose governance actions on a hub chain, gather votes from spoke chains, aggregate the results, and carry out the final decision. Following these steps, you’ll master end-to-end governance workflows spanning multiple networks. + + [:custom-arrow: Start building](/docs/tutorials/by-product/multigov/treasury-proposal/) + +
+ +## Additional Resources + +
+ +- :octicons-book-16:{ .lg .middle } **Governance Fundamentals** + + --- + + Dive into Wormhole’s governance mechanisms. Understand how cross-chain governance works, proposal creation, voting, and execution. + + [:custom-arrow: Explore governance](/docs/learn/governance/) + +- :octicons-tools-16:{ .lg .middle } **Implement MultiGov** + + --- + + Integrate MultiGov into your smart contracts. Access reference code, best practices, and guidance for deploying cross-chain governance systems. + + + [:custom-arrow: Build with MultiGov](/docs/build/multigov/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/multigov/treasury-proposal/ +--- BEGIN CONTENT --- +--- +title: MultiGov Guides +description: Learn how to initiate a proposal on a hub chain, vote from spoke chains, aggregate the votes, and finally execute the proposal using Wormhole's MultiGov. +--- + +# Cross-Chain treasury management proposal + +This guide walks through the process of creating and executing a cross-chain governance proposal to mint W tokens to both the Optimism and Arbitrum treasuries. In this tutorial, we'll cover how to create a proposal on the hub chain (Ethereum Mainnet), cast votes from spoke chains (Optimism and Arbitrum), aggregate votes, and execute the proposal. + +## Create a Proposal + +The first step is to create a proposal on the hub chain, which in this case is Ethereum Mainnet. The proposal will contain instructions to mint 10 W tokens to the Optimism treasury and 15 ETH to the Arbitrum treasury. + +In the following code snippet, we initialize the proposal with two transactions, each targeting the Hub's Message Dispatcher contract. These transactions will relay the governance actions to the respective spoke chains via Wormhole. + +Key actions: + +- Define the proposal targets (two transactions to the Message Dispatcher) +- Set values for each transaction (in this case, both are 0 as we're not transferring any native ETH) +- Encode the calldata for minting 10 W tokens on Optimism and sending 15 ETH to Arbitrum +- Finally, we submit the proposal to the `HubGovernor` contract + +```solidity +HubGovernor governor = HubGovernor(GOVERNOR_ADDRESS); +// Prepare proposal details +address[] memory targets = new address[](2); +targets[0] = HUB_MESSAGE_DISPATCHER_ADDRESS; +targets[1] = HUB_MESSAGE_DISPATCHER_ADDRESS; +uint256[] memory values = new uint256[](2); +values[0] = 0; +values[1] = 0; +bytes[] memory calldatas = new bytes[](2); +// Prepare message for Optimism to mint 10 W tokens +// bytes created using abi.encodeWithSignature("mint(address,uint256)", 0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91, 10e18) +calldatas[0] = abi.encodeWithSignature( + "dispatch(bytes)", + abi.encode( + OPTIMISM_WORMHOLE_CHAIN_ID, + [OPTIMISM_WORMHOLE_TREASURY_ADDRESS], + [uint256(10 ether)], + [hex"0x40c10f19000000000000000000000000b0ffa8000886e57f86dd5264b9582b2ad87b2b910000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000"] + ) +); +// Prepare message for Arbitrum to receive 15 ETH +calldatas[1] = abi.encodeWithSignature( + "dispatch(bytes)", + abi.encode( + ARBITRUM_WORMHOLE_CHAIN_ID, + [ARBITRUM_WORMHOLE_TREASURY_ADDRESS], + [uint256(15 ether)], + [hex"0x40c10f19000000000000000000000000b0ffa8000886e57f86dd5264b9582b2ad87b2b910000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000"] + ) +); +string memory description = "Mint 10 W to Optimism treasury and 10 W to Arbitrum treasury via Wormhole"; +// Create the proposal +uint256 proposalId = governor.propose( + targets, values, calldatas, description +) +``` + +??? interface "Parameters" + + `GOVERNOR_ADDRESS` ++"address"++ + + The address of the `HubGovernor` contract on Ethereum Mainnet. + + --- + + `targets` ++"address[]"++ + + An array that specifies the addresses that will receive the proposal's actions. Here, both are set to the `HUB_MESSAGE_DISPATCHER_ADDRESS`. + + --- + + `values` ++"uint256[]"++ + + An array containing the value of each transaction (in Wei). In this case, both are set to zero because no ETH is being transferred. + + --- + + `calldatas` ++"bytes[]"++ + + The calldata for the proposal. These are encoded contract calls containing cross-chain dispatch instructions for minting tokens and sending ETH. The calldata specifies minting 10 W tokens to the Optimism treasury and sending 15 ETH to the Arbitrum treasury. + + --- + + `description` ++"string"++ + + A description of the proposal, outlining the intent to mint tokens to Optimism and send ETH to Arbitrum. + +??? interface "Returns" + + `proposalId` ++"uint256"++ + + The ID of the newly created proposal on the hub chain. + +## Vote on the Proposal via Spoke + +Once the proposal is created on the hub chain, stakeholders can cast their votes on the spoke chains. This snippet demonstrates how to connect to a spoke chain and cast a vote for the proposal. The voting power (weight) is calculated based on each stakeholder's token holdings on the spoke chain. + +Key actions: + +- Connect to the `SpokeVoteAggregator` contract on the spoke chain. This contract aggregates votes from the spoke chains and relays them to the hub chain +- Cast a vote in support of the proposal + +```solidity +// Connect to the SpokeVoteAggregator contract of the desired chain +SpokeVoteAggregator voteAggregator = SpokeVoteAggregator(VOTE_AGGREGATOR_ADDRESS); +// Cast a vote +uint8 support = 1; // 1 for supporting, 0 for opposing +uint256 weight = voteAggregator.castVote(proposalId, support); +``` + +??? interface "Parameters" + + `VOTE_AGGREGATOR_ADDRESS` ++"address"++ + + The address of the `SpokeVoteAggregator` contract on the spoke chain (Optimism or Arbitrum). + + --- + + `proposalId` ++"uint256"++ + + The ID of the proposal created on the hub chain, which is being voted on. + + --- + + `support` ++"uint8"++ + + The vote being cast (`1` for supporting the proposal, `0` for opposing). + +??? interface "Returns" + + `weight` ++"uint256"++ + + The weight of the vote, determined by the voter’s token holdings on the spoke chain. + +## Vote Aggregation + +In the background process, votes cast on the spoke chains are aggregated and sent back to the hub chain for final tallying. This is typically handled off-chain by a "crank turner" service, which periodically queries the vote status and updates the hub chain. + +Key actions: + +- Aggregate votes from different chains and submit them to the hub chain for tallying + +```solidity +// Aggregate votes sent to Hub (this would typically be done by a "crank turner" off-chain) +hubVotePool.crossChainVote(queryResponseRaw, signatures); +``` + +??? interface "Parameters" + + `queryResponseRaw` ++"bytes"++ + + The raw vote data from the spoke chains. + + --- + + `signatures` ++"bytes"++ + + Cryptographic signatures that verify the validity of the votes from the spoke chains. + +## Execute Proposal and Dispatch Cross-Chain Messages + +After the proposal passes and the votes are tallied, the next step is to execute the proposal. The `HubGovernor` contract will dispatch the cross-chain messages to the spoke chains, where the respective treasuries will receive the tokens. + +Key actions: + +- Execute the proposal after the voting period ends and the proposal passes +- The `execute` function finalizes the proposal execution by dispatching the cross-chain governance actions. The `descriptionHash` ensures that the executed proposal matches the one that was voted on. + +```solidity +HubGovernor governor = HubGovernor(GOVERNOR_ADDRESS); +// Standard timelock execution +governor.execute(targets, values, calldatas, descriptionHash); +``` + +??? interface "Parameters" + + `governor` ++"HubGovernor"++ + + The `HubGovernor` contract instance. + + --- + + `targets` ++"address[]"++ + + An array containing the target addresses for the proposal’s transactions (in this case, the `HUB_MESSAGE_DISPATCHER_ADDRESS` for both). + + --- + + `values` ++"uint256[]"++ + + An array of values (in Wei) associated with each transaction (both are zero in this case). + + --- + + `calldatas` ++"bytes[]"++ + + The encoded transaction data to dispatch the governance actions (e.g., minting tokens and transferring ETH). + + --- + + `descriptionHash` ++"bytes32"++ + + A hash of the proposal’s description, used to verify the proposal before execution. + +??? interface "Returns" + + No direct return, but executing this function finalizes the cross-chain governance actions by dispatching the encoded messages via Wormhole to the spoke chains. + +Once the proposal is executed, the encoded messages will be dispatched via Wormhole to the spoke chains, where the Optimism and Arbitrum treasuries will receive their respective funds. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/settlements/.index/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlements +description: Follow step-by-step tutorials to integrate Wormhole Settlement Routes using the SDK for seamless cross-chain swaps and efficient asset transfers. +--- + +# Wormhole Settlements + +This section provides hands-on tutorials to help you integrate Wormhole Settlement Routes into your application. Learn how to use the SDK to manage cross-chain swaps, optimize fees, and streamline transaction execution. + +
+ +- :octicons-repo-16:{ .lg .middle } **Integrate Wormhole Settlement Routes using the SDK** + + --- + + Learn how to integrate Wormhole Settlement Routes using the SDK to simplify cross-chain swaps, manage fees, and execute seamless transactions. + + [:custom-arrow: Integrate Settlement Routes](/docs/tutorials/by-product/settlements/settlement-routes/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/settlements/.settlement-routes/ +--- BEGIN CONTENT --- +--- +title: Wormhole Settlements +description: Learn how to integrate Wormhole Settlement Routes using the SDK to simplify cross-chain swaps, manage fees, and execute seamless transactions. +--- + +# Integrate Wormhole Settlement Routes Using the SDK + +## Introduction + +This guide explains integrating Wormhole Settlement Routes from the Wormhole SDK into your application. These Routes abstract the complexity of cross-chain token swaps by handling route discovery, fee estimation, and transaction construction, all useful for dApps seeking to embed cross-chain swaps. By following this tutorial you will install the Wormhole SDK Route package, configure and execute a swap, and explore error handling and troubleshooting. + +## Prerequisites + +Before beginning this project, make sure you have the following: + +- **Wormhole SDK Route package** - installed using your preferred package manager + + To install the package with npm, run the following command in your terminal: + + ```sh + npm install @mayan-finance/wormhole-sdk-route + ``` + + Alternatively, clone the repository and install dependencies: + + ```sh + git clone https://github.com/mayan-finance/wormhole-sdk-route.git + cd wormhole-sdk-route + npm install + ``` + +- **Data for parameters** - you will need: + + - [Chain IDs](/docs/build/reference/chain-ids/){target=\_blank} for the source and destination chains + - An contract address for the token you want to swap and the token you want to receive on the destination chain + +## Configure and Setup + +To initiate a swap, you must create a configuration object that specifies all required parameters. These typically include: + +- `sourceChain` - identifier for the chain where the swap begins +- `destinationChain` - identifier for the target chain +- `inputTokenAddress` - address of the token you want to swap +- `outputTokenAddress` - identifier/address of the desired token on the destination chain +- `amount` - the amount to swap (expressed in the smallest unit, e.g., wei for Ethereum) +- `slippageTolerance` - acceptable percentage of slippage (e.g., 0.005 for 0.5%) + +```ts +import { SwapRoute, SwapRouteConfig } from '@mayan-finance/wormhole-sdk-route'; + +const config: SwapRouteConfig = { + sourceChain: 'ethereum', + destinationChain: 'solana', + inputTokenAddress: '0xYourInputTokenAddress', + outputTokenAddress: 'So11111111111111111111111111111111111111112', // Example token on Solana + amount: '1000000000000000000', // For instance, 1 token in wei + slippageTolerance: 0.005, // 0.5% slippage tolerance + // Additional parameters may be included as needed +}; + +const swapRoute = new SwapRoute(config); +``` + +## Execute a Swap + +Once the configuration is complete, the next steps are to retrieve the optimal swap route and execute the transaction. + +### Fetch the Swap Route + +Before sending a transaction, fetch the optimal swap route to review details such as fees and expected outputs: + +```ts +async function getSwapDetails() { + try { + const routeDetails = await swapRoute.getRoute(); + console.log('Optimal Swap Route:', routeDetails); + return routeDetails; + } catch (error) { + console.error('Error fetching swap route:', error); + throw error; + } +} + +getSwapDetails(); +``` + +### Execute the Swap Transaction + +Once the route is confirmed, execute the swap: + +```ts +async function executeSwap() { + try { + const txResponse = await swapRoute.executeSwap(); + console.log('Swap executed successfully:', txResponse); + // Further transaction handling (e.g., waiting for confirmation) can be added here. + } catch (error) { + console.error('Swap execution failed:', error); + } +} + +executeSwap(); +``` + +## Complete Example Integration + +Below is a complete example that puts together configuration, route fetching, and swap execution: + +```ts +import { SwapRoute, SwapRouteConfig } from '@mayan-finance/wormhole-sdk-route'; + +async function performSwap() { + // Configure the swap parameters + const config: SwapRouteConfig = { + sourceChain: 'ethereum', + destinationChain: 'solana', + inputTokenAddress: '0xYourInputTokenAddress', + outputTokenAddress: 'So11111111111111111111111111111111111111112', + amount: '1000000000000000000', + slippageTolerance: 0.005, + // Include additional settings as needed + }; + + // Initialize the swap route + const swapRoute = new SwapRoute(config); + + try { + // Retrieve the optimal swap route details + const routeDetails = await swapRoute.getRoute(); + console.log('Optimal Swap Route:', routeDetails); + + // Execute the swap transaction + const txResponse = await swapRoute.executeSwap(); + console.log('Swap Transaction Response:', txResponse); + } catch (error) { + console.error('An error occurred during the swap process:', error); + } +} + +performSwap(); +``` + +## Error Handling and Troubleshooting + +- **Route fetching errors** - ensure all configuration parameters (chain IDs, token addresses, amounts) are correct and that network endpoints are reachable +- **Transaction execution errors** - verify that the connected wallet has sufficient funds and that transaction parameters meet the network’s requirements. Detailed logging can assist with troubleshooting +- **Miscellaneous** - to pass a `ReferrerAddress` to the initiation functions, you can create a class that extends the `MayanRoute` class. Override the `referrerAddress` method to return addresses by platform, as shown in this example: + + ```ts + class MayanRefRoute extends MayanRoute { + override referrerAddress(): ReferrerAddresses | undefined { + return { evm: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbe" }; + } + } + ``` +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/ +--- BEGIN CONTENT --- +--- +title: Wormhole SDK Tutorials +description: Master the Wormhole SDK. Build robust cross-chain dApps with messaging, token bridging, and governance across multiple networks. +--- + +# Wormhole SDK Tutorials + +The Wormhole SDK provides the essential building blocks for creating robust cross-chain applications. With its developer-friendly libraries, tools, and interfaces, you can quickly integrate Wormhole’s messaging, token transfer, and governance functionalities into your projects. Whether you’re building a simple cross-chain dApp or architecting a complex multi-chain ecosystem, these tutorials will guide you through mastering the SDK and unlocking the full potential of Wormhole’s infrastructure. + +
+ +- :octicons-repo-16:{ .lg .middle } **Transfer USDC via CCTP** + + --- + + Learn how to move native USDC across chains using Circle’s CCTP and Wormhole’s TypeScript SDK. This tutorial shows you how to streamline transfers with automated attestation and finalization or take complete control with manual steps. Gain the skills to handle seamless USDC bridging, optimize user experience, and improve the reliability of your cross-chain applications. + + [:custom-arrow: Start building](/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp/) + +- :octicons-repo-16:{ .lg .middle } **Transfer Tokens via the Token Bridge** + + --- + + Learn how to build a versatile cross-chain token transfer application using Wormhole’s TypeScript SDK. This tutorial walks you through leveraging the Token Bridge to securely and efficiently move assets between EVM and non-EVM chains. By the end, you’ll understand how to transfer tokens between networks like Ethereum, Solana, Sui, and beyond, opening the door to an interconnected blockchain ecosystem. + + [:custom-arrow: Start building](/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/) + +
+ +## Additional Resources + +
+ +- :octicons-tools-16:{ .lg .middle } **Wormhole SDK Documentation** + + --- + + Learn to build cross-chain dApps using the Wormhole SDK. Access detailed guides, reference code, and best practices for robust application development. + + [:custom-arrow: Learn more](/docs/build/toolkit/typescript-sdk/) + +
+--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/ +--- BEGIN CONTENT --- +--- +title: Transfer Tokens via Token Bridge Tutorial +description: Learn to build a cross-chain native token transfer app using Wormhole’s TypeScript SDK, supporting native token transfers across EVM and non-EVM chains +--- + +# Transfer Tokens via the Token Bridge + +:simple-github: [Source code on GitHub](https://github.com/wormhole-foundation/demo-basic-ts-sdk/){target=\_blank} + +## Introduction + +This tutorial guides you through building a cross-chain token transfer application using the [Wormhole TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts){target=\_blank} and its [Token Bridge](/docs/learn/transfers/token-bridge/){target=\_blank} method. The Token Bridge method enables secure and efficient cross-chain asset transfers across different blockchain networks, allowing users to move tokens seamlessly. + +By leveraging Wormhole’s Token Bridge, this guide shows you how to build an application that supports multiple transfer types: + + - EVM to EVM (e.g., Ethereum to Avalanche) + - EVM to non-EVM chains (e.g., Ethereum to Solana) + - Non-EVM to EVM chains (e.g., Sui to Avalanche) + - Non-EVM to non-EVM chains (e.g., Solana to Sui) + +Existing solutions for cross-chain transfers can be complex and inefficient, requiring multiple steps and transaction fees. However, the Token Bridge method from Wormhole simplifies the process by handling the underlying attestation, transaction validation, and message passing across blockchains. + +At the end of this guide, you’ll have a fully functional setup for transferring assets across chains using Wormhole’s Token Bridge method. + +## Prerequisites + +Before you begin, ensure you have the following: + + - [Node.js and npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm){target=\_blank} installed on your machine + - [TypeScript](https://www.typescriptlang.org/download/){target=\_blank} installed globally + - Native tokens (testnet or mainnet) in Solana and Sui wallets + - A wallet with a private key, funded with native tokens (testnet or mainnet) for gas fees + +## Supported Chains + +The Wormhole SDK supports a wide range of EVM and non-EVM chains, allowing you to facilitate cross-chain transfers efficiently. You can find a complete list of supported chains in the Wormhole SDK [GitHub repository](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/5810ebbd3635aaf1b5ab675da3f99f62aec2210f/core/base/src/constants/circle.ts#L14-L30){target=\_blank}, which covers both testnet and mainnet environments. + +## Project Setup + +In this section, we’ll guide you through initializing the project, installing dependencies, and preparing your environment for cross-chain transfers. + +1. **Initialize the project** - start by creating a new directory for your project and initializing it with `npm`, which will create the `package.json` file for your project + + ```bash + mkdir native-transfers + cd native-transfers + npm init -y + ``` + +2. **Install dependencies** - install the required dependencies, including the Wormhole SDK and helper libraries + + ```bash + npm install @wormhole-foundation/sdk dotenv tsx + ``` + +3. **Set up environment variables** - to securely store your private key, create a `.env` file in the root of your project + + ```bash + touch .env + ``` + + Inside the `.env` file, add your private keys. + + ```env + ETH_PRIVATE_KEY="INSERT_YOUR_PRIVATE_KEY" + SOL_PRIVATE_KEY="INSERT_YOUR_PRIVATE_KEY" + SUI_PRIVATE_KEY="INSERT_SUI_MNEMONIC" + ``` + + !!! note + Ensure your private key contains native tokens for gas on both the source and destination chains. For Sui, you must provide a mnemonic instead of a private key. + +4. **Create a `helpers.ts` file** - to simplify the interaction between chains, create a file to store utility functions for fetching your private key, set up signers for different chains, and manage transaction relays + + 1. Create the helpers file + + ```bash + mkdir -p src/helpers + touch src/helpers/helpers.ts + ``` + + 2. Open the `helpers.ts` file and add the following code + + ```typescript + import { + ChainAddress, + ChainContext, + Network, + Signer, + Wormhole, + Chain, + TokenId, + isTokenId, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import aptos from '@wormhole-foundation/sdk/aptos'; +import { config } from 'dotenv'; +config(); + +export interface SignerStuff { + chain: ChainContext; + signer: Signer; + address: ChainAddress; +} + +// Function to fetch environment variables (like your private key) +function getEnv(key: string): string { + const val = process.env[key]; + if (!val) throw new Error(`Missing environment variable: ${key}`); + return val; +} + +// Signer setup function for different blockchain platforms +export async function getSigner( + chain: ChainContext, + gasLimit?: bigint +): Promise<{ + chain: ChainContext; + signer: Signer; + address: ChainAddress; +}> { + let signer: Signer; + const platform = chain.platform.utils()._platform; + + switch (platform) { + case 'Solana': + signer = await ( + await solana() + ).getSigner(await chain.getRpc(), getEnv('SOL_PRIVATE_KEY')); + break; + case 'Evm': + const evmSignerOptions = gasLimit ? { gasLimit } : {}; + signer = await ( + await evm() + ).getSigner( + await chain.getRpc(), + getEnv('ETH_PRIVATE_KEY'), + evmSignerOptions + ); + break; + case 'Sui': + signer = await ( + await sui() + ).getSigner(await chain.getRpc(), getEnv('SUI_MNEMONIC')); + break; + case 'Aptos': + signer = await ( + await aptos() + ).getSigner(await chain.getRpc(), getEnv('APTOS_PRIVATE_KEY')); + break; + default: + throw new Error('Unsupported platform: ' + platform); + } + + return { + chain, + signer: signer as Signer, + address: Wormhole.chainAddress(chain.chain, signer.address()), + }; +} + +export async function getTokenDecimals< + N extends 'Mainnet' | 'Testnet' | 'Devnet' +>( + wh: Wormhole, + token: TokenId, + sendChain: ChainContext +): Promise { + return isTokenId(token) + ? Number(await wh.getDecimals(token.chain, token.address)) + : sendChain.config.nativeTokenDecimals; +} + ``` + + - **`getEnv`** - this function fetches environment variables like your private key from the `.env` file + - **`getSigner`** - based on the chain you're working with (EVM, Solana, Sui, etc.), this function retrieves a signer for that specific platform. The signer is responsible for signing transactions and interacting with the blockchain. It securely uses the private key stored in your `.env` file + - **`getTokenDecimals`** - this function fetches the number of decimals for a token on a specific chain. It helps handle token amounts accurately during transfers + +## Check and Create Wrapped Tokens + +Before tokens are transferred across chains, it should be checked whether a wrapped version exists on the destination chain. If not, an attestation must be generated to wrap it so it can be sent and received on that chain. + +In this section, you'll create a script that automates this process by checking whether Arbitrum Sepolia has a wrapped version on Base Sepolia and registering it if needed. + +### Configure the Wrapped Token Script + +1. **Create the `create-wrapped.ts` file** - set up the script file that will handle checking and wrapping tokens in the `src` directory + + ```bash + mkdir -p src/scripts + touch src/scripts/create-wrapped.ts + ``` + +2. **Open `create-wrapped.ts` and import the required modules** - import the necessary SDK modules to interact with Wormhole, EVM, Solana, and Sui chains, as well as helper functions for signing and sending transactions + + ```typescript + import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { inspect } from 'util'; +import { getSigner } from '../helpers/helpers'; + ``` + +3. **Initialize the Wormhole SDK** - initialize the `wormhole` function for the `Testnet` environment and specify the platforms (EVM, Solana, and Sui) to support + + ```typescript + const wh = await wormhole('Testnet', [evm, solana, sui]); + ``` + + !!! note + You can replace `'Testnet'` with `'Mainnet'` if you want to perform transfers on Mainnet. + +4. **Configure transfer parameters** - specify Arbitrum Sepolia as the source chain and Base Sepolia as the destination, retrieve the token ID from the source chain for transfer, and set the gas limit (optional) + + ```typescript + const destChain = wh.getChain('BaseSepolia'); + const token = await srcChain.getNativeWrappedTokenId(); + const gasLimit = BigInt(2_500_000); + ``` + +5. **Set up the destination chain signer** - the signer authorizes transactions, such as submitting the attestation + + ```typescript + + ``` + +6. **Check if the token is wrapped on the destination chain** - verify if the token already exists as a wrapped asset before creating an attestation + + ```typescript + try { + const wrapped = await tbDest.getWrappedAsset(token); + console.log( + `Token already wrapped on ${destChain.chain}. Skipping attestation.` + ); + return { chain: destChain.chain, address: wrapped }; + } catch (e) { + console.log( + `No wrapped token found on ${destChain.chain}. Proceeding with attestation.` + ); + } + ``` + + If the token is already wrapped, the script exits, and you may proceed to the [next section](/docs/tutorials/by-product/wormhole-sdk/tokens-via-token-bridge/#token-transfers). Otherwise, an attestation must be generated. + +7. **Set up the source chain signer** - the signer creates and submits the attestation transaction + + ```typescript + + ``` + +8. **Create an attestation transaction** - generate and send an attestation for the token on the source chain to register it on the destination chain, then save the transaction ID to verify the attestation in the next step + + ```typescript + const attestTxns = tbOrig.createAttestation( + token.address, + Wormhole.parseAddress(origSigner.chain(), origSigner.address()) + ); + + const txids = await signSendWait(srcChain, attestTxns, origSigner); + console.log('txids: ', inspect(txids, { depth: null })); + const txid = txids[0]!.txid; + console.log('Created attestation (save this): ', txid); + ``` + +9. **Retrieve the signed VAA** - once the attestation transaction is confirmed, use `parseTransaction(txid)` to extract Wormhole messages, then retrieve the signed VAA from the messages. The timeout defines how long to wait for the VAA before failure + + ```typescript + console.log('Parsed Messages:', msgs); + + const timeout = 25 * 60 * 1000; + const vaa = await wh.getVaa(msgs[0]!, 'TokenBridge:AttestMeta', timeout); + if (!vaa) { + throw new Error( + 'VAA not found after retries exhausted. Try extending the timeout.' + ); + } + ``` + +10. **Submit the attestation on the destination chain** - submit the signed VAA using `submitAttestation(vaa, recipient)` to create the wrapped token on the destination chain, then send the transaction and await confirmation + + ```typescript + vaa, + Wormhole.parseAddress(destSigner.chain(), destSigner.address()) + ); + + const tsx = await signSendWait(destChain, subAttestation, destSigner); + ``` + +11. **Wait for the wrapped asset to be available** - poll until the wrapped token is available on the destination chain + + ```typescript + do { + try { + const wrapped = await tbDest.getWrappedAsset(token); + return { chain: destChain.chain, address: wrapped }; + } catch (e) { + console.error('Wrapped asset not found yet. Retrying...'); + } + console.log('Waiting before checking again...'); + await new Promise((r) => setTimeout(r, 2000)); + } while (true); + } + + console.log('Wrapped Asset: ', await waitForIt()); +})().catch((e) => console.error(e)); + ``` + + If the token is not found, it logs a message and retries after a short delay. Once the wrapped asset is detected, its address is returned. + +??? code "Complete script" + ```typescript + import { Wormhole, signSendWait, wormhole } from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { inspect } from 'util'; +import { getSigner } from '../helpers/helpers'; + +(async function () { + const wh = await wormhole('Testnet', [evm, solana, sui]); + + // Define the source and destination chains + const srcChain = wh.getChain('ArbitrumSepolia'); + const destChain = wh.getChain('BaseSepolia'); + const token = await srcChain.getNativeWrappedTokenId(); + const gasLimit = BigInt(2_500_000); + + // Destination chain signer setup + const { signer: destSigner } = await getSigner(destChain, gasLimit); + const tbDest = await destChain.getTokenBridge(); + + try { + const wrapped = await tbDest.getWrappedAsset(token); + console.log( + `Token already wrapped on ${destChain.chain}. Skipping attestation.` + ); + return { chain: destChain.chain, address: wrapped }; + } catch (e) { + console.log( + `No wrapped token found on ${destChain.chain}. Proceeding with attestation.` + ); + } + + // Source chain signer setup + const { signer: origSigner } = await getSigner(srcChain); + + // Create an attestation transaction on the source chain + const tbOrig = await srcChain.getTokenBridge(); + const attestTxns = tbOrig.createAttestation( + token.address, + Wormhole.parseAddress(origSigner.chain(), origSigner.address()) + ); + + const txids = await signSendWait(srcChain, attestTxns, origSigner); + console.log('txids: ', inspect(txids, { depth: null })); + const txid = txids[0]!.txid; + console.log('Created attestation (save this): ', txid); + + // Retrieve the Wormhole message ID from the attestation transaction + const msgs = await srcChain.parseTransaction(txid); + console.log('Parsed Messages:', msgs); + + const timeout = 25 * 60 * 1000; + const vaa = await wh.getVaa(msgs[0]!, 'TokenBridge:AttestMeta', timeout); + if (!vaa) { + throw new Error( + 'VAA not found after retries exhausted. Try extending the timeout.' + ); + } + + console.log('Token Address: ', vaa.payload.token.address); + + // Submit the attestation on the destination chain + console.log('Attesting asset on destination chain...'); + + const subAttestation = tbDest.submitAttestation( + vaa, + Wormhole.parseAddress(destSigner.chain(), destSigner.address()) + ); + + const tsx = await signSendWait(destChain, subAttestation, destSigner); + console.log('Transaction hash: ', tsx); + + // Poll for the wrapped asset until it's available + async function waitForIt() { + do { + try { + const wrapped = await tbDest.getWrappedAsset(token); + return { chain: destChain.chain, address: wrapped }; + } catch (e) { + console.error('Wrapped asset not found yet. Retrying...'); + } + console.log('Waiting before checking again...'); + await new Promise((r) => setTimeout(r, 2000)); + } while (true); + } + + console.log('Wrapped Asset: ', await waitForIt()); +})().catch((e) => console.error(e)); + ``` + +### Run the Wrapped Token Creation + +Once the script is ready, execute it with: + +```bash +npx tsx src/scripts/create-wrapped.ts +``` + +If the token is already wrapped, the script exits. Otherwise, it generates an attestation and submits it. Once complete, you’re ready to transfer tokens across chains. + +## Token Transfers + +In this section, you'll create a script to transfer native tokens across chains using Wormhole's Token Bridge method. The script will handle the transfer of Sui native tokens to Solana, demonstrating the seamless cross-chain transfer capabilities of the Wormhole SDK. Since both chains are non-EVM compatible, you'll need to manually handle the attestation and finalization steps. + +### Configure Transfer Details + +Before initiating a cross-chain transfer, you must set up the chain context and signers for both the source and destination chains. + +1. Create the `native-transfer.ts` file in the `src` directory to hold your script for transferring native tokens across chains + + ```bash + touch src/scripts/native-transfer.ts + ``` + +2. Open the `native-transfer.ts` file and begin by importing the necessary modules from the SDK and helper files + + ```typescript + Chain, + Network, + Wormhole, + amount, + wormhole, + TokenId, + TokenTransfer, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { SignerStuff, getSigner, getTokenDecimals } from '../helpers/helpers'; + ``` + +3. **Initialize the Wormhole SDK** - initialize the `wormhole` function for the `Testnet` environment and specify the platforms (EVM, Solana, and Sui) to support + + ```typescript + const wh = await wormhole('Testnet', [evm, solana, sui]); + ``` + +4. **Set up source and destination chains** - specify the source chain (Sui) and the destination chain (Solana) using the `getChain` method. This allows us to define where to send the native tokens and where to receive them + + ```typescript + const rcvChain = wh.getChain('Solana'); + ``` + +5. **Configure the signers** - use the `getSigner` function to retrieve the signers responsible for signing transactions on the respective chains. This ensures that transactions are correctly authorized on both the source and destination chains + + ```typescript + const destination = await getSigner(rcvChain); + ``` + +6. **Define the token to transfer** - specify the native token on the source chain (Sui in this example) by creating a `TokenId` object + + ```typescript + + ``` + +7. **Define the transfer amount** - the amount of native tokens to transfer is specified. In this case, we're transferring 1 unit + + ```typescript + + ``` + +8. **Set transfer mode** - specify that the transfer should be manual by setting `automatic = false`. This means you will need to handle the attestation and finalization steps yourself + + ```typescript + + ``` + + !!! note + Automatic transfers are only supported for EVM chains. For non-EVM chains like Solana and Sui, you must manually handle the attestation and finalization steps. + +9. **Define decimals** - fetch the number of decimals for the token on the source chain (Sui) using the `getTokenDecimals` function + + ```typescript + + ``` + +10. **Perform the token transfer and exit the process** - initiate the transfer by calling the `tokenTransfer` function, which we’ll define in the next step. This function takes an object containing all required details for executing the transfer, including the `source` and `destination` chains, `token`, `mode`, and transfer `amount` + + ```typescript + token, + amount: amount.units(amount.parse(amt, decimals)), + source, + destination, + automatic, + }); + ``` + + Finally, we use `process.exit(0);` to close the script once the transfer completes + + ```typescript + })(); + ``` + +### Token Transfer Logic + +This section defines the `tokenTransfer` function, which manages the core steps for cross-chain transfer execution. This function will handle initiating the transfer on the source chain, retrieving the attestation, and completing the transfer on the destination chain. + +#### Defining the Token Transfer Function + +The `tokenTransfer` function initiates and manages the transfer process, handling all necessary steps to move tokens across chains with the Wormhole SDK. This function uses types from the SDK and our `helpers.ts` file to ensure chain compatibility. + +```typescript +wh: Wormhole, + route: { + token: TokenId; + amount: bigint; + source: SignerStuff; + destination: SignerStuff; + automatic: boolean; + payload?: Uint8Array; + } +) { + // Token Transfer Logic +import { + Chain, + Network, + Wormhole, + amount, + wormhole, + TokenId, + TokenTransfer, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { SignerStuff, getSigner, getTokenDecimals } from '../helpers/helpers'; + +(async function () { + const wh = await wormhole('Testnet', [evm, solana, sui]); + + // Set up source and destination chains + const sendChain = wh.getChain('Sui'); + const rcvChain = wh.getChain('Solana'); + + // Get signer from local key but anything that implements + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); + + // Shortcut to allow transferring native gas token + const token = Wormhole.tokenId(sendChain.chain, 'native'); + + // Define the amount of tokens to transfer + const amt = '1'; + + // Set automatic transfer to false for manual transfer + const automatic = false; + + // Used to normalize the amount to account for the tokens decimals + const decimals = await getTokenDecimals(wh, token, sendChain); + + // Perform the token transfer if no recovery transaction ID is provided + const xfer = await tokenTransfer(wh, { + token, + amount: amount.units(amount.parse(amt, decimals)), + source, + destination, + automatic, + }); + + process.exit(0); +})(); + +async function tokenTransfer( + wh: Wormhole, + route: { + token: TokenId; + amount: bigint; + source: SignerStuff; + destination: SignerStuff; + automatic: boolean; + payload?: Uint8Array; + } +) { + // Token Transfer Logic + // Create a TokenTransfer object to track the state of the transfer over time + const xfer = await wh.tokenTransfer( + route.token, + route.amount, + route.source.address, + route.destination.address, + route.automatic ?? false, + route.payload + ); + + const quote = await TokenTransfer.quoteTransfer( + wh, + route.source.chain, + route.destination.chain, + xfer.transfer + ); + + if (xfer.transfer.automatic && quote.destinationToken.amount < 0) + throw 'The amount requested is too low to cover the fee and any native gas requested.'; + + // Submit the transactions to the source chain, passing a signer to sign any txns + console.log('Starting transfer'); + const srcTxids = await xfer.initiateTransfer(route.source.signer); + console.log(`Source Trasaction ID: ${srcTxids[0]}`); + console.log(`Wormhole Trasaction ID: ${srcTxids[1] ?? srcTxids[0]}`); + + // Wait for the VAA to be signed and ready (not required for auto transfer) + console.log('Getting Attestation'); + await xfer.fetchAttestation(60_000); + + // Redeem the VAA on the dest chain + console.log('Completing Transfer'); + const destTxids = await xfer.completeTransfer(route.destination.signer); + console.log(`Completed Transfer: `, destTxids); +} +``` + +#### Steps to Transfer Tokens + +The `tokenTransfer` function consists of several key steps to facilitate the cross-chain transfer. Let’s break down each step: + +1. **Initialize the transfer object** - the `tokenTransfer` function begins by creating a `TokenTransfer` object, `xfer`, which tracks the state of the transfer process and provides access to relevant methods for each transfer step + + ```typescript + route.token, + route.amount, + route.source.address, + route.destination.address, + route.automatic ?? false, + route.payload + ); + ``` + +2. **Estimate transfer fees and validate amount** - we obtain a fee quote for the transfer before proceeding. This step is significant in automatic mode (`automatic = true`), where the quote will include additional fees for relaying + + ```typescript + wh, + route.source.chain, + route.destination.chain, + xfer.transfer + ); + + if (xfer.transfer.automatic && quote.destinationToken.amount < 0) + throw 'The amount requested is too low to cover the fee and any native gas requested.'; + ``` + +3. **Submit the transaction to the source chain** - initiate the transfer on the source chain by submitting the transaction using `route.source.signer`, starting the token transfer process + + ```typescript + console.log(`Source Trasaction ID: ${srcTxids[0]}`); + ``` + + - **`srcTxids`** - the resulting transaction IDs are printed to the console. These IDs can be used to track the transfer’s progress on the source chain and [Wormhole network](https://wormholescan.io/#/?network=Testnet){target=\_blank} + + ???- note "How Cross-Chain Transfers Work in the Background" + When `xfer.initiateTransfer(route.source.signer)` is called, it initiates the transfer on the source chain. Here’s what happens in the background: + + - **Token lock or burn** - tokens are either locked in a smart contract or burned on the source chain, representing the transfer amount + - **VAA creation** - Wormhole’s network of Guardians generates a Verifiable Action Approval (VAA)—a signed proof of the transaction, which ensures it’s recognized across chains + - **Tracking the transfer** - the returned transaction IDs allow you to track the transfer's progress both on the source chain and within Wormhole’s network + - **Redemption on destination** - once detected, the VAA is used to release or mint the corresponding token amount on the destination chain, completing the transfer + + This process ensures a secure and verifiable transfer across chains, from locking tokens on the source chain to redeeming them on the destination chain. + +4. **Wait for the attestation** - retrieve the Wormhole attestation (VAA), which serves as cryptographic proof of the transfer. In manual mode, you must wait for the VAA before redeeming the transfer on the destination chain + + ```typescript + + ``` + +5. **Complete the transfer on the destination chain** - redeem the VAA on the destination chain to finalize the transfer + + ```typescript + console.log(`Completed Transfer: `, destTxids); + ``` + +??? code "Complete script" + ```typescript + import { + Chain, + Network, + Wormhole, + amount, + wormhole, + TokenId, + TokenTransfer, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import sui from '@wormhole-foundation/sdk/sui'; +import { SignerStuff, getSigner, getTokenDecimals } from '../helpers/helpers'; + +(async function () { + const wh = await wormhole('Testnet', [evm, solana, sui]); + + // Set up source and destination chains + const sendChain = wh.getChain('Sui'); + const rcvChain = wh.getChain('Solana'); + + // Get signer from local key but anything that implements + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); + + // Shortcut to allow transferring native gas token + const token = Wormhole.tokenId(sendChain.chain, 'native'); + + // Define the amount of tokens to transfer + const amt = '1'; + + // Set automatic transfer to false for manual transfer + const automatic = false; + + // Used to normalize the amount to account for the tokens decimals + const decimals = await getTokenDecimals(wh, token, sendChain); + + // Perform the token transfer if no recovery transaction ID is provided + const xfer = await tokenTransfer(wh, { + token, + amount: amount.units(amount.parse(amt, decimals)), + source, + destination, + automatic, + }); + + process.exit(0); +})(); + +async function tokenTransfer( + wh: Wormhole, + route: { + token: TokenId; + amount: bigint; + source: SignerStuff; + destination: SignerStuff; + automatic: boolean; + payload?: Uint8Array; + } +) { + // Token Transfer Logic + // Create a TokenTransfer object to track the state of the transfer over time + const xfer = await wh.tokenTransfer( + route.token, + route.amount, + route.source.address, + route.destination.address, + route.automatic ?? false, + route.payload + ); + + const quote = await TokenTransfer.quoteTransfer( + wh, + route.source.chain, + route.destination.chain, + xfer.transfer + ); + + if (xfer.transfer.automatic && quote.destinationToken.amount < 0) + throw 'The amount requested is too low to cover the fee and any native gas requested.'; + + // Submit the transactions to the source chain, passing a signer to sign any txns + console.log('Starting transfer'); + const srcTxids = await xfer.initiateTransfer(route.source.signer); + console.log(`Source Trasaction ID: ${srcTxids[0]}`); + console.log(`Wormhole Trasaction ID: ${srcTxids[1] ?? srcTxids[0]}`); + + // Wait for the VAA to be signed and ready (not required for auto transfer) + console.log('Getting Attestation'); + await xfer.fetchAttestation(60_000); + + // Redeem the VAA on the dest chain + console.log('Completing Transfer'); + const destTxids = await xfer.completeTransfer(route.destination.signer); + console.log(`Completed Transfer: `, destTxids); +} + ``` + +### Run the Native Token Transfer + +Now that you’ve set up the project and defined the transfer logic, you can execute the script to transfer native tokens from the Sui chain to Solana. You can use `tsx` to run the TypeScript file directly: + +```bash +npx tsx src/scripts/native-transfer.ts +``` + +This initiates the native token transfer from the source chain (Sui) and completes it on the destination chain (Solana). + +You can monitor the status of the transaction on the [Wormhole explorer](https://wormholescan.io/#/?network=Testnet){target=\_blank}. + +## Resources + +If you'd like to explore the complete project or need a reference while following this tutorial, you can find the complete codebase in [Wormhole's demo GitHub repository](https://github.com/wormhole-foundation/demo-basic-ts-sdk/){target=\_blank}. The repository includes all the example scripts and configurations needed to perform native token cross-chain transfers, including manual, automatic, and partial transfers using the Wormhole SDK. + +## Conclusion + +You've successfully built a cross-chain token transfer application using Wormhole's TypeScript SDK and the Token Bridge method. This guide took you through the setup, configuration, and transfer logic required to move native tokens across non-EVM chains like Sui and Solana. + +The same transfer logic will apply if you’d like to extend this application to different chain combinations, including EVM-compatible chains. +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/by-product/wormhole-sdk/usdc-via-cctp/ +--- BEGIN CONTENT --- +--- +title: Transfer USDC via CCTP and Wormhole SDK +description: Learn how to perform USDC cross-chain transfers using Wormhole SDK and Circle's CCTP. Supports manual, automatic, and partial transfer recovery. +--- + +# Transfer USDC via CCTP and Wormhole SDK + +:simple-github: [Source code on GitHub](https://github.com/wormhole-foundation/demo-cctp-transfer){target=\_blank} + +## Introduction + +In this guide, we will show you how to bridge native USDC across different blockchain networks using [Circle's Cross-Chain Transfer Protocol](/learn/transfers/cctp/){target=\_blank} (CCTP) and [Wormhole’s TypeScript SDK](https://github.com/wormhole-foundation/wormhole-sdk-ts/tree/main){target=\_blank}. + +Traditionally, cross-chain transfers using CCTP involve multiple manual steps, such as initiating the transfer on the source chain, relaying messages between chains, and covering gas fees on both the source and destination chains. Without the TypeScript SDK, developers must handle these operations independently, adding complexity and increasing the chance for errors, mainly when dealing with gas payments on the destination chain and native gas token management. + +Wormhole’s TypeScript SDK simplifies this process by offering automated transfer relaying and handling gas payments on the destination chain. It also offers an option to include native gas tokens for seamless execution. This reduces developer overhead, makes transfers faster and more reliable, and enhances the user experience. + +In this guide, we’ll first explore the theory behind CCTP and then provide a step-by-step tutorial for integrating Wormhole’s TypeScript SDK into your application to streamline USDC transfers across multiple chains. + +## Core Concepts + +When bridging assets across chains, there are two primary approaches to handling the transfer process: manual and automated. Below, you may find the differences between these approaches and how they impact the user experience: + + - **Manual transfers** - manual transfers involve three key steps: initiating the transfer on the source chain, fetching the Circle attestation to verify the transfer, and completing the transfer on the destination chain + + - **Automated transfers** - automatic transfers simplify the process by handling Circle attestations and finalization for you. With Wormhole's automated relaying, you only need to initiate the transfer, and the rest is managed for you + +## Prerequisites + +Before you begin, ensure you have the following: + + - [Node.js and npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm){target=\_blank} installed on your machine + - [TypeScript](https://www.typescriptlang.org/download/){target=\_blank} installed globally + - [USDC tokens](https://faucet.circle.com/){target=\_blank} on supported chains. This tutorial uses Avalanche and Sepolia as examples + - A wallet with a private key, funded with native tokens (Testnet or Mainnet) for gas fees + +## Supported Chains + +The Wormhole SDK supports a wide range of EVM and non-EVM chains, allowing you to facilitate cross-chain transfers efficiently. You can find a complete list of supported chains in the Wormhole SDK [GitHub repository](https://github.com/wormhole-foundation/wormhole-sdk-ts/blob/5810ebbd3635aaf1b5ab675da3f99f62aec2210f/core/base/src/constants/circle.ts#L14-L30){target=_blank}, which covers both Testnet and Mainnet environments. + +## Project Setup + +In this section, you'll set up your project for transferring USDC across chains using Wormhole's SDK and Circle's CCTP. We’ll guide you through initializing the project, installing dependencies, and preparing your environment for cross-chain transfers. + +1. **Initialize the project** - start by creating a new directory for your project and initializing it with `npm`, which will create the `package.json` file for your project + + ```bash + mkdir cctp-circle + cd cctp-circle + npm init -y + ``` + +2. **Install dependencies** - install the required dependencies, including the Wormhole SDK and helper libraries + + ```bash + npm install @wormhole-foundation/sdk dotenv + ``` + +3. **Set up environment variables** - to securely store your private key, create a `.env` file in the root of your project + + ```bash + touch .env + ``` + + Inside the `.env` file, add your private key + + ```env + ETH_PRIVATE_KEY="INSERT_YOUR_PRIVATE_KEY" + SOL_PRIVATE_KEY="INSERT_YOUR_PRIVATE_KEY" + ``` + + !!! note + Ensure your private key contains USDC funds and native tokens for gas on both the source and destination chains. + +4. **Create a `helpers.ts` file** - to simplify the interaction between chains, create a file to store utility functions for fetching your private key, setting up signers for different chains, and managing transaction relays + + 1. Create the helpers file + + ```bash + mkdir helpers + touch helpers/helpers.ts + ``` + + 2. Open the `helpers.ts` file and add the following code + + ```typescript + import { + ChainAddress, + ChainContext, + Network, + Signer, + Wormhole, + Chain, +} from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { config } from 'dotenv'; +config(); + +export interface SignerStuff { + chain: ChainContext; + signer: Signer; + address: ChainAddress; +} + +// Function to fetch environment variables (like your private key) +function getEnv(key: string): string { + const val = process.env[key]; + if (!val) throw new Error(`Missing environment variable: ${key}`); + return val; +} + +// Signer setup function for different blockchain platforms +export async function getSigner( + chain: ChainContext +): Promise<{ + chain: ChainContext; + signer: Signer; + address: ChainAddress; +}> { + let signer: Signer; + const platform = chain.platform.utils()._platform; + + switch (platform) { + case 'Solana': + signer = await ( + await solana() + ).getSigner(await chain.getRpc(), getEnv('SOL_PRIVATE_KEY')); + break; + case 'Evm': + signer = await ( + await evm() + ).getSigner(await chain.getRpc(), getEnv('ETH_PRIVATE_KEY')); + break; + default: + throw new Error('Unsupported platform: ' + platform); + } + + return { + chain, + signer: signer as Signer, + address: Wormhole.chainAddress(chain.chain, signer.address()), + }; +} + ``` + + - **`getEnv`** - this function fetches environment variables like your private key from the `.env` file + - **`getSigner`** - based on the chain you're working with (EVM, Solana, etc.), this function retrieves a signer for that specific platform. The signer is responsible for signing transactions and interacting with the blockchain. It securely uses the private key stored in your `.env` file + +5. **Create the main script** - create a new file named `manual-transfer.ts` to hold your script for transferring USDC across chains + + 1. Create the `manual-transfer.ts` file in the `src` directory + + ```bash + touch src/manual-transfer.ts + ``` + + 2. Open the `manual-transfer.ts` file and begin by importing the necessary modules from the SDK and helper files + + ```typescript + import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { getSigner } from './helpers/helpers'; + ``` + + - **`evm`** - this import is for working with EVM-compatible chains, like Avalanche, Ethereum, Base Sepolia, and more + - **`solana`** - this adds support for Solana, a non-EVM chain + - **`getSigner`** - utility function from the helper file that retrieves the signer to sign transactions + +## Manual Transfers + +In a manual USDC transfer, you perform each step of the cross-chain transfer process individually. This approach allows for greater control and flexibility over how the transfer is executed, which can be helpful in scenarios where you need to customize certain aspects of the transfer, such as gas management, specific chain selection, or signing transactions manually. + +This section will guide you through performing a manual USDC transfer across chains using the Wormhole SDK and Circle’s CCTP. + +### Set Up the Transfer Environment + +#### Configure Transfer Details + +Before initiating a cross-chain transfer, you must set up the chain context and signers for both the source and destination chains. + +1. **Initialize the Wormhole SDK** - initialize the `wormhole` function for the `Testnet` environment and specify the platforms (EVM and Solana) to support. This allows us to interact with both EVM-compatible chains like Avalanche and non-EVM chains like Solana if needed + + ```typescript + const wh = await wormhole('Testnet', [evm, solana]); + ``` + + !!! note + You can replace `'Testnet'` with `'Mainnet'` if you want to perform transfers on Mainnet. + +2. **Set up source and destination chains** - specify the source chain (Avalanche) and the destination chain (Sepolia) using the `getChain` method. This allows us to define where to send the USDC and where to receive them + + ```typescript + const rcvChain = wh.getChain('Sepolia'); + ``` + +3. **Configure the signers** - use the `getSigner` function to retrieve the signers responsible for signing transactions on the respective chains. This ensures that transactions are correctly authorized on both the source and destination chains + + ```typescript + const destination = await getSigner(rcvChain); + ``` + +4. **Define the transfer amount** - the amount of USDC to transfer is specified. In this case, we're transferring 0.1 USDC, which is parsed and converted into the base units expected by the Wormhole SDK + + ```typescript + + ``` + +5. **Set transfer mode** - we specify that the transfer should be manual by setting `automatic = false`. This means you will need to handle the attestation and finalization steps yourself + + ```typescript + + ``` + +#### Initiate the Transfer + +To begin the manual transfer process, you first need to create the transfer object and then manually initiate the transfer on the source chain. + +1. **Create the Circle transfer object** - the `wh.circleTransfer()` function creates an object with the transfer details, such as the amount of USDC, the source and destination addresses, and the mode. However, this does not initiate the transfer itself + + ```typescript + amt, + source.address, + destination.address, + automatic + ); + ``` + +2. **Start the transfer** - the `initiateTransfer` function sends the transaction on the source chain. It involves signing and sending the transaction using the source signer. This will return a list of transaction IDs (`srcTxIds`) that you can use to track the transfer + + ```typescript + console.log(`Started Transfer: `, srcTxids); + ``` + +#### Fetch the Circle Attestation (VAA) + +Once you initialize the transfer on the source chain, you must fetch the VAA from Circle. The VAA serves as cryptographic proof that CCTP has successfully recognized the transfer. The transfer cannot be completed on the destination chain until this attestation is fetched. + + +1. **Set a timeout** - fetching the attestation can take some time, so setting a timeout is common. In this example, we set the timeout to 60 seconds + + ```typescript + + ``` + +2. **Fetch the attestation** - after initiating the transfer, you can use the `fetchAttestation()` function to retrieve the VAA. This function will wait until the attestation is available or you reach the specified timeout + + ```typescript + console.log(`Got Attestation: `, attestIds); + ``` + + The `attestIds` will contain the details of the fetched attestation, which Wormhole uses to complete the transfer on the destination chain + +#### Complete the Transfer on the Destination Chain + +Once you fetch the VAA correctly, the final step is to complete the transfer on the destination chain (Sepolia in this example). This involves redeeming the VAA, which moves the USDC from Circle's custody onto the destination chain. + +Use the `completeTransfer()` function to finalize the transfer on the destination chain. This requires the destination signer to sign and submit the transaction to the destination chain + +```typescript +console.log(`Completed Transfer: `, dstTxids); + + console.log('Circle Transfer status: ', xfer); + + process.exit(0); +``` + +The `dstTxIds` will hold the transaction IDs for the transfer on the destination chain, confirming that the transfer has been completed + +You can find the full code for the manual USDC transfer script below: + +???- code "`manual-transfer.ts`" + ```typescript + import { wormhole } from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { getSigner } from './helpers/helpers'; + +(async function () { + const wh = await wormhole('Testnet', [evm, solana]); + + // Set up source and destination chains + const sendChain = wh.getChain('Avalanche'); + const rcvChain = wh.getChain('Sepolia'); + + // Configure the signers + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); + + // Define the transfer amount (in the smallest unit, so 0.1 USDC = 100,000 units assuming 6 decimals) + const amt = 100_000n; + + const automatic = false; + + // Create the Circle transfer object + const xfer = await wh.circleTransfer( + amt, + source.address, + destination.address, + automatic + ); + + console.log('Circle Transfer object created:', xfer); + + // Initiate the transfer on the source chain (Avalanche) + console.log('Starting Transfer'); + const srcTxids = await xfer.initiateTransfer(source.signer); + console.log(`Started Transfer: `, srcTxids); + + // Wait for Circle Attestation (VAA) + const timeout = 60 * 1000; // Timeout in milliseconds (60 seconds) + console.log('Waiting for Attestation'); + const attestIds = await xfer.fetchAttestation(timeout); + console.log(`Got Attestation: `, attestIds); + + // Complete the transfer on the destination chain (Sepolia) + console.log('Completing Transfer'); + const dstTxids = await xfer.completeTransfer(destination.signer); + console.log(`Completed Transfer: `, dstTxids); + + console.log('Circle Transfer status: ', xfer); + + process.exit(0); +})(); + ``` + +### Run Manual Transfer + +To execute the manual transfer script, you can use `ts-node` to run the TypeScript file directly + +```bash +npx ts-node src/manual-transfer.ts +``` + +This will initiate the USDC transfer from the source chain (Avalanche) and complete it on the destination chain (Sepolia). + +You can monitor the status of the transaction on the [Wormhole explorer](https://wormholescan.io/){target=\_blank}. + +### Complete Partial Transfer + +In some cases, a manual transfer might start but not finish—perhaps the user terminates their session, or there's an issue before the transfer can be completed. The Wormhole SDK allows you to reconstitute the transfer object from the transaction hash on the source chain. + +This feature is handy for recovering an incomplete transfer or when debugging. + +Here’s how you can complete a partial transfer using just the source chain and transaction hash: + +```typescript +wh, + { + chain: 'Avalanche', + txid: '0x6b6d5f101a32aa6d2f7bf0bf14d72bfbf76a640e1b2fdbbeeac5b82069cda4dd', + }, + timeout + ); + + const dstTxIds = await xfer.completeTransfer(destination.signer); + console.log('Completed transfer: ', dstTxIds); +``` + +You will need to provide the below requirements to complete the partial transfer: + +- **Transaction ID (`txId`)** - the transaction hash from the source chain where the transfer was initiated +- **Signer for the destination chain (`destination.signer`)** - the wallet or private key that can authorize and complete the transfer on the destination chain. This signer is the same as the `destination.signer` defined in the manual transfer setup + +This allows you to resume the transfer process by rebuilding the transfer object and completing it on the destination chain. It's especially convenient when debugging or handling interrupted transfers. + +You can find the full code for the manual USDC transfer script below: + +??? code "`partial-transfer.ts`" + ```typescript + import { CircleTransfer, wormhole } from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { getSigner } from '../helpers/helpers'; + +(async function () { + // Initialize the Wormhole object for the Testnet environment and add supported chains (evm and solana) + const wh = await wormhole('Testnet', [evm, solana]); + + // Grab chain Contexts -- these hold a reference to a cached rpc client + const rcvChain = wh.getChain('Sepolia'); + + // Get signer from local key + const destination = await getSigner(rcvChain); + + const timeout = 60 * 1000; // Timeout in milliseconds (60 seconds) + + // Rebuild the transfer from the source txid + const xfer = await CircleTransfer.from( + wh, + { + chain: 'Avalanche', + txid: '0x6b6d5f101a32aa6d2f7bf0bf14d72bfbf76a640e1b2fdbbeeac5b82069cda4dd', + }, + timeout + ); + + const dstTxIds = await xfer.completeTransfer(destination.signer); + console.log('Completed transfer: ', dstTxIds); + + console.log('Circle Transfer status: ', xfer); + + process.exit(0); +})(); + ``` + +## Automatic Transfers + +The automatic transfer process simplifies the steps by automating the attestation fetching and transfer completion. All you need to do is initiate the transfer. + +### Set Up the Transfer Environment + +#### Configure Transfer Details + +The setup for automatic transfers is similar to manual transfers, with the key difference being that the `automatic` flag is `true`. This indicates that Wormhole will handle the attestation and finalization steps for you + +```typescript + +``` + +#### Initiate the Transfer + +The transfer process is the same as that for manual transfers. You create the transfer object and then start the transfer on the source chain + +```typescript +amt, + source.address, + destination.address, + automatic + ); +``` + +#### Log Transfer Details + +After initiating the transfer, you can log the transaction IDs for both the source and destination chains. This will help you track the progress of the transfer + +```typescript +console.log(`Started Transfer: `, srcTxids); + + process.exit(0); +``` + +You can find the full code for the automatic USDC transfer script below: + +??? code "`automatic-transfer.ts`" + ```typescript + import { wormhole } from '@wormhole-foundation/sdk'; +import evm from '@wormhole-foundation/sdk/evm'; +import solana from '@wormhole-foundation/sdk/solana'; +import { getSigner } from '../helpers/helpers'; + +(async function () { + // Initialize the Wormhole object for the Testnet environment and add supported chains (evm and solana) + const wh = await wormhole('Testnet', [evm, solana]); + + // Set up source and destination chains + const sendChain = wh.getChain('Avalanche'); + const rcvChain = wh.getChain('Sepolia'); + + // Configure the signers + const source = await getSigner(sendChain); + const destination = await getSigner(rcvChain); + + // Define the transfer amount (in the smallest unit, so 0.1 USDC = 100,000 units assuming 6 decimals) + const amt = 100_000_001n; + + const automatic = true; + + // Create the Circle transfer object (USDC-only) + const xfer = await wh.circleTransfer( + amt, + source.address, + destination.address, + automatic + ); + + console.log('Circle Transfer object created:', xfer); + + // Initiate the transfer on the source chain (Avalanche) + console.log('Starting Transfer'); + const srcTxids = await xfer.initiateTransfer(source.signer); + console.log(`Started Transfer: `, srcTxids); + + process.exit(0); +})(); + ``` + +### Run Automatic Transfer + +Assuming you have created a new `automatic-transfer.ts` file for automatic transfers under the `src` directory, use the following command to run it with `ts-node`: + +```bash +npx ts-node src/automatic-transfer.ts +``` + +The automatic relayer will take care of fetching the attestation and completing the transfer for you. + +## Resources + +If you'd like to explore the complete project or need a reference while following this tutorial, you can find the complete codebase in [Wormhole's demo GitHub repository](https://github.com/wormhole-foundation/demo-cctp-transfer){target=\_blank}. The repository includes all the example scripts and configurations needed to perform USDC cross-chain transfers, including manual, automatic, and partial transfers using the Wormhole SDK and Circle's CCTP. + +## Conclusion + +In this tutorial, you’ve gained hands-on experience with Circle’s CCTP and the Wormhole SDK. You’ve learned to perform manual and automatic USDC transfers across multiple chains and recover partial transfers if needed. + +By following these steps, you've learned how to: + +- Set up cross-chain transfers for native USDC between supported chains +- Handle both manual and automatic relaying of transactions +- Recover and complete incomplete transfers using the transaction hash and the destination chain’s signer +--- END CONTENT --- + +Doc-Content: https://wormhole.com/docs/tutorials/ +--- BEGIN CONTENT --- +--- +title: Tutorials +description: This section contains step-by-step tutorials to start developing with Wormhole, including creating cross-chain contracts and multichain transfers. +template: root-index-page.html +--- + +# Tutorials + +Welcome to the Wormhole tutorials section! Whether you're just getting started or looking to build advanced cross-chain applications, this collection of step-by-step tutorials will help you leverage the full power of the Wormhole ecosystem. + +These tutorials are designed to help you develop efficient, scalable, and innovative cross-chain applications, from integrating individual Wormhole products to creating comprehensive end-to-end solutions. Explore our tutorials to get hands-on experience with Wormhole! + +
+ +- :octicons-apps-16:{ .lg .middle } **By Product** + + --- + + Explore tutorials tailored to specific Wormhole products. Each section contains tutorials on integrating and using a single product. Whether you want to understand Token Bridge, Wormhole Connect, or other Wormhole services, these tutorials will guide you through the setup and implementation process. + + [:custom-arrow: Start building](/docs/tutorials/by-product/) + +
+--- END CONTENT --- + From 5f49fed752016d7ab642fdffb1de02b42b8deb1d Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 16:29:31 +0100 Subject: [PATCH 39/40] update post deployment --- .../deployment-process/post-deployment.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build/transfers/native-token-transfers/deployment-process/post-deployment.md b/build/transfers/native-token-transfers/deployment-process/post-deployment.md index 862da8c08..678cdf8de 100644 --- a/build/transfers/native-token-transfers/deployment-process/post-deployment.md +++ b/build/transfers/native-token-transfers/deployment-process/post-deployment.md @@ -8,10 +8,10 @@ description: Learn post-deployment guidelines for optimizing Wormhole NTT, which To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed Native Token Transfers (NTT): - Implement a robust testing plan for your multichain token before launching -- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits -- Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience -- Alternatively the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure -- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately +- Ensure comprehensive, documented security measures are followed for custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits +- Consider a streamlined, customizable frontend such as [Wormhole Connect](/docs/build/transfers/connect/){target=\_blank} for an optimized user experience +- Alternatively, the [Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), and wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment ## Manual Relaying for Solana Transfers From 2ef7eca0d1cc67fb1d8df1bebaf0807284fde853 Mon Sep 17 00:00:00 2001 From: martin0995 Date: Thu, 20 Mar 2025 16:29:38 +0100 Subject: [PATCH 40/40] llm check --- llms.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/llms.txt b/llms.txt index bcecbff9d..af4988617 100644 --- a/llms.txt +++ b/llms.txt @@ -12959,10 +12959,10 @@ description: Learn post-deployment guidelines for optimizing Wormhole NTT, which To offer the best user experience and ensure the most robust deployment, Wormhole contributors recommend the following after you have deployed Native Token Transfers (NTT): - Implement a robust testing plan for your multichain token before launching -- Ensure comprehensive, documented security measures are followed regarding custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits -- Consider a streamlined, customizable frontend such as [Wormhole Connect](https://connect-in-style.wormhole.com/){target=\_blank} for an optimized user experience -- Alternatively the [Wormhole SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure -- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately +- Ensure comprehensive, documented security measures are followed for custody of contract ownership, control of keys, and access control roles. Check the [NTT configuration](/docs/build/transfers/native-token-transfers/configuration/){target=\_blank} for more details on ownership and rate limits +- Consider a streamlined, customizable frontend such as [Wormhole Connect](/docs/build/transfers/connect/){target=\_blank} for an optimized user experience +- Alternatively, the [Wormhole TypeScript SDK](/docs/build/toolkit/typescript-sdk/){target=\_blank} allows for a direct integration into your infrastructure +- Ensure ecosystem actors such as block explorers, automated security tools (such as BlockAid and Blowfish), and wallets (such as MetaMask, Backpack, and Phantom) are aware of your multichain deployment and that it is labeled appropriately - Monitor and maintain your multichain deployment ## Manual Relaying for Solana Transfers

=CGwi*3{9oOt?>EQOYkcfng6QaVeM$ye3Z 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�AEZ|MT9dlUAt|gk-F)A+9FXG;;0m`h z_r%Cf-Fb;=(msi!3ocej!{gAAh2PRKL8$w6d2p=KBz=E?=F4_;cX1A?p%mPRl{qDv zCRmwvd^~(&)}lzlqJzlekY6f&z!R7Mb4A&hK?rzM9*8Tqd}A@wxy@ZnAv3%H1Rx9w@bf!+DK9B9?p5 z>LpT5m(?-eW>$R8s5hL%Mn*ZWX`-|VgjW|FL%;!C`>I6c7Q9)FxHdLO_@A%T;8|UnKM7o2# zQ=POs^i-lmCIpYUp;ih^uDx>0qlwl__8r zDU}@#&fYk#0Jih~GwAp$h@&!ICY_^RE zuq^DwmT%grZOT3bHng#+S^sXeN|Rz)_}R}lI&rHYTyDFzH#xxAR%cFfWrq~UsQtKC z2jAEV;Z-r6Y5RIPSluN`ob*jL!GBRZxMH-*Z6~qnX6OKqfmuevZ3sZ+l5$+@4P0$~ z6wj}np-vaJ#|?^5s06wpeol zTG-Wy$o5vzqXBc59V+?y zK8v&f>+;G(vU(a${I-xz6+L@OK}tz}LFhmbtzIk|tZ!SdqtAk*s?jsyyykPR#gKs- zS9FPjB{~5&6*-h^Kzu>GTN1AT+owyZrP8#;E9uJ&fD79XVYnPm?g(g_gBwovR?(vY z)3!$<>>#sD72$X+NFNj-${*Q~&F%y!eZ)|laU~~OoMP^cojPz>rnA&gKDQgdAap() zMY4DrP7a3?A3qaZmD@`;Uc=<((!GlptL<74mtNrvQdQN{_M9J0v;_Gk+I+V)6< zy~s>c736n`mTNI|`8d=C9*JnVXnG2w1Isc|5;^lobI}-)!{2!sPX0KZ z_;NU2=(}Eu@lt-d5{em9F{R7_ap)D!AVpQFav;A;5GB-$Y{H{?$sw4E9Fc1ScbB6> zT9V|7!9I5qClX>V4WyHhngTXE;_Mh;D7|Q)qLeC9d#mWtfGG{cw>OK-G*yATp=m6J zR{n_m`-G^uZ@%J6HCVvW^aMm;h1XgZpTcJ;($E-@!$0#fob=~aIw6nxV31}bg#2

kM&bt|o31JVhYCF93R^0h_ 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 r7R@k~SMxCk~VkmPXsq&lT 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