Skip to content

Commit 0a5a915

Browse files
alexander-seiclaude
andcommitted
feat(evm-docs): wire runnable code & sandbox embeds into remaining EVM pages
Extends the Tier-1 RunSnippet (read-only JSON-RPC) and Tier-3 Remix deploy embeds beyond the initial 5 example pages: - examples: erc1155 (Remix deploy), transaction-lifecycle, multicall, error-handling, wagmi-react, sei-precompiles (RunSnippet) - smart contracts: evm-general, evm-hardhat, evm-foundry, evm-wizard, evm-verify-contracts (Remix deploy), python-quickstart (RunSnippet) - debugging-contracts: RunSnippet diagnostics mapping cast chain-id/gas-price/nonce/balance All RPC calls verified live against Sei mainnet; all pages render with zero errors via mint dev. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent aeaec89 commit 0a5a915

13 files changed

Lines changed: 263 additions & 0 deletions

‎evm/debugging-contracts.mdx‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ title: 'Debugging for EVM'
33
description: 'Advanced debugging techniques for EVM transactions on Sei. Learn transaction template generation and analysis using seid and Foundry cast tools.'
44
keywords: ['EVM debugging', 'transaction templates', 'foundry cast', 'evm analysis', 'transaction debugging']
55
---
6+
7+
import { RunSnippet } from '/snippets/run-snippet.jsx';
8+
69
## Overview
710

811
Debugging EVM transactions on Sei requires understanding both the transaction creation process and how to analyze transaction behavior. This guide covers advanced debugging techniques using transaction template generation, analysis tools, and comprehensive transaction inspection methods to help developers identify and resolve issues in their EVM interactions.
@@ -165,6 +168,30 @@ cast chain-id --rpc-url=$EVM_RPC_URL
165168
- Underpriced `maxFeePerGas`/`maxPriorityFeePerGas`
166169
- Chain ID mismatch
167170

171+
### Try it live
172+
173+
Each `cast` diagnostic above is a plain read-only JSON-RPC call. Run the same four against Sei mainnet right here — the example address (`0xAa55…3d96`) is the sender from the `cast tx` output earlier on this page.
174+
175+
<RunSnippet method="eth_chainId" network="mainnet" title="cast chain-id" description="eth_chainId — decodes to 1329. A mismatch here is the most common cause of a rejected transaction." />
176+
177+
<RunSnippet method="eth_gasPrice" network="mainnet" title="cast gas-price" description="eth_gasPrice — the current gas price in wei. Compare it against your maxFeePerGas when a transaction is stuck as underpriced." />
178+
179+
<RunSnippet
180+
method="eth_getTransactionCount"
181+
params={['0xAa55a16dD4E73c48C968928983c2bcC98d913d96', 'latest']}
182+
network="mainnet"
183+
title="cast nonce 0xAa55…3d96"
184+
description="eth_getTransactionCount at the latest block — the account's next nonce. Swap in your own address."
185+
/>
186+
187+
<RunSnippet
188+
method="eth_getBalance"
189+
params={['0xAa55a16dD4E73c48C968928983c2bcC98d913d96', 'latest']}
190+
network="mainnet"
191+
title="cast balance 0xAa55…3d96"
192+
description="eth_getBalance in wei — confirm the account can cover gas before you dig into a failed send."
193+
/>
194+
168195
---
169196

170197
## Offline Workflow with --generate-only

‎evm/evm-foundry.mdx‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ sidebarTitle: 'EVM with Foundry'
44
description: 'Learn how to develop, test, and deploy smart contracts on Sei EVM using Foundry, with step-by-step examples of contract creation, testing, deployment, and interaction using both CLI and ethers.js.'
55
keywords: ['sei evm', 'foundry', 'forge', 'smart contract', 'web3 development', 'nft', 'erc721', 'erc20']
66
---
7+
8+
import { RunSnippet } from '/snippets/run-snippet.jsx';
9+
import { SandboxEmbed } from '/snippets/sandbox-embed.jsx';
10+
import { AddSeiButton } from '/snippets/add-sei-button.jsx';
11+
712
This tutorial will guide you through setting up Foundry for Sei EVM development and using OpenZeppelin contracts to build secure, standardized smart contracts. We'll cover environment setup, contract creation, deployment, and show how to leverage OpenZeppelin's pre-built components with the powerful Foundry toolkit.
813

914
<Info>Watch the video walkthrough for this topic in the [Video Tutorials](/evm/videos) section.</Info>
@@ -16,6 +21,27 @@ It is <strong>highly recommended</strong> that you deploy to <em>testnet (atlant
1621

1722
</Tip>
1823

24+
## Try it before you install
25+
26+
Installing Foundry and scaffolding a project takes a few minutes. If you just want to see a contract deploy to Sei, you can do both of these right now in the browser.
27+
28+
First, confirm the RPC endpoints you'll put in `foundry.toml` respond:
29+
30+
<RunSnippet method="eth_chainId" network="testnet" title="eth_chainId · atlantic-2" description="Testnet RPC — decodes to 1328." />
31+
32+
<RunSnippet method="eth_chainId" network="mainnet" title="eth_chainId · pacific-1" description="Mainnet RPC — decodes to 1329." />
33+
34+
Then add Sei testnet to your wallet and deploy a minimal `Counter.sol` from Remix — no `forge`, no install. In Remix: compile under **Solidity Compiler**, then **Deploy & Run** with **Environment** set to **Injected Provider — MetaMask**.
35+
36+
<AddSeiButton network="testnet" label="Add Sei testnet" />
37+
38+
<SandboxEmbed
39+
kind="remix"
40+
src="https://remix.ethereum.org/?#activate=solidity,fileManager&code=Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVApwcmFnbWEgc29saWRpdHkgXjAuOC4yNDsKCi8vLyBAdGl0bGUgQ291bnRlciDigJQgbWluaW1hbCBjb250cmFjdCB0byBjb21waWxlICYgZGVwbG95IHRvIFNlaSB0ZXN0bmV0Lgpjb250cmFjdCBDb3VudGVyIHsKICAgIHVpbnQyNTYgcHVibGljIGNvdW50OwogICAgZnVuY3Rpb24gaW5jcmVtZW50KCkgZXh0ZXJuYWwgeyBjb3VudCsrOyB9CiAgICBmdW5jdGlvbiBkZWNyZW1lbnQoKSBleHRlcm5hbCB7IGNvdW50LS07IH0KfQ"
41+
title="Counter.sol · deploy to Sei testnet"
42+
description="Remix IDE with a minimal Counter contract preloaded. Compile in-browser, then deploy to Sei testnet."
43+
/>
44+
1945
## Table of Contents
2046

2147
- [Prerequisites](#prerequisites)

‎evm/evm-general.mdx‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ sidebarTitle: 'EVM (General)'
44
description: "Comprehensive guide on Ethereum Virtual Machine (EVM) on Sei blockchain. Learn about smart contract languages, development tools, and best practices for building on Sei's parallelized EVM."
55
keywords: ['sei evm', 'ethereum virtual machine', 'smart contracts', 'solidity', 'vyper']
66
---
7+
8+
import { RunSnippet } from '/snippets/run-snippet.jsx';
9+
import { SandboxEmbed } from '/snippets/sandbox-embed.jsx';
10+
import { AddSeiButton } from '/snippets/add-sei-button.jsx';
11+
712
## Overview
813

914
The Ethereum Virtual Machine (EVM) is the runtime environment for smart
@@ -26,6 +31,25 @@ Here are some key points about the EVM:
2631
machine-readable instructions) and deployed to the EVM compatible network.
2732
The EVM executes this bytecode.
2833

34+
## Try it: deploy without any setup
35+
36+
You don't need a local toolchain to ship a contract to Sei. First confirm the network is live, then compile and deploy a minimal `Counter.sol` to testnet straight from the browser.
37+
38+
<RunSnippet method="eth_chainId" network="testnet" title="eth_chainId · atlantic-2" description="Confirms the testnet RPC responds — decodes to 1328, the chain ID your tooling needs." />
39+
40+
<RunSnippet method="eth_chainId" network="mainnet" title="eth_chainId · pacific-1" description="Confirms the mainnet RPC responds — decodes to 1329." />
41+
42+
Add Sei testnet to your wallet, then deploy from Remix below — compile under **Solidity Compiler**, then **Deploy & Run** with **Environment** set to **Injected Provider — MetaMask**:
43+
44+
<AddSeiButton network="testnet" label="Add Sei testnet" />
45+
46+
<SandboxEmbed
47+
kind="remix"
48+
src="https://remix.ethereum.org/?#activate=solidity,fileManager&code=Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVApwcmFnbWEgc29saWRpdHkgXjAuOC4yNDsKCi8vLyBAdGl0bGUgQ291bnRlciDigJQgbWluaW1hbCBjb250cmFjdCB0byBjb21waWxlICYgZGVwbG95IHRvIFNlaSB0ZXN0bmV0Lgpjb250cmFjdCBDb3VudGVyIHsKICAgIHVpbnQyNTYgcHVibGljIGNvdW50OwogICAgZnVuY3Rpb24gaW5jcmVtZW50KCkgZXh0ZXJuYWwgeyBjb3VudCsrOyB9CiAgICBmdW5jdGlvbiBkZWNyZW1lbnQoKSBleHRlcm5hbCB7IGNvdW50LS07IH0KfQ"
49+
title="Counter.sol · deploy to Sei testnet"
50+
description="Remix IDE with a minimal Counter contract preloaded. Compile in-browser, then deploy to Sei testnet."
51+
/>
52+
2953
## Smart contract languages
3054

3155
The two most popular languages for developing smart contracts on the EVM are

‎evm/evm-hardhat.mdx‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ sidebarTitle: 'EVM with Hardhat'
44
description: 'Learn how to set up Hardhat for Sei EVM development, create and deploy smart contracts, and leverage OpenZeppelin components for secure, standardized implementations.'
55
keywords: ['hardhat', 'smart contracts', 'sei development', 'evm deployment', 'openzeppelin']
66
---
7+
8+
import { RunSnippet } from '/snippets/run-snippet.jsx';
9+
import { SandboxEmbed } from '/snippets/sandbox-embed.jsx';
10+
import { AddSeiButton } from '/snippets/add-sei-button.jsx';
11+
712
This tutorial will guide you through setting up Hardhat for Sei EVM development and using OpenZeppelin contracts to build secure, standardized smart contracts. We'll cover environment setup, contract creation, deployment, and show how to leverage OpenZeppelin's pre-built components.
813

914
<Info>Watch the video walkthrough for this topic in the [Video Tutorials](/evm/videos) section.</Info>
@@ -16,6 +21,27 @@ It is <strong>highly recommended</strong> that you deploy to <em>testnet (atlant
1621

1722
</Tip>
1823

24+
## Try it before you install
25+
26+
Setting up the full toolchain takes a few minutes. If you just want to see a contract deploy to Sei, you can do both of these right now in the browser.
27+
28+
First, confirm the RPC endpoints you'll put in `hardhat.config` respond:
29+
30+
<RunSnippet method="eth_chainId" network="testnet" title="eth_chainId · atlantic-2" description="Testnet RPC — decodes to 1328." />
31+
32+
<RunSnippet method="eth_chainId" network="mainnet" title="eth_chainId · pacific-1" description="Mainnet RPC — decodes to 1329." />
33+
34+
Then add Sei testnet to your wallet and deploy a minimal `Counter.sol` from Remix — no Node, no install. In Remix: compile under **Solidity Compiler**, then **Deploy & Run** with **Environment** set to **Injected Provider — MetaMask**.
35+
36+
<AddSeiButton network="testnet" label="Add Sei testnet" />
37+
38+
<SandboxEmbed
39+
kind="remix"
40+
src="https://remix.ethereum.org/?#activate=solidity,fileManager&code=Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVApwcmFnbWEgc29saWRpdHkgXjAuOC4yNDsKCi8vLyBAdGl0bGUgQ291bnRlciDigJQgbWluaW1hbCBjb250cmFjdCB0byBjb21waWxlICYgZGVwbG95IHRvIFNlaSB0ZXN0bmV0Lgpjb250cmFjdCBDb3VudGVyIHsKICAgIHVpbnQyNTYgcHVibGljIGNvdW50OwogICAgZnVuY3Rpb24gaW5jcmVtZW50KCkgZXh0ZXJuYWwgeyBjb3VudCsrOyB9CiAgICBmdW5jdGlvbiBkZWNyZW1lbnQoKSBleHRlcm5hbCB7IGNvdW50LS07IH0KfQ"
41+
title="Counter.sol · deploy to Sei testnet"
42+
description="Remix IDE with a minimal Counter contract preloaded. Compile in-browser, then deploy to Sei testnet."
43+
/>
44+
1945
## Table of Contents
2046

2147
- [Prerequisites](#prerequisites)

‎evm/evm-parity/examples/erc1155.mdx‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,30 @@ title: 'ERC-1155 Interaction'
33
description: 'Reading and writing ERC-1155 multi-token contracts on Sei with viem and ethers'
44
---
55

6+
import { SandboxEmbed } from '/snippets/sandbox-embed.jsx';
7+
import { AddSeiButton } from '/snippets/add-sei-button.jsx';
8+
69
# ERC-1155 Interaction
710

811
ERC-1155 is the multi-token standard — a single contract can hold both fungible tokens (like gold coins in a game) and non-fungible tokens (like unique items), with efficient batch operations built in. Standard ERC-1155 contracts work on Sei without modification.
912

13+
## Try it: deploy an ERC-1155
14+
15+
Compile and deploy a real ERC-1155 to Sei testnet from the browser — the Remix sandbox preloads an OpenZeppelin-based `DemoMultiToken` with a public `mint(id, amount)`. Then point the read/write patterns below at your deployed address.
16+
17+
First, add Sei testnet to your wallet:
18+
19+
<AddSeiButton network="testnet" label="Add Sei testnet" />
20+
21+
In Remix, compile under **Solidity Compiler**, then **Deploy & Run** with **Environment** set to **Injected Provider — MetaMask** (or **External HTTP Provider** at `https://evm-rpc-testnet.sei-apis.com`).
22+
23+
<SandboxEmbed
24+
kind="remix"
25+
src="https://remix.ethereum.org/?#activate=solidity,fileManager&code=Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVApwcmFnbWEgc29saWRpdHkgXjAuOC4yNDsKCmltcG9ydCAiQG9wZW56ZXBwZWxpbi9jb250cmFjdHMvdG9rZW4vRVJDMTE1NS9FUkMxMTU1LnNvbCI7Cgpjb250cmFjdCBEZW1vTXVsdGlUb2tlbiBpcyBFUkMxMTU1IHsKICAgIHVpbnQyNTYgcHVibGljIGNvbnN0YW50IEdPTEQgPSAwOwogICAgdWludDI1NiBwdWJsaWMgY29uc3RhbnQgU0lMVkVSID0gMTsKICAgIGNvbnN0cnVjdG9yKCkgRVJDMTE1NSgiaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGkvaXRlbS97aWR9Lmpzb24iKSB7fQogICAgZnVuY3Rpb24gbWludCh1aW50MjU2IGlkLCB1aW50MjU2IGFtb3VudCkgZXh0ZXJuYWwgeyBfbWludChtc2cuc2VuZGVyLCBpZCwgYW1vdW50LCAiIik7IH0KfQo"
26+
title="DemoMultiToken (ERC-1155) · deploy to Sei testnet"
27+
description="Remix IDE with an OpenZeppelin ERC-1155 preloaded. Compile in-browser and deploy to Sei testnet."
28+
/>
29+
1030
## Setup
1131

1232
<CodeGroup>

‎evm/evm-parity/examples/error-handling.mdx‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,32 @@ title: 'Error Handling'
33
description: 'Decode contract reverts, handle wallet rejections, and recover from RPC errors in Sei apps'
44
---
55

6+
import { RunSnippet } from '/snippets/run-snippet.jsx';
7+
68
# Error Handling
79

810
Most transaction failures fall into three categories: contract reverts, wallet rejections, and RPC errors. This page shows how to decode each type and respond correctly.
911

12+
## Try it: see real errors
13+
14+
The `RunSnippet` widget surfaces whatever the RPC returns — including failures. These two calls fail on purpose so you can see the exact error shape your code has to handle, live against Sei mainnet.
15+
16+
<RunSnippet
17+
method="eth_call"
18+
params={[{ to: '0xcA11bde05977b3631167028862bE2a173976CA11', data: '0xdeadbeef' }, 'latest']}
19+
network="mainnet"
20+
title="A contract revert"
21+
description="Calls an unknown selector (0xdeadbeef) on Multicall3. The node rejects it with execution reverted — the same class of failure as the Contract Reverts section below."
22+
/>
23+
24+
<RunSnippet
25+
method="eth_getBalance"
26+
params={['0x123', 'latest']}
27+
network="mainnet"
28+
title="An RPC argument error"
29+
description="A malformed address (0x123) triggers a JSON-RPC -32602 invalid argument error — distinct from a revert, and the kind of failure the RPC Errors and Retries section below handles."
30+
/>
31+
1032
## Contract Reverts
1133

1234
When a transaction reverts, the error contains the revert reason if the contract provides one.

‎evm/evm-parity/examples/multicall.mdx‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,34 @@ title: 'Multicall'
33
description: 'Batch multiple contract reads into a single RPC call using Multicall3 on Sei'
44
---
55

6+
import { RunSnippet } from '/snippets/run-snippet.jsx';
7+
68
# Multicall
79

810
Multicall3 lets you batch multiple read calls into a single RPC round-trip, dramatically reducing latency for dashboards, portfolio pages, and any view that needs data from multiple contracts at once.
911

1012
Multicall3 is deployed at `0xcA11bde05977b3631167028862bE2a173976CA11` on Sei mainnet and testnet — the same address as Ethereum.
1113

14+
## Try It Live
15+
16+
Multicall3 is a normal contract — you can hit it with a single `eth_call` and no SDK. These run its two zero-argument helpers on Sei mainnet; the hex results decode to decimal below each response.
17+
18+
<RunSnippet
19+
method="eth_call"
20+
params={[{ to: '0xcA11bde05977b3631167028862bE2a173976CA11', data: '0x42cbb15c' }, 'latest']}
21+
network="mainnet"
22+
title="Multicall3.getBlockNumber()"
23+
description="Selector 0x42cbb15c on Multicall3 at 0xcA11…CA11 — returns the current block number."
24+
/>
25+
26+
<RunSnippet
27+
method="eth_call"
28+
params={[{ to: '0xcA11bde05977b3631167028862bE2a173976CA11', data: '0x0f28c97d' }, 'latest']}
29+
network="mainnet"
30+
title="Multicall3.getCurrentBlockTimestamp()"
31+
description="Selector 0x0f28c97d — returns the latest block's Unix timestamp in seconds."
32+
/>
33+
1234
## Batching ERC-20 Reads with viem
1335

1436
viem's `multicall` action wraps Multicall3 automatically:

‎evm/evm-parity/examples/sei-precompiles.mdx‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ title: 'Sei Precompiles'
33
description: 'Interact with native Sei chain features — staking, governance, native token balances, and more — from EVM applications'
44
---
55

6+
import { RunSnippet } from '/snippets/run-snippet.jsx';
7+
68
Sei exposes native chain functionality through precompiled contracts at deterministic EVM addresses. You can call them from any EVM library (viem, ethers, wagmi) using the ABIs exported from `@sei-js/precompiles` — no special SDK required.
79

810
Available precompiles include:
@@ -14,6 +16,19 @@ Available precompiles include:
1416
- **JSON** — parse JSON payloads within contracts
1517
- **P256** — verify P-256 elliptic curve signatures
1618

19+
## Try It Live
20+
21+
Precompiles are callable like any contract — even with a plain `eth_call` from the browser. This hits the **Bank** precompile at `0x0000000000000000000000000000000000001001` on Sei mainnet, calling `name("usei")`. The response is ABI-encoded; it contains the bytes `53 45 49` — ASCII for `SEI`.
22+
23+
<RunSnippet
24+
method="eth_call"
25+
params={[{ to: '0x0000000000000000000000000000000000001001', data: '0x5b43bc99000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000047573656900000000000000000000000000000000000000000000000000000000' }, 'latest']}
26+
network="mainnet"
27+
decode="off"
28+
title="Bank.name('usei')"
29+
description="Raw eth_call to the Bank precompile. Decoding off because the result is an ABI-encoded string, not a numeric quantity."
30+
/>
31+
1732
For installation instructions, code examples (viem and ethers), common patterns, and a full working Node.js script, see the precompiles reference:
1833

1934
<Card title="Precompile Example Usage" icon="hexagon-nodes" href="/evm/precompiles/example-usage">

‎evm/evm-parity/examples/transaction-lifecycle.mdx‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,20 @@ title: 'Transaction Lifecycle'
33
description: 'Send transactions, wait for receipts, and decode event logs on Sei'
44
---
55

6+
import { RunSnippet } from '/snippets/run-snippet.jsx';
7+
68
# Transaction Lifecycle
79

810
This page covers the full round-trip of a transaction: building and sending it, waiting for the receipt, and reading the event logs it emitted.
911

12+
## Try It Live
13+
14+
Before you send anything, read the live chain state your transaction will interact with — straight from your browser against Sei mainnet, no install or key required.
15+
16+
<RunSnippet method="eth_gasPrice" network="mainnet" title="eth_gasPrice" description="Current gas price in wei — the widget decodes the hex quantity to decimal below the response." />
17+
18+
<RunSnippet method="eth_blockNumber" network="mainnet" title="eth_blockNumber" description="Latest committed block on pacific-1. Your transaction lands a block or two after whatever this returns." />
19+
1020
## Sending a Transaction
1121

1222
<CodeGroup>

‎evm/evm-parity/examples/wagmi-react.mdx‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,33 @@ title: 'Wagmi + React'
33
description: 'Connect wallets, read chain state, and write transactions in a React app on Sei using Wagmi'
44
---
55

6+
import { RunSnippet } from '/snippets/run-snippet.jsx';
7+
68
# Wagmi + React
79

810
[Wagmi](https://wagmi.sh) is the standard React library for EVM wallet connections and contract interactions. This page covers the essential patterns for a Sei frontend: configuration, wallet connect/disconnect, reading balances, and writing to contracts.
911

1012
For Node.js scripts and backend services, see the [viem Quickstart](/evm/evm-parity/examples/viem-quickstart) instead.
1113

14+
## Try It Live
15+
16+
The hooks below — `useBlockNumber`, `useBalance` — are thin wrappers over JSON-RPC reads. Here are those same reads issued directly against Sei mainnet, no wallet connection required, so you can see the data your components will render.
17+
18+
<RunSnippet
19+
method="eth_blockNumber"
20+
network="mainnet"
21+
title="eth_blockNumber"
22+
description="What useBlockNumber() resolves to — the latest committed block on pacific-1."
23+
/>
24+
25+
<RunSnippet
26+
method="eth_getBalance"
27+
params={['0x0000000000000000000000000000000000000000', 'latest']}
28+
network="mainnet"
29+
title="eth_getBalance"
30+
description="What useBalance({ address }) reads under the hood — wei balance at the latest block. Swap in any address."
31+
/>
32+
1233
## Install
1334

1435
```bash

0 commit comments

Comments
 (0)