diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index cb45bb2..0c0b586 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -22,7 +22,7 @@ The architecture follows a **hybrid server/client model**: sensitive operations | API | Bags.fm API v1 (server-side proxy) | | Database | Supabase (PostgreSQL + Auth + RLS) | | Telemetry | Custom event logger with Sentry integration | -| Testing | Vitest (TS), Hardhat (Solidity) | +| Testing | Vitest (TS) [Primary], Hardhat (Solidity) [Legacy] | --- @@ -195,8 +195,9 @@ graph TB - `.env` with: `BAGS_API_KEY`, `SUPABASE_SERVICE_ROLE_KEY`, `NEXT_PUBLIC_SOLANA_RPC_URL` ### Testing -- `npm run test:ts`: Vitest suite for client, routes, and logic (22+ tests). -- `npm run test`: Hardhat suite for Solidity contracts. +- `npm run test`: Primary Vitest suite for Solana client, routes, and logic (26+ tests). +- `npm run test:ts`: Alias for the primary Solana Vitest suite. +- `npm run test:evm`: Legacy Hardhat suite for archived Solidity contracts (`legacy/evm/`). --- diff --git a/docs/reports/p0-10-evm-migration-execution.md b/docs/reports/p0-10-evm-migration-execution.md new file mode 100644 index 0000000..d79fa16 --- /dev/null +++ b/docs/reports/p0-10-evm-migration-execution.md @@ -0,0 +1,55 @@ +# P0-10 Report: Migrate Legacy EVM Contract Suite to legacy/evm + +Date: 2026-05-25 +Task ID: P0-10 +Area: Repository Hygiene & Smart Contract Engineering + +## 1. Executive Summary + +This task successfully resolves the repository hygiene gaps surrounding the deprecated Ethereum Virtual Machine (EVM) Solidity contracts. As BagFi has transitioned into a **Solana-first** non-custodial asset platform, the legacy Solidity zappers and vault contracts are no longer utilized by the Next.js production builds. + +To prevent legacy compilation and test failures from blocking automated developer pipelines, CI/CD gates, and local verification runs: +1. We migrated the Solidity contracts, Hardhat configuration, and JavaScript tests into a dedicated subfolder (`legacy/evm/`). +2. We decoupled Hardhat from the default `npm run test` gate, re-routing it to the TypeScript Solana-native **Vitest** test suite. +3. We enabled isolated, self-contained execution of the legacy EVM test suite via a new dedicated command (`npm run test:evm`). + +--- + +## 2. Restructuring Actions + +We relocated the following legacy assets into `legacy/evm/`: +- **Contracts**: `contracts/` directory moved to `legacy/evm/contracts/` +- **Configuration**: `hardhat.config.js` moved to `legacy/evm/hardhat.config.js` +- **Tests**: + - `test/BagFiZapper.test.cjs` moved to `legacy/evm/test/BagFiZapper.test.cjs` + - `test/SmartBagVault.test.cjs` moved to `legacy/evm/test/SmartBagVault.test.cjs` + +This aligns perfectly with Hardhat's relative resolution mechanics. Because paths inside `legacy/evm/hardhat.config.js` are configured relative to the configuration file, compiler cache and build artifacts will naturally compile under `legacy/evm/cache/` and `legacy/evm/artifacts/` without cluttering the root workspace. + +--- + +## 3. Package & Script Updates + +### Scripts Updated +In **[package.json](file:///Users/ekf/Downloads/Projects/bagfi/package.json)**, we updated the test scripts: +```json +"scripts": { + "test": "vitest run", + "test:ts": "vitest run", + "test:evm": "hardhat test --config legacy/evm/hardhat.config.js" +} +``` +- Running `npm run test` or `npm test` now executes the Solana Vitest suite directly. +- Running `npm run test:evm` executes the legacy EVM test suite in isolation. + +### Documentation Updated +- **[README.md](file:///Users/ekf/Downloads/Projects/bagfi/legacy/evm/README.md) [NEW]**: Created a detailed readme inside the legacy folder detailing the deprecation status, structural directory mapping, and standalone testing steps. +- **[ARCHITECTURE.md](file:///Users/ekf/Downloads/Projects/bagfi/ARCHITECTURE.md)**: Updated testing and tech stack sections to represent the Vitest-first architecture and document the legacy EVM subfolder mapping. + +--- + +## 4. Verification & Validation + +- **Primary tests**: Run `npm run test` (which now runs vitest) - **26/26 tests passed** successfully. +- **Lint validation**: Run `npm run lint` - **0 errors**, passed. +- **Next.js compilation**: Run `npm run build` - compiled and optimized successfully. diff --git a/legacy/evm/README.md b/legacy/evm/README.md new file mode 100644 index 0000000..070a39d --- /dev/null +++ b/legacy/evm/README.md @@ -0,0 +1,39 @@ +# Legacy EVM Contracts & Hardhat Suite + +This directory contains the legacy Ethereum Virtual Machine (EVM) smart contracts and testing suite for BagFi. + +## โš ๏ธ Deprecation Status + +As of **May 2026**, the BagFi platform has successfully migrated to a **Solana-first, non-custodial** architecture. +The core automated yield-generating "Smart Bags" are executed directly on the Solana mainnet, leveraging **Bags.fm** proxy layers and the **Jupiter API** for trades and allocations. + +As a result: +- The solidity contracts inside this directory are **deprecated** and not used by the production Next.js frontend. +- These contracts are preserved here for historical reference, auditing context, and potential future multi-chain expansions. +- Hardhat tests have been decoupled from the primary CI/CD build pipelines and local launch gates. + +--- + +## ๐Ÿ“‚ Directory Layout + +* `contracts/` โ€” Legacy ERC-4626 vault and zap-in contracts: + * `SmartBagVault.sol` โ€” Standard ERC-4626 portfolio vault. + * `BagFiZapper.sol` โ€” 1-click swap and deposit zapper. +* `test/` โ€” JavaScript Hardhat test suites. +* `hardhat.config.js` โ€” Hardhat compilation and path configurations. + +--- + +## ๐Ÿงช Running EVM Tests + +To run the Hardhat test suite, execute the following command from the **root** of the repository: + +```bash +npm run test:evm +``` + +This is a wrapper that executes: +```bash +npx hardhat test --config legacy/evm/hardhat.config.js +``` +All relative paths inside `hardhat.config.js` resolve relative to this directory, allowing compilation caches and artifacts to generate cleanly under `legacy/evm/cache/` and `legacy/evm/artifacts/`. diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json b/legacy/evm/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json new file mode 100644 index 0000000..5345edc --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json @@ -0,0 +1,85 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Ownable", + "sourceName": "@openzeppelin/contracts/access/Ownable.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC1363.sol/IERC1363.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC1363.sol/IERC1363.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC1363.sol/IERC1363.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC1363.sol/IERC1363.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC1363.sol/IERC1363.json new file mode 100644 index 0000000..705034c --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC1363.sol/IERC1363.json @@ -0,0 +1,382 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1363", + "sourceName": "@openzeppelin/contracts/interfaces/IERC1363.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "transferAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "transferFromAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFromAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC4626.sol/IERC4626.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC4626.sol/IERC4626.json new file mode 100644 index 0000000..283824e --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/IERC4626.sol/IERC4626.json @@ -0,0 +1,623 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC4626", + "sourceName": "@openzeppelin/contracts/interfaces/IERC4626.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "asset", + "outputs": [ + { + "internalType": "address", + "name": "assetTokenAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "convertToAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "convertToShares", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "deposit", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "maxDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "maxAssets", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "maxMint", + "outputs": [ + { + "internalType": "uint256", + "name": "maxShares", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "maxRedeem", + "outputs": [ + { + "internalType": "uint256", + "name": "maxShares", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "maxWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "maxAssets", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "previewDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "previewMint", + "outputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "previewRedeem", + "outputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "previewWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "totalManagedAssets", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.json new file mode 100644 index 0000000..107d16f --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.json @@ -0,0 +1,113 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1155Errors", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC1155InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC1155InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "idsLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "valuesLength", + "type": "uint256" + } + ], + "name": "ERC1155InvalidArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC1155InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC1155InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC1155InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC1155MissingApprovalForAll", + "type": "error" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.json new file mode 100644 index 0000000..f77ad64 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.json @@ -0,0 +1,97 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20Errors", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.json b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.json new file mode 100644 index 0000000..6ccf3a7 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.json @@ -0,0 +1,114 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Errors", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json new file mode 100644 index 0000000..cab5b27 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json new file mode 100644 index 0000000..81e661f --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json @@ -0,0 +1,319 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json new file mode 100644 index 0000000..cab5b27 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json new file mode 100644 index 0000000..12e0777 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json @@ -0,0 +1,194 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol/ERC4626.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol/ERC4626.dbg.json new file mode 100644 index 0000000..caf7849 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol/ERC4626.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol/ERC4626.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol/ERC4626.json new file mode 100644 index 0000000..4a5dac1 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol/ERC4626.json @@ -0,0 +1,804 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC4626", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "ERC4626ExceededMaxDeposit", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "ERC4626ExceededMaxMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "ERC4626ExceededMaxRedeem", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "ERC4626ExceededMaxWithdraw", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "asset", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "convertToAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "convertToShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "deposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxMint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "maxRedeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "maxWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "previewDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "previewMint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "previewRedeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "previewWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json new file mode 100644 index 0000000..caf7849 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json new file mode 100644 index 0000000..a7d8b6a --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json @@ -0,0 +1,233 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20Metadata", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json new file mode 100644 index 0000000..caf7849 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json new file mode 100644 index 0000000..1f0a938 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json @@ -0,0 +1,43 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "currentAllowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestedDecrease", + "type": "uint256" + } + ], + "name": "SafeERC20FailedDecreaseAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + } + ], + "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220428002000609e1a05d9eadd3a114cd201ec3780f334ba1f1654be517ff41782164736f6c634300081a0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220428002000609e1a05d9eadd3a114cd201ec3780f334ba1f1654be517ff41782164736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json new file mode 100644 index 0000000..8fe86fc --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Context", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/LowLevelCall.sol/LowLevelCall.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/LowLevelCall.sol/LowLevelCall.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/LowLevelCall.sol/LowLevelCall.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/LowLevelCall.sol/LowLevelCall.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/LowLevelCall.sol/LowLevelCall.json new file mode 100644 index 0000000..1cc21da --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/LowLevelCall.sol/LowLevelCall.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LowLevelCall", + "sourceName": "@openzeppelin/contracts/utils/LowLevelCall.sol", + "abi": [], + "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205679da2b544fd3f8a04ab50b966f771bdd3756f7bfa02f8b6778a2250fb37c2464736f6c634300081a0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205679da2b544fd3f8a04ab50b966f771bdd3756f7bfa02f8b6778a2250fb37c2464736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/Memory.sol/Memory.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Memory.sol/Memory.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Memory.sol/Memory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/Memory.sol/Memory.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Memory.sol/Memory.json new file mode 100644 index 0000000..bc38126 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Memory.sol/Memory.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Memory", + "sourceName": "@openzeppelin/contracts/utils/Memory.sol", + "abi": [], + "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220befa5497a478bec4500da022dda57f2535c9754f3d75669d065767afb857188a64736f6c634300081a0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220befa5497a478bec4500da022dda57f2535c9754f3d75669d065767afb857188a64736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/Panic.sol/Panic.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Panic.sol/Panic.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Panic.sol/Panic.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/Panic.sol/Panic.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Panic.sol/Panic.json new file mode 100644 index 0000000..cc2e0bd --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Panic.sol/Panic.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Panic", + "sourceName": "@openzeppelin/contracts/utils/Panic.sol", + "abi": [], + "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f55ff6bf7552944e02bc2e758597beaadbcf6c3c3213e4e251fce95e8c3dd88b64736f6c634300081a0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f55ff6bf7552944e02bc2e758597beaadbcf6c3c3213e4e251fce95e8c3dd88b64736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/Pausable.sol/Pausable.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Pausable.sol/Pausable.dbg.json new file mode 100644 index 0000000..3ba50b8 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Pausable.sol/Pausable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/Pausable.sol/Pausable.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Pausable.sol/Pausable.json new file mode 100644 index 0000000..e1a779f --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/Pausable.sol/Pausable.json @@ -0,0 +1,60 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Pausable", + "sourceName": "@openzeppelin/contracts/utils/Pausable.sol", + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json new file mode 100644 index 0000000..cab5b27 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json new file mode 100644 index 0000000..ff87f91 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC165", + "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json new file mode 100644 index 0000000..cab5b27 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json new file mode 100644 index 0000000..8000564 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Math", + "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", + "abi": [], + "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e33d8a8c1e25427a1d70c2ca25b71f98f4fdf183d430c2a4dde290040710b6a464736f6c634300081a0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e33d8a8c1e25427a1d70c2ca25b71f98f4fdf183d430c2a4dde290040710b6a464736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/SafeCast.sol/SafeCast.dbg.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/SafeCast.sol/SafeCast.dbg.json new file mode 100644 index 0000000..cab5b27 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/SafeCast.sol/SafeCast.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/SafeCast.sol/SafeCast.json b/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/SafeCast.sol/SafeCast.json new file mode 100644 index 0000000..01ee714 --- /dev/null +++ b/legacy/evm/artifacts/@openzeppelin/contracts/utils/math/SafeCast.sol/SafeCast.json @@ -0,0 +1,65 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeCast", + "sourceName": "@openzeppelin/contracts/utils/math/SafeCast.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint8", + "name": "bits", + "type": "uint8" + }, + { + "internalType": "int256", + "name": "value", + "type": "int256" + } + ], + "name": "SafeCastOverflowedIntDowncast", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "value", + "type": "int256" + } + ], + "name": "SafeCastOverflowedIntToUint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "bits", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeCastOverflowedUintDowncast", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeCastOverflowedUintToInt", + "type": "error" + } + ], + "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f895499850b99389076a1b06a525eddf7e7e185b87b2c43078c1d960bdcbd13f64736f6c634300081a0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f895499850b99389076a1b06a525eddf7e7e185b87b2c43078c1d960bdcbd13f64736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/build-info/1282d9a13b7ab675f783ff431077ec65.json b/legacy/evm/artifacts/build-info/1282d9a13b7ab675f783ff431077ec65.json new file mode 100644 index 0000000..df5f03a --- /dev/null +++ b/legacy/evm/artifacts/build-info/1282d9a13b7ab675f783ff431077ec65.json @@ -0,0 +1 @@ +{"id":"1282d9a13b7ab675f783ff431077ec65","_format":"hh-sol-build-info-1","solcVersion":"0.8.26","solcLongVersion":"0.8.26+commit.8a97fa7a","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/draft-IERC6093.sol)\n\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`โ€™s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`โ€™s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`โ€™s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1363.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n /*\n * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n * 0xb0202a11 ===\n * bytes4(keccak256('transferAndCall(address,uint256)')) ^\n * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n */\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @param data Additional data with no specified format, sent in call to `spender`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n"},"@openzeppelin/contracts/interfaces/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC165.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC20.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/IERC4626.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"../token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @dev Interface of the ERC-4626 \"Tokenized Vault Standard\", as defined in\n * https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n */\ninterface IERC4626 is IERC20, IERC20Metadata {\n event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);\n\n event Withdraw(\n address indexed sender,\n address indexed receiver,\n address indexed owner,\n uint256 assets,\n uint256 shares\n );\n\n /**\n * @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.\n *\n * - MUST be an ERC-20 token contract.\n * - MUST NOT revert.\n */\n function asset() external view returns (address assetTokenAddress);\n\n /**\n * @dev Returns the total amount of the underlying asset that is โ€œmanagedโ€ by Vault.\n *\n * - SHOULD include any compounding that occurs from yield.\n * - MUST be inclusive of any fees that are charged against assets in the Vault.\n * - MUST NOT revert.\n */\n function totalAssets() external view returns (uint256 totalManagedAssets);\n\n /**\n * @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal\n * scenario where all the conditions are met.\n *\n * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n * - MUST NOT show any variations depending on the caller.\n * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n * - MUST NOT revert.\n *\n * NOTE: This calculation MAY NOT reflect the โ€œper-userโ€ price-per-share, and instead should reflect the\n * โ€œaverage-userโ€™sโ€ price-per-share, meaning what the average user should expect to see when exchanging to and\n * from.\n */\n function convertToShares(uint256 assets) external view returns (uint256 shares);\n\n /**\n * @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal\n * scenario where all the conditions are met.\n *\n * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n * - MUST NOT show any variations depending on the caller.\n * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n * - MUST NOT revert.\n *\n * NOTE: This calculation MAY NOT reflect the โ€œper-userโ€ price-per-share, and instead should reflect the\n * โ€œaverage-userโ€™sโ€ price-per-share, meaning what the average user should expect to see when exchanging to and\n * from.\n */\n function convertToAssets(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,\n * through a deposit call.\n *\n * - MUST return a limited value if receiver is subject to some deposit limit.\n * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.\n * - MUST NOT revert.\n */\n function maxDeposit(address receiver) external view returns (uint256 maxAssets);\n\n /**\n * @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given\n * current on-chain conditions.\n *\n * - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit\n * call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called\n * in the same transaction.\n * - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the\n * deposit would be accepted, regardless if the user has enough tokens approved, etc.\n * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n * - MUST NOT revert.\n *\n * NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in\n * share price or some other type of condition, meaning the depositor will lose assets by depositing.\n */\n function previewDeposit(uint256 assets) external view returns (uint256 shares);\n\n /**\n * @dev Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`.\n *\n * - MUST emit the Deposit event.\n * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n * deposit execution, and are accounted for during deposit.\n * - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not\n * approving enough underlying tokens to the Vault contract, etc).\n *\n * NOTE: most implementations will require pre-approval of the Vault with the Vaultโ€™s underlying asset token.\n */\n function deposit(uint256 assets, address receiver) external returns (uint256 shares);\n\n /**\n * @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.\n * - MUST return a limited value if receiver is subject to some mint limit.\n * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.\n * - MUST NOT revert.\n */\n function maxMint(address receiver) external view returns (uint256 maxShares);\n\n /**\n * @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given\n * current on-chain conditions.\n *\n * - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call\n * in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the\n * same transaction.\n * - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint\n * would be accepted, regardless if the user has enough tokens approved, etc.\n * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n * - MUST NOT revert.\n *\n * NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in\n * share price or some other type of condition, meaning the depositor will lose assets by minting.\n */\n function previewMint(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens.\n *\n * - MUST emit the Deposit event.\n * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint\n * execution, and are accounted for during mint.\n * - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not\n * approving enough underlying tokens to the Vault contract, etc).\n *\n * NOTE: most implementations will require pre-approval of the Vault with the Vaultโ€™s underlying asset token.\n */\n function mint(uint256 shares, address receiver) external returns (uint256 assets);\n\n /**\n * @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the\n * Vault, through a withdraw call.\n *\n * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n * - MUST NOT revert.\n */\n function maxWithdraw(address owner) external view returns (uint256 maxAssets);\n\n /**\n * @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,\n * given current on-chain conditions.\n *\n * - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw\n * call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if\n * called\n * in the same transaction.\n * - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though\n * the withdrawal would be accepted, regardless if the user has enough shares, etc.\n * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n * - MUST NOT revert.\n *\n * NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in\n * share price or some other type of condition, meaning the depositor will lose assets by depositing.\n */\n function previewWithdraw(uint256 assets) external view returns (uint256 shares);\n\n /**\n * @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.\n *\n * - MUST emit the Withdraw event.\n * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n * withdraw execution, and are accounted for during withdraw.\n * - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner\n * not having enough shares, etc).\n *\n * Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n * Those methods should be performed separately.\n */\n function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);\n\n /**\n * @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,\n * through a redeem call.\n *\n * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n * - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.\n * - MUST NOT revert.\n */\n function maxRedeem(address owner) external view returns (uint256 maxShares);\n\n /**\n * @dev Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block,\n * given current on-chain conditions.\n *\n * - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call\n * in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the\n * same transaction.\n * - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the\n * redemption would be accepted, regardless if the user has enough shares, etc.\n * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n * - MUST NOT revert.\n *\n * NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in\n * share price or some other type of condition, meaning the depositor will lose assets by redeeming.\n */\n function previewRedeem(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.\n *\n * - MUST emit the Withdraw event.\n * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n * redeem execution, and are accounted for during redeem.\n * - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner\n * not having enough shares, etc).\n *\n * NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n * Those methods should be performed separately.\n */\n function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * Both values are immutable: they can only be set once during construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /// @inheritdoc IERC20\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /// @inheritdoc IERC20\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /// @inheritdoc IERC20\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.6.0) (token/ERC20/extensions/ERC4626.sol)\n\npragma solidity ^0.8.24;\n\nimport {IERC20, IERC20Metadata, ERC20} from \"../ERC20.sol\";\nimport {SafeERC20} from \"../utils/SafeERC20.sol\";\nimport {IERC4626} from \"../../../interfaces/IERC4626.sol\";\nimport {LowLevelCall} from \"../../../utils/LowLevelCall.sol\";\nimport {Memory} from \"../../../utils/Memory.sol\";\nimport {Math} from \"../../../utils/math/Math.sol\";\n\n/**\n * @dev Implementation of the ERC-4626 \"Tokenized Vault Standard\" as defined in\n * https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n *\n * This extension allows the minting and burning of \"shares\" (represented using the ERC-20 inheritance) in exchange for\n * underlying \"assets\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends\n * the ERC-20 standard. Any additional extensions included along it would affect the \"shares\" token represented by this\n * contract and not the \"assets\" token which is an independent contract.\n *\n * [CAUTION]\n * ====\n * In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning\n * with a \"donation\" to the vault that inflates the price of a share. This is variously known as a donation or inflation\n * attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial\n * deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may\n * similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by\n * verifying the amount received is as expected, using a wrapper that performs these checks such as\n * https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router].\n *\n * Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk.\n * The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals\n * and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which\n * itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default\n * offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result\n * of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains.\n * With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the\n * underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here].\n *\n * The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued\n * to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets\n * will cause the first user to exit to experience reduced losses in detriment to the last users that will experience\n * bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the\n * `_convertToShares` and `_convertToAssets` functions.\n *\n * To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide].\n * ====\n *\n * [NOTE]\n * ====\n * When overriding this contract, some elements must be considered:\n *\n * * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal\n * functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw}\n * automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing\n * functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and\n * {redeem}, which is documented to have led to loss of funds.\n *\n * * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well.\n *\n * * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand,\n * overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two\n * functions.\n *\n * * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it\n * always return successfully.\n * ====\n */\nabstract contract ERC4626 is ERC20, IERC4626 {\n using Math for uint256;\n\n IERC20 private immutable _asset;\n uint8 private immutable _underlyingDecimals;\n\n /**\n * @dev Attempted to deposit more assets than the max amount for `receiver`.\n */\n error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max);\n\n /**\n * @dev Attempted to mint more shares than the max amount for `receiver`.\n */\n error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max);\n\n /**\n * @dev Attempted to withdraw more assets than the max amount for `owner`.\n */\n error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max);\n\n /**\n * @dev Attempted to redeem more shares than the max amount for `owner`.\n */\n error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max);\n\n /**\n * @dev Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777).\n */\n constructor(IERC20 asset_) {\n (bool success, uint8 assetDecimals) = _tryGetAssetDecimals(asset_);\n _underlyingDecimals = success ? assetDecimals : 18;\n _asset = asset_;\n }\n\n /**\n * @dev Attempts to fetch the asset decimals. A return value of false indicates that the attempt failed in some way.\n */\n function _tryGetAssetDecimals(IERC20 asset_) private view returns (bool ok, uint8 assetDecimals) {\n Memory.Pointer ptr = Memory.getFreeMemoryPointer();\n (bool success, bytes32 returnedDecimals, ) = LowLevelCall.staticcallReturn64Bytes(\n address(asset_),\n abi.encodeCall(IERC20Metadata.decimals, ())\n );\n Memory.unsafeSetFreeMemoryPointer(ptr);\n\n return\n (success && LowLevelCall.returnDataSize() >= 32 && uint256(returnedDecimals) <= type(uint8).max)\n ? (true, uint8(uint256(returnedDecimals)))\n : (false, 0);\n }\n\n /**\n * @dev Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This\n * \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the\n * asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals.\n *\n * See {IERC20Metadata-decimals}.\n */\n function decimals() public view virtual override(IERC20Metadata, ERC20) returns (uint8) {\n return _underlyingDecimals + _decimalsOffset();\n }\n\n /// @inheritdoc IERC4626\n function asset() public view virtual returns (address) {\n return address(_asset);\n }\n\n /// @inheritdoc IERC4626\n function totalAssets() public view virtual returns (uint256) {\n return IERC20(asset()).balanceOf(address(this));\n }\n\n /// @inheritdoc IERC4626\n function convertToShares(uint256 assets) public view virtual returns (uint256) {\n return _convertToShares(assets, Math.Rounding.Floor);\n }\n\n /// @inheritdoc IERC4626\n function convertToAssets(uint256 shares) public view virtual returns (uint256) {\n return _convertToAssets(shares, Math.Rounding.Floor);\n }\n\n /// @inheritdoc IERC4626\n function maxDeposit(address) public view virtual returns (uint256) {\n return type(uint256).max;\n }\n\n /// @inheritdoc IERC4626\n function maxMint(address) public view virtual returns (uint256) {\n return type(uint256).max;\n }\n\n /// @inheritdoc IERC4626\n function maxWithdraw(address owner) public view virtual returns (uint256) {\n return previewRedeem(maxRedeem(owner));\n }\n\n /// @inheritdoc IERC4626\n function maxRedeem(address owner) public view virtual returns (uint256) {\n return balanceOf(owner);\n }\n\n /// @inheritdoc IERC4626\n function previewDeposit(uint256 assets) public view virtual returns (uint256) {\n return _convertToShares(assets, Math.Rounding.Floor);\n }\n\n /// @inheritdoc IERC4626\n function previewMint(uint256 shares) public view virtual returns (uint256) {\n return _convertToAssets(shares, Math.Rounding.Ceil);\n }\n\n /// @inheritdoc IERC4626\n function previewWithdraw(uint256 assets) public view virtual returns (uint256) {\n return _convertToShares(assets, Math.Rounding.Ceil);\n }\n\n /// @inheritdoc IERC4626\n function previewRedeem(uint256 shares) public view virtual returns (uint256) {\n return _convertToAssets(shares, Math.Rounding.Floor);\n }\n\n /// @inheritdoc IERC4626\n function deposit(uint256 assets, address receiver) public virtual returns (uint256) {\n uint256 maxAssets = maxDeposit(receiver);\n if (assets > maxAssets) {\n revert ERC4626ExceededMaxDeposit(receiver, assets, maxAssets);\n }\n\n uint256 shares = previewDeposit(assets);\n _deposit(_msgSender(), receiver, assets, shares);\n\n return shares;\n }\n\n /// @inheritdoc IERC4626\n function mint(uint256 shares, address receiver) public virtual returns (uint256) {\n uint256 maxShares = maxMint(receiver);\n if (shares > maxShares) {\n revert ERC4626ExceededMaxMint(receiver, shares, maxShares);\n }\n\n uint256 assets = previewMint(shares);\n _deposit(_msgSender(), receiver, assets, shares);\n\n return assets;\n }\n\n /// @inheritdoc IERC4626\n function withdraw(uint256 assets, address receiver, address owner) public virtual returns (uint256) {\n uint256 maxAssets = maxWithdraw(owner);\n if (assets > maxAssets) {\n revert ERC4626ExceededMaxWithdraw(owner, assets, maxAssets);\n }\n\n uint256 shares = previewWithdraw(assets);\n _withdraw(_msgSender(), receiver, owner, assets, shares);\n\n return shares;\n }\n\n /// @inheritdoc IERC4626\n function redeem(uint256 shares, address receiver, address owner) public virtual returns (uint256) {\n uint256 maxShares = maxRedeem(owner);\n if (shares > maxShares) {\n revert ERC4626ExceededMaxRedeem(owner, shares, maxShares);\n }\n\n uint256 assets = previewRedeem(shares);\n _withdraw(_msgSender(), receiver, owner, assets, shares);\n\n return assets;\n }\n\n /**\n * @dev Internal conversion function (from assets to shares) with support for rounding direction.\n */\n function _convertToShares(uint256 assets, Math.Rounding rounding) internal view virtual returns (uint256) {\n return assets.mulDiv(totalSupply() + 10 ** _decimalsOffset(), totalAssets() + 1, rounding);\n }\n\n /**\n * @dev Internal conversion function (from shares to assets) with support for rounding direction.\n */\n function _convertToAssets(uint256 shares, Math.Rounding rounding) internal view virtual returns (uint256) {\n return shares.mulDiv(totalAssets() + 1, totalSupply() + 10 ** _decimalsOffset(), rounding);\n }\n\n /**\n * @dev Deposit/mint common workflow.\n */\n function _deposit(address caller, address receiver, uint256 assets, uint256 shares) internal virtual {\n // If asset() is ERC-777, `transferFrom` can trigger a reentrancy BEFORE the transfer happens through the\n // `tokensToSend` hook. On the other hand, the `tokenReceived` hook, that is triggered after the transfer,\n // calls the vault, which is assumed not malicious.\n //\n // Conclusion: we need to do the transfer before we mint so that any reentrancy would happen before the\n // assets are transferred and before the shares are minted, which is a valid state.\n // slither-disable-next-line reentrancy-no-eth\n _transferIn(caller, assets);\n _mint(receiver, shares);\n\n emit Deposit(caller, receiver, assets, shares);\n }\n\n /**\n * @dev Withdraw/redeem common workflow.\n */\n function _withdraw(\n address caller,\n address receiver,\n address owner,\n uint256 assets,\n uint256 shares\n ) internal virtual {\n if (caller != owner) {\n _spendAllowance(owner, caller, shares);\n }\n\n // If asset() is ERC-777, `transfer` can trigger a reentrancy AFTER the transfer happens through the\n // `tokensReceived` hook. On the other hand, the `tokensToSend` hook, that is triggered before the transfer,\n // calls the vault, which is assumed not malicious.\n //\n // Conclusion: we need to do the transfer after the burn so that any reentrancy would happen after the\n // shares are burned and after the assets are transferred, which is a valid state.\n _burn(owner, shares);\n _transferOut(receiver, assets);\n\n emit Withdraw(caller, receiver, owner, assets, shares);\n }\n\n /// @dev Performs a transfer in of underlying assets. The default implementation uses `SafeERC20`. Used by {_deposit}.\n function _transferIn(address from, uint256 assets) internal virtual {\n SafeERC20.safeTransferFrom(IERC20(asset()), from, address(this), assets);\n }\n\n /// @dev Performs a transfer out of underlying assets. The default implementation uses `SafeERC20`. Used by {_withdraw}.\n function _transferOut(address to, uint256 assets) internal virtual {\n SafeERC20.safeTransfer(IERC20(asset()), to, assets);\n }\n\n function _decimalsOffset() internal view virtual returns (uint8) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n /**\n * @dev An operation with an ERC-20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n if (!_safeTransfer(token, to, value, true)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n if (!_safeTransferFrom(token, from, to, value, true)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\n */\n function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\n return _safeTransfer(token, to, value, false);\n }\n\n /**\n * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\n */\n function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\n return _safeTransferFrom(token, from, to, value, false);\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n *\n * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n * set here.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n if (!_safeApprove(token, spender, value, false)) {\n if (!_safeApprove(token, spender, 0, true)) revert SafeERC20FailedOperation(address(token));\n if (!_safeApprove(token, spender, value, true)) revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n safeTransfer(token, to, value);\n } else if (!token.transferAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n * has no code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferFromAndCallRelaxed(\n IERC1363 token,\n address from,\n address to,\n uint256 value,\n bytes memory data\n ) internal {\n if (to.code.length == 0) {\n safeTransferFrom(token, from, to, value);\n } else if (!token.transferFromAndCall(from, to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n * Oppositely, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n * once without retrying, and relies on the returned value to be true.\n *\n * Reverts if the returned value is other than `true`.\n */\n function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n forceApprove(token, to, value);\n } else if (!token.approveAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity `token.transfer(to, value)` call, relaxing the requirement on the return value: the\n * return value is optional (but if data is returned, it must not be false).\n *\n * @param token The token targeted by the call.\n * @param to The recipient of the tokens\n * @param value The amount of token to transfer\n * @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean.\n */\n function _safeTransfer(IERC20 token, address to, uint256 value, bool bubble) private returns (bool success) {\n bytes4 selector = IERC20.transfer.selector;\n\n assembly (\"memory-safe\") {\n let fmp := mload(0x40)\n mstore(0x00, selector)\n mstore(0x04, and(to, shr(96, not(0))))\n mstore(0x24, value)\n success := call(gas(), token, 0, 0x00, 0x44, 0x00, 0x20)\n // if call success and return is true, all is good.\n // otherwise (not success or return is not true), we need to perform further checks\n if iszero(and(success, eq(mload(0x00), 1))) {\n // if the call was a failure and bubble is enabled, bubble the error\n if and(iszero(success), bubble) {\n returndatacopy(fmp, 0x00, returndatasize())\n revert(fmp, returndatasize())\n }\n // if the return value is not true, then the call is only successful if:\n // - the token address has code\n // - the returndata is empty\n success := and(success, and(iszero(returndatasize()), gt(extcodesize(token), 0)))\n }\n mstore(0x40, fmp)\n }\n }\n\n /**\n * @dev Imitates a Solidity `token.transferFrom(from, to, value)` call, relaxing the requirement on the return\n * value: the return value is optional (but if data is returned, it must not be false).\n *\n * @param token The token targeted by the call.\n * @param from The sender of the tokens\n * @param to The recipient of the tokens\n * @param value The amount of token to transfer\n * @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean.\n */\n function _safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value,\n bool bubble\n ) private returns (bool success) {\n bytes4 selector = IERC20.transferFrom.selector;\n\n assembly (\"memory-safe\") {\n let fmp := mload(0x40)\n mstore(0x00, selector)\n mstore(0x04, and(from, shr(96, not(0))))\n mstore(0x24, and(to, shr(96, not(0))))\n mstore(0x44, value)\n success := call(gas(), token, 0, 0x00, 0x64, 0x00, 0x20)\n // if call success and return is true, all is good.\n // otherwise (not success or return is not true), we need to perform further checks\n if iszero(and(success, eq(mload(0x00), 1))) {\n // if the call was a failure and bubble is enabled, bubble the error\n if and(iszero(success), bubble) {\n returndatacopy(fmp, 0x00, returndatasize())\n revert(fmp, returndatasize())\n }\n // if the return value is not true, then the call is only successful if:\n // - the token address has code\n // - the returndata is empty\n success := and(success, and(iszero(returndatasize()), gt(extcodesize(token), 0)))\n }\n mstore(0x40, fmp)\n mstore(0x60, 0)\n }\n }\n\n /**\n * @dev Imitates a Solidity `token.approve(spender, value)` call, relaxing the requirement on the return value:\n * the return value is optional (but if data is returned, it must not be false).\n *\n * @param token The token targeted by the call.\n * @param spender The spender of the tokens\n * @param value The amount of token to transfer\n * @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean.\n */\n function _safeApprove(IERC20 token, address spender, uint256 value, bool bubble) private returns (bool success) {\n bytes4 selector = IERC20.approve.selector;\n\n assembly (\"memory-safe\") {\n let fmp := mload(0x40)\n mstore(0x00, selector)\n mstore(0x04, and(spender, shr(96, not(0))))\n mstore(0x24, value)\n success := call(gas(), token, 0, 0x00, 0x44, 0x00, 0x20)\n // if call success and return is true, all is good.\n // otherwise (not success or return is not true), we need to perform further checks\n if iszero(and(success, eq(mload(0x00), 1))) {\n // if the call was a failure and bubble is enabled, bubble the error\n if and(iszero(success), bubble) {\n returndatacopy(fmp, 0x00, returndatasize())\n revert(fmp, returndatasize())\n }\n // if the return value is not true, then the call is only successful if:\n // - the token address has code\n // - the returndata is empty\n success := and(success, and(iszero(returndatasize()), gt(extcodesize(token), 0)))\n }\n mstore(0x40, fmp)\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/LowLevelCall.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.6.0) (utils/LowLevelCall.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library of low level call functions that implement different calling strategies to deal with the return data.\n *\n * WARNING: Using this library requires an advanced understanding of Solidity and how the EVM works. It is recommended\n * to use the {Address} library instead.\n */\nlibrary LowLevelCall {\n /// @dev Performs a Solidity function call using a low level `call` and ignoring the return data.\n function callNoReturn(address target, bytes memory data) internal returns (bool success) {\n return callNoReturn(target, 0, data);\n }\n\n /// @dev Same as {callNoReturn-address-bytes}, but allows specifying the value to be sent in the call.\n function callNoReturn(address target, uint256 value, bytes memory data) internal returns (bool success) {\n assembly (\"memory-safe\") {\n success := call(gas(), target, value, add(data, 0x20), mload(data), 0x00, 0x00)\n }\n }\n\n /// @dev Performs a Solidity function call using a low level `call` and returns the first 64 bytes of the result\n /// in the scratch space of memory. Useful for functions that return a tuple with two single-word values.\n ///\n /// WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n /// and this function doesn't zero it out.\n function callReturn64Bytes(\n address target,\n bytes memory data\n ) internal returns (bool success, bytes32 result1, bytes32 result2) {\n return callReturn64Bytes(target, 0, data);\n }\n\n /// @dev Same as {callReturn64Bytes-address-bytes}, but allows specifying the value to be sent in the call.\n function callReturn64Bytes(\n address target,\n uint256 value,\n bytes memory data\n ) internal returns (bool success, bytes32 result1, bytes32 result2) {\n assembly (\"memory-safe\") {\n success := call(gas(), target, value, add(data, 0x20), mload(data), 0x00, 0x40)\n result1 := mload(0x00)\n result2 := mload(0x20)\n }\n }\n\n /// @dev Performs a Solidity function call using a low level `staticcall` and ignoring the return data.\n function staticcallNoReturn(address target, bytes memory data) internal view returns (bool success) {\n assembly (\"memory-safe\") {\n success := staticcall(gas(), target, add(data, 0x20), mload(data), 0x00, 0x00)\n }\n }\n\n /// @dev Performs a Solidity function call using a low level `staticcall` and returns the first 64 bytes of the result\n /// in the scratch space of memory. Useful for functions that return a tuple with two single-word values.\n ///\n /// WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n /// and this function doesn't zero it out.\n function staticcallReturn64Bytes(\n address target,\n bytes memory data\n ) internal view returns (bool success, bytes32 result1, bytes32 result2) {\n assembly (\"memory-safe\") {\n success := staticcall(gas(), target, add(data, 0x20), mload(data), 0x00, 0x40)\n result1 := mload(0x00)\n result2 := mload(0x20)\n }\n }\n\n /// @dev Performs a Solidity function call using a low level `delegatecall` and ignoring the return data.\n function delegatecallNoReturn(address target, bytes memory data) internal returns (bool success) {\n assembly (\"memory-safe\") {\n success := delegatecall(gas(), target, add(data, 0x20), mload(data), 0x00, 0x00)\n }\n }\n\n /// @dev Performs a Solidity function call using a low level `delegatecall` and returns the first 64 bytes of the result\n /// in the scratch space of memory. Useful for functions that return a tuple with two single-word values.\n ///\n /// WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n /// and this function doesn't zero it out.\n function delegatecallReturn64Bytes(\n address target,\n bytes memory data\n ) internal returns (bool success, bytes32 result1, bytes32 result2) {\n assembly (\"memory-safe\") {\n success := delegatecall(gas(), target, add(data, 0x20), mload(data), 0x00, 0x40)\n result1 := mload(0x00)\n result2 := mload(0x20)\n }\n }\n\n /// @dev Returns the size of the return data buffer.\n function returnDataSize() internal pure returns (uint256 size) {\n assembly (\"memory-safe\") {\n size := returndatasize()\n }\n }\n\n /// @dev Returns a buffer containing the return data from the last call.\n function returnData() internal pure returns (bytes memory result) {\n assembly (\"memory-safe\") {\n result := mload(0x40)\n mstore(result, returndatasize())\n returndatacopy(add(result, 0x20), 0x00, returndatasize())\n mstore(0x40, add(result, add(0x20, returndatasize())))\n }\n }\n\n /// @dev Revert with the return data from the last call.\n function bubbleRevert() internal pure {\n assembly (\"memory-safe\") {\n let fmp := mload(0x40)\n returndatacopy(fmp, 0x00, returndatasize())\n revert(fmp, returndatasize())\n }\n }\n\n function bubbleRevert(bytes memory returndata) internal pure {\n assembly (\"memory-safe\") {\n revert(add(returndata, 0x20), mload(returndata))\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.6.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Return the 512-bit addition of two uint256.\n *\n * The result is stored in two 256 variables such that sum = high * 2ยฒโตโถ + low.\n */\n function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n assembly (\"memory-safe\") {\n low := add(a, b)\n high := lt(low, a)\n }\n }\n\n /**\n * @dev Return the 512-bit multiplication of two uint256.\n *\n * The result is stored in two 256 variables such that product = high * 2ยฒโตโถ + low.\n */\n function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n // 512-bit multiply [high low] = x * y. Compute the product mod 2ยฒโตโถ and mod 2ยฒโตโถ - 1, then use\n // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = high * 2ยฒโตโถ + low.\n assembly (\"memory-safe\") {\n let mm := mulmod(a, b, not(0))\n low := mul(a, b)\n high := sub(sub(mm, low), lt(mm, low))\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a + b;\n success = c >= a;\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a - b;\n success = c <= a;\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a * b;\n assembly (\"memory-safe\") {\n // Only true when the multiplication doesn't overflow\n // (c / a == b) || (a == 0)\n success := or(eq(div(c, a), b), iszero(a))\n }\n // equivalent to: success ? c : 0\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n success = b > 0;\n assembly (\"memory-safe\") {\n // The `DIV` opcode returns zero when the denominator is 0.\n result := div(a, b)\n }\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n success = b > 0;\n assembly (\"memory-safe\") {\n // The `MOD` opcode returns zero when the denominator is 0.\n result := mod(a, b)\n }\n }\n }\n\n /**\n * @dev Unsigned saturating addition, bounds to `2ยฒโตโถ - 1` instead of overflowing.\n */\n function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\n (bool success, uint256 result) = tryAdd(a, b);\n return ternary(success, result, type(uint256).max);\n }\n\n /**\n * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\n */\n function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\n (, uint256 result) = trySub(a, b);\n return result;\n }\n\n /**\n * @dev Unsigned saturating multiplication, bounds to `2ยฒโตโถ - 1` instead of overflowing.\n */\n function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\n (bool success, uint256 result) = tryMul(a, b);\n return ternary(success, result, type(uint256).max);\n }\n\n /**\n * @dev Branchless ternary evaluation for `condition ? a : b`. Gas costs are constant.\n *\n * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n * However, the compiler may optimize Solidity ternary operations (i.e. `condition ? a : b`) to only compute\n * one branch when needed, making this function more expensive.\n */\n function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n unchecked {\n // branchless ternary works because:\n // b ^ (a ^ b) == a\n // b ^ 0 == b\n return b ^ ((a ^ b) * SafeCast.toUint(condition));\n }\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return ternary(a > b, a, b);\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return ternary(a < b, a, b);\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n unchecked {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n\n // The following calculation ensures accurate ceiling division without overflow.\n // Since a is non-zero, (a - 1) / b will not overflow.\n // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n // but the largest value we can obtain is type(uint256).max - 1, which happens\n // when a = type(uint256).max and b = 1.\n unchecked {\n return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n }\n }\n\n /**\n * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n * denominator == 0.\n *\n * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n * Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n (uint256 high, uint256 low) = mul512(x, y);\n\n // Handle non-overflow cases, 256 by 256 division.\n if (high == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return low / denominator;\n }\n\n // Make sure the result is less than 2ยฒโตโถ. Also prevents denominator == 0.\n if (denominator <= high) {\n Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n }\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [high low].\n uint256 remainder;\n assembly (\"memory-safe\") {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n high := sub(high, gt(remainder, low))\n low := sub(low, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\n assembly (\"memory-safe\") {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [high low] by twos.\n low := div(low, twos)\n\n // Flip twos such that it is 2ยฒโตโถ / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from high into low.\n low |= high * twos;\n\n // Invert denominator mod 2ยฒโตโถ. Now that denominator is an odd number, it has an inverse modulo 2ยฒโตโถ such\n // that denominator * inv โ‰ก 1 mod 2ยฒโตโถ. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv โ‰ก 1 mod 2โด.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2โธ\n inverse *= 2 - denominator * inverse; // inverse mod 2ยนโถ\n inverse *= 2 - denominator * inverse; // inverse mod 2ยณยฒ\n inverse *= 2 - denominator * inverse; // inverse mod 2โถโด\n inverse *= 2 - denominator * inverse; // inverse mod 2ยนยฒโธ\n inverse *= 2 - denominator * inverse; // inverse mod 2ยฒโตโถ\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2ยฒโตโถ. Since the preconditions guarantee that the outcome is\n // less than 2ยฒโตโถ, this is the final result. We don't need to compute the high bits of the result and high\n // is no longer required.\n result = low * inverse;\n return result;\n }\n }\n\n /**\n * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n }\n\n /**\n * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\n */\n function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\n unchecked {\n (uint256 high, uint256 low) = mul512(x, y);\n if (high >= 1 << n) {\n Panic.panic(Panic.UNDER_OVERFLOW);\n }\n return (high << (256 - n)) | (low >> n);\n }\n }\n\n /**\n * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\n */\n function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\n return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\n }\n\n /**\n * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n *\n * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n *\n * If the input value is not inversible, 0 is returned.\n *\n * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n */\n function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n unchecked {\n if (n == 0) return 0;\n\n // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n // ax + ny = 1\n // ax = 1 + (-y)n\n // ax โ‰ก 1 (mod n) # x is the inverse of a modulo n\n\n // If the remainder is 0 the gcd is n right away.\n uint256 remainder = a % n;\n uint256 gcd = n;\n\n // Therefore the initial coefficients are:\n // ax + ny = gcd(a, n) = n\n // 0a + 1n = n\n int256 x = 0;\n int256 y = 1;\n\n while (remainder != 0) {\n uint256 quotient = gcd / remainder;\n\n (gcd, remainder) = (\n // The old remainder is the next gcd to try.\n remainder,\n // Compute the next remainder.\n // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n // where gcd is at most n (capped to type(uint256).max)\n gcd - remainder * quotient\n );\n\n (x, y) = (\n // Increment the coefficient of a.\n y,\n // Decrement the coefficient of n.\n // Can overflow, but the result is casted to uint256 so that the\n // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n x - y * int256(quotient)\n );\n }\n\n if (gcd != 1) return 0; // No inverse exists.\n return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n }\n }\n\n /**\n * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n *\n * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n * prime, then `a**(p-1) โ‰ก 1 mod p`. As a consequence, we have `a * a**(p-2) โ‰ก 1 mod p`, which means that\n * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n *\n * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n */\n function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n unchecked {\n return Math.modExp(a, p - 2, p);\n }\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n *\n * Requirements:\n * - modulus can't be zero\n * - underlying staticcall to precompile must succeed\n *\n * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n * interpreted as 0.\n */\n function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n (bool success, uint256 result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n * to operate modulo 0 or if the underlying precompile reverted.\n *\n * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n * of a revert, but the result may be incorrectly interpreted as 0.\n */\n function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n if (m == 0) return (false, 0);\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n // | Offset | Content | Content (Hex) |\n // |-----------|------------|--------------------------------------------------------------------|\n // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n mstore(ptr, 0x20)\n mstore(add(ptr, 0x20), 0x20)\n mstore(add(ptr, 0x40), 0x20)\n mstore(add(ptr, 0x60), b)\n mstore(add(ptr, 0x80), e)\n mstore(add(ptr, 0xa0), m)\n\n // Given the result < m, it's guaranteed to fit in 32 bytes,\n // so we can use the memory scratch space located at offset 0.\n success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n result := mload(0x00)\n }\n }\n\n /**\n * @dev Variant of {modExp} that supports inputs of arbitrary length.\n */\n function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n (bool success, bytes memory result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n */\n function tryModExp(\n bytes memory b,\n bytes memory e,\n bytes memory m\n ) internal view returns (bool success, bytes memory result) {\n if (_zeroBytes(m)) return (false, new bytes(0));\n\n uint256 mLen = m.length;\n\n // Encode call args in result and move the free memory pointer\n result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n assembly (\"memory-safe\") {\n let dataPtr := add(result, 0x20)\n // Write result on top of args to avoid allocating extra memory.\n success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n // Overwrite the length.\n // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n mstore(result, mLen)\n // Set the memory pointer after the returned data.\n mstore(0x40, add(dataPtr, mLen))\n }\n }\n\n /**\n * @dev Returns whether the provided byte array is zero.\n */\n function _zeroBytes(bytes memory buffer) private pure returns (bool) {\n uint256 chunk;\n for (uint256 i = 0; i < buffer.length; i += 0x20) {\n // See _unsafeReadBytesOffset from utils/Bytes.sol\n assembly (\"memory-safe\") {\n chunk := mload(add(add(buffer, 0x20), i))\n }\n if (chunk >> (8 * saturatingSub(i + 0x20, buffer.length)) != 0) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n * using integer operations.\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n unchecked {\n // Take care of easy edge cases when a == 0 or a == 1\n if (a <= 1) {\n return a;\n }\n\n // In this function, we use Newton's method to get a root of `f(x) := xยฒ - a`. It involves building a\n // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n // the current value as `ฮต_n = | x_n - sqrt(a) |`.\n //\n // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n // of the target. (i.e. `2**(e-1) โ‰ค sqrt(a) < 2**e`). We know that `e โ‰ค 128` because `(2ยนยฒโธ)ยฒ = 2ยฒโตโถ` is\n // bigger than any uint256.\n //\n // By noticing that\n // `2**(e-1) โ‰ค sqrt(a) < 2**e โ†’ (2**(e-1))ยฒ โ‰ค a < (2**e)ยฒ โ†’ 2**(2*e-2) โ‰ค a < 2**(2*e)`\n // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n // to the msb function.\n uint256 aa = a;\n uint256 xn = 1;\n\n if (aa >= (1 << 128)) {\n aa >>= 128;\n xn <<= 64;\n }\n if (aa >= (1 << 64)) {\n aa >>= 64;\n xn <<= 32;\n }\n if (aa >= (1 << 32)) {\n aa >>= 32;\n xn <<= 16;\n }\n if (aa >= (1 << 16)) {\n aa >>= 16;\n xn <<= 8;\n }\n if (aa >= (1 << 8)) {\n aa >>= 8;\n xn <<= 4;\n }\n if (aa >= (1 << 4)) {\n aa >>= 4;\n xn <<= 2;\n }\n if (aa >= (1 << 2)) {\n xn <<= 1;\n }\n\n // We now have x_n such that `x_n = 2**(e-1) โ‰ค sqrt(a) < 2**e = 2 * x_n`. This implies ฮต_n โ‰ค 2**(e-1).\n //\n // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ฮต_n โ‰ค 2**(e-2).\n // This is going to be our x_0 (and ฮต_0)\n xn = (3 * xn) >> 1; // ฮต_0 := | x_0 - sqrt(a) | โ‰ค 2**(e-2)\n\n // From here, Newton's method give us:\n // x_{n+1} = (x_n + a / x_n) / 2\n //\n // One should note that:\n // x_{n+1}ยฒ - a = ((x_n + a / x_n) / 2)ยฒ - a\n // = ((x_nยฒ + a) / (2 * x_n))ยฒ - a\n // = (x_nโด + 2 * a * x_nยฒ + aยฒ) / (4 * x_nยฒ) - a\n // = (x_nโด + 2 * a * x_nยฒ + aยฒ - 4 * a * x_nยฒ) / (4 * x_nยฒ)\n // = (x_nโด - 2 * a * x_nยฒ + aยฒ) / (4 * x_nยฒ)\n // = (x_nยฒ - a)ยฒ / (2 * x_n)ยฒ\n // = ((x_nยฒ - a) / (2 * x_n))ยฒ\n // โ‰ฅ 0\n // Which proves that for all n โ‰ฅ 1, sqrt(a) โ‰ค x_n\n //\n // This gives us the proof of quadratic convergence of the sequence:\n // ฮต_{n+1} = | x_{n+1} - sqrt(a) |\n // = | (x_n + a / x_n) / 2 - sqrt(a) |\n // = | (x_nยฒ + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n // = | (x_n - sqrt(a))ยฒ / (2 * x_n) |\n // = | ฮต_nยฒ / (2 * x_n) |\n // = ฮต_nยฒ / | (2 * x_n) |\n //\n // For the first iteration, we have a special case where x_0 is known:\n // ฮต_1 = ฮต_0ยฒ / | (2 * x_0) |\n // โ‰ค (2**(e-2))ยฒ / (2 * (2**(e-1) + 2**(e-2)))\n // โ‰ค 2**(2*e-4) / (3 * 2**(e-1))\n // โ‰ค 2**(e-3) / 3\n // โ‰ค 2**(e-3-log2(3))\n // โ‰ค 2**(e-4.5)\n //\n // For the following iterations, we use the fact that, 2**(e-1) โ‰ค sqrt(a) โ‰ค x_n:\n // ฮต_{n+1} = ฮต_nยฒ / | (2 * x_n) |\n // โ‰ค (2**(e-k))ยฒ / (2 * 2**(e-1))\n // โ‰ค 2**(2*e-2*k) / 2**e\n // โ‰ค 2**(e-2*k)\n xn = (xn + a / xn) >> 1; // ฮต_1 := | x_1 - sqrt(a) | โ‰ค 2**(e-4.5) -- special case, see above\n xn = (xn + a / xn) >> 1; // ฮต_2 := | x_2 - sqrt(a) | โ‰ค 2**(e-9) -- general case with k = 4.5\n xn = (xn + a / xn) >> 1; // ฮต_3 := | x_3 - sqrt(a) | โ‰ค 2**(e-18) -- general case with k = 9\n xn = (xn + a / xn) >> 1; // ฮต_4 := | x_4 - sqrt(a) | โ‰ค 2**(e-36) -- general case with k = 18\n xn = (xn + a / xn) >> 1; // ฮต_5 := | x_5 - sqrt(a) | โ‰ค 2**(e-72) -- general case with k = 36\n xn = (xn + a / xn) >> 1; // ฮต_6 := | x_6 - sqrt(a) | โ‰ค 2**(e-144) -- general case with k = 72\n\n // Because e โ‰ค 128 (as discussed during the first estimation phase), we know have reached a precision\n // ฮต_6 โ‰ค 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n // sqrt(a) or sqrt(a) + 1.\n return xn - SafeCast.toUint(xn > a / xn);\n }\n }\n\n /**\n * @dev Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 x) internal pure returns (uint256 r) {\n // If value has upper 128 bits set, log2 result is at least 128\n r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n // If upper 64 bits of 128-bit half set, add 64 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n // If upper 32 bits of 64-bit half set, add 32 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n // If upper 16 bits of 32-bit half set, add 16 to result\n r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n // If upper 8 bits of 16-bit half set, add 8 to result\n r |= SafeCast.toUint((x >> r) > 0xff) << 3;\n // If upper 4 bits of 8-bit half set, add 4 to result\n r |= SafeCast.toUint((x >> r) > 0xf) << 2;\n\n // Shifts value right by the current result and use it as an index into this lookup table:\n //\n // | x (4 bits) | index | table[index] = MSB position |\n // |------------|---------|-----------------------------|\n // | 0000 | 0 | table[0] = 0 |\n // | 0001 | 1 | table[1] = 0 |\n // | 0010 | 2 | table[2] = 1 |\n // | 0011 | 3 | table[3] = 1 |\n // | 0100 | 4 | table[4] = 2 |\n // | 0101 | 5 | table[5] = 2 |\n // | 0110 | 6 | table[6] = 2 |\n // | 0111 | 7 | table[7] = 2 |\n // | 1000 | 8 | table[8] = 3 |\n // | 1001 | 9 | table[9] = 3 |\n // | 1010 | 10 | table[10] = 3 |\n // | 1011 | 11 | table[11] = 3 |\n // | 1100 | 12 | table[12] = 3 |\n // | 1101 | 13 | table[13] = 3 |\n // | 1110 | 14 | table[14] = 3 |\n // | 1111 | 15 | table[15] = 3 |\n //\n // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the first 16 bytes (most significant half).\n assembly (\"memory-safe\") {\n r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\n }\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 x) internal pure returns (uint256 r) {\n // If value has upper 128 bits set, log2 result is at least 128\n r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n // If upper 64 bits of 128-bit half set, add 64 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n // If upper 32 bits of 64-bit half set, add 32 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n // If upper 16 bits of 32-bit half set, add 16 to result\n r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\n return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n\n /**\n * @dev Counts the number of leading zero bits in a uint256.\n */\n function clz(uint256 x) internal pure returns (uint256) {\n return ternary(x == 0, 256, 255 - log2(x));\n }\n}\n"},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.6.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n /**\n * @dev Value doesn't fit in a uint of `bits` size.\n */\n error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n /**\n * @dev An int value doesn't fit in a uint of `bits` size.\n */\n error SafeCastOverflowedIntToUint(int256 value);\n\n /**\n * @dev Value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n /**\n * @dev A uint value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedUintToInt(uint256 value);\n\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n if (value > type(uint248).max) {\n revert SafeCastOverflowedUintDowncast(248, value);\n }\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n if (value > type(uint240).max) {\n revert SafeCastOverflowedUintDowncast(240, value);\n }\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n if (value > type(uint232).max) {\n revert SafeCastOverflowedUintDowncast(232, value);\n }\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n if (value > type(uint224).max) {\n revert SafeCastOverflowedUintDowncast(224, value);\n }\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n if (value > type(uint216).max) {\n revert SafeCastOverflowedUintDowncast(216, value);\n }\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n if (value > type(uint208).max) {\n revert SafeCastOverflowedUintDowncast(208, value);\n }\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n if (value > type(uint200).max) {\n revert SafeCastOverflowedUintDowncast(200, value);\n }\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n if (value > type(uint192).max) {\n revert SafeCastOverflowedUintDowncast(192, value);\n }\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n if (value > type(uint184).max) {\n revert SafeCastOverflowedUintDowncast(184, value);\n }\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n if (value > type(uint176).max) {\n revert SafeCastOverflowedUintDowncast(176, value);\n }\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n if (value > type(uint168).max) {\n revert SafeCastOverflowedUintDowncast(168, value);\n }\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n if (value > type(uint160).max) {\n revert SafeCastOverflowedUintDowncast(160, value);\n }\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n if (value > type(uint152).max) {\n revert SafeCastOverflowedUintDowncast(152, value);\n }\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n if (value > type(uint144).max) {\n revert SafeCastOverflowedUintDowncast(144, value);\n }\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n if (value > type(uint136).max) {\n revert SafeCastOverflowedUintDowncast(136, value);\n }\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n if (value > type(uint128).max) {\n revert SafeCastOverflowedUintDowncast(128, value);\n }\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n if (value > type(uint120).max) {\n revert SafeCastOverflowedUintDowncast(120, value);\n }\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n if (value > type(uint112).max) {\n revert SafeCastOverflowedUintDowncast(112, value);\n }\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n if (value > type(uint104).max) {\n revert SafeCastOverflowedUintDowncast(104, value);\n }\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n if (value > type(uint96).max) {\n revert SafeCastOverflowedUintDowncast(96, value);\n }\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n if (value > type(uint88).max) {\n revert SafeCastOverflowedUintDowncast(88, value);\n }\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n if (value > type(uint80).max) {\n revert SafeCastOverflowedUintDowncast(80, value);\n }\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n if (value > type(uint72).max) {\n revert SafeCastOverflowedUintDowncast(72, value);\n }\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n if (value > type(uint64).max) {\n revert SafeCastOverflowedUintDowncast(64, value);\n }\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n if (value > type(uint56).max) {\n revert SafeCastOverflowedUintDowncast(56, value);\n }\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n if (value > type(uint48).max) {\n revert SafeCastOverflowedUintDowncast(48, value);\n }\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n if (value > type(uint40).max) {\n revert SafeCastOverflowedUintDowncast(40, value);\n }\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n if (value > type(uint32).max) {\n revert SafeCastOverflowedUintDowncast(32, value);\n }\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n if (value > type(uint24).max) {\n revert SafeCastOverflowedUintDowncast(24, value);\n }\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n if (value > type(uint16).max) {\n revert SafeCastOverflowedUintDowncast(16, value);\n }\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n if (value > type(uint8).max) {\n revert SafeCastOverflowedUintDowncast(8, value);\n }\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n if (value < 0) {\n revert SafeCastOverflowedIntToUint(value);\n }\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(248, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(240, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(232, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(224, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(216, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(208, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(200, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(192, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(184, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(176, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(168, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(160, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(152, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(144, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(136, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(128, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(120, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(112, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(104, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(96, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(88, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(80, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(72, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(64, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(56, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(48, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(40, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(32, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(24, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(16, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(8, value);\n }\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n if (value > uint256(type(int256).max)) {\n revert SafeCastOverflowedUintToInt(value);\n }\n return int256(value);\n }\n\n /**\n * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n */\n function toUint(bool b) internal pure returns (uint256 u) {\n assembly (\"memory-safe\") {\n u := iszero(iszero(b))\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Memory.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.6.0) (utils/Memory.sol)\n\npragma solidity ^0.8.24;\n\nimport {Panic} from \"./Panic.sol\";\nimport {Math} from \"./math/Math.sol\";\n\n/**\n * @dev Utilities to manipulate memory.\n *\n * Memory is a contiguous and dynamic byte array in which Solidity stores non-primitive types.\n * This library provides functions to manipulate pointers to this dynamic array and work with slices of it.\n *\n * Slices provide a view into a portion of memory without copying data, enabling efficient substring operations.\n *\n * WARNING: When manipulating memory pointers or slices, make sure to follow the Solidity documentation\n * guidelines for https://docs.soliditylang.org/en/v0.8.20/assembly.html#memory-safety[Memory Safety].\n */\nlibrary Memory {\n type Pointer is bytes32;\n\n /// @dev Returns a `Pointer` to the current free `Pointer`.\n function getFreeMemoryPointer() internal pure returns (Pointer ptr) {\n assembly (\"memory-safe\") {\n ptr := mload(0x40)\n }\n }\n\n /**\n * @dev Sets the free `Pointer` to a specific value.\n *\n * The solidity memory layout requires that the FMP is never set to a value lower than 0x80. Setting the\n * FMP to a value lower than 0x80 may cause unexpected behavior. Deallocating all memory can be achieved by\n * setting the FMP to 0x80.\n *\n * WARNING: Everything after the pointer may be overwritten.\n **/\n function unsafeSetFreeMemoryPointer(Pointer ptr) internal pure {\n assembly (\"memory-safe\") {\n mstore(0x40, ptr)\n }\n }\n\n /// @dev Move a pointer forward by a given offset.\n function forward(Pointer ptr, uint256 offset) internal pure returns (Pointer) {\n return Pointer.wrap(bytes32(uint256(Pointer.unwrap(ptr)) + offset));\n }\n\n /// @dev Equality comparator for memory pointers.\n function equal(Pointer ptr1, Pointer ptr2) internal pure returns (bool) {\n return Pointer.unwrap(ptr1) == Pointer.unwrap(ptr2);\n }\n\n type Slice is bytes32;\n\n /// @dev Get a slice representation of a bytes object in memory\n function asSlice(bytes memory self) internal pure returns (Slice result) {\n assembly (\"memory-safe\") {\n result := or(shl(128, mload(self)), add(self, 0x20))\n }\n }\n\n /// @dev Returns the length of a given slice (equiv to self.length for calldata slices)\n function length(Slice self) internal pure returns (uint256 result) {\n assembly (\"memory-safe\") {\n result := shr(128, self)\n }\n }\n\n /// @dev Offset a memory slice (equivalent to self[offset:] for calldata slices)\n function slice(Slice self, uint256 offset) internal pure returns (Slice) {\n if (offset > length(self)) Panic.panic(Panic.ARRAY_OUT_OF_BOUNDS);\n return _asSlice(length(self) - offset, forward(_pointer(self), offset));\n }\n\n /// @dev Offset and cut a Slice (equivalent to self[offset:offset+len] for calldata slices)\n function slice(Slice self, uint256 offset, uint256 len) internal pure returns (Slice) {\n if (offset + len > length(self)) Panic.panic(Panic.ARRAY_OUT_OF_BOUNDS);\n return _asSlice(len, forward(_pointer(self), offset));\n }\n\n /**\n * @dev Read a bytes32 buffer from a given Slice at a specific offset\n *\n * NOTE: If offset > length(slice) - 0x20, part of the return value will be out of bound of the slice. These bytes are zeroed.\n */\n function load(Slice self, uint256 offset) internal pure returns (bytes32 value) {\n uint256 outOfBoundBytes = Math.saturatingSub(0x20 + offset, length(self));\n if (outOfBoundBytes > 0x1f) Panic.panic(Panic.ARRAY_OUT_OF_BOUNDS);\n\n assembly (\"memory-safe\") {\n value := and(mload(add(and(self, shr(128, not(0))), offset)), shl(mul(8, outOfBoundBytes), not(0)))\n }\n }\n\n /// @dev Extract the data corresponding to a Slice (allocate new memory)\n function toBytes(Slice self) internal pure returns (bytes memory result) {\n uint256 len = length(self);\n Memory.Pointer ptr = _pointer(self);\n assembly (\"memory-safe\") {\n result := mload(0x40)\n mstore(result, len)\n mcopy(add(result, 0x20), ptr, len)\n mstore(0x40, add(add(result, len), 0x20))\n }\n }\n\n /// @dev Returns true if the two slices contain the same data.\n function equal(Slice a, Slice b) internal pure returns (bool result) {\n Memory.Pointer ptrA = _pointer(a);\n Memory.Pointer ptrB = _pointer(b);\n uint256 lenA = length(a);\n uint256 lenB = length(b);\n assembly (\"memory-safe\") {\n result := eq(keccak256(ptrA, lenA), keccak256(ptrB, lenB))\n }\n }\n\n /// @dev Returns true if the memory occupied by the slice is reserved (i.e. before the free memory pointer)\n function isReserved(Slice self) internal pure returns (bool result) {\n Memory.Pointer fmp = getFreeMemoryPointer();\n Memory.Pointer end = forward(_pointer(self), length(self));\n assembly (\"memory-safe\") {\n result := iszero(lt(fmp, end)) // end <= fmp\n }\n }\n\n /**\n * @dev Private helper: create a slice from raw values (length and pointer)\n *\n * NOTE: this function MUST NOT be called with `len` or `ptr` that exceed `2**128-1`. This should never be\n * the case of slices produced by `asSlice(bytes)`, and function that reduce the scope of slices\n * (`slice(Slice,uint256)` and `slice(Slice,uint256, uint256)`) should not cause this issue if the parent slice is\n * correct.\n */\n function _asSlice(uint256 len, Memory.Pointer ptr) private pure returns (Slice result) {\n assembly (\"memory-safe\") {\n result := or(shl(128, len), ptr)\n }\n }\n\n /// @dev Returns the memory location of a given slice (equiv to self.offset for calldata slices)\n function _pointer(Slice self) private pure returns (Memory.Pointer result) {\n assembly (\"memory-safe\") {\n result := and(self, shr(128, not(0)))\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Panic.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n * using Panic for uint256;\n *\n * // Use any of the declared internal constants\n * function foo() { Panic.GENERIC.panic(); }\n *\n * // Alternatively\n * function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n /// @dev generic / unspecified error\n uint256 internal constant GENERIC = 0x00;\n /// @dev used by the assert() builtin\n uint256 internal constant ASSERT = 0x01;\n /// @dev arithmetic underflow or overflow\n uint256 internal constant UNDER_OVERFLOW = 0x11;\n /// @dev division or modulo by zero\n uint256 internal constant DIVISION_BY_ZERO = 0x12;\n /// @dev enum conversion error\n uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n /// @dev invalid encoding in storage\n uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n /// @dev empty array pop\n uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n /// @dev array out of bounds access\n uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n /// @dev resource error (too large allocation or too large array)\n uint256 internal constant RESOURCE_ERROR = 0x41;\n /// @dev calling invalid internal function\n uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n /// @dev Reverts with a panic code. Recommended to use with\n /// the internal constants with predefined codes.\n function panic(uint256 code) internal pure {\n assembly (\"memory-safe\") {\n mstore(0x00, 0x4e487b71)\n mstore(0x20, code)\n revert(0x1c, 0x24)\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Pausable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n bool private _paused;\n\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n /**\n * @dev The operation failed because the contract is paused.\n */\n error EnforcedPause();\n\n /**\n * @dev The operation failed because the contract is not paused.\n */\n error ExpectedPause();\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n if (paused()) {\n revert EnforcedPause();\n }\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n if (!paused()) {\n revert ExpectedPause();\n }\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n}\n"},"contracts/BagFiZapper.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\n\n/**\n * @title BagFiZapper\n * @dev Facilitates 1-click zap-ins: taking any token, converting it to the Vault's asset (via 1inch/LiFi),\n * and depositing into the ERC4626 vault.\n */\ncontract BagFiZapper {\n using SafeERC20 for IERC20;\n\n /**\n * @dev Zap a supported token into the vault. This assumes the offchain API (like 1inch)\n * provided the swap data to convert `tokenIn` to the Vault's `asset()`.\n * \n * @param vault The ERC4626 vault.\n * @param tokenIn The token the user is depositing.\n * @param amountIn The amount of `tokenIn` to deposit.\n * @param router The swap router (e.g., 1inch).\n * @param swapData The encoded swap transaction.\n */\n function zapIn(\n IERC4626 vault,\n IERC20 tokenIn,\n uint256 amountIn,\n address router,\n bytes calldata swapData\n ) external payable returns (uint256 sharesOut) {\n // 1. Transfer user's tokenIn to this contract\n tokenIn.safeTransferFrom(msg.sender, address(this), amountIn);\n\n // 2. Approve the swap router\n tokenIn.approve(router, amountIn);\n\n // 3. Execute swap (tokenIn -> Vault's Asset)\n (bool success, ) = router.call{value: msg.value}(swapData);\n require(success, \"Swap failed\");\n\n // 4. Get the balance of the asset received from the swap\n IERC20 asset = IERC20(vault.asset());\n uint256 swappedAmount = asset.balanceOf(address(this));\n require(swappedAmount > 0, \"No assets received\");\n\n // 5. Approve the vault and deposit\n asset.approve(address(vault), swappedAmount);\n sharesOut = vault.deposit(swappedAmount, msg.sender);\n }\n}\n"},"contracts/mocks/MockERC20.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\n/**\n * @dev Simple ERC20 mock for testing\n */\ncontract MockERC20 {\n string public name;\n string public symbol;\n uint8 public decimals;\n mapping(address => uint256) public balanceOf;\n mapping(address => mapping(address => uint256)) public allowance;\n\n constructor(string memory name_, string memory symbol_, uint8 decimals_) {\n name = name_;\n symbol = symbol_;\n decimals = decimals_;\n }\n\n function transfer(address to, uint256 amount) external returns (bool) {\n if (balanceOf[msg.sender] < amount) {\n revert(\"ERC20: transfer amount exceeds balance\");\n }\n balanceOf[msg.sender] -= amount;\n balanceOf[to] += amount;\n return true;\n }\n\n function approve(address spender, uint256 amount) external returns (bool) {\n allowance[msg.sender][spender] = amount;\n return true;\n }\n\n function transferFrom(address from, address to, uint256 amount) external returns (bool) {\n if (balanceOf[from] < amount) {\n revert(\"ERC20: transfer amount exceeds balance\");\n }\n if (allowance[from][msg.sender] < amount) {\n revert(\"ERC20: transfer amount exceeds allowance\");\n }\n \n balanceOf[from] -= amount;\n balanceOf[to] += amount;\n allowance[from][msg.sender] -= amount;\n return true;\n }\n\n function mint(address to, uint256 amount) external {\n balanceOf[to] += amount;\n }\n}"},"contracts/mocks/MockRouter.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\n// Mock Router contract for testing (simulating 1inch/LiFi)\ncontract MockRouter {\n // Simulate the swapAndSend function that 1inch/LiFi would expose\n function swapAndSend(\n address fromToken,\n address toToken,\n uint256 fromAmount,\n address toAddress\n ) external payable {\n // In a real implementation, this would interact with 1inch/LiFi APIs\n // For testing, we just make sure it doesn't revert\n }\n\n receive() external payable {\n // Allow receiving ETH\n }\n}\n"},"contracts/mocks/MockStrategy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\n/**\n * @dev Simple mock strategy contract for testing\n */\ncontract MockStrategy {\n // Empty contract for testing purposes\n function deposit(uint256 amount) external pure {\n // Do nothing, just for testing\n }\n \n function withdraw(uint256 amount) external pure {\n // Do nothing, just for testing\n }\n}"},"contracts/SmartBagVault.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/utils/Pausable.sol\";\n\n/**\n * @title SmartBagVault\n * @dev An ERC4626 compliant vault that takes a single asset (e.g., USDC) and\n * automatically deploys it into whitelisted yield strategies (e.g., Aave, Curve).\n */\ncontract SmartBagVault is ERC4626, Ownable, Pausable {\n using SafeERC20 for IERC20;\n\n // The underlying asset (e.g., USDC)\n IERC20 private immutable _asset;\n\n // List of active strategies where funds can be deposited\n address[] public activeStrategies;\n // Set for fast lookup of whether a strategy is active\n mapping(address => bool) public isActiveStrategy;\n\n event StrategyAdded(address indexed strategy);\n event StrategyRemoved(address indexed strategy);\n event FundsDeployed(address indexed strategy, uint256 amount);\n event Paused();\n event Unpaused();\n\n constructor(IERC20 asset_, string memory name_, string memory symbol_) \n ERC4626(asset_) \n ERC20(name_, symbol_) \n Ownable(msg.sender)\n {\n _asset = asset_;\n }\n\n /**\n * @dev Add a new strategy.\n * @param strategy The address of the strategy to add\n */\n function addStrategy(address strategy) external onlyOwner whenNotPaused {\n require(strategy != address(0), \"Strategy cannot be zero address\");\n require(!isActiveStrategy[strategy], \"Strategy already active\");\n \n activeStrategies.push(strategy);\n isActiveStrategy[strategy] = true;\n emit StrategyAdded(strategy);\n }\n\n /**\n * @dev Remove a strategy.\n * @param strategy The address of the strategy to remove\n */\n function removeStrategy(address strategy) external onlyOwner whenNotPaused {\n require(isActiveStrategy[strategy], \"Strategy is not active\");\n \n // Find and remove from array\n uint256 indexToRemove = 0;\n bool found = false;\n for (uint256 i = 0; i < activeStrategies.length; i++) {\n if (activeStrategies[i] == strategy) {\n indexToRemove = i;\n found = true;\n break;\n }\n }\n \n require(found, \"Strategy not found in active strategies\");\n \n // Remove by moving last element to this position and popping\n if (indexToRemove < activeStrategies.length - 1) {\n activeStrategies[indexToRemove] = activeStrategies[activeStrategies.length - 1];\n }\n activeStrategies.pop();\n \n isActiveStrategy[strategy] = false;\n emit StrategyRemoved(strategy);\n }\n\n /**\n * @dev Deploy underlying assets to a specific strategy.\n * Note: In a production environment, this should interface with specific protocols (Aave, etc.)\n */\n function deployToStrategy(uint256 strategyIndex, uint256 amount) external onlyOwner whenNotPaused {\n require(strategyIndex < activeStrategies.length, \"Invalid strategy index\");\n address strategy = activeStrategies[strategyIndex];\n \n // Transfer funds to the strategy contract\n // In a real implementation this would use strategy-specific encoding (e.g. Aave supply())\n _asset.safeTransfer(strategy, amount);\n \n emit FundsDeployed(strategy, amount);\n }\n\n /**\n * @dev Pause all critical functions\n */\n function pause() external onlyOwner {\n _pause();\n }\n\n /**\n * @dev Unpause all critical functions\n */\n function unpause() external onlyOwner {\n _unpause();\n }\n\n /**\n * @dev Called after deposit/mint.\n */\n function _deposit(\n address caller,\n address receiver,\n uint256 assets,\n uint256 shares\n ) internal virtual override whenNotPaused {\n super._deposit(caller, receiver, assets, shares);\n \n // Auto-deploy logic can be triggered here if desired,\n // or left to a keeper/crank function to save gas on user deposits.\n }\n\n /**\n * @dev Called after withdraw/burn.\n */\n function _withdraw(\n address caller,\n address receiver,\n address owner,\n uint256 assets,\n uint256 shares\n ) internal virtual override whenNotPaused {\n super._withdraw(caller, receiver, owner, assets, shares);\n }\n}\n"}},"settings":{"evmVersion":"cancun","optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[2382],"Ownable":[147]},"id":148,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":148,"sourceUnit":2383,"src":"128:45:0","symbolAliases":[{"foreign":{"id":2,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"136:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5,"name":"Context","nameLocations":["692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":2382,"src":"692:7:0"},"id":6,"nodeType":"InheritanceSpecifier","src":"692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":147,"linearizedBaseContracts":[147,2382],"name":"Ownable","nameLocation":"681:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8,"mutability":"mutable","name":"_owner","nameLocation":"722:6:0","nodeType":"VariableDeclaration","scope":147,"src":"706:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":9,"nodeType":"StructuredDocumentation","src":"735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":13,"name":"OwnableUnauthorizedAccount","nameLocation":"831:26:0","nodeType":"ErrorDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11,"mutability":"mutable","name":"account","nameLocation":"866:7:0","nodeType":"VariableDeclaration","scope":13,"src":"858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:0"},"src":"825:50:0"},{"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":18,"name":"OwnableInvalidOwner","nameLocation":"974:19:0","nodeType":"ErrorDefinition","parameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16,"mutability":"mutable","name":"owner","nameLocation":"1002:5:0","nodeType":"VariableDeclaration","scope":18,"src":"994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:0"},"src":"968:41:0"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":24,"name":"OwnershipTransferred","nameLocation":"1021:20:0","nodeType":"EventDefinition","parameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:0","nodeType":"VariableDeclaration","scope":24,"src":"1042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:0","nodeType":"VariableDeclaration","scope":24,"src":"1073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:0"},"src":"1015:84:0"},{"body":{"id":49,"nodeType":"Block","src":"1259:153:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":35,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"1273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":33,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":32,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:0","typeDescriptions":{}}},"id":34,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44,"nodeType":"IfStatement","src":"1269:95:0","trueBody":{"id":43,"nodeType":"Block","src":"1301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":39,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:0","typeDescriptions":{}}},"id":40,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":36,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"1322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42,"nodeType":"RevertStatement","src":"1315:38:0"}]}},{"expression":{"arguments":[{"id":46,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"1392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":45,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"1373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":47,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":48,"nodeType":"ExpressionStatement","src":"1373:32:0"}]},"documentation":{"id":25,"nodeType":"StructuredDocumentation","src":"1105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":50,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:0","nodeType":"VariableDeclaration","scope":50,"src":"1237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:0"},"returnParameters":{"id":29,"nodeType":"ParameterList","parameters":[],"src":"1259:0:0"},"scope":147,"src":"1225:187:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":57,"nodeType":"Block","src":"1521:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":53,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"1531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55,"nodeType":"ExpressionStatement","src":"1531:13:0"},{"id":56,"nodeType":"PlaceholderStatement","src":"1554:1:0"}]},"documentation":{"id":51,"nodeType":"StructuredDocumentation","src":"1418:77:0","text":" @dev Throws if called by any account other than the owner."},"id":58,"name":"onlyOwner","nameLocation":"1509:9:0","nodeType":"ModifierDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1518:2:0"},"src":"1500:62:0","virtual":false,"visibility":"internal"},{"body":{"id":66,"nodeType":"Block","src":"1693:30:0","statements":[{"expression":{"id":64,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"1710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":63,"id":65,"nodeType":"Return","src":"1703:13:0"}]},"documentation":{"id":59,"nodeType":"StructuredDocumentation","src":"1568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":67,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:0","nodeType":"FunctionDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[],"src":"1652:2:0"},"returnParameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67,"src":"1684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:0"},"scope":147,"src":"1638:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":83,"nodeType":"Block","src":"1841:117:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":71,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"1855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":73,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"1866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82,"nodeType":"IfStatement","src":"1851:101:0","trueBody":{"id":81,"nodeType":"Block","src":"1880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":77,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"1928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"1901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":80,"nodeType":"RevertStatement","src":"1894:47:0"}]}}]},"documentation":{"id":68,"nodeType":"StructuredDocumentation","src":"1729:62:0","text":" @dev Throws if the sender is not the owner."},"id":84,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:0","nodeType":"FunctionDefinition","parameters":{"id":69,"nodeType":"ParameterList","parameters":[],"src":"1816:2:0"},"returnParameters":{"id":70,"nodeType":"ParameterList","parameters":[],"src":"1841:0:0"},"scope":147,"src":"1796:162:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":97,"nodeType":"Block","src":"2347:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":93,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":92,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:0","typeDescriptions":{}}},"id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":95,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":96,"nodeType":"ExpressionStatement","src":"2357:30:0"}]},"documentation":{"id":85,"nodeType":"StructuredDocumentation","src":"1964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":98,"implemented":true,"kind":"function","modifiers":[{"id":88,"kind":"modifierInvocation","modifierName":{"id":87,"name":"onlyOwner","nameLocations":["2337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"2337:9:0"},"nodeType":"ModifierInvocation","src":"2337:9:0"}],"name":"renounceOwnership","nameLocation":"2302:17:0","nodeType":"FunctionDefinition","parameters":{"id":86,"nodeType":"ParameterList","parameters":[],"src":"2319:2:0"},"returnParameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"2347:0:0"},"scope":147,"src":"2293:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":125,"nodeType":"Block","src":"2613:145:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":106,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"2627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:0","typeDescriptions":{}}},"id":110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":120,"nodeType":"IfStatement","src":"2623:91:0","trueBody":{"id":119,"nodeType":"Block","src":"2651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:0","typeDescriptions":{}}},"id":116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":112,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"2672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":118,"nodeType":"RevertStatement","src":"2665:38:0"}]}},{"expression":{"arguments":[{"id":122,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"2742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":121,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":124,"nodeType":"ExpressionStatement","src":"2723:28:0"}]},"documentation":{"id":99,"nodeType":"StructuredDocumentation","src":"2400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":126,"implemented":true,"kind":"function","modifiers":[{"id":104,"kind":"modifierInvocation","modifierName":{"id":103,"name":"onlyOwner","nameLocations":["2603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"2603:9:0"},"nodeType":"ModifierInvocation","src":"2603:9:0"}],"name":"transferOwnership","nameLocation":"2552:17:0","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":101,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:0","nodeType":"VariableDeclaration","scope":126,"src":"2570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:0"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"2613:0:0"},"scope":147,"src":"2543:215:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":145,"nodeType":"Block","src":"2975:124:0","statements":[{"assignments":[133],"declarations":[{"constant":false,"id":133,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:0","nodeType":"VariableDeclaration","scope":145,"src":"2985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":132,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":135,"initialValue":{"id":134,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"3004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:0"},{"expression":{"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":136,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"3020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":137,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"3029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":139,"nodeType":"ExpressionStatement","src":"3020:17:0"},{"eventCall":{"arguments":[{"id":141,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":133,"src":"3073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":142,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"3083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":140,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"3052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"EmitStatement","src":"3047:45:0"}]},"documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"2764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":146,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:0","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:0","nodeType":"VariableDeclaration","scope":146,"src":"2940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:0"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"2975:0:0"},"scope":147,"src":"2912:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":148,"src":"663:2438:0","usedErrors":[13,18],"usedEvents":[24]}],"src":"102:3000:0"},"id":0},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","exportedSymbols":{"IERC1363":[229],"IERC165":[3062],"IERC20":[1137]},"id":230,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":149,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"107:24:1"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"./IERC20.sol","id":151,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":230,"sourceUnit":238,"src":"133:36:1","symbolAliases":[{"foreign":{"id":150,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"141:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","file":"./IERC165.sol","id":153,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":230,"sourceUnit":234,"src":"170:38:1","symbolAliases":[{"foreign":{"id":152,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3062,"src":"178:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":155,"name":"IERC20","nameLocations":["590:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"590:6:1"},"id":156,"nodeType":"InheritanceSpecifier","src":"590:6:1"},{"baseName":{"id":157,"name":"IERC165","nameLocations":["598:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":3062,"src":"598:7:1"},"id":158,"nodeType":"InheritanceSpecifier","src":"598:7:1"}],"canonicalName":"IERC1363","contractDependencies":[],"contractKind":"interface","documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"210:357:1","text":" @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction."},"fullyImplemented":false,"id":229,"linearizedBaseContracts":[229,3062,1137],"name":"IERC1363","nameLocation":"578:8:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":159,"nodeType":"StructuredDocumentation","src":"1148:370:1","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"1296ee62","id":168,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"1532:15:1","nodeType":"FunctionDefinition","parameters":{"id":164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161,"mutability":"mutable","name":"to","nameLocation":"1556:2:1","nodeType":"VariableDeclaration","scope":168,"src":"1548:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":160,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":163,"mutability":"mutable","name":"value","nameLocation":"1568:5:1","nodeType":"VariableDeclaration","scope":168,"src":"1560:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":162,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:27:1"},"returnParameters":{"id":167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":166,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":168,"src":"1593:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":165,"name":"bool","nodeType":"ElementaryTypeName","src":"1593:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1592:6:1"},"scope":229,"src":"1523:76:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":169,"nodeType":"StructuredDocumentation","src":"1605:453:1","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"4000aea0","id":180,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"2072:15:1","nodeType":"FunctionDefinition","parameters":{"id":176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"to","nameLocation":"2096:2:1","nodeType":"VariableDeclaration","scope":180,"src":"2088:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":173,"mutability":"mutable","name":"value","nameLocation":"2108:5:1","nodeType":"VariableDeclaration","scope":180,"src":"2100:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":172,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":175,"mutability":"mutable","name":"data","nameLocation":"2130:4:1","nodeType":"VariableDeclaration","scope":180,"src":"2115:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":174,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2087:48:1"},"returnParameters":{"id":179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":180,"src":"2154:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":177,"name":"bool","nodeType":"ElementaryTypeName","src":"2154:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2153:6:1"},"scope":229,"src":"2063:97:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":181,"nodeType":"StructuredDocumentation","src":"2166:453:1","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"d8fbe994","id":192,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"2633:19:1","nodeType":"FunctionDefinition","parameters":{"id":188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"mutability":"mutable","name":"from","nameLocation":"2661:4:1","nodeType":"VariableDeclaration","scope":192,"src":"2653:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":182,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":185,"mutability":"mutable","name":"to","nameLocation":"2675:2:1","nodeType":"VariableDeclaration","scope":192,"src":"2667:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":184,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":187,"mutability":"mutable","name":"value","nameLocation":"2687:5:1","nodeType":"VariableDeclaration","scope":192,"src":"2679:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":186,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:41:1"},"returnParameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":190,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":192,"src":"2712:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":189,"name":"bool","nodeType":"ElementaryTypeName","src":"2712:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2711:6:1"},"scope":229,"src":"2624:94:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":193,"nodeType":"StructuredDocumentation","src":"2724:536:1","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"c1d34b89","id":206,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"3274:19:1","nodeType":"FunctionDefinition","parameters":{"id":202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":195,"mutability":"mutable","name":"from","nameLocation":"3302:4:1","nodeType":"VariableDeclaration","scope":206,"src":"3294:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":197,"mutability":"mutable","name":"to","nameLocation":"3316:2:1","nodeType":"VariableDeclaration","scope":206,"src":"3308:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":196,"name":"address","nodeType":"ElementaryTypeName","src":"3308:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":199,"mutability":"mutable","name":"value","nameLocation":"3328:5:1","nodeType":"VariableDeclaration","scope":206,"src":"3320:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":198,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":201,"mutability":"mutable","name":"data","nameLocation":"3350:4:1","nodeType":"VariableDeclaration","scope":206,"src":"3335:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":200,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:62:1"},"returnParameters":{"id":205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":206,"src":"3374:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":203,"name":"bool","nodeType":"ElementaryTypeName","src":"3374:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3373:6:1"},"scope":229,"src":"3265:115:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"3386:390:1","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"3177029f","id":216,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"3790:14:1","nodeType":"FunctionDefinition","parameters":{"id":212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":209,"mutability":"mutable","name":"spender","nameLocation":"3813:7:1","nodeType":"VariableDeclaration","scope":216,"src":"3805:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":208,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":211,"mutability":"mutable","name":"value","nameLocation":"3830:5:1","nodeType":"VariableDeclaration","scope":216,"src":"3822:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":210,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:32:1"},"returnParameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":216,"src":"3855:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":213,"name":"bool","nodeType":"ElementaryTypeName","src":"3855:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3854:6:1"},"scope":229,"src":"3781:80:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":217,"nodeType":"StructuredDocumentation","src":"3867:478:1","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"cae9ca51","id":228,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"4359:14:1","nodeType":"FunctionDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":219,"mutability":"mutable","name":"spender","nameLocation":"4382:7:1","nodeType":"VariableDeclaration","scope":228,"src":"4374:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":218,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":221,"mutability":"mutable","name":"value","nameLocation":"4399:5:1","nodeType":"VariableDeclaration","scope":228,"src":"4391:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":220,"name":"uint256","nodeType":"ElementaryTypeName","src":"4391:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":223,"mutability":"mutable","name":"data","nameLocation":"4421:4:1","nodeType":"VariableDeclaration","scope":228,"src":"4406:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":222,"name":"bytes","nodeType":"ElementaryTypeName","src":"4406:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:53:1"},"returnParameters":{"id":227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":228,"src":"4445:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":225,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4444:6:1"},"scope":229,"src":"4350:101:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":230,"src":"568:3885:1","usedErrors":[],"usedEvents":[1071,1080]}],"src":"107:4347:1"},"id":1},"@openzeppelin/contracts/interfaces/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","exportedSymbols":{"IERC165":[3062]},"id":234,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":231,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:2"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":233,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":234,"sourceUnit":3063,"src":"133:59:2","symbolAliases":[{"foreign":{"id":232,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3062,"src":"141:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"106:87:2"},"id":2},"@openzeppelin/contracts/interfaces/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","exportedSymbols":{"IERC20":[1137]},"id":238,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":235,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"105:25:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":237,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":238,"sourceUnit":1138,"src":"132:49:3","symbolAliases":[{"foreign":{"id":236,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"140:6:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"105:77:3"},"id":3},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","exportedSymbols":{"IERC20":[1137],"IERC20Metadata":[1897],"IERC4626":[407]},"id":408,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":239,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"107:24:4"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":241,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":408,"sourceUnit":1138,"src":"133:49:4","symbolAliases":[{"foreign":{"id":240,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"141:6:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"../token/ERC20/extensions/IERC20Metadata.sol","id":243,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":408,"sourceUnit":1898,"src":"183:76:4","symbolAliases":[{"foreign":{"id":242,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"191:14:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":245,"name":"IERC20","nameLocations":["421:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"421:6:4"},"id":246,"nodeType":"InheritanceSpecifier","src":"421:6:4"},{"baseName":{"id":247,"name":"IERC20Metadata","nameLocations":["429:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":1897,"src":"429:14:4"},"id":248,"nodeType":"InheritanceSpecifier","src":"429:14:4"}],"canonicalName":"IERC4626","contractDependencies":[],"contractKind":"interface","documentation":{"id":244,"nodeType":"StructuredDocumentation","src":"261:137:4","text":" @dev Interface of the ERC-4626 \"Tokenized Vault Standard\", as defined in\n https://eips.ethereum.org/EIPS/eip-4626[ERC-4626]."},"fullyImplemented":false,"id":407,"linearizedBaseContracts":[407,1897,1137],"name":"IERC4626","nameLocation":"409:8:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"dcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7","id":258,"name":"Deposit","nameLocation":"456:7:4","nodeType":"EventDefinition","parameters":{"id":257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"480:6:4","nodeType":"VariableDeclaration","scope":258,"src":"464:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":249,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":252,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"504:5:4","nodeType":"VariableDeclaration","scope":258,"src":"488:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":251,"name":"address","nodeType":"ElementaryTypeName","src":"488:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":254,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"519:6:4","nodeType":"VariableDeclaration","scope":258,"src":"511:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":253,"name":"uint256","nodeType":"ElementaryTypeName","src":"511:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":256,"indexed":false,"mutability":"mutable","name":"shares","nameLocation":"535:6:4","nodeType":"VariableDeclaration","scope":258,"src":"527:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":255,"name":"uint256","nodeType":"ElementaryTypeName","src":"527:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"463:79:4"},"src":"450:93:4"},{"anonymous":false,"eventSelector":"fbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db","id":270,"name":"Withdraw","nameLocation":"555:8:4","nodeType":"EventDefinition","parameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":260,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"589:6:4","nodeType":"VariableDeclaration","scope":270,"src":"573:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":259,"name":"address","nodeType":"ElementaryTypeName","src":"573:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":262,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"621:8:4","nodeType":"VariableDeclaration","scope":270,"src":"605:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":261,"name":"address","nodeType":"ElementaryTypeName","src":"605:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":264,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"655:5:4","nodeType":"VariableDeclaration","scope":270,"src":"639:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":263,"name":"address","nodeType":"ElementaryTypeName","src":"639:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":266,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"678:6:4","nodeType":"VariableDeclaration","scope":270,"src":"670:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":265,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":268,"indexed":false,"mutability":"mutable","name":"shares","nameLocation":"702:6:4","nodeType":"VariableDeclaration","scope":270,"src":"694:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":267,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"563:151:4"},"src":"549:166:4"},{"documentation":{"id":271,"nodeType":"StructuredDocumentation","src":"721:207:4","text":" @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.\n - MUST be an ERC-20 token contract.\n - MUST NOT revert."},"functionSelector":"38d52e0f","id":276,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nameLocation":"942:5:4","nodeType":"FunctionDefinition","parameters":{"id":272,"nodeType":"ParameterList","parameters":[],"src":"947:2:4"},"returnParameters":{"id":275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":274,"mutability":"mutable","name":"assetTokenAddress","nameLocation":"981:17:4","nodeType":"VariableDeclaration","scope":276,"src":"973:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":273,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:27:4"},"scope":407,"src":"933:67:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":277,"nodeType":"StructuredDocumentation","src":"1006:286:4","text":" @dev Returns the total amount of the underlying asset that is โ€œmanagedโ€ by Vault.\n - SHOULD include any compounding that occurs from yield.\n - MUST be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT revert."},"functionSelector":"01e1d114","id":282,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"1306:11:4","nodeType":"FunctionDefinition","parameters":{"id":278,"nodeType":"ParameterList","parameters":[],"src":"1317:2:4"},"returnParameters":{"id":281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":280,"mutability":"mutable","name":"totalManagedAssets","nameLocation":"1351:18:4","nodeType":"VariableDeclaration","scope":282,"src":"1343:26:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":279,"name":"uint256","nodeType":"ElementaryTypeName","src":"1343:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1342:28:4"},"scope":407,"src":"1297:74:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"1377:720:4","text":" @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal\n scenario where all the conditions are met.\n - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT show any variations depending on the caller.\n - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n - MUST NOT revert.\n NOTE: This calculation MAY NOT reflect the โ€œper-userโ€ price-per-share, and instead should reflect the\n โ€œaverage-userโ€™sโ€ price-per-share, meaning what the average user should expect to see when exchanging to and\n from."},"functionSelector":"c6e6f592","id":290,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"2111:15:4","nodeType":"FunctionDefinition","parameters":{"id":286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"assets","nameLocation":"2135:6:4","nodeType":"VariableDeclaration","scope":290,"src":"2127:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2126:16:4"},"returnParameters":{"id":289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":288,"mutability":"mutable","name":"shares","nameLocation":"2174:6:4","nodeType":"VariableDeclaration","scope":290,"src":"2166:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":287,"name":"uint256","nodeType":"ElementaryTypeName","src":"2166:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2165:16:4"},"scope":407,"src":"2102:80:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":291,"nodeType":"StructuredDocumentation","src":"2188:720:4","text":" @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal\n scenario where all the conditions are met.\n - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT show any variations depending on the caller.\n - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n - MUST NOT revert.\n NOTE: This calculation MAY NOT reflect the โ€œper-userโ€ price-per-share, and instead should reflect the\n โ€œaverage-userโ€™sโ€ price-per-share, meaning what the average user should expect to see when exchanging to and\n from."},"functionSelector":"07a2d13a","id":298,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"2922:15:4","nodeType":"FunctionDefinition","parameters":{"id":294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":293,"mutability":"mutable","name":"shares","nameLocation":"2946:6:4","nodeType":"VariableDeclaration","scope":298,"src":"2938:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":292,"name":"uint256","nodeType":"ElementaryTypeName","src":"2938:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2937:16:4"},"returnParameters":{"id":297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":296,"mutability":"mutable","name":"assets","nameLocation":"2985:6:4","nodeType":"VariableDeclaration","scope":298,"src":"2977:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":295,"name":"uint256","nodeType":"ElementaryTypeName","src":"2977:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2976:16:4"},"scope":407,"src":"2913:80:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":299,"nodeType":"StructuredDocumentation","src":"2999:386:4","text":" @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,\n through a deposit call.\n - MUST return a limited value if receiver is subject to some deposit limit.\n - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.\n - MUST NOT revert."},"functionSelector":"402d267d","id":306,"implemented":false,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3399:10:4","nodeType":"FunctionDefinition","parameters":{"id":302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":301,"mutability":"mutable","name":"receiver","nameLocation":"3418:8:4","nodeType":"VariableDeclaration","scope":306,"src":"3410:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":300,"name":"address","nodeType":"ElementaryTypeName","src":"3410:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3409:18:4"},"returnParameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":304,"mutability":"mutable","name":"maxAssets","nameLocation":"3459:9:4","nodeType":"VariableDeclaration","scope":306,"src":"3451:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":303,"name":"uint256","nodeType":"ElementaryTypeName","src":"3451:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3450:19:4"},"scope":407,"src":"3390:80:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":307,"nodeType":"StructuredDocumentation","src":"3476:1012:4","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given\n current on-chain conditions.\n - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit\n call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called\n in the same transaction.\n - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the\n deposit would be accepted, regardless if the user has enough tokens approved, etc.\n - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by depositing."},"functionSelector":"ef8b30f7","id":314,"implemented":false,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"4502:14:4","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":309,"mutability":"mutable","name":"assets","nameLocation":"4525:6:4","nodeType":"VariableDeclaration","scope":314,"src":"4517:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":308,"name":"uint256","nodeType":"ElementaryTypeName","src":"4517:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4516:16:4"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"shares","nameLocation":"4564:6:4","nodeType":"VariableDeclaration","scope":314,"src":"4556:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint256","nodeType":"ElementaryTypeName","src":"4556:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4555:16:4"},"scope":407,"src":"4493:79:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":315,"nodeType":"StructuredDocumentation","src":"4578:673:4","text":" @dev Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`.\n - MUST emit the Deposit event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n deposit execution, and are accounted for during deposit.\n - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not\n approving enough underlying tokens to the Vault contract, etc).\n NOTE: most implementations will require pre-approval of the Vault with the Vaultโ€™s underlying asset token."},"functionSelector":"6e553f65","id":324,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"5265:7:4","nodeType":"FunctionDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":317,"mutability":"mutable","name":"assets","nameLocation":"5281:6:4","nodeType":"VariableDeclaration","scope":324,"src":"5273:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":316,"name":"uint256","nodeType":"ElementaryTypeName","src":"5273:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":319,"mutability":"mutable","name":"receiver","nameLocation":"5297:8:4","nodeType":"VariableDeclaration","scope":324,"src":"5289:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":318,"name":"address","nodeType":"ElementaryTypeName","src":"5289:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5272:34:4"},"returnParameters":{"id":323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":322,"mutability":"mutable","name":"shares","nameLocation":"5333:6:4","nodeType":"VariableDeclaration","scope":324,"src":"5325:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":321,"name":"uint256","nodeType":"ElementaryTypeName","src":"5325:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5324:16:4"},"scope":407,"src":"5256:85:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":325,"nodeType":"StructuredDocumentation","src":"5347:341:4","text":" @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.\n - MUST return a limited value if receiver is subject to some mint limit.\n - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.\n - MUST NOT revert."},"functionSelector":"c63d75b6","id":332,"implemented":false,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"5702:7:4","nodeType":"FunctionDefinition","parameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":327,"mutability":"mutable","name":"receiver","nameLocation":"5718:8:4","nodeType":"VariableDeclaration","scope":332,"src":"5710:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":326,"name":"address","nodeType":"ElementaryTypeName","src":"5710:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5709:18:4"},"returnParameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"maxShares","nameLocation":"5759:9:4","nodeType":"VariableDeclaration","scope":332,"src":"5751:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":329,"name":"uint256","nodeType":"ElementaryTypeName","src":"5751:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5750:19:4"},"scope":407,"src":"5693:77:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":333,"nodeType":"StructuredDocumentation","src":"5776:984:4","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given\n current on-chain conditions.\n - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call\n in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the\n same transaction.\n - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint\n would be accepted, regardless if the user has enough tokens approved, etc.\n - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by minting."},"functionSelector":"b3d7f6b9","id":340,"implemented":false,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"6774:11:4","nodeType":"FunctionDefinition","parameters":{"id":336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":335,"mutability":"mutable","name":"shares","nameLocation":"6794:6:4","nodeType":"VariableDeclaration","scope":340,"src":"6786:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":334,"name":"uint256","nodeType":"ElementaryTypeName","src":"6786:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6785:16:4"},"returnParameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"assets","nameLocation":"6833:6:4","nodeType":"VariableDeclaration","scope":340,"src":"6825:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":337,"name":"uint256","nodeType":"ElementaryTypeName","src":"6825:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6824:16:4"},"scope":407,"src":"6765:76:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":341,"nodeType":"StructuredDocumentation","src":"6847:647:4","text":" @dev Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens.\n - MUST emit the Deposit event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint\n execution, and are accounted for during mint.\n - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not\n approving enough underlying tokens to the Vault contract, etc).\n NOTE: most implementations will require pre-approval of the Vault with the Vaultโ€™s underlying asset token."},"functionSelector":"94bf804d","id":350,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"7508:4:4","nodeType":"FunctionDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"shares","nameLocation":"7521:6:4","nodeType":"VariableDeclaration","scope":350,"src":"7513:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":342,"name":"uint256","nodeType":"ElementaryTypeName","src":"7513:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":345,"mutability":"mutable","name":"receiver","nameLocation":"7537:8:4","nodeType":"VariableDeclaration","scope":350,"src":"7529:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":344,"name":"address","nodeType":"ElementaryTypeName","src":"7529:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7512:34:4"},"returnParameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"assets","nameLocation":"7573:6:4","nodeType":"VariableDeclaration","scope":350,"src":"7565:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":347,"name":"uint256","nodeType":"ElementaryTypeName","src":"7565:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7564:16:4"},"scope":407,"src":"7499:82:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":351,"nodeType":"StructuredDocumentation","src":"7587:293:4","text":" @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the\n Vault, through a withdraw call.\n - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n - MUST NOT revert."},"functionSelector":"ce96cb77","id":358,"implemented":false,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"7894:11:4","nodeType":"FunctionDefinition","parameters":{"id":354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":353,"mutability":"mutable","name":"owner","nameLocation":"7914:5:4","nodeType":"VariableDeclaration","scope":358,"src":"7906:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":352,"name":"address","nodeType":"ElementaryTypeName","src":"7906:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7905:15:4"},"returnParameters":{"id":357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":356,"mutability":"mutable","name":"maxAssets","nameLocation":"7952:9:4","nodeType":"VariableDeclaration","scope":358,"src":"7944:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":355,"name":"uint256","nodeType":"ElementaryTypeName","src":"7944:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7943:19:4"},"scope":407,"src":"7885:78:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":359,"nodeType":"StructuredDocumentation","src":"7969:1034:4","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,\n given current on-chain conditions.\n - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw\n call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if\n called\n in the same transaction.\n - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though\n the withdrawal would be accepted, regardless if the user has enough shares, etc.\n - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by depositing."},"functionSelector":"0a28a477","id":366,"implemented":false,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"9017:15:4","nodeType":"FunctionDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"mutability":"mutable","name":"assets","nameLocation":"9041:6:4","nodeType":"VariableDeclaration","scope":366,"src":"9033:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":360,"name":"uint256","nodeType":"ElementaryTypeName","src":"9033:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9032:16:4"},"returnParameters":{"id":365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"shares","nameLocation":"9080:6:4","nodeType":"VariableDeclaration","scope":366,"src":"9072:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":363,"name":"uint256","nodeType":"ElementaryTypeName","src":"9072:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9071:16:4"},"scope":407,"src":"9008:80:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":367,"nodeType":"StructuredDocumentation","src":"9094:670:4","text":" @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.\n - MUST emit the Withdraw event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n withdraw execution, and are accounted for during withdraw.\n - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner\n not having enough shares, etc).\n Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n Those methods should be performed separately."},"functionSelector":"b460af94","id":378,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"9778:8:4","nodeType":"FunctionDefinition","parameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":369,"mutability":"mutable","name":"assets","nameLocation":"9795:6:4","nodeType":"VariableDeclaration","scope":378,"src":"9787:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":368,"name":"uint256","nodeType":"ElementaryTypeName","src":"9787:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":371,"mutability":"mutable","name":"receiver","nameLocation":"9811:8:4","nodeType":"VariableDeclaration","scope":378,"src":"9803:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":370,"name":"address","nodeType":"ElementaryTypeName","src":"9803:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":373,"mutability":"mutable","name":"owner","nameLocation":"9829:5:4","nodeType":"VariableDeclaration","scope":378,"src":"9821:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":372,"name":"address","nodeType":"ElementaryTypeName","src":"9821:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9786:49:4"},"returnParameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"mutability":"mutable","name":"shares","nameLocation":"9862:6:4","nodeType":"VariableDeclaration","scope":378,"src":"9854:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":375,"name":"uint256","nodeType":"ElementaryTypeName","src":"9854:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9853:16:4"},"scope":407,"src":"9769:101:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":379,"nodeType":"StructuredDocumentation","src":"9876:381:4","text":" @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,\n through a redeem call.\n - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.\n - MUST NOT revert."},"functionSelector":"d905777e","id":386,"implemented":false,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"10271:9:4","nodeType":"FunctionDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":381,"mutability":"mutable","name":"owner","nameLocation":"10289:5:4","nodeType":"VariableDeclaration","scope":386,"src":"10281:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":380,"name":"address","nodeType":"ElementaryTypeName","src":"10281:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10280:15:4"},"returnParameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"maxShares","nameLocation":"10327:9:4","nodeType":"VariableDeclaration","scope":386,"src":"10319:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":383,"name":"uint256","nodeType":"ElementaryTypeName","src":"10319:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10318:19:4"},"scope":407,"src":"10262:76:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":387,"nodeType":"StructuredDocumentation","src":"10344:1009:4","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block,\n given current on-chain conditions.\n - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call\n in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the\n same transaction.\n - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the\n redemption would be accepted, regardless if the user has enough shares, etc.\n - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by redeeming."},"functionSelector":"4cdad506","id":394,"implemented":false,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"11367:13:4","nodeType":"FunctionDefinition","parameters":{"id":390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":389,"mutability":"mutable","name":"shares","nameLocation":"11389:6:4","nodeType":"VariableDeclaration","scope":394,"src":"11381:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":388,"name":"uint256","nodeType":"ElementaryTypeName","src":"11381:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11380:16:4"},"returnParameters":{"id":393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":392,"mutability":"mutable","name":"assets","nameLocation":"11428:6:4","nodeType":"VariableDeclaration","scope":394,"src":"11420:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":391,"name":"uint256","nodeType":"ElementaryTypeName","src":"11420:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11419:16:4"},"scope":407,"src":"11358:78:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":395,"nodeType":"StructuredDocumentation","src":"11442:661:4","text":" @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.\n - MUST emit the Withdraw event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n redeem execution, and are accounted for during redeem.\n - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner\n not having enough shares, etc).\n NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n Those methods should be performed separately."},"functionSelector":"ba087652","id":406,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"12117:6:4","nodeType":"FunctionDefinition","parameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":397,"mutability":"mutable","name":"shares","nameLocation":"12132:6:4","nodeType":"VariableDeclaration","scope":406,"src":"12124:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":396,"name":"uint256","nodeType":"ElementaryTypeName","src":"12124:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":399,"mutability":"mutable","name":"receiver","nameLocation":"12148:8:4","nodeType":"VariableDeclaration","scope":406,"src":"12140:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":398,"name":"address","nodeType":"ElementaryTypeName","src":"12140:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":401,"mutability":"mutable","name":"owner","nameLocation":"12166:5:4","nodeType":"VariableDeclaration","scope":406,"src":"12158:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":400,"name":"address","nodeType":"ElementaryTypeName","src":"12158:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12123:49:4"},"returnParameters":{"id":405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"mutability":"mutable","name":"assets","nameLocation":"12199:6:4","nodeType":"VariableDeclaration","scope":406,"src":"12191:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":403,"name":"uint256","nodeType":"ElementaryTypeName","src":"12191:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12190:16:4"},"scope":407,"src":"12108:99:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":408,"src":"399:11810:4","usedErrors":[],"usedEvents":[258,270,1071,1080]}],"src":"107:12103:4"},"id":4},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[544],"IERC20Errors":[449],"IERC721Errors":[497]},"id":545,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":409,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"113:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":410,"nodeType":"StructuredDocumentation","src":"139:141:5","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":449,"linearizedBaseContracts":[449],"name":"IERC20Errors","nameLocation":"291:12:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":411,"nodeType":"StructuredDocumentation","src":"310:309:5","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":419,"name":"ERC20InsufficientBalance","nameLocation":"630:24:5","nodeType":"ErrorDefinition","parameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":413,"mutability":"mutable","name":"sender","nameLocation":"663:6:5","nodeType":"VariableDeclaration","scope":419,"src":"655:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":412,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":415,"mutability":"mutable","name":"balance","nameLocation":"679:7:5","nodeType":"VariableDeclaration","scope":419,"src":"671:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":414,"name":"uint256","nodeType":"ElementaryTypeName","src":"671:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":417,"mutability":"mutable","name":"needed","nameLocation":"696:6:5","nodeType":"VariableDeclaration","scope":419,"src":"688:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":416,"name":"uint256","nodeType":"ElementaryTypeName","src":"688:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:49:5"},"src":"624:80:5"},{"documentation":{"id":420,"nodeType":"StructuredDocumentation","src":"710:152:5","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":424,"name":"ERC20InvalidSender","nameLocation":"873:18:5","nodeType":"ErrorDefinition","parameters":{"id":423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":422,"mutability":"mutable","name":"sender","nameLocation":"900:6:5","nodeType":"VariableDeclaration","scope":424,"src":"892:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":421,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:16:5"},"src":"867:41:5"},{"documentation":{"id":425,"nodeType":"StructuredDocumentation","src":"914:159:5","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":429,"name":"ERC20InvalidReceiver","nameLocation":"1084:20:5","nodeType":"ErrorDefinition","parameters":{"id":428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"receiver","nameLocation":"1113:8:5","nodeType":"VariableDeclaration","scope":429,"src":"1105:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":426,"name":"address","nodeType":"ElementaryTypeName","src":"1105:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1104:18:5"},"src":"1078:45:5"},{"documentation":{"id":430,"nodeType":"StructuredDocumentation","src":"1129:345:5","text":" @dev Indicates a failure with the `spender`โ€™s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":438,"name":"ERC20InsufficientAllowance","nameLocation":"1485:26:5","nodeType":"ErrorDefinition","parameters":{"id":437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":432,"mutability":"mutable","name":"spender","nameLocation":"1520:7:5","nodeType":"VariableDeclaration","scope":438,"src":"1512:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":431,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":434,"mutability":"mutable","name":"allowance","nameLocation":"1537:9:5","nodeType":"VariableDeclaration","scope":438,"src":"1529:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"1529:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":436,"mutability":"mutable","name":"needed","nameLocation":"1556:6:5","nodeType":"VariableDeclaration","scope":438,"src":"1548:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":435,"name":"uint256","nodeType":"ElementaryTypeName","src":"1548:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1511:52:5"},"src":"1479:85:5"},{"documentation":{"id":439,"nodeType":"StructuredDocumentation","src":"1570:174:5","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":443,"name":"ERC20InvalidApprover","nameLocation":"1755:20:5","nodeType":"ErrorDefinition","parameters":{"id":442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":441,"mutability":"mutable","name":"approver","nameLocation":"1784:8:5","nodeType":"VariableDeclaration","scope":443,"src":"1776:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":440,"name":"address","nodeType":"ElementaryTypeName","src":"1776:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1775:18:5"},"src":"1749:45:5"},{"documentation":{"id":444,"nodeType":"StructuredDocumentation","src":"1800:195:5","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":448,"name":"ERC20InvalidSpender","nameLocation":"2006:19:5","nodeType":"ErrorDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":446,"mutability":"mutable","name":"spender","nameLocation":"2034:7:5","nodeType":"VariableDeclaration","scope":448,"src":"2026:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":445,"name":"address","nodeType":"ElementaryTypeName","src":"2026:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2025:17:5"},"src":"2000:43:5"}],"scope":545,"src":"281:1764:5","usedErrors":[419,424,429,438,443,448],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":450,"nodeType":"StructuredDocumentation","src":"2047:143:5","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":497,"linearizedBaseContracts":[497],"name":"IERC721Errors","nameLocation":"2201:13:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":451,"nodeType":"StructuredDocumentation","src":"2221:220:5","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":455,"name":"ERC721InvalidOwner","nameLocation":"2452:18:5","nodeType":"ErrorDefinition","parameters":{"id":454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":453,"mutability":"mutable","name":"owner","nameLocation":"2479:5:5","nodeType":"VariableDeclaration","scope":455,"src":"2471:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":452,"name":"address","nodeType":"ElementaryTypeName","src":"2471:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2470:15:5"},"src":"2446:40:5"},{"documentation":{"id":456,"nodeType":"StructuredDocumentation","src":"2492:132:5","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":460,"name":"ERC721NonexistentToken","nameLocation":"2635:22:5","nodeType":"ErrorDefinition","parameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":458,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:5","nodeType":"VariableDeclaration","scope":460,"src":"2658:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":457,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2657:17:5"},"src":"2629:46:5"},{"documentation":{"id":461,"nodeType":"StructuredDocumentation","src":"2681:289:5","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":469,"name":"ERC721IncorrectOwner","nameLocation":"2981:20:5","nodeType":"ErrorDefinition","parameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"sender","nameLocation":"3010:6:5","nodeType":"VariableDeclaration","scope":469,"src":"3002:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":462,"name":"address","nodeType":"ElementaryTypeName","src":"3002:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":465,"mutability":"mutable","name":"tokenId","nameLocation":"3026:7:5","nodeType":"VariableDeclaration","scope":469,"src":"3018:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":464,"name":"uint256","nodeType":"ElementaryTypeName","src":"3018:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":467,"mutability":"mutable","name":"owner","nameLocation":"3043:5:5","nodeType":"VariableDeclaration","scope":469,"src":"3035:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":466,"name":"address","nodeType":"ElementaryTypeName","src":"3035:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3001:48:5"},"src":"2975:75:5"},{"documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"3056:152:5","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":474,"name":"ERC721InvalidSender","nameLocation":"3219:19:5","nodeType":"ErrorDefinition","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":472,"mutability":"mutable","name":"sender","nameLocation":"3247:6:5","nodeType":"VariableDeclaration","scope":474,"src":"3239:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":471,"name":"address","nodeType":"ElementaryTypeName","src":"3239:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3238:16:5"},"src":"3213:42:5"},{"documentation":{"id":475,"nodeType":"StructuredDocumentation","src":"3261:159:5","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":479,"name":"ERC721InvalidReceiver","nameLocation":"3431:21:5","nodeType":"ErrorDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":477,"mutability":"mutable","name":"receiver","nameLocation":"3461:8:5","nodeType":"VariableDeclaration","scope":479,"src":"3453:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":476,"name":"address","nodeType":"ElementaryTypeName","src":"3453:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3452:18:5"},"src":"3425:46:5"},{"documentation":{"id":480,"nodeType":"StructuredDocumentation","src":"3477:247:5","text":" @dev Indicates a failure with the `operator`โ€™s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":486,"name":"ERC721InsufficientApproval","nameLocation":"3735:26:5","nodeType":"ErrorDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":482,"mutability":"mutable","name":"operator","nameLocation":"3770:8:5","nodeType":"VariableDeclaration","scope":486,"src":"3762:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":481,"name":"address","nodeType":"ElementaryTypeName","src":"3762:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":484,"mutability":"mutable","name":"tokenId","nameLocation":"3788:7:5","nodeType":"VariableDeclaration","scope":486,"src":"3780:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":483,"name":"uint256","nodeType":"ElementaryTypeName","src":"3780:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3761:35:5"},"src":"3729:68:5"},{"documentation":{"id":487,"nodeType":"StructuredDocumentation","src":"3803:174:5","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":491,"name":"ERC721InvalidApprover","nameLocation":"3988:21:5","nodeType":"ErrorDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":489,"mutability":"mutable","name":"approver","nameLocation":"4018:8:5","nodeType":"VariableDeclaration","scope":491,"src":"4010:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":488,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4009:18:5"},"src":"3982:46:5"},{"documentation":{"id":492,"nodeType":"StructuredDocumentation","src":"4034:197:5","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":496,"name":"ERC721InvalidOperator","nameLocation":"4242:21:5","nodeType":"ErrorDefinition","parameters":{"id":495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":494,"mutability":"mutable","name":"operator","nameLocation":"4272:8:5","nodeType":"VariableDeclaration","scope":496,"src":"4264:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":493,"name":"address","nodeType":"ElementaryTypeName","src":"4264:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4263:18:5"},"src":"4236:46:5"}],"scope":545,"src":"2191:2093:5","usedErrors":[455,460,469,474,479,486,491,496],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":498,"nodeType":"StructuredDocumentation","src":"4286:145:5","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":544,"linearizedBaseContracts":[544],"name":"IERC1155Errors","nameLocation":"4442:14:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":499,"nodeType":"StructuredDocumentation","src":"4463:361:5","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":509,"name":"ERC1155InsufficientBalance","nameLocation":"4835:26:5","nodeType":"ErrorDefinition","parameters":{"id":508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"sender","nameLocation":"4870:6:5","nodeType":"VariableDeclaration","scope":509,"src":"4862:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"4862:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":503,"mutability":"mutable","name":"balance","nameLocation":"4886:7:5","nodeType":"VariableDeclaration","scope":509,"src":"4878:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":502,"name":"uint256","nodeType":"ElementaryTypeName","src":"4878:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":505,"mutability":"mutable","name":"needed","nameLocation":"4903:6:5","nodeType":"VariableDeclaration","scope":509,"src":"4895:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":504,"name":"uint256","nodeType":"ElementaryTypeName","src":"4895:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":507,"mutability":"mutable","name":"tokenId","nameLocation":"4919:7:5","nodeType":"VariableDeclaration","scope":509,"src":"4911:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":506,"name":"uint256","nodeType":"ElementaryTypeName","src":"4911:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4861:66:5"},"src":"4829:99:5"},{"documentation":{"id":510,"nodeType":"StructuredDocumentation","src":"4934:152:5","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":514,"name":"ERC1155InvalidSender","nameLocation":"5097:20:5","nodeType":"ErrorDefinition","parameters":{"id":513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":512,"mutability":"mutable","name":"sender","nameLocation":"5126:6:5","nodeType":"VariableDeclaration","scope":514,"src":"5118:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":511,"name":"address","nodeType":"ElementaryTypeName","src":"5118:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5117:16:5"},"src":"5091:43:5"},{"documentation":{"id":515,"nodeType":"StructuredDocumentation","src":"5140:159:5","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":519,"name":"ERC1155InvalidReceiver","nameLocation":"5310:22:5","nodeType":"ErrorDefinition","parameters":{"id":518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":517,"mutability":"mutable","name":"receiver","nameLocation":"5341:8:5","nodeType":"VariableDeclaration","scope":519,"src":"5333:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"5333:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5332:18:5"},"src":"5304:47:5"},{"documentation":{"id":520,"nodeType":"StructuredDocumentation","src":"5357:256:5","text":" @dev Indicates a failure with the `operator`โ€™s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":526,"name":"ERC1155MissingApprovalForAll","nameLocation":"5624:28:5","nodeType":"ErrorDefinition","parameters":{"id":525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"operator","nameLocation":"5661:8:5","nodeType":"VariableDeclaration","scope":526,"src":"5653:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":521,"name":"address","nodeType":"ElementaryTypeName","src":"5653:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":524,"mutability":"mutable","name":"owner","nameLocation":"5679:5:5","nodeType":"VariableDeclaration","scope":526,"src":"5671:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":523,"name":"address","nodeType":"ElementaryTypeName","src":"5671:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5652:33:5"},"src":"5618:68:5"},{"documentation":{"id":527,"nodeType":"StructuredDocumentation","src":"5692:174:5","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":531,"name":"ERC1155InvalidApprover","nameLocation":"5877:22:5","nodeType":"ErrorDefinition","parameters":{"id":530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":529,"mutability":"mutable","name":"approver","nameLocation":"5908:8:5","nodeType":"VariableDeclaration","scope":531,"src":"5900:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":528,"name":"address","nodeType":"ElementaryTypeName","src":"5900:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5899:18:5"},"src":"5871:47:5"},{"documentation":{"id":532,"nodeType":"StructuredDocumentation","src":"5924:197:5","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":536,"name":"ERC1155InvalidOperator","nameLocation":"6132:22:5","nodeType":"ErrorDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":534,"mutability":"mutable","name":"operator","nameLocation":"6163:8:5","nodeType":"VariableDeclaration","scope":536,"src":"6155:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"6155:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6154:18:5"},"src":"6126:47:5"},{"documentation":{"id":537,"nodeType":"StructuredDocumentation","src":"6179:280:5","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":543,"name":"ERC1155InvalidArrayLength","nameLocation":"6470:25:5","nodeType":"ErrorDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":539,"mutability":"mutable","name":"idsLength","nameLocation":"6504:9:5","nodeType":"VariableDeclaration","scope":543,"src":"6496:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":538,"name":"uint256","nodeType":"ElementaryTypeName","src":"6496:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":541,"mutability":"mutable","name":"valuesLength","nameLocation":"6523:12:5","nodeType":"VariableDeclaration","scope":543,"src":"6515:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"6515:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6495:41:5"},"src":"6464:73:5"}],"scope":545,"src":"4432:2107:5","usedErrors":[509,514,519,526,531,536,543],"usedEvents":[]}],"src":"113:6427:5"},"id":5},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[2382],"ERC20":[1059],"IERC20":[1137],"IERC20Errors":[449],"IERC20Metadata":[1897]},"id":1060,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":546,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:6"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":548,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1060,"sourceUnit":1138,"src":"131:36:6","symbolAliases":[{"foreign":{"id":547,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"139:6:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":550,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1060,"sourceUnit":1898,"src":"168:63:6","symbolAliases":[{"foreign":{"id":549,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"176:14:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":552,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1060,"sourceUnit":2383,"src":"232:48:6","symbolAliases":[{"foreign":{"id":551,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"240:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":554,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1060,"sourceUnit":545,"src":"281:65:6","symbolAliases":[{"foreign":{"id":553,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"289:12:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":556,"name":"Context","nameLocations":["1133:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":2382,"src":"1133:7:6"},"id":557,"nodeType":"InheritanceSpecifier","src":"1133:7:6"},{"baseName":{"id":558,"name":"IERC20","nameLocations":["1142:6:6"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"1142:6:6"},"id":559,"nodeType":"InheritanceSpecifier","src":"1142:6:6"},{"baseName":{"id":560,"name":"IERC20Metadata","nameLocations":["1150:14:6"],"nodeType":"IdentifierPath","referencedDeclaration":1897,"src":"1150:14:6"},"id":561,"nodeType":"InheritanceSpecifier","src":"1150:14:6"},{"baseName":{"id":562,"name":"IERC20Errors","nameLocations":["1166:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":449,"src":"1166:12:6"},"id":563,"nodeType":"InheritanceSpecifier","src":"1166:12:6"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":555,"nodeType":"StructuredDocumentation","src":"348:757:6","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"id":1059,"linearizedBaseContracts":[1059,449,1897,1137,2382],"name":"ERC20","nameLocation":"1124:5:6","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":567,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:6","nodeType":"VariableDeclaration","scope":1059,"src":"1185:53:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":566,"keyName":"account","keyNameLocation":"1201:7:6","keyType":{"id":564,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":573,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:6","nodeType":"VariableDeclaration","scope":1059,"src":"1245:83:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":572,"keyName":"account","keyNameLocation":"1261:7:6","keyType":{"id":568,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":571,"keyName":"spender","keyNameLocation":"1288:7:6","keyType":{"id":569,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":570,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":575,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:6","nodeType":"VariableDeclaration","scope":1059,"src":"1335:28:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":574,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":577,"mutability":"mutable","name":"_name","nameLocation":"1385:5:6","nodeType":"VariableDeclaration","scope":1059,"src":"1370:20:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":576,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":579,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:6","nodeType":"VariableDeclaration","scope":1059,"src":"1396:22:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":578,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":595,"nodeType":"Block","src":"1638:57:6","statements":[{"expression":{"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":587,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"1648:5:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":588,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"1656:5:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":590,"nodeType":"ExpressionStatement","src":"1648:13:6"},{"expression":{"id":593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":591,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":579,"src":"1671:7:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":592,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"1681:7:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":594,"nodeType":"ExpressionStatement","src":"1671:17:6"}]},"documentation":{"id":580,"nodeType":"StructuredDocumentation","src":"1425:152:6","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":596,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":582,"mutability":"mutable","name":"name_","nameLocation":"1608:5:6","nodeType":"VariableDeclaration","scope":596,"src":"1594:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":581,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":584,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:6","nodeType":"VariableDeclaration","scope":596,"src":"1615:21:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":583,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:6"},"returnParameters":{"id":586,"nodeType":"ParameterList","parameters":[],"src":"1638:0:6"},"scope":1059,"src":"1582:113:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1884],"body":{"id":604,"nodeType":"Block","src":"1820:29:6","statements":[{"expression":{"id":602,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"1837:5:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":601,"id":603,"nodeType":"Return","src":"1830:12:6"}]},"documentation":{"id":597,"nodeType":"StructuredDocumentation","src":"1701:54:6","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":605,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:6","nodeType":"FunctionDefinition","parameters":{"id":598,"nodeType":"ParameterList","parameters":[],"src":"1773:2:6"},"returnParameters":{"id":601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":600,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":605,"src":"1805:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":599,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:6"},"scope":1059,"src":"1760:89:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1890],"body":{"id":613,"nodeType":"Block","src":"2024:31:6","statements":[{"expression":{"id":611,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":579,"src":"2041:7:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":610,"id":612,"nodeType":"Return","src":"2034:14:6"}]},"documentation":{"id":606,"nodeType":"StructuredDocumentation","src":"1855:102:6","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":614,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:6","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[],"src":"1977:2:6"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":614,"src":"2009:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":608,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:6"},"scope":1059,"src":"1962:93:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1896],"body":{"id":622,"nodeType":"Block","src":"2744:26:6","statements":[{"expression":{"hexValue":"3138","id":620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:6","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":619,"id":621,"nodeType":"Return","src":"2754:9:6"}]},"documentation":{"id":615,"nodeType":"StructuredDocumentation","src":"2061:622:6","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":623,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:6","nodeType":"FunctionDefinition","parameters":{"id":616,"nodeType":"ParameterList","parameters":[],"src":"2705:2:6"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":623,"src":"2737:5:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":617,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:6"},"scope":1059,"src":"2688:82:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1086],"body":{"id":631,"nodeType":"Block","src":"2864:36:6","statements":[{"expression":{"id":629,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"2881:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":628,"id":630,"nodeType":"Return","src":"2874:19:6"}]},"documentation":{"id":624,"nodeType":"StructuredDocumentation","src":"2776:22:6","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","id":632,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2812:11:6","nodeType":"FunctionDefinition","parameters":{"id":625,"nodeType":"ParameterList","parameters":[],"src":"2823:2:6"},"returnParameters":{"id":628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":632,"src":"2855:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":626,"name":"uint256","nodeType":"ElementaryTypeName","src":"2855:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2854:9:6"},"scope":1059,"src":"2803:97:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1094],"body":{"id":644,"nodeType":"Block","src":"3007:42:6","statements":[{"expression":{"baseExpression":{"id":640,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3024:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":642,"indexExpression":{"id":641,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"3034:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3024:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":639,"id":643,"nodeType":"Return","src":"3017:25:6"}]},"documentation":{"id":633,"nodeType":"StructuredDocumentation","src":"2906:22:6","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","id":645,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2942:9:6","nodeType":"FunctionDefinition","parameters":{"id":636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":635,"mutability":"mutable","name":"account","nameLocation":"2960:7:6","nodeType":"VariableDeclaration","scope":645,"src":"2952:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":634,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2951:17:6"},"returnParameters":{"id":639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":645,"src":"2998:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":637,"name":"uint256","nodeType":"ElementaryTypeName","src":"2998:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2997:9:6"},"scope":1059,"src":"2933:116:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1104],"body":{"id":668,"nodeType":"Block","src":"3319:103:6","statements":[{"assignments":[656],"declarations":[{"constant":false,"id":656,"mutability":"mutable","name":"owner","nameLocation":"3337:5:6","nodeType":"VariableDeclaration","scope":668,"src":"3329:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"3329:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":659,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":657,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"3345:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3329:28:6"},{"expression":{"arguments":[{"id":661,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":656,"src":"3377:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":662,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"3384:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":663,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"3388:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":660,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"3367:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":665,"nodeType":"ExpressionStatement","src":"3367:27:6"},{"expression":{"hexValue":"74727565","id":666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3411:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":654,"id":667,"nodeType":"Return","src":"3404:11:6"}]},"documentation":{"id":646,"nodeType":"StructuredDocumentation","src":"3055:184:6","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":669,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3253:8:6","nodeType":"FunctionDefinition","parameters":{"id":651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":648,"mutability":"mutable","name":"to","nameLocation":"3270:2:6","nodeType":"VariableDeclaration","scope":669,"src":"3262:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":647,"name":"address","nodeType":"ElementaryTypeName","src":"3262:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":650,"mutability":"mutable","name":"value","nameLocation":"3282:5:6","nodeType":"VariableDeclaration","scope":669,"src":"3274:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":649,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3261:27:6"},"returnParameters":{"id":654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":653,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":669,"src":"3313:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":652,"name":"bool","nodeType":"ElementaryTypeName","src":"3313:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3312:6:6"},"scope":1059,"src":"3244:178:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1114],"body":{"id":685,"nodeType":"Block","src":"3544:51:6","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":679,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"3561:11:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":681,"indexExpression":{"id":680,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"3573:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":683,"indexExpression":{"id":682,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"3580:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":678,"id":684,"nodeType":"Return","src":"3554:34:6"}]},"documentation":{"id":670,"nodeType":"StructuredDocumentation","src":"3428:22:6","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","id":686,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3464:9:6","nodeType":"FunctionDefinition","parameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":672,"mutability":"mutable","name":"owner","nameLocation":"3482:5:6","nodeType":"VariableDeclaration","scope":686,"src":"3474:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":671,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":674,"mutability":"mutable","name":"spender","nameLocation":"3497:7:6","nodeType":"VariableDeclaration","scope":686,"src":"3489:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":673,"name":"address","nodeType":"ElementaryTypeName","src":"3489:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3473:32:6"},"returnParameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":677,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":686,"src":"3535:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":676,"name":"uint256","nodeType":"ElementaryTypeName","src":"3535:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:9:6"},"scope":1059,"src":"3455:140:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1124],"body":{"id":709,"nodeType":"Block","src":"3981:107:6","statements":[{"assignments":[697],"declarations":[{"constant":false,"id":697,"mutability":"mutable","name":"owner","nameLocation":"3999:5:6","nodeType":"VariableDeclaration","scope":709,"src":"3991:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":696,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":700,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":698,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"4007:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3991:28:6"},{"expression":{"arguments":[{"id":702,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"4038:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":703,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"4045:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":704,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4054:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":701,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[950,1010],"referencedDeclaration":950,"src":"4029:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":706,"nodeType":"ExpressionStatement","src":"4029:31:6"},{"expression":{"hexValue":"74727565","id":707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4077:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":695,"id":708,"nodeType":"Return","src":"4070:11:6"}]},"documentation":{"id":687,"nodeType":"StructuredDocumentation","src":"3601:296:6","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":710,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3911:7:6","nodeType":"FunctionDefinition","parameters":{"id":692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":689,"mutability":"mutable","name":"spender","nameLocation":"3927:7:6","nodeType":"VariableDeclaration","scope":710,"src":"3919:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":688,"name":"address","nodeType":"ElementaryTypeName","src":"3919:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":691,"mutability":"mutable","name":"value","nameLocation":"3944:5:6","nodeType":"VariableDeclaration","scope":710,"src":"3936:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":690,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3918:32:6"},"returnParameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":710,"src":"3975:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":693,"name":"bool","nodeType":"ElementaryTypeName","src":"3975:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3974:6:6"},"scope":1059,"src":"3902:186:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1136],"body":{"id":741,"nodeType":"Block","src":"4773:151:6","statements":[{"assignments":[723],"declarations":[{"constant":false,"id":723,"mutability":"mutable","name":"spender","nameLocation":"4791:7:6","nodeType":"VariableDeclaration","scope":741,"src":"4783:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":722,"name":"address","nodeType":"ElementaryTypeName","src":"4783:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":726,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":724,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"4801:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4801:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4783:30:6"},{"expression":{"arguments":[{"id":728,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":713,"src":"4839:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":729,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"4845:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":730,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"4854:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":727,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1058,"src":"4823:15:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":732,"nodeType":"ExpressionStatement","src":"4823:37:6"},{"expression":{"arguments":[{"id":734,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":713,"src":"4880:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":735,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":715,"src":"4886:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"4890:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":733,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"4870:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4870:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":738,"nodeType":"ExpressionStatement","src":"4870:26:6"},{"expression":{"hexValue":"74727565","id":739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4913:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":721,"id":740,"nodeType":"Return","src":"4906:11:6"}]},"documentation":{"id":711,"nodeType":"StructuredDocumentation","src":"4094:581:6","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":742,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4689:12:6","nodeType":"FunctionDefinition","parameters":{"id":718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":713,"mutability":"mutable","name":"from","nameLocation":"4710:4:6","nodeType":"VariableDeclaration","scope":742,"src":"4702:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":712,"name":"address","nodeType":"ElementaryTypeName","src":"4702:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":715,"mutability":"mutable","name":"to","nameLocation":"4724:2:6","nodeType":"VariableDeclaration","scope":742,"src":"4716:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":714,"name":"address","nodeType":"ElementaryTypeName","src":"4716:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":717,"mutability":"mutable","name":"value","nameLocation":"4736:5:6","nodeType":"VariableDeclaration","scope":742,"src":"4728:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":716,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:41:6"},"returnParameters":{"id":721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":742,"src":"4767:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":719,"name":"bool","nodeType":"ElementaryTypeName","src":"4767:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4766:6:6"},"scope":1059,"src":"4680:244:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":788,"nodeType":"Block","src":"5366:231:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"5380:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5396:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5388:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":753,"name":"address","nodeType":"ElementaryTypeName","src":"5388:7:6","typeDescriptions":{}}},"id":756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5380:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":766,"nodeType":"IfStatement","src":"5376:86:6","trueBody":{"id":765,"nodeType":"Block","src":"5400:62:6","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5448:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5440:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":759,"name":"address","nodeType":"ElementaryTypeName","src":"5440:7:6","typeDescriptions":{}}},"id":762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5440:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":758,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"5421:18:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:30:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":764,"nodeType":"RevertStatement","src":"5414:37:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":767,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"5475:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5489:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5481:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":768,"name":"address","nodeType":"ElementaryTypeName","src":"5481:7:6","typeDescriptions":{}}},"id":771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5475:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":781,"nodeType":"IfStatement","src":"5471:86:6","trueBody":{"id":780,"nodeType":"Block","src":"5493:64:6","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5543:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5535:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":774,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:6","typeDescriptions":{}}},"id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":773,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"5514:20:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:32:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":779,"nodeType":"RevertStatement","src":"5507:39:6"}]}},{"expression":{"arguments":[{"id":783,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"5574:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":784,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"5580:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":785,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":749,"src":"5584:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":782,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"5566:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5566:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":787,"nodeType":"ExpressionStatement","src":"5566:24:6"}]},"documentation":{"id":743,"nodeType":"StructuredDocumentation","src":"4930:362:6","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":789,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5306:9:6","nodeType":"FunctionDefinition","parameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":745,"mutability":"mutable","name":"from","nameLocation":"5324:4:6","nodeType":"VariableDeclaration","scope":789,"src":"5316:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":744,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":747,"mutability":"mutable","name":"to","nameLocation":"5338:2:6","nodeType":"VariableDeclaration","scope":789,"src":"5330:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":746,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":749,"mutability":"mutable","name":"value","nameLocation":"5350:5:6","nodeType":"VariableDeclaration","scope":789,"src":"5342:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":748,"name":"uint256","nodeType":"ElementaryTypeName","src":"5342:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5315:41:6"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[],"src":"5366:0:6"},"scope":1059,"src":"5297:300:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":865,"nodeType":"Block","src":"5987:1032:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"6001:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6017:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6009:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":800,"name":"address","nodeType":"ElementaryTypeName","src":"6009:7:6","typeDescriptions":{}}},"id":803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6009:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6001:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":836,"nodeType":"Block","src":"6175:362:6","statements":[{"assignments":[811],"declarations":[{"constant":false,"id":811,"mutability":"mutable","name":"fromBalance","nameLocation":"6197:11:6","nodeType":"VariableDeclaration","scope":836,"src":"6189:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":810,"name":"uint256","nodeType":"ElementaryTypeName","src":"6189:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":815,"initialValue":{"baseExpression":{"id":812,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"6211:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":814,"indexExpression":{"id":813,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"6221:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6211:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6189:37:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":816,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"6244:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":817,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"6258:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6244:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":826,"nodeType":"IfStatement","src":"6240:115:6","trueBody":{"id":825,"nodeType":"Block","src":"6265:90:6","statements":[{"errorCall":{"arguments":[{"id":820,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"6315:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":821,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"6321:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":822,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"6334:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":819,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"6290:24:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:50:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":824,"nodeType":"RevertStatement","src":"6283:57:6"}]}},{"id":835,"nodeType":"UncheckedBlock","src":"6368:159:6","statements":[{"expression":{"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":827,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"6475:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":829,"indexExpression":{"id":828,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"6485:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6475:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":830,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"6493:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":831,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"6507:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6493:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6475:37:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":834,"nodeType":"ExpressionStatement","src":"6475:37:6"}]}]},"id":837,"nodeType":"IfStatement","src":"5997:540:6","trueBody":{"id":809,"nodeType":"Block","src":"6021:148:6","statements":[{"expression":{"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":805,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"6137:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":806,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"6153:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6137:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":808,"nodeType":"ExpressionStatement","src":"6137:21:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":838,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"6551:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6565:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6557:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":839,"name":"address","nodeType":"ElementaryTypeName","src":"6557:7:6","typeDescriptions":{}}},"id":842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6557:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6551:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":857,"nodeType":"Block","src":"6766:206:6","statements":[{"id":856,"nodeType":"UncheckedBlock","src":"6780:182:6","statements":[{"expression":{"id":854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":850,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"6925:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":852,"indexExpression":{"id":851,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"6935:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6925:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":853,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"6942:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6925:22:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":855,"nodeType":"ExpressionStatement","src":"6925:22:6"}]}]},"id":858,"nodeType":"IfStatement","src":"6547:425:6","trueBody":{"id":849,"nodeType":"Block","src":"6569:191:6","statements":[{"id":848,"nodeType":"UncheckedBlock","src":"6583:167:6","statements":[{"expression":{"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":844,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"6714:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"6730:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6714:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":847,"nodeType":"ExpressionStatement","src":"6714:21:6"}]}]}},{"eventCall":{"arguments":[{"id":860,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"6996:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":861,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"7002:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":862,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"7006:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":859,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1071,"src":"6987:8:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6987:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":864,"nodeType":"EmitStatement","src":"6982:30:6"}]},"documentation":{"id":790,"nodeType":"StructuredDocumentation","src":"5603:304:6","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":866,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5921:7:6","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"from","nameLocation":"5937:4:6","nodeType":"VariableDeclaration","scope":866,"src":"5929:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":791,"name":"address","nodeType":"ElementaryTypeName","src":"5929:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":794,"mutability":"mutable","name":"to","nameLocation":"5951:2:6","nodeType":"VariableDeclaration","scope":866,"src":"5943:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":793,"name":"address","nodeType":"ElementaryTypeName","src":"5943:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":796,"mutability":"mutable","name":"value","nameLocation":"5963:5:6","nodeType":"VariableDeclaration","scope":866,"src":"5955:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":795,"name":"uint256","nodeType":"ElementaryTypeName","src":"5955:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5928:41:6"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[],"src":"5987:0:6"},"scope":1059,"src":"5912:1107:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":898,"nodeType":"Block","src":"7418:152:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":869,"src":"7432:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7451:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7443:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":875,"name":"address","nodeType":"ElementaryTypeName","src":"7443:7:6","typeDescriptions":{}}},"id":878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7443:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7432:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"7428:91:6","trueBody":{"id":887,"nodeType":"Block","src":"7455:64:6","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7505:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7497:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":881,"name":"address","nodeType":"ElementaryTypeName","src":"7497:7:6","typeDescriptions":{}}},"id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7497:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":880,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"7476:20:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7476:32:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":886,"nodeType":"RevertStatement","src":"7469:39:6"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7544:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7536:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"7536:7:6","typeDescriptions":{}}},"id":893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":894,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":869,"src":"7548:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"7557:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":889,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"7528:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:35:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":897,"nodeType":"ExpressionStatement","src":"7528:35:6"}]},"documentation":{"id":867,"nodeType":"StructuredDocumentation","src":"7025:332:6","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":899,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7371:5:6","nodeType":"FunctionDefinition","parameters":{"id":872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":869,"mutability":"mutable","name":"account","nameLocation":"7385:7:6","nodeType":"VariableDeclaration","scope":899,"src":"7377:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":868,"name":"address","nodeType":"ElementaryTypeName","src":"7377:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":871,"mutability":"mutable","name":"value","nameLocation":"7402:5:6","nodeType":"VariableDeclaration","scope":899,"src":"7394:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":870,"name":"uint256","nodeType":"ElementaryTypeName","src":"7394:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:32:6"},"returnParameters":{"id":873,"nodeType":"ParameterList","parameters":[],"src":"7418:0:6"},"scope":1059,"src":"7362:208:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":931,"nodeType":"Block","src":"7944:150:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":907,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"7958:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7977:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7969:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":908,"name":"address","nodeType":"ElementaryTypeName","src":"7969:7:6","typeDescriptions":{}}},"id":911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7969:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7958:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":921,"nodeType":"IfStatement","src":"7954:89:6","trueBody":{"id":920,"nodeType":"Block","src":"7981:62:6","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8021:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":914,"name":"address","nodeType":"ElementaryTypeName","src":"8021:7:6","typeDescriptions":{}}},"id":917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8021:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":913,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"8002:18:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8002:30:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":919,"nodeType":"RevertStatement","src":"7995:37:6"}]}},{"expression":{"arguments":[{"id":923,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"8060:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8077:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8069:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":924,"name":"address","nodeType":"ElementaryTypeName","src":"8069:7:6","typeDescriptions":{}}},"id":927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":928,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"8081:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":922,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"8052:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:35:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":930,"nodeType":"ExpressionStatement","src":"8052:35:6"}]},"documentation":{"id":900,"nodeType":"StructuredDocumentation","src":"7576:307:6","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":932,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7897:5:6","nodeType":"FunctionDefinition","parameters":{"id":905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":902,"mutability":"mutable","name":"account","nameLocation":"7911:7:6","nodeType":"VariableDeclaration","scope":932,"src":"7903:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":901,"name":"address","nodeType":"ElementaryTypeName","src":"7903:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":904,"mutability":"mutable","name":"value","nameLocation":"7928:5:6","nodeType":"VariableDeclaration","scope":932,"src":"7920:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":903,"name":"uint256","nodeType":"ElementaryTypeName","src":"7920:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7902:32:6"},"returnParameters":{"id":906,"nodeType":"ParameterList","parameters":[],"src":"7944:0:6"},"scope":1059,"src":"7888:206:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":949,"nodeType":"Block","src":"8704:54:6","statements":[{"expression":{"arguments":[{"id":943,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"8723:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":944,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":937,"src":"8730:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":945,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":939,"src":"8739:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8746:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":942,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[950,1010],"referencedDeclaration":1010,"src":"8714:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8714:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":948,"nodeType":"ExpressionStatement","src":"8714:37:6"}]},"documentation":{"id":933,"nodeType":"StructuredDocumentation","src":"8100:525:6","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":950,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8639:8:6","nodeType":"FunctionDefinition","parameters":{"id":940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":935,"mutability":"mutable","name":"owner","nameLocation":"8656:5:6","nodeType":"VariableDeclaration","scope":950,"src":"8648:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":934,"name":"address","nodeType":"ElementaryTypeName","src":"8648:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":937,"mutability":"mutable","name":"spender","nameLocation":"8671:7:6","nodeType":"VariableDeclaration","scope":950,"src":"8663:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"8663:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":939,"mutability":"mutable","name":"value","nameLocation":"8688:5:6","nodeType":"VariableDeclaration","scope":950,"src":"8680:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":938,"name":"uint256","nodeType":"ElementaryTypeName","src":"8680:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8647:47:6"},"returnParameters":{"id":941,"nodeType":"ParameterList","parameters":[],"src":"8704:0:6"},"scope":1059,"src":"8630:128:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1009,"nodeType":"Block","src":"9705:334:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":962,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"9719:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9736:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9728:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":963,"name":"address","nodeType":"ElementaryTypeName","src":"9728:7:6","typeDescriptions":{}}},"id":966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9728:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9719:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":976,"nodeType":"IfStatement","src":"9715:89:6","trueBody":{"id":975,"nodeType":"Block","src":"9740:64:6","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9790:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9782:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":969,"name":"address","nodeType":"ElementaryTypeName","src":"9782:7:6","typeDescriptions":{}}},"id":972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9782:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":968,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":443,"src":"9761:20:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9761:32:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":974,"nodeType":"RevertStatement","src":"9754:39:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":977,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"9817:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9828:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":978,"name":"address","nodeType":"ElementaryTypeName","src":"9828:7:6","typeDescriptions":{}}},"id":981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9828:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9817:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":991,"nodeType":"IfStatement","src":"9813:90:6","trueBody":{"id":990,"nodeType":"Block","src":"9840:63:6","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9889:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9881:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":984,"name":"address","nodeType":"ElementaryTypeName","src":"9881:7:6","typeDescriptions":{}}},"id":987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9881:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":983,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"9861:19:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":989,"nodeType":"RevertStatement","src":"9854:38:6"}]}},{"expression":{"id":998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":992,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"9912:11:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":995,"indexExpression":{"id":993,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"9924:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9912:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":996,"indexExpression":{"id":994,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"9931:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9912:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"9942:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9912:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":999,"nodeType":"ExpressionStatement","src":"9912:35:6"},{"condition":{"id":1000,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"9961:9:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1008,"nodeType":"IfStatement","src":"9957:76:6","trueBody":{"id":1007,"nodeType":"Block","src":"9972:61:6","statements":[{"eventCall":{"arguments":[{"id":1002,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"10000:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1003,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"10007:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1004,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"10016:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1001,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"9991:8:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9991:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1006,"nodeType":"EmitStatement","src":"9986:36:6"}]}}]},"documentation":{"id":951,"nodeType":"StructuredDocumentation","src":"8764:838:6","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":1010,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9616:8:6","nodeType":"FunctionDefinition","parameters":{"id":960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":953,"mutability":"mutable","name":"owner","nameLocation":"9633:5:6","nodeType":"VariableDeclaration","scope":1010,"src":"9625:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":952,"name":"address","nodeType":"ElementaryTypeName","src":"9625:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"spender","nameLocation":"9648:7:6","nodeType":"VariableDeclaration","scope":1010,"src":"9640:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"9640:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":957,"mutability":"mutable","name":"value","nameLocation":"9665:5:6","nodeType":"VariableDeclaration","scope":1010,"src":"9657:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":956,"name":"uint256","nodeType":"ElementaryTypeName","src":"9657:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":959,"mutability":"mutable","name":"emitEvent","nameLocation":"9677:9:6","nodeType":"VariableDeclaration","scope":1010,"src":"9672:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":958,"name":"bool","nodeType":"ElementaryTypeName","src":"9672:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9624:63:6"},"returnParameters":{"id":961,"nodeType":"ParameterList","parameters":[],"src":"9705:0:6"},"scope":1059,"src":"9607:432:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1057,"nodeType":"Block","src":"10410:387:6","statements":[{"assignments":[1021],"declarations":[{"constant":false,"id":1021,"mutability":"mutable","name":"currentAllowance","nameLocation":"10428:16:6","nodeType":"VariableDeclaration","scope":1057,"src":"10420:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1020,"name":"uint256","nodeType":"ElementaryTypeName","src":"10420:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1026,"initialValue":{"arguments":[{"id":1023,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"10457:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1024,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1015,"src":"10464:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1022,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"10447:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10447:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10420:52:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1027,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"10486:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":1030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10510:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"10510:7:6","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1028,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10505:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10505:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10519:3:6","memberName":"max","nodeType":"MemberAccess","src":"10505:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10486:36:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1056,"nodeType":"IfStatement","src":"10482:309:6","trueBody":{"id":1055,"nodeType":"Block","src":"10524:267:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1034,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"10542:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"10561:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10542:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1044,"nodeType":"IfStatement","src":"10538:130:6","trueBody":{"id":1043,"nodeType":"Block","src":"10568:100:6","statements":[{"errorCall":{"arguments":[{"id":1038,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1015,"src":"10620:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1039,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"10629:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1040,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"10647:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1037,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":438,"src":"10593:26:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10593:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1042,"nodeType":"RevertStatement","src":"10586:67:6"}]}},{"id":1054,"nodeType":"UncheckedBlock","src":"10681:100:6","statements":[{"expression":{"arguments":[{"id":1046,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"10718:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1047,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1015,"src":"10725:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1048,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"10734:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1049,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"10753:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10734:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":1051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10760:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1045,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[950,1010],"referencedDeclaration":1010,"src":"10709:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10709:57:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1053,"nodeType":"ExpressionStatement","src":"10709:57:6"}]}]}}]},"documentation":{"id":1011,"nodeType":"StructuredDocumentation","src":"10045:271:6","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":1058,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10330:15:6","nodeType":"FunctionDefinition","parameters":{"id":1018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1013,"mutability":"mutable","name":"owner","nameLocation":"10354:5:6","nodeType":"VariableDeclaration","scope":1058,"src":"10346:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1012,"name":"address","nodeType":"ElementaryTypeName","src":"10346:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1015,"mutability":"mutable","name":"spender","nameLocation":"10369:7:6","nodeType":"VariableDeclaration","scope":1058,"src":"10361:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1014,"name":"address","nodeType":"ElementaryTypeName","src":"10361:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1017,"mutability":"mutable","name":"value","nameLocation":"10386:5:6","nodeType":"VariableDeclaration","scope":1058,"src":"10378:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1016,"name":"uint256","nodeType":"ElementaryTypeName","src":"10378:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10345:47:6"},"returnParameters":{"id":1019,"nodeType":"ParameterList","parameters":[],"src":"10410:0:6"},"scope":1059,"src":"10321:476:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1060,"src":"1106:9693:6","usedErrors":[419,424,429,438,443,448],"usedEvents":[1071,1080]}],"src":"105:10695:6"},"id":6},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[1137]},"id":1138,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1061,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":1062,"nodeType":"StructuredDocumentation","src":"133:71:7","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":1137,"linearizedBaseContracts":[1137],"name":"IERC20","nameLocation":"215:6:7","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1063,"nodeType":"StructuredDocumentation","src":"228:158:7","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1071,"name":"Transfer","nameLocation":"397:8:7","nodeType":"EventDefinition","parameters":{"id":1070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1065,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"422:4:7","nodeType":"VariableDeclaration","scope":1071,"src":"406:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1064,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1067,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"444:2:7","nodeType":"VariableDeclaration","scope":1071,"src":"428:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1066,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1069,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"456:5:7","nodeType":"VariableDeclaration","scope":1071,"src":"448:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1068,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"405:57:7"},"src":"391:72:7"},{"anonymous":false,"documentation":{"id":1072,"nodeType":"StructuredDocumentation","src":"469:148:7","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1080,"name":"Approval","nameLocation":"628:8:7","nodeType":"EventDefinition","parameters":{"id":1079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1074,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"653:5:7","nodeType":"VariableDeclaration","scope":1080,"src":"637:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1073,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1076,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"676:7:7","nodeType":"VariableDeclaration","scope":1080,"src":"660:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1075,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1078,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"693:5:7","nodeType":"VariableDeclaration","scope":1080,"src":"685:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1077,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:63:7"},"src":"622:78:7"},{"documentation":{"id":1081,"nodeType":"StructuredDocumentation","src":"706:65:7","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":1086,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"785:11:7","nodeType":"FunctionDefinition","parameters":{"id":1082,"nodeType":"ParameterList","parameters":[],"src":"796:2:7"},"returnParameters":{"id":1085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1086,"src":"822:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1083,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:9:7"},"scope":1137,"src":"776:55:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1087,"nodeType":"StructuredDocumentation","src":"837:71:7","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":1094,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"922:9:7","nodeType":"FunctionDefinition","parameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1089,"mutability":"mutable","name":"account","nameLocation":"940:7:7","nodeType":"VariableDeclaration","scope":1094,"src":"932:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1088,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:17:7"},"returnParameters":{"id":1093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1092,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1094,"src":"972:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1091,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"971:9:7"},"scope":1137,"src":"913:68:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1095,"nodeType":"StructuredDocumentation","src":"987:213:7","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":1104,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1214:8:7","nodeType":"FunctionDefinition","parameters":{"id":1100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1097,"mutability":"mutable","name":"to","nameLocation":"1231:2:7","nodeType":"VariableDeclaration","scope":1104,"src":"1223:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1096,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1099,"mutability":"mutable","name":"value","nameLocation":"1243:5:7","nodeType":"VariableDeclaration","scope":1104,"src":"1235:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:27:7"},"returnParameters":{"id":1103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1104,"src":"1268:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1101,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:7"},"scope":1137,"src":"1205:69:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1105,"nodeType":"StructuredDocumentation","src":"1280:264:7","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":1114,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:7","nodeType":"FunctionDefinition","parameters":{"id":1110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1107,"mutability":"mutable","name":"owner","nameLocation":"1576:5:7","nodeType":"VariableDeclaration","scope":1114,"src":"1568:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1106,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1109,"mutability":"mutable","name":"spender","nameLocation":"1591:7:7","nodeType":"VariableDeclaration","scope":1114,"src":"1583:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1108,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:7"},"returnParameters":{"id":1113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1114,"src":"1623:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1111,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:7"},"scope":1137,"src":"1549:83:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1115,"nodeType":"StructuredDocumentation","src":"1638:667:7","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1124,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2319:7:7","nodeType":"FunctionDefinition","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1117,"mutability":"mutable","name":"spender","nameLocation":"2335:7:7","nodeType":"VariableDeclaration","scope":1124,"src":"2327:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1116,"name":"address","nodeType":"ElementaryTypeName","src":"2327:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"value","nameLocation":"2352:5:7","nodeType":"VariableDeclaration","scope":1124,"src":"2344:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1118,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:32:7"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1124,"src":"2377:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1121,"name":"bool","nodeType":"ElementaryTypeName","src":"2377:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2376:6:7"},"scope":1137,"src":"2310:73:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1125,"nodeType":"StructuredDocumentation","src":"2389:297:7","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1136,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2700:12:7","nodeType":"FunctionDefinition","parameters":{"id":1132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1127,"mutability":"mutable","name":"from","nameLocation":"2721:4:7","nodeType":"VariableDeclaration","scope":1136,"src":"2713:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1126,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1129,"mutability":"mutable","name":"to","nameLocation":"2735:2:7","nodeType":"VariableDeclaration","scope":1136,"src":"2727:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1128,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1131,"mutability":"mutable","name":"value","nameLocation":"2747:5:7","nodeType":"VariableDeclaration","scope":1136,"src":"2739:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1130,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:41:7"},"returnParameters":{"id":1135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1136,"src":"2772:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1133,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:7"},"scope":1137,"src":"2691:87:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1138,"src":"205:2575:7","usedErrors":[],"usedEvents":[1071,1080]}],"src":"106:2675:7"},"id":7},"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol","exportedSymbols":{"ERC20":[1059],"ERC4626":[1871],"IERC20":[1137],"IERC20Metadata":[1897],"IERC4626":[407],"LowLevelCall":[2541],"Math":[4719],"Memory":[2890],"SafeERC20":[2352]},"id":1872,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1139,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"118:24:8"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"../ERC20.sol","id":1143,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1872,"sourceUnit":1060,"src":"144:59:8","symbolAliases":[{"foreign":{"id":1140,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"152:6:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1141,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"160:14:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1142,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1059,"src":"176:5:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"../utils/SafeERC20.sol","id":1145,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1872,"sourceUnit":2353,"src":"204:49:8","symbolAliases":[{"foreign":{"id":1144,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2352,"src":"212:9:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"../../../interfaces/IERC4626.sol","id":1147,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1872,"sourceUnit":408,"src":"254:58:8","symbolAliases":[{"foreign":{"id":1146,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"262:8:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/LowLevelCall.sol","file":"../../../utils/LowLevelCall.sol","id":1149,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1872,"sourceUnit":2542,"src":"313:61:8","symbolAliases":[{"foreign":{"id":1148,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"321:12:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Memory.sol","file":"../../../utils/Memory.sol","id":1151,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1872,"sourceUnit":2891,"src":"375:49:8","symbolAliases":[{"foreign":{"id":1150,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"383:6:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../../../utils/math/Math.sol","id":1153,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1872,"sourceUnit":4720,"src":"425:50:8","symbolAliases":[{"foreign":{"id":1152,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"433:4:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1155,"name":"ERC20","nameLocations":["4546:5:8"],"nodeType":"IdentifierPath","referencedDeclaration":1059,"src":"4546:5:8"},"id":1156,"nodeType":"InheritanceSpecifier","src":"4546:5:8"},{"baseName":{"id":1157,"name":"IERC4626","nameLocations":["4553:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":407,"src":"4553:8:8"},"id":1158,"nodeType":"InheritanceSpecifier","src":"4553:8:8"}],"canonicalName":"ERC4626","contractDependencies":[],"contractKind":"contract","documentation":{"id":1154,"nodeType":"StructuredDocumentation","src":"477:4039:8","text":" @dev Implementation of the ERC-4626 \"Tokenized Vault Standard\" as defined in\n https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n This extension allows the minting and burning of \"shares\" (represented using the ERC-20 inheritance) in exchange for\n underlying \"assets\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends\n the ERC-20 standard. Any additional extensions included along it would affect the \"shares\" token represented by this\n contract and not the \"assets\" token which is an independent contract.\n [CAUTION]\n ====\n In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning\n with a \"donation\" to the vault that inflates the price of a share. This is variously known as a donation or inflation\n attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial\n deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may\n similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by\n verifying the amount received is as expected, using a wrapper that performs these checks such as\n https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router].\n Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk.\n The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals\n and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which\n itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default\n offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result\n of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains.\n With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the\n underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here].\n The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued\n to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets\n will cause the first user to exit to experience reduced losses in detriment to the last users that will experience\n bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the\n `_convertToShares` and `_convertToAssets` functions.\n To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide].\n ====\n [NOTE]\n ====\n When overriding this contract, some elements must be considered:\n * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal\n functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw}\n automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing\n functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and\n {redeem}, which is documented to have led to loss of funds.\n * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well.\n * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand,\n overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two\n functions.\n * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it\n always return successfully.\n ===="},"fullyImplemented":true,"id":1871,"linearizedBaseContracts":[1871,407,1059,449,1897,1137,2382],"name":"ERC4626","nameLocation":"4535:7:8","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1161,"libraryName":{"id":1159,"name":"Math","nameLocations":["4574:4:8"],"nodeType":"IdentifierPath","referencedDeclaration":4719,"src":"4574:4:8"},"nodeType":"UsingForDirective","src":"4568:23:8","typeName":{"id":1160,"name":"uint256","nodeType":"ElementaryTypeName","src":"4583:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":1164,"mutability":"immutable","name":"_asset","nameLocation":"4622:6:8","nodeType":"VariableDeclaration","scope":1871,"src":"4597:31:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":1163,"nodeType":"UserDefinedTypeName","pathNode":{"id":1162,"name":"IERC20","nameLocations":["4597:6:8"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"4597:6:8"},"referencedDeclaration":1137,"src":"4597:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":1166,"mutability":"immutable","name":"_underlyingDecimals","nameLocation":"4658:19:8","nodeType":"VariableDeclaration","scope":1871,"src":"4634:43:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1165,"name":"uint8","nodeType":"ElementaryTypeName","src":"4634:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"documentation":{"id":1167,"nodeType":"StructuredDocumentation","src":"4684:92:8","text":" @dev Attempted to deposit more assets than the max amount for `receiver`."},"errorSelector":"79012fb2","id":1175,"name":"ERC4626ExceededMaxDeposit","nameLocation":"4787:25:8","nodeType":"ErrorDefinition","parameters":{"id":1174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1169,"mutability":"mutable","name":"receiver","nameLocation":"4821:8:8","nodeType":"VariableDeclaration","scope":1175,"src":"4813:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1168,"name":"address","nodeType":"ElementaryTypeName","src":"4813:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1171,"mutability":"mutable","name":"assets","nameLocation":"4839:6:8","nodeType":"VariableDeclaration","scope":1175,"src":"4831:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1170,"name":"uint256","nodeType":"ElementaryTypeName","src":"4831:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1173,"mutability":"mutable","name":"max","nameLocation":"4855:3:8","nodeType":"VariableDeclaration","scope":1175,"src":"4847:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1172,"name":"uint256","nodeType":"ElementaryTypeName","src":"4847:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4812:47:8"},"src":"4781:79:8"},{"documentation":{"id":1176,"nodeType":"StructuredDocumentation","src":"4866:89:8","text":" @dev Attempted to mint more shares than the max amount for `receiver`."},"errorSelector":"284ff667","id":1184,"name":"ERC4626ExceededMaxMint","nameLocation":"4966:22:8","nodeType":"ErrorDefinition","parameters":{"id":1183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1178,"mutability":"mutable","name":"receiver","nameLocation":"4997:8:8","nodeType":"VariableDeclaration","scope":1184,"src":"4989:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1177,"name":"address","nodeType":"ElementaryTypeName","src":"4989:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1180,"mutability":"mutable","name":"shares","nameLocation":"5015:6:8","nodeType":"VariableDeclaration","scope":1184,"src":"5007:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1179,"name":"uint256","nodeType":"ElementaryTypeName","src":"5007:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1182,"mutability":"mutable","name":"max","nameLocation":"5031:3:8","nodeType":"VariableDeclaration","scope":1184,"src":"5023:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"5023:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4988:47:8"},"src":"4960:76:8"},{"documentation":{"id":1185,"nodeType":"StructuredDocumentation","src":"5042:90:8","text":" @dev Attempted to withdraw more assets than the max amount for `owner`."},"errorSelector":"fe9cceec","id":1193,"name":"ERC4626ExceededMaxWithdraw","nameLocation":"5143:26:8","nodeType":"ErrorDefinition","parameters":{"id":1192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"owner","nameLocation":"5178:5:8","nodeType":"VariableDeclaration","scope":1193,"src":"5170:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1186,"name":"address","nodeType":"ElementaryTypeName","src":"5170:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1189,"mutability":"mutable","name":"assets","nameLocation":"5193:6:8","nodeType":"VariableDeclaration","scope":1193,"src":"5185:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1188,"name":"uint256","nodeType":"ElementaryTypeName","src":"5185:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1191,"mutability":"mutable","name":"max","nameLocation":"5209:3:8","nodeType":"VariableDeclaration","scope":1193,"src":"5201:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1190,"name":"uint256","nodeType":"ElementaryTypeName","src":"5201:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5169:44:8"},"src":"5137:77:8"},{"documentation":{"id":1194,"nodeType":"StructuredDocumentation","src":"5220:88:8","text":" @dev Attempted to redeem more shares than the max amount for `owner`."},"errorSelector":"b94abeec","id":1202,"name":"ERC4626ExceededMaxRedeem","nameLocation":"5319:24:8","nodeType":"ErrorDefinition","parameters":{"id":1201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1196,"mutability":"mutable","name":"owner","nameLocation":"5352:5:8","nodeType":"VariableDeclaration","scope":1202,"src":"5344:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1195,"name":"address","nodeType":"ElementaryTypeName","src":"5344:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1198,"mutability":"mutable","name":"shares","nameLocation":"5367:6:8","nodeType":"VariableDeclaration","scope":1202,"src":"5359:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1197,"name":"uint256","nodeType":"ElementaryTypeName","src":"5359:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1200,"mutability":"mutable","name":"max","nameLocation":"5383:3:8","nodeType":"VariableDeclaration","scope":1202,"src":"5375:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1199,"name":"uint256","nodeType":"ElementaryTypeName","src":"5375:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5343:44:8"},"src":"5313:75:8"},{"body":{"id":1228,"nodeType":"Block","src":"5547:168:8","statements":[{"assignments":[1210,1212],"declarations":[{"constant":false,"id":1210,"mutability":"mutable","name":"success","nameLocation":"5563:7:8","nodeType":"VariableDeclaration","scope":1228,"src":"5558:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1209,"name":"bool","nodeType":"ElementaryTypeName","src":"5558:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1212,"mutability":"mutable","name":"assetDecimals","nameLocation":"5578:13:8","nodeType":"VariableDeclaration","scope":1228,"src":"5572:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1211,"name":"uint8","nodeType":"ElementaryTypeName","src":"5572:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1216,"initialValue":{"arguments":[{"id":1214,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5616:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}],"id":1213,"name":"_tryGetAssetDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"5595:20:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$1137_$returns$_t_bool_$_t_uint8_$","typeString":"function (contract IERC20) view returns (bool,uint8)"}},"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5595:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"5557:66:8"},{"expression":{"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1217,"name":"_underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"5633:19:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":1218,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1210,"src":"5655:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"3138","id":1220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5681:2:8","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5655:28:8","trueExpression":{"id":1219,"name":"assetDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"5665:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5633:50:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1223,"nodeType":"ExpressionStatement","src":"5633:50:8"},{"expression":{"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1224,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"5693:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1225,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5702:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"src":"5693:15:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":1227,"nodeType":"ExpressionStatement","src":"5693:15:8"}]},"documentation":{"id":1203,"nodeType":"StructuredDocumentation","src":"5394:121:8","text":" @dev Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777)."},"id":1229,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1206,"mutability":"mutable","name":"asset_","nameLocation":"5539:6:8","nodeType":"VariableDeclaration","scope":1229,"src":"5532:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":1205,"nodeType":"UserDefinedTypeName","pathNode":{"id":1204,"name":"IERC20","nameLocations":["5532:6:8"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"5532:6:8"},"referencedDeclaration":1137,"src":"5532:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5531:15:8"},"returnParameters":{"id":1208,"nodeType":"ParameterList","parameters":[],"src":"5547:0:8"},"scope":1871,"src":"5520:195:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1306,"nodeType":"Block","src":"5955:516:8","statements":[{"assignments":[1244],"declarations":[{"constant":false,"id":1244,"mutability":"mutable","name":"ptr","nameLocation":"5980:3:8","nodeType":"VariableDeclaration","scope":1306,"src":"5965:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":1243,"nodeType":"UserDefinedTypeName","pathNode":{"id":1242,"name":"Memory.Pointer","nameLocations":["5965:6:8","5972:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"5965:14:8"},"referencedDeclaration":2550,"src":"5965:14:8","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":1248,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1245,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"5986:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$2890_$","typeString":"type(library Memory)"}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5993:20:8","memberName":"getFreeMemoryPointer","nodeType":"MemberAccess","referencedDeclaration":2559,"src":"5986:27:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function () pure returns (Memory.Pointer)"}},"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5986:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"5965:50:8"},{"assignments":[1250,1252,null],"declarations":[{"constant":false,"id":1250,"mutability":"mutable","name":"success","nameLocation":"6031:7:8","nodeType":"VariableDeclaration","scope":1306,"src":"6026:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1249,"name":"bool","nodeType":"ElementaryTypeName","src":"6026:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1252,"mutability":"mutable","name":"returnedDecimals","nameLocation":"6048:16:8","nodeType":"VariableDeclaration","scope":1306,"src":"6040:24:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6040:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},null],"id":1266,"initialValue":{"arguments":[{"arguments":[{"id":1257,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1233,"src":"6128:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}],"id":1256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6120:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1255,"name":"address","nodeType":"ElementaryTypeName","src":"6120:7:8","typeDescriptions":{}}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6120:15:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":1261,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"6164:14:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$1897_$","typeString":"type(contract IERC20Metadata)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6179:8:8","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":1896,"src":"6164:23:8","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_uint8_$","typeString":"function IERC20Metadata.decimals() view returns (uint8)"}},{"components":[],"id":1263,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6189:2:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_uint8_$","typeString":"function IERC20Metadata.decimals() view returns (uint8)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":1259,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6149:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6153:10:8","memberName":"encodeCall","nodeType":"MemberAccess","src":"6149:14:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6149:43:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1253,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"6070:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$2541_$","typeString":"type(library LowLevelCall)"}},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6083:23:8","memberName":"staticcallReturn64Bytes","nodeType":"MemberAccess","referencedDeclaration":2483,"src":"6070:36:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"function (address,bytes memory) view returns (bool,bytes32,bytes32)"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6070:132:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bool,bytes32,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6025:177:8"},{"expression":{"arguments":[{"id":1270,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1244,"src":"6246:3:8","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}],"expression":{"id":1267,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"6212:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$2890_$","typeString":"type(library Memory)"}},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6219:26:8","memberName":"unsafeSetFreeMemoryPointer","nodeType":"MemberAccess","referencedDeclaration":2568,"src":"6212:33:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Pointer_$2550_$returns$__$","typeString":"function (Memory.Pointer) pure"}},"id":1271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6212:38:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1272,"nodeType":"ExpressionStatement","src":"6212:38:8"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1273,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"6281:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1274,"name":"LowLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"6292:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowLevelCall_$2541_$","typeString":"type(library LowLevelCall)"}},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6305:14:8","memberName":"returnDataSize","nodeType":"MemberAccess","referencedDeclaration":2519,"src":"6292:27:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6292:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":1277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6325:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"6292:35:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6281:46:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1282,"name":"returnedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"6339:16:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6331:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1280,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:8","typeDescriptions":{}}},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6331:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":1286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6365:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1285,"name":"uint8","nodeType":"ElementaryTypeName","src":"6365:5:8","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":1284,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6360:4:8","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6360:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":1288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6372:3:8","memberName":"max","nodeType":"MemberAccess","src":"6360:15:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6331:44:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6281:94:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1291,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6280:96:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"66616c7365","id":1301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6455:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6462:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1303,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6454:10:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6280:184:8","trueExpression":{"components":[{"hexValue":"74727565","id":1292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6396:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"arguments":[{"arguments":[{"id":1297,"name":"returnedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"6416:16:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6408:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1295,"name":"uint256","nodeType":"ElementaryTypeName","src":"6408:7:8","typeDescriptions":{}}},"id":1298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6408:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6402:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1293,"name":"uint8","nodeType":"ElementaryTypeName","src":"6402:5:8","typeDescriptions":{}}},"id":1299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6402:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1300,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6395:40:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"functionReturnParameters":1239,"id":1305,"nodeType":"Return","src":"6261:203:8"}]},"documentation":{"id":1230,"nodeType":"StructuredDocumentation","src":"5721:132:8","text":" @dev Attempts to fetch the asset decimals. A return value of false indicates that the attempt failed in some way."},"id":1307,"implemented":true,"kind":"function","modifiers":[],"name":"_tryGetAssetDecimals","nameLocation":"5867:20:8","nodeType":"FunctionDefinition","parameters":{"id":1234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1233,"mutability":"mutable","name":"asset_","nameLocation":"5895:6:8","nodeType":"VariableDeclaration","scope":1307,"src":"5888:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":1232,"nodeType":"UserDefinedTypeName","pathNode":{"id":1231,"name":"IERC20","nameLocations":["5888:6:8"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"5888:6:8"},"referencedDeclaration":1137,"src":"5888:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5887:15:8"},"returnParameters":{"id":1239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1236,"mutability":"mutable","name":"ok","nameLocation":"5930:2:8","nodeType":"VariableDeclaration","scope":1307,"src":"5925:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1235,"name":"bool","nodeType":"ElementaryTypeName","src":"5925:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1238,"mutability":"mutable","name":"assetDecimals","nameLocation":"5940:13:8","nodeType":"VariableDeclaration","scope":1307,"src":"5934:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1237,"name":"uint8","nodeType":"ElementaryTypeName","src":"5934:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5924:30:8"},"scope":1871,"src":"5858:613:8","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[623,1896],"body":{"id":1321,"nodeType":"Block","src":"6964:63:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1316,"name":"_underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"6981:19:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1317,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"7003:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7003:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6981:39:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":1315,"id":1320,"nodeType":"Return","src":"6974:46:8"}]},"documentation":{"id":1308,"nodeType":"StructuredDocumentation","src":"6477:394:8","text":" @dev Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This\n \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the\n asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals.\n See {IERC20Metadata-decimals}."},"functionSelector":"313ce567","id":1322,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"6885:8:8","nodeType":"FunctionDefinition","overrides":{"id":1312,"nodeType":"OverrideSpecifier","overrides":[{"id":1310,"name":"IERC20Metadata","nameLocations":["6925:14:8"],"nodeType":"IdentifierPath","referencedDeclaration":1897,"src":"6925:14:8"},{"id":1311,"name":"ERC20","nameLocations":["6941:5:8"],"nodeType":"IdentifierPath","referencedDeclaration":1059,"src":"6941:5:8"}],"src":"6916:31:8"},"parameters":{"id":1309,"nodeType":"ParameterList","parameters":[],"src":"6893:2:8"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1322,"src":"6957:5:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1313,"name":"uint8","nodeType":"ElementaryTypeName","src":"6957:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6956:7:8"},"scope":1871,"src":"6876:151:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[276],"body":{"id":1333,"nodeType":"Block","src":"7117:39:8","statements":[{"expression":{"arguments":[{"id":1330,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7142:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}],"id":1329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7134:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1328,"name":"address","nodeType":"ElementaryTypeName","src":"7134:7:8","typeDescriptions":{}}},"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7134:15:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1327,"id":1332,"nodeType":"Return","src":"7127:22:8"}]},"documentation":{"id":1323,"nodeType":"StructuredDocumentation","src":"7033:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"38d52e0f","id":1334,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"7071:5:8","nodeType":"FunctionDefinition","parameters":{"id":1324,"nodeType":"ParameterList","parameters":[],"src":"7076:2:8"},"returnParameters":{"id":1327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1326,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1334,"src":"7108:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1325,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7107:9:8"},"scope":1871,"src":"7062:94:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[282],"body":{"id":1351,"nodeType":"Block","src":"7252:64:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":1347,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7303:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626_$1871","typeString":"contract ERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626_$1871","typeString":"contract ERC4626"}],"id":1346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7295:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1345,"name":"address","nodeType":"ElementaryTypeName","src":"7295:7:8","typeDescriptions":{}}},"id":1348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7295:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1341,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1334,"src":"7276:5:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:7:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1340,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"7269:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1137_$","typeString":"type(contract IERC20)"}},"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7269:15:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7285:9:8","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1094,"src":"7269:25:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7269:40:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1339,"id":1350,"nodeType":"Return","src":"7262:47:8"}]},"documentation":{"id":1335,"nodeType":"StructuredDocumentation","src":"7162:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"01e1d114","id":1352,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"7200:11:8","nodeType":"FunctionDefinition","parameters":{"id":1336,"nodeType":"ParameterList","parameters":[],"src":"7211:2:8"},"returnParameters":{"id":1339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1338,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1352,"src":"7243:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1337,"name":"uint256","nodeType":"ElementaryTypeName","src":"7243:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7242:9:8"},"scope":1871,"src":"7191:125:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[290],"body":{"id":1367,"nodeType":"Block","src":"7430:69:8","statements":[{"expression":{"arguments":[{"id":1361,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"7464:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":1362,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"7472:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4719_$","typeString":"type(library Math)"}},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7477:8:8","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"7472:13:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3074_$","typeString":"type(enum Math.Rounding)"}},"id":1364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7486:5:8","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":3070,"src":"7472:19:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":1360,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"7447:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$3074_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7447:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1359,"id":1366,"nodeType":"Return","src":"7440:52:8"}]},"documentation":{"id":1353,"nodeType":"StructuredDocumentation","src":"7322:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"c6e6f592","id":1368,"implemented":true,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"7360:15:8","nodeType":"FunctionDefinition","parameters":{"id":1356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1355,"mutability":"mutable","name":"assets","nameLocation":"7384:6:8","nodeType":"VariableDeclaration","scope":1368,"src":"7376:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1354,"name":"uint256","nodeType":"ElementaryTypeName","src":"7376:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7375:16:8"},"returnParameters":{"id":1359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1368,"src":"7421:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1357,"name":"uint256","nodeType":"ElementaryTypeName","src":"7421:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7420:9:8"},"scope":1871,"src":"7351:148:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[298],"body":{"id":1383,"nodeType":"Block","src":"7613:69:8","statements":[{"expression":{"arguments":[{"id":1377,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"7647:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":1378,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"7655:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4719_$","typeString":"type(library Math)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7660:8:8","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"7655:13:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3074_$","typeString":"type(enum Math.Rounding)"}},"id":1380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7669:5:8","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":3070,"src":"7655:19:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":1376,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1744,"src":"7630:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$3074_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":1381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7630:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1375,"id":1382,"nodeType":"Return","src":"7623:52:8"}]},"documentation":{"id":1369,"nodeType":"StructuredDocumentation","src":"7505:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"07a2d13a","id":1384,"implemented":true,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"7543:15:8","nodeType":"FunctionDefinition","parameters":{"id":1372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1371,"mutability":"mutable","name":"shares","nameLocation":"7567:6:8","nodeType":"VariableDeclaration","scope":1384,"src":"7559:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1370,"name":"uint256","nodeType":"ElementaryTypeName","src":"7559:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7558:16:8"},"returnParameters":{"id":1375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1384,"src":"7604:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1373,"name":"uint256","nodeType":"ElementaryTypeName","src":"7604:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7603:9:8"},"scope":1871,"src":"7534:148:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[306],"body":{"id":1398,"nodeType":"Block","src":"7784:41:8","statements":[{"expression":{"expression":{"arguments":[{"id":1394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7806:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1393,"name":"uint256","nodeType":"ElementaryTypeName","src":"7806:7:8","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1392,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7801:4:8","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7801:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7815:3:8","memberName":"max","nodeType":"MemberAccess","src":"7801:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1391,"id":1397,"nodeType":"Return","src":"7794:24:8"}]},"documentation":{"id":1385,"nodeType":"StructuredDocumentation","src":"7688:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"402d267d","id":1399,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"7726:10:8","nodeType":"FunctionDefinition","parameters":{"id":1388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1387,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1399,"src":"7737:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1386,"name":"address","nodeType":"ElementaryTypeName","src":"7737:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7736:9:8"},"returnParameters":{"id":1391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1399,"src":"7775:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1389,"name":"uint256","nodeType":"ElementaryTypeName","src":"7775:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7774:9:8"},"scope":1871,"src":"7717:108:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[332],"body":{"id":1413,"nodeType":"Block","src":"7924:41:8","statements":[{"expression":{"expression":{"arguments":[{"id":1409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7946:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1408,"name":"uint256","nodeType":"ElementaryTypeName","src":"7946:7:8","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1407,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7941:4:8","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7941:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7955:3:8","memberName":"max","nodeType":"MemberAccess","src":"7941:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1406,"id":1412,"nodeType":"Return","src":"7934:24:8"}]},"documentation":{"id":1400,"nodeType":"StructuredDocumentation","src":"7831:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"c63d75b6","id":1414,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"7869:7:8","nodeType":"FunctionDefinition","parameters":{"id":1403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1414,"src":"7877:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1401,"name":"address","nodeType":"ElementaryTypeName","src":"7877:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7876:9:8"},"returnParameters":{"id":1406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1414,"src":"7915:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"7915:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7914:9:8"},"scope":1871,"src":"7860:105:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[358],"body":{"id":1428,"nodeType":"Block","src":"8074:55:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":1424,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8115:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1423,"name":"maxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"8105:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8105:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1422,"name":"previewRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"8091:13:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8091:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1421,"id":1427,"nodeType":"Return","src":"8084:38:8"}]},"documentation":{"id":1415,"nodeType":"StructuredDocumentation","src":"7971:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"ce96cb77","id":1429,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"8009:11:8","nodeType":"FunctionDefinition","parameters":{"id":1418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1417,"mutability":"mutable","name":"owner","nameLocation":"8029:5:8","nodeType":"VariableDeclaration","scope":1429,"src":"8021:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1416,"name":"address","nodeType":"ElementaryTypeName","src":"8021:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8020:15:8"},"returnParameters":{"id":1421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1420,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1429,"src":"8065:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1419,"name":"uint256","nodeType":"ElementaryTypeName","src":"8065:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8064:9:8"},"scope":1871,"src":"8000:129:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[386],"body":{"id":1441,"nodeType":"Block","src":"8236:40:8","statements":[{"expression":{"arguments":[{"id":1438,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1432,"src":"8263:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1437,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"8253:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8253:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1436,"id":1440,"nodeType":"Return","src":"8246:23:8"}]},"documentation":{"id":1430,"nodeType":"StructuredDocumentation","src":"8135:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"d905777e","id":1442,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"8173:9:8","nodeType":"FunctionDefinition","parameters":{"id":1433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1432,"mutability":"mutable","name":"owner","nameLocation":"8191:5:8","nodeType":"VariableDeclaration","scope":1442,"src":"8183:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1431,"name":"address","nodeType":"ElementaryTypeName","src":"8183:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8182:15:8"},"returnParameters":{"id":1436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1442,"src":"8227:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"8227:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8226:9:8"},"scope":1871,"src":"8164:112:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[314],"body":{"id":1457,"nodeType":"Block","src":"8389:69:8","statements":[{"expression":{"arguments":[{"id":1451,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"8423:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":1452,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"8431:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4719_$","typeString":"type(library Math)"}},"id":1453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8436:8:8","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"8431:13:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3074_$","typeString":"type(enum Math.Rounding)"}},"id":1454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8445:5:8","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":3070,"src":"8431:19:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":1450,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"8406:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$3074_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8406:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1449,"id":1456,"nodeType":"Return","src":"8399:52:8"}]},"documentation":{"id":1443,"nodeType":"StructuredDocumentation","src":"8282:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"ef8b30f7","id":1458,"implemented":true,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"8320:14:8","nodeType":"FunctionDefinition","parameters":{"id":1446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1445,"mutability":"mutable","name":"assets","nameLocation":"8343:6:8","nodeType":"VariableDeclaration","scope":1458,"src":"8335:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1444,"name":"uint256","nodeType":"ElementaryTypeName","src":"8335:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8334:16:8"},"returnParameters":{"id":1449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1458,"src":"8380:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1447,"name":"uint256","nodeType":"ElementaryTypeName","src":"8380:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8379:9:8"},"scope":1871,"src":"8311:147:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[340],"body":{"id":1473,"nodeType":"Block","src":"8568:68:8","statements":[{"expression":{"arguments":[{"id":1467,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"8602:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":1468,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"8610:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4719_$","typeString":"type(library Math)"}},"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8615:8:8","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"8610:13:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3074_$","typeString":"type(enum Math.Rounding)"}},"id":1470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8624:4:8","memberName":"Ceil","nodeType":"MemberAccess","referencedDeclaration":3071,"src":"8610:18:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":1466,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1744,"src":"8585:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$3074_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8585:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1465,"id":1472,"nodeType":"Return","src":"8578:51:8"}]},"documentation":{"id":1459,"nodeType":"StructuredDocumentation","src":"8464:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"b3d7f6b9","id":1474,"implemented":true,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"8502:11:8","nodeType":"FunctionDefinition","parameters":{"id":1462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1461,"mutability":"mutable","name":"shares","nameLocation":"8522:6:8","nodeType":"VariableDeclaration","scope":1474,"src":"8514:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1460,"name":"uint256","nodeType":"ElementaryTypeName","src":"8514:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8513:16:8"},"returnParameters":{"id":1465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1464,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1474,"src":"8559:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1463,"name":"uint256","nodeType":"ElementaryTypeName","src":"8559:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8558:9:8"},"scope":1871,"src":"8493:143:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[366],"body":{"id":1489,"nodeType":"Block","src":"8750:68:8","statements":[{"expression":{"arguments":[{"id":1483,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1477,"src":"8784:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":1484,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"8792:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4719_$","typeString":"type(library Math)"}},"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8797:8:8","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"8792:13:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3074_$","typeString":"type(enum Math.Rounding)"}},"id":1486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8806:4:8","memberName":"Ceil","nodeType":"MemberAccess","referencedDeclaration":3071,"src":"8792:18:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":1482,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"8767:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$3074_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8767:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1481,"id":1488,"nodeType":"Return","src":"8760:51:8"}]},"documentation":{"id":1475,"nodeType":"StructuredDocumentation","src":"8642:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"0a28a477","id":1490,"implemented":true,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"8680:15:8","nodeType":"FunctionDefinition","parameters":{"id":1478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1477,"mutability":"mutable","name":"assets","nameLocation":"8704:6:8","nodeType":"VariableDeclaration","scope":1490,"src":"8696:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1476,"name":"uint256","nodeType":"ElementaryTypeName","src":"8696:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8695:16:8"},"returnParameters":{"id":1481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1480,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1490,"src":"8741:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1479,"name":"uint256","nodeType":"ElementaryTypeName","src":"8741:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8740:9:8"},"scope":1871,"src":"8671:147:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[394],"body":{"id":1505,"nodeType":"Block","src":"8930:69:8","statements":[{"expression":{"arguments":[{"id":1499,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1493,"src":"8964:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":1500,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"8972:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4719_$","typeString":"type(library Math)"}},"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8977:8:8","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"8972:13:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3074_$","typeString":"type(enum Math.Rounding)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8986:5:8","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":3070,"src":"8972:19:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":1498,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1744,"src":"8947:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$3074_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8947:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1497,"id":1504,"nodeType":"Return","src":"8940:52:8"}]},"documentation":{"id":1491,"nodeType":"StructuredDocumentation","src":"8824:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"4cdad506","id":1506,"implemented":true,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"8862:13:8","nodeType":"FunctionDefinition","parameters":{"id":1494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1493,"mutability":"mutable","name":"shares","nameLocation":"8884:6:8","nodeType":"VariableDeclaration","scope":1506,"src":"8876:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1492,"name":"uint256","nodeType":"ElementaryTypeName","src":"8876:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8875:16:8"},"returnParameters":{"id":1497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1496,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1506,"src":"8921:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1495,"name":"uint256","nodeType":"ElementaryTypeName","src":"8921:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8920:9:8"},"scope":1871,"src":"8853:146:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[324],"body":{"id":1549,"nodeType":"Block","src":"9118:308:8","statements":[{"assignments":[1517],"declarations":[{"constant":false,"id":1517,"mutability":"mutable","name":"maxAssets","nameLocation":"9136:9:8","nodeType":"VariableDeclaration","scope":1549,"src":"9128:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1516,"name":"uint256","nodeType":"ElementaryTypeName","src":"9128:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1521,"initialValue":{"arguments":[{"id":1519,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"9159:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1518,"name":"maxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1399,"src":"9148:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9148:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9128:40:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1522,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"9182:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1523,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"9191:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9182:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1532,"nodeType":"IfStatement","src":"9178:110:8","trueBody":{"id":1531,"nodeType":"Block","src":"9202:86:8","statements":[{"errorCall":{"arguments":[{"id":1526,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"9249:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1527,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"9259:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1528,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"9267:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1525,"name":"ERC4626ExceededMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"9223:25:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9223:54:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1530,"nodeType":"RevertStatement","src":"9216:61:8"}]}},{"assignments":[1534],"declarations":[{"constant":false,"id":1534,"mutability":"mutable","name":"shares","nameLocation":"9306:6:8","nodeType":"VariableDeclaration","scope":1549,"src":"9298:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1533,"name":"uint256","nodeType":"ElementaryTypeName","src":"9298:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1538,"initialValue":{"arguments":[{"id":1536,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"9330:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1535,"name":"previewDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"9315:14:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9315:22:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9298:39:8"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1540,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"9356:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9356:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1542,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"9370:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1543,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"9380:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1544,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1534,"src":"9388:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1539,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1774,"src":"9347:8:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9347:48:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1546,"nodeType":"ExpressionStatement","src":"9347:48:8"},{"expression":{"id":1547,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1534,"src":"9413:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1515,"id":1548,"nodeType":"Return","src":"9406:13:8"}]},"documentation":{"id":1507,"nodeType":"StructuredDocumentation","src":"9005:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"6e553f65","id":1550,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"9043:7:8","nodeType":"FunctionDefinition","parameters":{"id":1512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1509,"mutability":"mutable","name":"assets","nameLocation":"9059:6:8","nodeType":"VariableDeclaration","scope":1550,"src":"9051:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1508,"name":"uint256","nodeType":"ElementaryTypeName","src":"9051:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1511,"mutability":"mutable","name":"receiver","nameLocation":"9075:8:8","nodeType":"VariableDeclaration","scope":1550,"src":"9067:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1510,"name":"address","nodeType":"ElementaryTypeName","src":"9067:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9050:34:8"},"returnParameters":{"id":1515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1550,"src":"9109:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1513,"name":"uint256","nodeType":"ElementaryTypeName","src":"9109:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9108:9:8"},"scope":1871,"src":"9034:392:8","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[350],"body":{"id":1593,"nodeType":"Block","src":"9542:299:8","statements":[{"assignments":[1561],"declarations":[{"constant":false,"id":1561,"mutability":"mutable","name":"maxShares","nameLocation":"9560:9:8","nodeType":"VariableDeclaration","scope":1593,"src":"9552:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1560,"name":"uint256","nodeType":"ElementaryTypeName","src":"9552:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1565,"initialValue":{"arguments":[{"id":1563,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"9580:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1562,"name":"maxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"9572:7:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9572:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9552:37:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1566,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"9603:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1567,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"9612:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9603:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1576,"nodeType":"IfStatement","src":"9599:107:8","trueBody":{"id":1575,"nodeType":"Block","src":"9623:83:8","statements":[{"errorCall":{"arguments":[{"id":1570,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"9667:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1571,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"9677:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1572,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"9685:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1569,"name":"ERC4626ExceededMaxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"9644:22:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9644:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1574,"nodeType":"RevertStatement","src":"9637:58:8"}]}},{"assignments":[1578],"declarations":[{"constant":false,"id":1578,"mutability":"mutable","name":"assets","nameLocation":"9724:6:8","nodeType":"VariableDeclaration","scope":1593,"src":"9716:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1577,"name":"uint256","nodeType":"ElementaryTypeName","src":"9716:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1582,"initialValue":{"arguments":[{"id":1580,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"9745:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1579,"name":"previewMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"9733:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9733:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9716:36:8"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1584,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"9771:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9771:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1586,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"9785:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1587,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"9795:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1588,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"9803:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1583,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1774,"src":"9762:8:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9762:48:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1590,"nodeType":"ExpressionStatement","src":"9762:48:8"},{"expression":{"id":1591,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"9828:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1559,"id":1592,"nodeType":"Return","src":"9821:13:8"}]},"documentation":{"id":1551,"nodeType":"StructuredDocumentation","src":"9432:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"94bf804d","id":1594,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"9470:4:8","nodeType":"FunctionDefinition","parameters":{"id":1556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1553,"mutability":"mutable","name":"shares","nameLocation":"9483:6:8","nodeType":"VariableDeclaration","scope":1594,"src":"9475:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1552,"name":"uint256","nodeType":"ElementaryTypeName","src":"9475:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1555,"mutability":"mutable","name":"receiver","nameLocation":"9499:8:8","nodeType":"VariableDeclaration","scope":1594,"src":"9491:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1554,"name":"address","nodeType":"ElementaryTypeName","src":"9491:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9474:34:8"},"returnParameters":{"id":1559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1594,"src":"9533:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1557,"name":"uint256","nodeType":"ElementaryTypeName","src":"9533:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9532:9:8"},"scope":1871,"src":"9461:380:8","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[378],"body":{"id":1640,"nodeType":"Block","src":"9976:313:8","statements":[{"assignments":[1607],"declarations":[{"constant":false,"id":1607,"mutability":"mutable","name":"maxAssets","nameLocation":"9994:9:8","nodeType":"VariableDeclaration","scope":1640,"src":"9986:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1606,"name":"uint256","nodeType":"ElementaryTypeName","src":"9986:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1611,"initialValue":{"arguments":[{"id":1609,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"10018:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1608,"name":"maxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"10006:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10006:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9986:38:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"10038:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1613,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"10047:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10038:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1622,"nodeType":"IfStatement","src":"10034:108:8","trueBody":{"id":1621,"nodeType":"Block","src":"10058:84:8","statements":[{"errorCall":{"arguments":[{"id":1616,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"10106:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1617,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"10113:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1618,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"10121:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1615,"name":"ERC4626ExceededMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"10079:26:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":1619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10079:52:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1620,"nodeType":"RevertStatement","src":"10072:59:8"}]}},{"assignments":[1624],"declarations":[{"constant":false,"id":1624,"mutability":"mutable","name":"shares","nameLocation":"10160:6:8","nodeType":"VariableDeclaration","scope":1640,"src":"10152:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1623,"name":"uint256","nodeType":"ElementaryTypeName","src":"10152:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1628,"initialValue":{"arguments":[{"id":1626,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"10185:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1625,"name":"previewWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"10169:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":1627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10169:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10152:40:8"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1630,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"10212:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10212:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1632,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"10226:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1633,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"10236:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1634,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"10243:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1635,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1624,"src":"10251:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1629,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"10202:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":1636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10202:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1637,"nodeType":"ExpressionStatement","src":"10202:56:8"},{"expression":{"id":1638,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1624,"src":"10276:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1605,"id":1639,"nodeType":"Return","src":"10269:13:8"}]},"documentation":{"id":1595,"nodeType":"StructuredDocumentation","src":"9847:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"b460af94","id":1641,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"9885:8:8","nodeType":"FunctionDefinition","parameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"assets","nameLocation":"9902:6:8","nodeType":"VariableDeclaration","scope":1641,"src":"9894:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1596,"name":"uint256","nodeType":"ElementaryTypeName","src":"9894:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1599,"mutability":"mutable","name":"receiver","nameLocation":"9918:8:8","nodeType":"VariableDeclaration","scope":1641,"src":"9910:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1598,"name":"address","nodeType":"ElementaryTypeName","src":"9910:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1601,"mutability":"mutable","name":"owner","nameLocation":"9936:5:8","nodeType":"VariableDeclaration","scope":1641,"src":"9928:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1600,"name":"address","nodeType":"ElementaryTypeName","src":"9928:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9893:49:8"},"returnParameters":{"id":1605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1604,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1641,"src":"9967:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1603,"name":"uint256","nodeType":"ElementaryTypeName","src":"9967:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9966:9:8"},"scope":1871,"src":"9876:413:8","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[406],"body":{"id":1687,"nodeType":"Block","src":"10422:307:8","statements":[{"assignments":[1654],"declarations":[{"constant":false,"id":1654,"mutability":"mutable","name":"maxShares","nameLocation":"10440:9:8","nodeType":"VariableDeclaration","scope":1687,"src":"10432:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1653,"name":"uint256","nodeType":"ElementaryTypeName","src":"10432:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1658,"initialValue":{"arguments":[{"id":1656,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"10462:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1655,"name":"maxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"10452:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10452:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10432:36:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1659,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10482:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1660,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1654,"src":"10491:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10482:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1669,"nodeType":"IfStatement","src":"10478:106:8","trueBody":{"id":1668,"nodeType":"Block","src":"10502:82:8","statements":[{"errorCall":{"arguments":[{"id":1663,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"10548:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1664,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10555:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1665,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1654,"src":"10563:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1662,"name":"ERC4626ExceededMaxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"10523:24:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":1666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10523:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1667,"nodeType":"RevertStatement","src":"10516:57:8"}]}},{"assignments":[1671],"declarations":[{"constant":false,"id":1671,"mutability":"mutable","name":"assets","nameLocation":"10602:6:8","nodeType":"VariableDeclaration","scope":1687,"src":"10594:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1670,"name":"uint256","nodeType":"ElementaryTypeName","src":"10594:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1675,"initialValue":{"arguments":[{"id":1673,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10625:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1672,"name":"previewRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"10611:13:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10611:21:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10594:38:8"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1677,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"10652:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10652:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1679,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"10666:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1680,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"10676:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1681,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1671,"src":"10683:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1682,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10691:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1676,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"10642:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10642:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1684,"nodeType":"ExpressionStatement","src":"10642:56:8"},{"expression":{"id":1685,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1671,"src":"10716:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1652,"id":1686,"nodeType":"Return","src":"10709:13:8"}]},"documentation":{"id":1642,"nodeType":"StructuredDocumentation","src":"10295:24:8","text":"@inheritdoc IERC4626"},"functionSelector":"ba087652","id":1688,"implemented":true,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"10333:6:8","nodeType":"FunctionDefinition","parameters":{"id":1649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1644,"mutability":"mutable","name":"shares","nameLocation":"10348:6:8","nodeType":"VariableDeclaration","scope":1688,"src":"10340:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1643,"name":"uint256","nodeType":"ElementaryTypeName","src":"10340:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1646,"mutability":"mutable","name":"receiver","nameLocation":"10364:8:8","nodeType":"VariableDeclaration","scope":1688,"src":"10356:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"10356:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"mutability":"mutable","name":"owner","nameLocation":"10382:5:8","nodeType":"VariableDeclaration","scope":1688,"src":"10374:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"10374:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10339:49:8"},"returnParameters":{"id":1652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1651,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1688,"src":"10413:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1650,"name":"uint256","nodeType":"ElementaryTypeName","src":"10413:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10412:9:8"},"scope":1871,"src":"10324:405:8","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1715,"nodeType":"Block","src":"10959:107:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1701,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"10990:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10990:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11006:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1704,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"11012:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":1705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11012:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11006:23:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10990:39:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1708,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1352,"src":"11031:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11031:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11047:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11031:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1712,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1694,"src":"11050:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"expression":{"id":1699,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1691,"src":"10976:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10983:6:8","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"10976:13:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$3074_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"}},"id":1713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10976:83:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1698,"id":1714,"nodeType":"Return","src":"10969:90:8"}]},"documentation":{"id":1689,"nodeType":"StructuredDocumentation","src":"10735:113:8","text":" @dev Internal conversion function (from assets to shares) with support for rounding direction."},"id":1716,"implemented":true,"kind":"function","modifiers":[],"name":"_convertToShares","nameLocation":"10862:16:8","nodeType":"FunctionDefinition","parameters":{"id":1695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1691,"mutability":"mutable","name":"assets","nameLocation":"10887:6:8","nodeType":"VariableDeclaration","scope":1716,"src":"10879:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1690,"name":"uint256","nodeType":"ElementaryTypeName","src":"10879:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1694,"mutability":"mutable","name":"rounding","nameLocation":"10909:8:8","nodeType":"VariableDeclaration","scope":1716,"src":"10895:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":1693,"nodeType":"UserDefinedTypeName","pathNode":{"id":1692,"name":"Math.Rounding","nameLocations":["10895:4:8","10900:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"10895:13:8"},"referencedDeclaration":3074,"src":"10895:13:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10878:40:8"},"returnParameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1697,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1716,"src":"10950:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"10950:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10949:9:8"},"scope":1871,"src":"10853:213:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1743,"nodeType":"Block","src":"11296:107:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1729,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1352,"src":"11327:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11327:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11343:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11327:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1733,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"11346:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11346:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11362:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1736,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"11368:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11368:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11362:23:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11346:39:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1740,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"11387:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"expression":{"id":1727,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"11313:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11320:6:8","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"11313:13:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$3074_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"}},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11313:83:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1726,"id":1742,"nodeType":"Return","src":"11306:90:8"}]},"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"11072:113:8","text":" @dev Internal conversion function (from shares to assets) with support for rounding direction."},"id":1744,"implemented":true,"kind":"function","modifiers":[],"name":"_convertToAssets","nameLocation":"11199:16:8","nodeType":"FunctionDefinition","parameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"shares","nameLocation":"11224:6:8","nodeType":"VariableDeclaration","scope":1744,"src":"11216:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"11216:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1722,"mutability":"mutable","name":"rounding","nameLocation":"11246:8:8","nodeType":"VariableDeclaration","scope":1744,"src":"11232:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":1721,"nodeType":"UserDefinedTypeName","pathNode":{"id":1720,"name":"Math.Rounding","nameLocations":["11232:4:8","11237:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"11232:13:8"},"referencedDeclaration":3074,"src":"11232:13:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11215:40:8"},"returnParameters":{"id":1726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1725,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1744,"src":"11287:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1724,"name":"uint256","nodeType":"ElementaryTypeName","src":"11287:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11286:9:8"},"scope":1871,"src":"11190:213:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1773,"nodeType":"Block","src":"11568:693:8","statements":[{"expression":{"arguments":[{"id":1757,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12149:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1758,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1751,"src":"12157:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1756,"name":"_transferIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1842,"src":"12137:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12137:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1760,"nodeType":"ExpressionStatement","src":"12137:27:8"},{"expression":{"arguments":[{"id":1762,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"12180:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1763,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1753,"src":"12190:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1761,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"12174:5:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12174:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1765,"nodeType":"ExpressionStatement","src":"12174:23:8"},{"eventCall":{"arguments":[{"id":1767,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12221:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1768,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"12229:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1769,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1751,"src":"12239:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1770,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1753,"src":"12247:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1766,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":258,"src":"12213:7:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12213:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1772,"nodeType":"EmitStatement","src":"12208:46:8"}]},"documentation":{"id":1745,"nodeType":"StructuredDocumentation","src":"11409:53:8","text":" @dev Deposit/mint common workflow."},"id":1774,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"11476:8:8","nodeType":"FunctionDefinition","parameters":{"id":1754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1747,"mutability":"mutable","name":"caller","nameLocation":"11493:6:8","nodeType":"VariableDeclaration","scope":1774,"src":"11485:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1746,"name":"address","nodeType":"ElementaryTypeName","src":"11485:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1749,"mutability":"mutable","name":"receiver","nameLocation":"11509:8:8","nodeType":"VariableDeclaration","scope":1774,"src":"11501:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1748,"name":"address","nodeType":"ElementaryTypeName","src":"11501:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1751,"mutability":"mutable","name":"assets","nameLocation":"11527:6:8","nodeType":"VariableDeclaration","scope":1774,"src":"11519:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1750,"name":"uint256","nodeType":"ElementaryTypeName","src":"11519:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1753,"mutability":"mutable","name":"shares","nameLocation":"11543:6:8","nodeType":"VariableDeclaration","scope":1774,"src":"11535:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1752,"name":"uint256","nodeType":"ElementaryTypeName","src":"11535:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11484:66:8"},"returnParameters":{"id":1755,"nodeType":"ParameterList","parameters":[],"src":"11568:0:8"},"scope":1871,"src":"11467:794:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1817,"nodeType":"Block","src":"12491:735:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1788,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"12505:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1789,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"12515:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12505:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1798,"nodeType":"IfStatement","src":"12501:84:8","trueBody":{"id":1797,"nodeType":"Block","src":"12522:63:8","statements":[{"expression":{"arguments":[{"id":1792,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"12552:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1793,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"12559:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1794,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"12567:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1791,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1058,"src":"12536:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12536:38:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1796,"nodeType":"ExpressionStatement","src":"12536:38:8"}]}},{"expression":{"arguments":[{"id":1800,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"13100:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1801,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"13107:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1799,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"13094:5:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13094:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1803,"nodeType":"ExpressionStatement","src":"13094:20:8"},{"expression":{"arguments":[{"id":1805,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"13137:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1806,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"13147:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1804,"name":"_transferOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"13124:12:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13124:30:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1808,"nodeType":"ExpressionStatement","src":"13124:30:8"},{"eventCall":{"arguments":[{"id":1810,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"13179:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1811,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"13187:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1812,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"13197:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1813,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"13204:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1814,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"13212:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1809,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":270,"src":"13170:8:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13170:49:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1816,"nodeType":"EmitStatement","src":"13165:54:8"}]},"documentation":{"id":1775,"nodeType":"StructuredDocumentation","src":"12267:56:8","text":" @dev Withdraw/redeem common workflow."},"id":1818,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"12337:9:8","nodeType":"FunctionDefinition","parameters":{"id":1786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1777,"mutability":"mutable","name":"caller","nameLocation":"12364:6:8","nodeType":"VariableDeclaration","scope":1818,"src":"12356:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1776,"name":"address","nodeType":"ElementaryTypeName","src":"12356:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1779,"mutability":"mutable","name":"receiver","nameLocation":"12388:8:8","nodeType":"VariableDeclaration","scope":1818,"src":"12380:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1778,"name":"address","nodeType":"ElementaryTypeName","src":"12380:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1781,"mutability":"mutable","name":"owner","nameLocation":"12414:5:8","nodeType":"VariableDeclaration","scope":1818,"src":"12406:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1780,"name":"address","nodeType":"ElementaryTypeName","src":"12406:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1783,"mutability":"mutable","name":"assets","nameLocation":"12437:6:8","nodeType":"VariableDeclaration","scope":1818,"src":"12429:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1782,"name":"uint256","nodeType":"ElementaryTypeName","src":"12429:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1785,"mutability":"mutable","name":"shares","nameLocation":"12461:6:8","nodeType":"VariableDeclaration","scope":1818,"src":"12453:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1784,"name":"uint256","nodeType":"ElementaryTypeName","src":"12453:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12346:127:8"},"returnParameters":{"id":1787,"nodeType":"ParameterList","parameters":[],"src":"12491:0:8"},"scope":1871,"src":"12328:898:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1841,"nodeType":"Block","src":"13423:89:8","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1830,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1334,"src":"13467:5:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13467:7:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1829,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"13460:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1137_$","typeString":"type(contract IERC20)"}},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13460:15:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":1833,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"13477:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1836,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13491:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626_$1871","typeString":"contract ERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626_$1871","typeString":"contract ERC4626"}],"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13483:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1834,"name":"address","nodeType":"ElementaryTypeName","src":"13483:7:8","typeDescriptions":{}}},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13483:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1838,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1823,"src":"13498:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1826,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2352,"src":"13433:9:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$2352_$","typeString":"type(library SafeERC20)"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13443:16:8","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":1977,"src":"13433:26:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13433:72:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1840,"nodeType":"ExpressionStatement","src":"13433:72:8"}]},"documentation":{"id":1819,"nodeType":"StructuredDocumentation","src":"13232:118:8","text":"@dev Performs a transfer in of underlying assets. The default implementation uses `SafeERC20`. Used by {_deposit}."},"id":1842,"implemented":true,"kind":"function","modifiers":[],"name":"_transferIn","nameLocation":"13364:11:8","nodeType":"FunctionDefinition","parameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1821,"mutability":"mutable","name":"from","nameLocation":"13384:4:8","nodeType":"VariableDeclaration","scope":1842,"src":"13376:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1820,"name":"address","nodeType":"ElementaryTypeName","src":"13376:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1823,"mutability":"mutable","name":"assets","nameLocation":"13398:6:8","nodeType":"VariableDeclaration","scope":1842,"src":"13390:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"13390:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13375:30:8"},"returnParameters":{"id":1825,"nodeType":"ParameterList","parameters":[],"src":"13423:0:8"},"scope":1871,"src":"13355:157:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1861,"nodeType":"Block","src":"13710:68:8","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1854,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1334,"src":"13750:5:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13750:7:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1853,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"13743:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1137_$","typeString":"type(contract IERC20)"}},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13743:15:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":1857,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1845,"src":"13760:2:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1858,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"13764:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1850,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2352,"src":"13720:9:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$2352_$","typeString":"type(library SafeERC20)"}},"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13730:12:8","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":1946,"src":"13720:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13720:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1860,"nodeType":"ExpressionStatement","src":"13720:51:8"}]},"documentation":{"id":1843,"nodeType":"StructuredDocumentation","src":"13518:120:8","text":"@dev Performs a transfer out of underlying assets. The default implementation uses `SafeERC20`. Used by {_withdraw}."},"id":1862,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOut","nameLocation":"13652:12:8","nodeType":"FunctionDefinition","parameters":{"id":1848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1845,"mutability":"mutable","name":"to","nameLocation":"13673:2:8","nodeType":"VariableDeclaration","scope":1862,"src":"13665:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1844,"name":"address","nodeType":"ElementaryTypeName","src":"13665:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1847,"mutability":"mutable","name":"assets","nameLocation":"13685:6:8","nodeType":"VariableDeclaration","scope":1862,"src":"13677:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1846,"name":"uint256","nodeType":"ElementaryTypeName","src":"13677:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13664:28:8"},"returnParameters":{"id":1849,"nodeType":"ParameterList","parameters":[],"src":"13710:0:8"},"scope":1871,"src":"13643:135:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1869,"nodeType":"Block","src":"13849:25:8","statements":[{"expression":{"hexValue":"30","id":1867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13866:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1866,"id":1868,"nodeType":"Return","src":"13859:8:8"}]},"id":1870,"implemented":true,"kind":"function","modifiers":[],"name":"_decimalsOffset","nameLocation":"13793:15:8","nodeType":"FunctionDefinition","parameters":{"id":1863,"nodeType":"ParameterList","parameters":[],"src":"13808:2:8"},"returnParameters":{"id":1866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1870,"src":"13842:5:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1864,"name":"uint8","nodeType":"ElementaryTypeName","src":"13842:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"13841:7:8"},"scope":1871,"src":"13784:90:8","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1872,"src":"4517:9359:8","usedErrors":[419,424,429,438,443,448,1175,1184,1193,1202,1909],"usedEvents":[258,270,1071,1080]}],"src":"118:13759:8"},"id":8},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[1137],"IERC20Metadata":[1897]},"id":1898,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1873,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"125:24:9"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":1875,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1898,"sourceUnit":1138,"src":"151:37:9","symbolAliases":[{"foreign":{"id":1874,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"159:6:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1877,"name":"IERC20","nameLocations":["306:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"306:6:9"},"id":1878,"nodeType":"InheritanceSpecifier","src":"306:6:9"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1876,"nodeType":"StructuredDocumentation","src":"190:87:9","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":1897,"linearizedBaseContracts":[1897,1137],"name":"IERC20Metadata","nameLocation":"288:14:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1879,"nodeType":"StructuredDocumentation","src":"319:54:9","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":1884,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:9","nodeType":"FunctionDefinition","parameters":{"id":1880,"nodeType":"ParameterList","parameters":[],"src":"391:2:9"},"returnParameters":{"id":1883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1884,"src":"417:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1881,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:9"},"scope":1897,"src":"378:54:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1885,"nodeType":"StructuredDocumentation","src":"438:56:9","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":1890,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:9","nodeType":"FunctionDefinition","parameters":{"id":1886,"nodeType":"ParameterList","parameters":[],"src":"514:2:9"},"returnParameters":{"id":1889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1888,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1890,"src":"540:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1887,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:9"},"scope":1897,"src":"499:56:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1891,"nodeType":"StructuredDocumentation","src":"561:65:9","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":1896,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:9","nodeType":"FunctionDefinition","parameters":{"id":1892,"nodeType":"ParameterList","parameters":[],"src":"648:2:9"},"returnParameters":{"id":1895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1894,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1896,"src":"674:5:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1893,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:9"},"scope":1897,"src":"631:50:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1898,"src":"278:405:9","usedErrors":[],"usedEvents":[1071,1080]}],"src":"125:559:9"},"id":9},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"IERC1363":[229],"IERC20":[1137],"SafeERC20":[2352]},"id":2353,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1899,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:10"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":1901,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2353,"sourceUnit":1138,"src":"141:37:10","symbolAliases":[{"foreign":{"id":1900,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"149:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","file":"../../../interfaces/IERC1363.sol","id":1903,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2353,"sourceUnit":230,"src":"179:58:10","symbolAliases":[{"foreign":{"id":1902,"name":"IERC1363","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"187:8:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":1904,"nodeType":"StructuredDocumentation","src":"239:458:10","text":" @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":2352,"linearizedBaseContracts":[2352],"name":"SafeERC20","nameLocation":"706:9:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"722:65:10","text":" @dev An operation with an ERC-20 token failed."},"errorSelector":"5274afe7","id":1909,"name":"SafeERC20FailedOperation","nameLocation":"798:24:10","nodeType":"ErrorDefinition","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"token","nameLocation":"831:5:10","nodeType":"VariableDeclaration","scope":1909,"src":"823:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1906,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"822:15:10"},"src":"792:46:10"},{"documentation":{"id":1910,"nodeType":"StructuredDocumentation","src":"844:71:10","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","id":1918,"name":"SafeERC20FailedDecreaseAllowance","nameLocation":"926:32:10","nodeType":"ErrorDefinition","parameters":{"id":1917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1912,"mutability":"mutable","name":"spender","nameLocation":"967:7:10","nodeType":"VariableDeclaration","scope":1918,"src":"959:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1911,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1914,"mutability":"mutable","name":"currentAllowance","nameLocation":"984:16:10","nodeType":"VariableDeclaration","scope":1918,"src":"976:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1913,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1916,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1010:17:10","nodeType":"VariableDeclaration","scope":1918,"src":"1002:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1915,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:70:10"},"src":"920:109:10"},{"body":{"id":1945,"nodeType":"Block","src":"1291:132:10","statements":[{"condition":{"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1305:38:10","subExpression":{"arguments":[{"id":1930,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"1320:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":1931,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"1327:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1932,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1926,"src":"1331:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":1933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1338:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1929,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2303,"src":"1306:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1306:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1944,"nodeType":"IfStatement","src":"1301:116:10","trueBody":{"id":1943,"nodeType":"Block","src":"1345:72:10","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1939,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"1399:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}],"id":1938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1391:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1937,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:10","typeDescriptions":{}}},"id":1940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1391:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1936,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"1366:24:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1366:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1942,"nodeType":"RevertStatement","src":"1359:47:10"}]}}]},"documentation":{"id":1919,"nodeType":"StructuredDocumentation","src":"1035:179:10","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":1946,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1228:12:10","nodeType":"FunctionDefinition","parameters":{"id":1927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1922,"mutability":"mutable","name":"token","nameLocation":"1248:5:10","nodeType":"VariableDeclaration","scope":1946,"src":"1241:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":1921,"nodeType":"UserDefinedTypeName","pathNode":{"id":1920,"name":"IERC20","nameLocations":["1241:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"1241:6:10"},"referencedDeclaration":1137,"src":"1241:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1924,"mutability":"mutable","name":"to","nameLocation":"1263:2:10","nodeType":"VariableDeclaration","scope":1946,"src":"1255:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1923,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1926,"mutability":"mutable","name":"value","nameLocation":"1275:5:10","nodeType":"VariableDeclaration","scope":1946,"src":"1267:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1267:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1240:41:10"},"returnParameters":{"id":1928,"nodeType":"ParameterList","parameters":[],"src":"1291:0:10"},"scope":2352,"src":"1219:204:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1976,"nodeType":"Block","src":"1752:142:10","statements":[{"condition":{"id":1966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1766:48:10","subExpression":{"arguments":[{"id":1960,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1950,"src":"1785:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":1961,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"1792:4:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1962,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"1798:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"1802:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":1964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1809:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1959,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2328,"src":"1767:17:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,address,uint256,bool) returns (bool)"}},"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1767:47:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1975,"nodeType":"IfStatement","src":"1762:126:10","trueBody":{"id":1974,"nodeType":"Block","src":"1816:72:10","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1970,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1950,"src":"1870:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}],"id":1969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1862:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1968,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:10","typeDescriptions":{}}},"id":1971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1862:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1967,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"1837:24:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1973,"nodeType":"RevertStatement","src":"1830:47:10"}]}}]},"documentation":{"id":1947,"nodeType":"StructuredDocumentation","src":"1429:228:10","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":1977,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1671:16:10","nodeType":"FunctionDefinition","parameters":{"id":1957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1950,"mutability":"mutable","name":"token","nameLocation":"1695:5:10","nodeType":"VariableDeclaration","scope":1977,"src":"1688:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":1949,"nodeType":"UserDefinedTypeName","pathNode":{"id":1948,"name":"IERC20","nameLocations":["1688:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"1688:6:10"},"referencedDeclaration":1137,"src":"1688:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1952,"mutability":"mutable","name":"from","nameLocation":"1710:4:10","nodeType":"VariableDeclaration","scope":1977,"src":"1702:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"1702:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"to","nameLocation":"1724:2:10","nodeType":"VariableDeclaration","scope":1977,"src":"1716:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1953,"name":"address","nodeType":"ElementaryTypeName","src":"1716:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1956,"mutability":"mutable","name":"value","nameLocation":"1736:5:10","nodeType":"VariableDeclaration","scope":1977,"src":"1728:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1955,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1687:55:10"},"returnParameters":{"id":1958,"nodeType":"ParameterList","parameters":[],"src":"1752:0:10"},"scope":2352,"src":"1662:232:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1997,"nodeType":"Block","src":"2121:62:10","statements":[{"expression":{"arguments":[{"id":1991,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"2152:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":1992,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"2159:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"2163:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":1994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2170:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2303,"src":"2138:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:38:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1989,"id":1996,"nodeType":"Return","src":"2131:45:10"}]},"documentation":{"id":1978,"nodeType":"StructuredDocumentation","src":"1900:126:10","text":" @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful."},"id":1998,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransfer","nameLocation":"2040:15:10","nodeType":"FunctionDefinition","parameters":{"id":1986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1981,"mutability":"mutable","name":"token","nameLocation":"2063:5:10","nodeType":"VariableDeclaration","scope":1998,"src":"2056:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":1980,"nodeType":"UserDefinedTypeName","pathNode":{"id":1979,"name":"IERC20","nameLocations":["2056:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"2056:6:10"},"referencedDeclaration":1137,"src":"2056:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1983,"mutability":"mutable","name":"to","nameLocation":"2078:2:10","nodeType":"VariableDeclaration","scope":1998,"src":"2070:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1982,"name":"address","nodeType":"ElementaryTypeName","src":"2070:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1985,"mutability":"mutable","name":"value","nameLocation":"2090:5:10","nodeType":"VariableDeclaration","scope":1998,"src":"2082:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1984,"name":"uint256","nodeType":"ElementaryTypeName","src":"2082:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2055:41:10"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1998,"src":"2115:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1987,"name":"bool","nodeType":"ElementaryTypeName","src":"2115:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2114:6:10"},"scope":2352,"src":"2031:152:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2021,"nodeType":"Block","src":"2432:72:10","statements":[{"expression":{"arguments":[{"id":2014,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2002,"src":"2467:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":2015,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2004,"src":"2474:4:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2016,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"2480:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2017,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2008,"src":"2484:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":2018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2491:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2013,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2328,"src":"2449:17:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,address,uint256,bool) returns (bool)"}},"id":2019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2449:48:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2012,"id":2020,"nodeType":"Return","src":"2442:55:10"}]},"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"2189:130:10","text":" @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful."},"id":2022,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferFrom","nameLocation":"2333:19:10","nodeType":"FunctionDefinition","parameters":{"id":2009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2002,"mutability":"mutable","name":"token","nameLocation":"2360:5:10","nodeType":"VariableDeclaration","scope":2022,"src":"2353:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":2001,"nodeType":"UserDefinedTypeName","pathNode":{"id":2000,"name":"IERC20","nameLocations":["2353:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"2353:6:10"},"referencedDeclaration":1137,"src":"2353:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2004,"mutability":"mutable","name":"from","nameLocation":"2375:4:10","nodeType":"VariableDeclaration","scope":2022,"src":"2367:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2003,"name":"address","nodeType":"ElementaryTypeName","src":"2367:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2006,"mutability":"mutable","name":"to","nameLocation":"2389:2:10","nodeType":"VariableDeclaration","scope":2022,"src":"2381:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2005,"name":"address","nodeType":"ElementaryTypeName","src":"2381:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2008,"mutability":"mutable","name":"value","nameLocation":"2401:5:10","nodeType":"VariableDeclaration","scope":2022,"src":"2393:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2007,"name":"uint256","nodeType":"ElementaryTypeName","src":"2393:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2352:55:10"},"returnParameters":{"id":2012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2022,"src":"2426:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2010,"name":"bool","nodeType":"ElementaryTypeName","src":"2426:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2425:6:10"},"scope":2352,"src":"2324:180:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2052,"nodeType":"Block","src":"3246:139:10","statements":[{"assignments":[2034],"declarations":[{"constant":false,"id":2034,"mutability":"mutable","name":"oldAllowance","nameLocation":"3264:12:10","nodeType":"VariableDeclaration","scope":2052,"src":"3256:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2033,"name":"uint256","nodeType":"ElementaryTypeName","src":"3256:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2043,"initialValue":{"arguments":[{"arguments":[{"id":2039,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3303:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$2352","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2352","typeString":"library SafeERC20"}],"id":2038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3295:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2037,"name":"address","nodeType":"ElementaryTypeName","src":"3295:7:10","typeDescriptions":{}}},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3295:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2041,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"3310:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2035,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"3279:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3285:9:10","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":1114,"src":"3279:15:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3279:39:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3256:62:10"},{"expression":{"arguments":[{"id":2045,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"3341:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":2046,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"3348:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2047,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2034,"src":"3357:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2048,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"3372:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3357:20:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2044,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"3328:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3328:50:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2051,"nodeType":"ExpressionStatement","src":"3328:50:10"}]},"documentation":{"id":2023,"nodeType":"StructuredDocumentation","src":"2510:645:10","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":2053,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"3169:21:10","nodeType":"FunctionDefinition","parameters":{"id":2031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2026,"mutability":"mutable","name":"token","nameLocation":"3198:5:10","nodeType":"VariableDeclaration","scope":2053,"src":"3191:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":2025,"nodeType":"UserDefinedTypeName","pathNode":{"id":2024,"name":"IERC20","nameLocations":["3191:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"3191:6:10"},"referencedDeclaration":1137,"src":"3191:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2028,"mutability":"mutable","name":"spender","nameLocation":"3213:7:10","nodeType":"VariableDeclaration","scope":2053,"src":"3205:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2027,"name":"address","nodeType":"ElementaryTypeName","src":"3205:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2030,"mutability":"mutable","name":"value","nameLocation":"3230:5:10","nodeType":"VariableDeclaration","scope":2053,"src":"3222:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"3222:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3190:46:10"},"returnParameters":{"id":2032,"nodeType":"ParameterList","parameters":[],"src":"3246:0:10"},"scope":2352,"src":"3160:225:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2095,"nodeType":"Block","src":"4151:370:10","statements":[{"id":2094,"nodeType":"UncheckedBlock","src":"4161:354:10","statements":[{"assignments":[2065],"declarations":[{"constant":false,"id":2065,"mutability":"mutable","name":"currentAllowance","nameLocation":"4193:16:10","nodeType":"VariableDeclaration","scope":2094,"src":"4185:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2064,"name":"uint256","nodeType":"ElementaryTypeName","src":"4185:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2074,"initialValue":{"arguments":[{"arguments":[{"id":2070,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4236:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$2352","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2352","typeString":"library SafeERC20"}],"id":2069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4228:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2068,"name":"address","nodeType":"ElementaryTypeName","src":"4228:7:10","typeDescriptions":{}}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4228:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2072,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2059,"src":"4243:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2066,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"4212:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4218:9:10","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":1114,"src":"4212:15:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":2073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4212:39:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4185:66:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2075,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2065,"src":"4269:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2076,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"4288:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4269:36:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2085,"nodeType":"IfStatement","src":"4265:160:10","trueBody":{"id":2084,"nodeType":"Block","src":"4307:118:10","statements":[{"errorCall":{"arguments":[{"id":2079,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2059,"src":"4365:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2080,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2065,"src":"4374:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2081,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"4392:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2078,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"4332:32:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4332:78:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2083,"nodeType":"RevertStatement","src":"4325:85:10"}]}},{"expression":{"arguments":[{"id":2087,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"4451:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":2088,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2059,"src":"4458:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2089,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2065,"src":"4467:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2090,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"4486:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4467:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2086,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"4438:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":2092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:66:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2093,"nodeType":"ExpressionStatement","src":"4438:66:10"}]}]},"documentation":{"id":2054,"nodeType":"StructuredDocumentation","src":"3391:657:10","text":" @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":2096,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"4062:21:10","nodeType":"FunctionDefinition","parameters":{"id":2062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2057,"mutability":"mutable","name":"token","nameLocation":"4091:5:10","nodeType":"VariableDeclaration","scope":2096,"src":"4084:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":2056,"nodeType":"UserDefinedTypeName","pathNode":{"id":2055,"name":"IERC20","nameLocations":["4084:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"4084:6:10"},"referencedDeclaration":1137,"src":"4084:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2059,"mutability":"mutable","name":"spender","nameLocation":"4106:7:10","nodeType":"VariableDeclaration","scope":2096,"src":"4098:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2058,"name":"address","nodeType":"ElementaryTypeName","src":"4098:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2061,"mutability":"mutable","name":"requestedDecrease","nameLocation":"4123:17:10","nodeType":"VariableDeclaration","scope":2096,"src":"4115:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2060,"name":"uint256","nodeType":"ElementaryTypeName","src":"4115:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4083:58:10"},"returnParameters":{"id":2063,"nodeType":"ParameterList","parameters":[],"src":"4151:0:10"},"scope":2352,"src":"4053:468:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2146,"nodeType":"Block","src":"5175:290:10","statements":[{"condition":{"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5189:43:10","subExpression":{"arguments":[{"id":2108,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"5203:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":2109,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2102,"src":"5210:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2110,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2104,"src":"5219:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":2111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5226:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2107,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"5190:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5190:42:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2145,"nodeType":"IfStatement","src":"5185:274:10","trueBody":{"id":2144,"nodeType":"Block","src":"5234:225:10","statements":[{"condition":{"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5252:38:10","subExpression":{"arguments":[{"id":2115,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"5266:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":2116,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2102,"src":"5273:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":2117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"74727565","id":2118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5285:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2114,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"5253:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5253:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2128,"nodeType":"IfStatement","src":"5248:91:10","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":2124,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"5332:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}],"id":2123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5324:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2122,"name":"address","nodeType":"ElementaryTypeName","src":"5324:7:10","typeDescriptions":{}}},"id":2125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5324:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2121,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"5299:24:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5299:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2127,"nodeType":"RevertStatement","src":"5292:47:10"}},{"condition":{"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5357:42:10","subExpression":{"arguments":[{"id":2130,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"5371:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},{"id":2131,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2102,"src":"5378:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2132,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2104,"src":"5387:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":2133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5394:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2129,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"5358:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5358:41:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2143,"nodeType":"IfStatement","src":"5353:95:10","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":2139,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"5441:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}],"id":2138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5433:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2137,"name":"address","nodeType":"ElementaryTypeName","src":"5433:7:10","typeDescriptions":{}}},"id":2140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5433:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2136,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"5408:24:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5408:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2142,"nodeType":"RevertStatement","src":"5401:47:10"}}]}}]},"documentation":{"id":2097,"nodeType":"StructuredDocumentation","src":"4527:566:10","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here."},"id":2147,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"5107:12:10","nodeType":"FunctionDefinition","parameters":{"id":2105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2100,"mutability":"mutable","name":"token","nameLocation":"5127:5:10","nodeType":"VariableDeclaration","scope":2147,"src":"5120:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":2099,"nodeType":"UserDefinedTypeName","pathNode":{"id":2098,"name":"IERC20","nameLocations":["5120:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"5120:6:10"},"referencedDeclaration":1137,"src":"5120:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2102,"mutability":"mutable","name":"spender","nameLocation":"5142:7:10","nodeType":"VariableDeclaration","scope":2147,"src":"5134:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2101,"name":"address","nodeType":"ElementaryTypeName","src":"5134:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2104,"mutability":"mutable","name":"value","nameLocation":"5159:5:10","nodeType":"VariableDeclaration","scope":2147,"src":"5151:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2103,"name":"uint256","nodeType":"ElementaryTypeName","src":"5151:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5119:46:10"},"returnParameters":{"id":2106,"nodeType":"ParameterList","parameters":[],"src":"5175:0:10"},"scope":2352,"src":"5098:367:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2189,"nodeType":"Block","src":"5914:219:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2160,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"5928:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5931:4:10","memberName":"code","nodeType":"MemberAccess","src":"5928:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5936:6:10","memberName":"length","nodeType":"MemberAccess","src":"5928:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5946:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5928:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6014:39:10","subExpression":{"arguments":[{"id":2174,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"6037:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2155,"src":"6041:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2176,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"6048:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2172,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"6015:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},"id":2173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:15:10","memberName":"transferAndCall","nodeType":"MemberAccess","referencedDeclaration":180,"src":"6015:21:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:38:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2187,"nodeType":"IfStatement","src":"6010:117:10","trueBody":{"id":2186,"nodeType":"Block","src":"6055:72:10","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2182,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"6109:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}],"id":2181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6101:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2180,"name":"address","nodeType":"ElementaryTypeName","src":"6101:7:10","typeDescriptions":{}}},"id":2183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6101:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2179,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"6076:24:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6076:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2185,"nodeType":"RevertStatement","src":"6069:47:10"}]}},"id":2188,"nodeType":"IfStatement","src":"5924:203:10","trueBody":{"id":2171,"nodeType":"Block","src":"5949:55:10","statements":[{"expression":{"arguments":[{"id":2166,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"5976:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},{"id":2167,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"5983:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2168,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2155,"src":"5987:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2165,"name":"safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1946,"src":"5963:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":2169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5963:30:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2170,"nodeType":"ExpressionStatement","src":"5963:30:10"}]}}]},"documentation":{"id":2148,"nodeType":"StructuredDocumentation","src":"5471:335:10","text":" @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":2190,"implemented":true,"kind":"function","modifiers":[],"name":"transferAndCallRelaxed","nameLocation":"5820:22:10","nodeType":"FunctionDefinition","parameters":{"id":2158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2151,"mutability":"mutable","name":"token","nameLocation":"5852:5:10","nodeType":"VariableDeclaration","scope":2190,"src":"5843:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"},"typeName":{"id":2150,"nodeType":"UserDefinedTypeName","pathNode":{"id":2149,"name":"IERC1363","nameLocations":["5843:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":229,"src":"5843:8:10"},"referencedDeclaration":229,"src":"5843:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":2153,"mutability":"mutable","name":"to","nameLocation":"5867:2:10","nodeType":"VariableDeclaration","scope":2190,"src":"5859:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2152,"name":"address","nodeType":"ElementaryTypeName","src":"5859:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2155,"mutability":"mutable","name":"value","nameLocation":"5879:5:10","nodeType":"VariableDeclaration","scope":2190,"src":"5871:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2154,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2157,"mutability":"mutable","name":"data","nameLocation":"5899:4:10","nodeType":"VariableDeclaration","scope":2190,"src":"5886:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2156,"name":"bytes","nodeType":"ElementaryTypeName","src":"5886:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5842:62:10"},"returnParameters":{"id":2159,"nodeType":"ParameterList","parameters":[],"src":"5914:0:10"},"scope":2352,"src":"5811:322:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2236,"nodeType":"Block","src":"6654:239:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2205,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"6668:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6671:4:10","memberName":"code","nodeType":"MemberAccess","src":"6668:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6676:6:10","memberName":"length","nodeType":"MemberAccess","src":"6668:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6686:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6668:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":2225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6764:49:10","subExpression":{"arguments":[{"id":2220,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2196,"src":"6791:4:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2221,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"6797:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2222,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"6801:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2223,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"6808:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2218,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2194,"src":"6765:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},"id":2219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:19:10","memberName":"transferFromAndCall","nodeType":"MemberAccess","referencedDeclaration":206,"src":"6765:25:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6765:48:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2234,"nodeType":"IfStatement","src":"6760:127:10","trueBody":{"id":2233,"nodeType":"Block","src":"6815:72:10","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2229,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2194,"src":"6869:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}],"id":2228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6861:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2227,"name":"address","nodeType":"ElementaryTypeName","src":"6861:7:10","typeDescriptions":{}}},"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6861:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2226,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"6836:24:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6836:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2232,"nodeType":"RevertStatement","src":"6829:47:10"}]}},"id":2235,"nodeType":"IfStatement","src":"6664:223:10","trueBody":{"id":2217,"nodeType":"Block","src":"6689:65:10","statements":[{"expression":{"arguments":[{"id":2211,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2194,"src":"6720:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},{"id":2212,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2196,"src":"6727:4:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2213,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"6733:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2214,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"6737:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2210,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1977,"src":"6703:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6703:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2216,"nodeType":"ExpressionStatement","src":"6703:40:10"}]}}]},"documentation":{"id":2191,"nodeType":"StructuredDocumentation","src":"6139:343:10","text":" @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":2237,"implemented":true,"kind":"function","modifiers":[],"name":"transferFromAndCallRelaxed","nameLocation":"6496:26:10","nodeType":"FunctionDefinition","parameters":{"id":2203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2194,"mutability":"mutable","name":"token","nameLocation":"6541:5:10","nodeType":"VariableDeclaration","scope":2237,"src":"6532:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"},"typeName":{"id":2193,"nodeType":"UserDefinedTypeName","pathNode":{"id":2192,"name":"IERC1363","nameLocations":["6532:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":229,"src":"6532:8:10"},"referencedDeclaration":229,"src":"6532:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":2196,"mutability":"mutable","name":"from","nameLocation":"6564:4:10","nodeType":"VariableDeclaration","scope":2237,"src":"6556:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2195,"name":"address","nodeType":"ElementaryTypeName","src":"6556:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2198,"mutability":"mutable","name":"to","nameLocation":"6586:2:10","nodeType":"VariableDeclaration","scope":2237,"src":"6578:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2197,"name":"address","nodeType":"ElementaryTypeName","src":"6578:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2200,"mutability":"mutable","name":"value","nameLocation":"6606:5:10","nodeType":"VariableDeclaration","scope":2237,"src":"6598:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2199,"name":"uint256","nodeType":"ElementaryTypeName","src":"6598:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2202,"mutability":"mutable","name":"data","nameLocation":"6634:4:10","nodeType":"VariableDeclaration","scope":2237,"src":"6621:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2201,"name":"bytes","nodeType":"ElementaryTypeName","src":"6621:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6522:122:10"},"returnParameters":{"id":2204,"nodeType":"ParameterList","parameters":[],"src":"6654:0:10"},"scope":2352,"src":"6487:406:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2279,"nodeType":"Block","src":"7661:218:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2250,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"7675:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7678:4:10","memberName":"code","nodeType":"MemberAccess","src":"7675:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7683:6:10","memberName":"length","nodeType":"MemberAccess","src":"7675:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7693:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7675:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7761:38:10","subExpression":{"arguments":[{"id":2264,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"7783:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2245,"src":"7787:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2266,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2247,"src":"7794:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2262,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"7762:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},"id":2263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7768:14:10","memberName":"approveAndCall","nodeType":"MemberAccess","referencedDeclaration":228,"src":"7762:20:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7762:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2277,"nodeType":"IfStatement","src":"7757:116:10","trueBody":{"id":2276,"nodeType":"Block","src":"7801:72:10","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2272,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"7855:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}],"id":2271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7847:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2270,"name":"address","nodeType":"ElementaryTypeName","src":"7847:7:10","typeDescriptions":{}}},"id":2273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7847:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2269,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"7822:24:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7822:40:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2275,"nodeType":"RevertStatement","src":"7815:47:10"}]}},"id":2278,"nodeType":"IfStatement","src":"7671:202:10","trueBody":{"id":2261,"nodeType":"Block","src":"7696:55:10","statements":[{"expression":{"arguments":[{"id":2256,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"7723:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},{"id":2257,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"7730:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2245,"src":"7734:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2255,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"7710:12:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7710:30:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2260,"nodeType":"ExpressionStatement","src":"7710:30:10"}]}}]},"documentation":{"id":2238,"nodeType":"StructuredDocumentation","src":"6899:655:10","text":" @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Oppositely, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`."},"id":2280,"implemented":true,"kind":"function","modifiers":[],"name":"approveAndCallRelaxed","nameLocation":"7568:21:10","nodeType":"FunctionDefinition","parameters":{"id":2248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2241,"mutability":"mutable","name":"token","nameLocation":"7599:5:10","nodeType":"VariableDeclaration","scope":2280,"src":"7590:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"},"typeName":{"id":2240,"nodeType":"UserDefinedTypeName","pathNode":{"id":2239,"name":"IERC1363","nameLocations":["7590:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":229,"src":"7590:8:10"},"referencedDeclaration":229,"src":"7590:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$229","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":2243,"mutability":"mutable","name":"to","nameLocation":"7614:2:10","nodeType":"VariableDeclaration","scope":2280,"src":"7606:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2242,"name":"address","nodeType":"ElementaryTypeName","src":"7606:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2245,"mutability":"mutable","name":"value","nameLocation":"7626:5:10","nodeType":"VariableDeclaration","scope":2280,"src":"7618:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2244,"name":"uint256","nodeType":"ElementaryTypeName","src":"7618:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2247,"mutability":"mutable","name":"data","nameLocation":"7646:4:10","nodeType":"VariableDeclaration","scope":2280,"src":"7633:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2246,"name":"bytes","nodeType":"ElementaryTypeName","src":"7633:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7589:62:10"},"returnParameters":{"id":2249,"nodeType":"ParameterList","parameters":[],"src":"7661:0:10"},"scope":2352,"src":"7559:320:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2302,"nodeType":"Block","src":"8481:1136:10","statements":[{"assignments":[2296],"declarations":[{"constant":false,"id":2296,"mutability":"mutable","name":"selector","nameLocation":"8498:8:10","nodeType":"VariableDeclaration","scope":2302,"src":"8491:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2295,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8491:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2300,"initialValue":{"expression":{"expression":{"id":2297,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"8509:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1137_$","typeString":"type(contract IERC20)"}},"id":2298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8516:8:10","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1104,"src":"8509:15:10","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transfer(address,uint256) returns (bool)"}},"id":2299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8525:8:10","memberName":"selector","nodeType":"MemberAccess","src":"8509:24:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"8491:42:10"},{"AST":{"nativeSrc":"8569:1042:10","nodeType":"YulBlock","src":"8569:1042:10","statements":[{"nativeSrc":"8583:22:10","nodeType":"YulVariableDeclaration","src":"8583:22:10","value":{"arguments":[{"kind":"number","nativeSrc":"8600:4:10","nodeType":"YulLiteral","src":"8600:4:10","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8594:5:10","nodeType":"YulIdentifier","src":"8594:5:10"},"nativeSrc":"8594:11:10","nodeType":"YulFunctionCall","src":"8594:11:10"},"variables":[{"name":"fmp","nativeSrc":"8587:3:10","nodeType":"YulTypedName","src":"8587:3:10","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8625:4:10","nodeType":"YulLiteral","src":"8625:4:10","type":"","value":"0x00"},{"name":"selector","nativeSrc":"8631:8:10","nodeType":"YulIdentifier","src":"8631:8:10"}],"functionName":{"name":"mstore","nativeSrc":"8618:6:10","nodeType":"YulIdentifier","src":"8618:6:10"},"nativeSrc":"8618:22:10","nodeType":"YulFunctionCall","src":"8618:22:10"},"nativeSrc":"8618:22:10","nodeType":"YulExpressionStatement","src":"8618:22:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8660:4:10","nodeType":"YulLiteral","src":"8660:4:10","type":"","value":"0x04"},{"arguments":[{"name":"to","nativeSrc":"8670:2:10","nodeType":"YulIdentifier","src":"8670:2:10"},{"arguments":[{"kind":"number","nativeSrc":"8678:2:10","nodeType":"YulLiteral","src":"8678:2:10","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"8686:1:10","nodeType":"YulLiteral","src":"8686:1:10","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"8682:3:10","nodeType":"YulIdentifier","src":"8682:3:10"},"nativeSrc":"8682:6:10","nodeType":"YulFunctionCall","src":"8682:6:10"}],"functionName":{"name":"shr","nativeSrc":"8674:3:10","nodeType":"YulIdentifier","src":"8674:3:10"},"nativeSrc":"8674:15:10","nodeType":"YulFunctionCall","src":"8674:15:10"}],"functionName":{"name":"and","nativeSrc":"8666:3:10","nodeType":"YulIdentifier","src":"8666:3:10"},"nativeSrc":"8666:24:10","nodeType":"YulFunctionCall","src":"8666:24:10"}],"functionName":{"name":"mstore","nativeSrc":"8653:6:10","nodeType":"YulIdentifier","src":"8653:6:10"},"nativeSrc":"8653:38:10","nodeType":"YulFunctionCall","src":"8653:38:10"},"nativeSrc":"8653:38:10","nodeType":"YulExpressionStatement","src":"8653:38:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8711:4:10","nodeType":"YulLiteral","src":"8711:4:10","type":"","value":"0x24"},{"name":"value","nativeSrc":"8717:5:10","nodeType":"YulIdentifier","src":"8717:5:10"}],"functionName":{"name":"mstore","nativeSrc":"8704:6:10","nodeType":"YulIdentifier","src":"8704:6:10"},"nativeSrc":"8704:19:10","nodeType":"YulFunctionCall","src":"8704:19:10"},"nativeSrc":"8704:19:10","nodeType":"YulExpressionStatement","src":"8704:19:10"},{"nativeSrc":"8736:56:10","nodeType":"YulAssignment","src":"8736:56:10","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8752:3:10","nodeType":"YulIdentifier","src":"8752:3:10"},"nativeSrc":"8752:5:10","nodeType":"YulFunctionCall","src":"8752:5:10"},{"name":"token","nativeSrc":"8759:5:10","nodeType":"YulIdentifier","src":"8759:5:10"},{"kind":"number","nativeSrc":"8766:1:10","nodeType":"YulLiteral","src":"8766:1:10","type":"","value":"0"},{"kind":"number","nativeSrc":"8769:4:10","nodeType":"YulLiteral","src":"8769:4:10","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8775:4:10","nodeType":"YulLiteral","src":"8775:4:10","type":"","value":"0x44"},{"kind":"number","nativeSrc":"8781:4:10","nodeType":"YulLiteral","src":"8781:4:10","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8787:4:10","nodeType":"YulLiteral","src":"8787:4:10","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"8747:4:10","nodeType":"YulIdentifier","src":"8747:4:10"},"nativeSrc":"8747:45:10","nodeType":"YulFunctionCall","src":"8747:45:10"},"variableNames":[{"name":"success","nativeSrc":"8736:7:10","nodeType":"YulIdentifier","src":"8736:7:10"}]},{"body":{"nativeSrc":"9009:562:10","nodeType":"YulBlock","src":"9009:562:10","statements":[{"body":{"nativeSrc":"9144:133:10","nodeType":"YulBlock","src":"9144:133:10","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"9181:3:10","nodeType":"YulIdentifier","src":"9181:3:10"},{"kind":"number","nativeSrc":"9186:4:10","nodeType":"YulLiteral","src":"9186:4:10","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9192:14:10","nodeType":"YulIdentifier","src":"9192:14:10"},"nativeSrc":"9192:16:10","nodeType":"YulFunctionCall","src":"9192:16:10"}],"functionName":{"name":"returndatacopy","nativeSrc":"9166:14:10","nodeType":"YulIdentifier","src":"9166:14:10"},"nativeSrc":"9166:43:10","nodeType":"YulFunctionCall","src":"9166:43:10"},"nativeSrc":"9166:43:10","nodeType":"YulExpressionStatement","src":"9166:43:10"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"9237:3:10","nodeType":"YulIdentifier","src":"9237:3:10"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9242:14:10","nodeType":"YulIdentifier","src":"9242:14:10"},"nativeSrc":"9242:16:10","nodeType":"YulFunctionCall","src":"9242:16:10"}],"functionName":{"name":"revert","nativeSrc":"9230:6:10","nodeType":"YulIdentifier","src":"9230:6:10"},"nativeSrc":"9230:29:10","nodeType":"YulFunctionCall","src":"9230:29:10"},"nativeSrc":"9230:29:10","nodeType":"YulExpressionStatement","src":"9230:29:10"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"9126:7:10","nodeType":"YulIdentifier","src":"9126:7:10"}],"functionName":{"name":"iszero","nativeSrc":"9119:6:10","nodeType":"YulIdentifier","src":"9119:6:10"},"nativeSrc":"9119:15:10","nodeType":"YulFunctionCall","src":"9119:15:10"},{"name":"bubble","nativeSrc":"9136:6:10","nodeType":"YulIdentifier","src":"9136:6:10"}],"functionName":{"name":"and","nativeSrc":"9115:3:10","nodeType":"YulIdentifier","src":"9115:3:10"},"nativeSrc":"9115:28:10","nodeType":"YulFunctionCall","src":"9115:28:10"},"nativeSrc":"9112:165:10","nodeType":"YulIf","src":"9112:165:10"},{"nativeSrc":"9476:81:10","nodeType":"YulAssignment","src":"9476:81:10","value":{"arguments":[{"name":"success","nativeSrc":"9491:7:10","nodeType":"YulIdentifier","src":"9491:7:10"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9511:14:10","nodeType":"YulIdentifier","src":"9511:14:10"},"nativeSrc":"9511:16:10","nodeType":"YulFunctionCall","src":"9511:16:10"}],"functionName":{"name":"iszero","nativeSrc":"9504:6:10","nodeType":"YulIdentifier","src":"9504:6:10"},"nativeSrc":"9504:24:10","nodeType":"YulFunctionCall","src":"9504:24:10"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"9545:5:10","nodeType":"YulIdentifier","src":"9545:5:10"}],"functionName":{"name":"extcodesize","nativeSrc":"9533:11:10","nodeType":"YulIdentifier","src":"9533:11:10"},"nativeSrc":"9533:18:10","nodeType":"YulFunctionCall","src":"9533:18:10"},{"kind":"number","nativeSrc":"9553:1:10","nodeType":"YulLiteral","src":"9553:1:10","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"9530:2:10","nodeType":"YulIdentifier","src":"9530:2:10"},"nativeSrc":"9530:25:10","nodeType":"YulFunctionCall","src":"9530:25:10"}],"functionName":{"name":"and","nativeSrc":"9500:3:10","nodeType":"YulIdentifier","src":"9500:3:10"},"nativeSrc":"9500:56:10","nodeType":"YulFunctionCall","src":"9500:56:10"}],"functionName":{"name":"and","nativeSrc":"9487:3:10","nodeType":"YulIdentifier","src":"9487:3:10"},"nativeSrc":"9487:70:10","nodeType":"YulFunctionCall","src":"9487:70:10"},"variableNames":[{"name":"success","nativeSrc":"9476:7:10","nodeType":"YulIdentifier","src":"9476:7:10"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"8979:7:10","nodeType":"YulIdentifier","src":"8979:7:10"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8997:4:10","nodeType":"YulLiteral","src":"8997:4:10","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"8991:5:10","nodeType":"YulIdentifier","src":"8991:5:10"},"nativeSrc":"8991:11:10","nodeType":"YulFunctionCall","src":"8991:11:10"},{"kind":"number","nativeSrc":"9004:1:10","nodeType":"YulLiteral","src":"9004:1:10","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"8988:2:10","nodeType":"YulIdentifier","src":"8988:2:10"},"nativeSrc":"8988:18:10","nodeType":"YulFunctionCall","src":"8988:18:10"}],"functionName":{"name":"and","nativeSrc":"8975:3:10","nodeType":"YulIdentifier","src":"8975:3:10"},"nativeSrc":"8975:32:10","nodeType":"YulFunctionCall","src":"8975:32:10"}],"functionName":{"name":"iszero","nativeSrc":"8968:6:10","nodeType":"YulIdentifier","src":"8968:6:10"},"nativeSrc":"8968:40:10","nodeType":"YulFunctionCall","src":"8968:40:10"},"nativeSrc":"8965:606:10","nodeType":"YulIf","src":"8965:606:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9591:4:10","nodeType":"YulLiteral","src":"9591:4:10","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"9597:3:10","nodeType":"YulIdentifier","src":"9597:3:10"}],"functionName":{"name":"mstore","nativeSrc":"9584:6:10","nodeType":"YulIdentifier","src":"9584:6:10"},"nativeSrc":"9584:17:10","nodeType":"YulFunctionCall","src":"9584:17:10"},"nativeSrc":"9584:17:10","nodeType":"YulExpressionStatement","src":"9584:17:10"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2290,"isOffset":false,"isSlot":false,"src":"9136:6:10","valueSize":1},{"declaration":2296,"isOffset":false,"isSlot":false,"src":"8631:8:10","valueSize":1},{"declaration":2293,"isOffset":false,"isSlot":false,"src":"8736:7:10","valueSize":1},{"declaration":2293,"isOffset":false,"isSlot":false,"src":"8979:7:10","valueSize":1},{"declaration":2293,"isOffset":false,"isSlot":false,"src":"9126:7:10","valueSize":1},{"declaration":2293,"isOffset":false,"isSlot":false,"src":"9476:7:10","valueSize":1},{"declaration":2293,"isOffset":false,"isSlot":false,"src":"9491:7:10","valueSize":1},{"declaration":2286,"isOffset":false,"isSlot":false,"src":"8670:2:10","valueSize":1},{"declaration":2284,"isOffset":false,"isSlot":false,"src":"8759:5:10","valueSize":1},{"declaration":2284,"isOffset":false,"isSlot":false,"src":"9545:5:10","valueSize":1},{"declaration":2288,"isOffset":false,"isSlot":false,"src":"8717:5:10","valueSize":1}],"flags":["memory-safe"],"id":2301,"nodeType":"InlineAssembly","src":"8544:1067:10"}]},"documentation":{"id":2281,"nodeType":"StructuredDocumentation","src":"7885:483:10","text":" @dev Imitates a Solidity `token.transfer(to, value)` call, relaxing the requirement on the return value: the\n return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param to The recipient of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":2303,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"8382:13:10","nodeType":"FunctionDefinition","parameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2284,"mutability":"mutable","name":"token","nameLocation":"8403:5:10","nodeType":"VariableDeclaration","scope":2303,"src":"8396:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":2283,"nodeType":"UserDefinedTypeName","pathNode":{"id":2282,"name":"IERC20","nameLocations":["8396:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"8396:6:10"},"referencedDeclaration":1137,"src":"8396:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2286,"mutability":"mutable","name":"to","nameLocation":"8418:2:10","nodeType":"VariableDeclaration","scope":2303,"src":"8410:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2285,"name":"address","nodeType":"ElementaryTypeName","src":"8410:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2288,"mutability":"mutable","name":"value","nameLocation":"8430:5:10","nodeType":"VariableDeclaration","scope":2303,"src":"8422:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2287,"name":"uint256","nodeType":"ElementaryTypeName","src":"8422:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2290,"mutability":"mutable","name":"bubble","nameLocation":"8442:6:10","nodeType":"VariableDeclaration","scope":2303,"src":"8437:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2289,"name":"bool","nodeType":"ElementaryTypeName","src":"8437:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8395:54:10"},"returnParameters":{"id":2294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2293,"mutability":"mutable","name":"success","nameLocation":"8472:7:10","nodeType":"VariableDeclaration","scope":2303,"src":"8467:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2292,"name":"bool","nodeType":"ElementaryTypeName","src":"8467:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8466:14:10"},"scope":2352,"src":"8373:1244:10","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2327,"nodeType":"Block","src":"10337:1221:10","statements":[{"assignments":[2321],"declarations":[{"constant":false,"id":2321,"mutability":"mutable","name":"selector","nameLocation":"10354:8:10","nodeType":"VariableDeclaration","scope":2327,"src":"10347:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2320,"name":"bytes4","nodeType":"ElementaryTypeName","src":"10347:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2325,"initialValue":{"expression":{"expression":{"id":2322,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"10365:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1137_$","typeString":"type(contract IERC20)"}},"id":2323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10372:12:10","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1136,"src":"10365:19:10","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transferFrom(address,address,uint256) returns (bool)"}},"id":2324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10385:8:10","memberName":"selector","nodeType":"MemberAccess","src":"10365:28:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"10347:46:10"},{"AST":{"nativeSrc":"10429:1123:10","nodeType":"YulBlock","src":"10429:1123:10","statements":[{"nativeSrc":"10443:22:10","nodeType":"YulVariableDeclaration","src":"10443:22:10","value":{"arguments":[{"kind":"number","nativeSrc":"10460:4:10","nodeType":"YulLiteral","src":"10460:4:10","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"10454:5:10","nodeType":"YulIdentifier","src":"10454:5:10"},"nativeSrc":"10454:11:10","nodeType":"YulFunctionCall","src":"10454:11:10"},"variables":[{"name":"fmp","nativeSrc":"10447:3:10","nodeType":"YulTypedName","src":"10447:3:10","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10485:4:10","nodeType":"YulLiteral","src":"10485:4:10","type":"","value":"0x00"},{"name":"selector","nativeSrc":"10491:8:10","nodeType":"YulIdentifier","src":"10491:8:10"}],"functionName":{"name":"mstore","nativeSrc":"10478:6:10","nodeType":"YulIdentifier","src":"10478:6:10"},"nativeSrc":"10478:22:10","nodeType":"YulFunctionCall","src":"10478:22:10"},"nativeSrc":"10478:22:10","nodeType":"YulExpressionStatement","src":"10478:22:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10520:4:10","nodeType":"YulLiteral","src":"10520:4:10","type":"","value":"0x04"},{"arguments":[{"name":"from","nativeSrc":"10530:4:10","nodeType":"YulIdentifier","src":"10530:4:10"},{"arguments":[{"kind":"number","nativeSrc":"10540:2:10","nodeType":"YulLiteral","src":"10540:2:10","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"10548:1:10","nodeType":"YulLiteral","src":"10548:1:10","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10544:3:10","nodeType":"YulIdentifier","src":"10544:3:10"},"nativeSrc":"10544:6:10","nodeType":"YulFunctionCall","src":"10544:6:10"}],"functionName":{"name":"shr","nativeSrc":"10536:3:10","nodeType":"YulIdentifier","src":"10536:3:10"},"nativeSrc":"10536:15:10","nodeType":"YulFunctionCall","src":"10536:15:10"}],"functionName":{"name":"and","nativeSrc":"10526:3:10","nodeType":"YulIdentifier","src":"10526:3:10"},"nativeSrc":"10526:26:10","nodeType":"YulFunctionCall","src":"10526:26:10"}],"functionName":{"name":"mstore","nativeSrc":"10513:6:10","nodeType":"YulIdentifier","src":"10513:6:10"},"nativeSrc":"10513:40:10","nodeType":"YulFunctionCall","src":"10513:40:10"},"nativeSrc":"10513:40:10","nodeType":"YulExpressionStatement","src":"10513:40:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10573:4:10","nodeType":"YulLiteral","src":"10573:4:10","type":"","value":"0x24"},{"arguments":[{"name":"to","nativeSrc":"10583:2:10","nodeType":"YulIdentifier","src":"10583:2:10"},{"arguments":[{"kind":"number","nativeSrc":"10591:2:10","nodeType":"YulLiteral","src":"10591:2:10","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"10599:1:10","nodeType":"YulLiteral","src":"10599:1:10","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10595:3:10","nodeType":"YulIdentifier","src":"10595:3:10"},"nativeSrc":"10595:6:10","nodeType":"YulFunctionCall","src":"10595:6:10"}],"functionName":{"name":"shr","nativeSrc":"10587:3:10","nodeType":"YulIdentifier","src":"10587:3:10"},"nativeSrc":"10587:15:10","nodeType":"YulFunctionCall","src":"10587:15:10"}],"functionName":{"name":"and","nativeSrc":"10579:3:10","nodeType":"YulIdentifier","src":"10579:3:10"},"nativeSrc":"10579:24:10","nodeType":"YulFunctionCall","src":"10579:24:10"}],"functionName":{"name":"mstore","nativeSrc":"10566:6:10","nodeType":"YulIdentifier","src":"10566:6:10"},"nativeSrc":"10566:38:10","nodeType":"YulFunctionCall","src":"10566:38:10"},"nativeSrc":"10566:38:10","nodeType":"YulExpressionStatement","src":"10566:38:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10624:4:10","nodeType":"YulLiteral","src":"10624:4:10","type":"","value":"0x44"},{"name":"value","nativeSrc":"10630:5:10","nodeType":"YulIdentifier","src":"10630:5:10"}],"functionName":{"name":"mstore","nativeSrc":"10617:6:10","nodeType":"YulIdentifier","src":"10617:6:10"},"nativeSrc":"10617:19:10","nodeType":"YulFunctionCall","src":"10617:19:10"},"nativeSrc":"10617:19:10","nodeType":"YulExpressionStatement","src":"10617:19:10"},{"nativeSrc":"10649:56:10","nodeType":"YulAssignment","src":"10649:56:10","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"10665:3:10","nodeType":"YulIdentifier","src":"10665:3:10"},"nativeSrc":"10665:5:10","nodeType":"YulFunctionCall","src":"10665:5:10"},{"name":"token","nativeSrc":"10672:5:10","nodeType":"YulIdentifier","src":"10672:5:10"},{"kind":"number","nativeSrc":"10679:1:10","nodeType":"YulLiteral","src":"10679:1:10","type":"","value":"0"},{"kind":"number","nativeSrc":"10682:4:10","nodeType":"YulLiteral","src":"10682:4:10","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10688:4:10","nodeType":"YulLiteral","src":"10688:4:10","type":"","value":"0x64"},{"kind":"number","nativeSrc":"10694:4:10","nodeType":"YulLiteral","src":"10694:4:10","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10700:4:10","nodeType":"YulLiteral","src":"10700:4:10","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"10660:4:10","nodeType":"YulIdentifier","src":"10660:4:10"},"nativeSrc":"10660:45:10","nodeType":"YulFunctionCall","src":"10660:45:10"},"variableNames":[{"name":"success","nativeSrc":"10649:7:10","nodeType":"YulIdentifier","src":"10649:7:10"}]},{"body":{"nativeSrc":"10922:562:10","nodeType":"YulBlock","src":"10922:562:10","statements":[{"body":{"nativeSrc":"11057:133:10","nodeType":"YulBlock","src":"11057:133:10","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"11094:3:10","nodeType":"YulIdentifier","src":"11094:3:10"},{"kind":"number","nativeSrc":"11099:4:10","nodeType":"YulLiteral","src":"11099:4:10","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11105:14:10","nodeType":"YulIdentifier","src":"11105:14:10"},"nativeSrc":"11105:16:10","nodeType":"YulFunctionCall","src":"11105:16:10"}],"functionName":{"name":"returndatacopy","nativeSrc":"11079:14:10","nodeType":"YulIdentifier","src":"11079:14:10"},"nativeSrc":"11079:43:10","nodeType":"YulFunctionCall","src":"11079:43:10"},"nativeSrc":"11079:43:10","nodeType":"YulExpressionStatement","src":"11079:43:10"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"11150:3:10","nodeType":"YulIdentifier","src":"11150:3:10"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11155:14:10","nodeType":"YulIdentifier","src":"11155:14:10"},"nativeSrc":"11155:16:10","nodeType":"YulFunctionCall","src":"11155:16:10"}],"functionName":{"name":"revert","nativeSrc":"11143:6:10","nodeType":"YulIdentifier","src":"11143:6:10"},"nativeSrc":"11143:29:10","nodeType":"YulFunctionCall","src":"11143:29:10"},"nativeSrc":"11143:29:10","nodeType":"YulExpressionStatement","src":"11143:29:10"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"11039:7:10","nodeType":"YulIdentifier","src":"11039:7:10"}],"functionName":{"name":"iszero","nativeSrc":"11032:6:10","nodeType":"YulIdentifier","src":"11032:6:10"},"nativeSrc":"11032:15:10","nodeType":"YulFunctionCall","src":"11032:15:10"},{"name":"bubble","nativeSrc":"11049:6:10","nodeType":"YulIdentifier","src":"11049:6:10"}],"functionName":{"name":"and","nativeSrc":"11028:3:10","nodeType":"YulIdentifier","src":"11028:3:10"},"nativeSrc":"11028:28:10","nodeType":"YulFunctionCall","src":"11028:28:10"},"nativeSrc":"11025:165:10","nodeType":"YulIf","src":"11025:165:10"},{"nativeSrc":"11389:81:10","nodeType":"YulAssignment","src":"11389:81:10","value":{"arguments":[{"name":"success","nativeSrc":"11404:7:10","nodeType":"YulIdentifier","src":"11404:7:10"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11424:14:10","nodeType":"YulIdentifier","src":"11424:14:10"},"nativeSrc":"11424:16:10","nodeType":"YulFunctionCall","src":"11424:16:10"}],"functionName":{"name":"iszero","nativeSrc":"11417:6:10","nodeType":"YulIdentifier","src":"11417:6:10"},"nativeSrc":"11417:24:10","nodeType":"YulFunctionCall","src":"11417:24:10"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"11458:5:10","nodeType":"YulIdentifier","src":"11458:5:10"}],"functionName":{"name":"extcodesize","nativeSrc":"11446:11:10","nodeType":"YulIdentifier","src":"11446:11:10"},"nativeSrc":"11446:18:10","nodeType":"YulFunctionCall","src":"11446:18:10"},{"kind":"number","nativeSrc":"11466:1:10","nodeType":"YulLiteral","src":"11466:1:10","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"11443:2:10","nodeType":"YulIdentifier","src":"11443:2:10"},"nativeSrc":"11443:25:10","nodeType":"YulFunctionCall","src":"11443:25:10"}],"functionName":{"name":"and","nativeSrc":"11413:3:10","nodeType":"YulIdentifier","src":"11413:3:10"},"nativeSrc":"11413:56:10","nodeType":"YulFunctionCall","src":"11413:56:10"}],"functionName":{"name":"and","nativeSrc":"11400:3:10","nodeType":"YulIdentifier","src":"11400:3:10"},"nativeSrc":"11400:70:10","nodeType":"YulFunctionCall","src":"11400:70:10"},"variableNames":[{"name":"success","nativeSrc":"11389:7:10","nodeType":"YulIdentifier","src":"11389:7:10"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"10892:7:10","nodeType":"YulIdentifier","src":"10892:7:10"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10910:4:10","nodeType":"YulLiteral","src":"10910:4:10","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"10904:5:10","nodeType":"YulIdentifier","src":"10904:5:10"},"nativeSrc":"10904:11:10","nodeType":"YulFunctionCall","src":"10904:11:10"},{"kind":"number","nativeSrc":"10917:1:10","nodeType":"YulLiteral","src":"10917:1:10","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"10901:2:10","nodeType":"YulIdentifier","src":"10901:2:10"},"nativeSrc":"10901:18:10","nodeType":"YulFunctionCall","src":"10901:18:10"}],"functionName":{"name":"and","nativeSrc":"10888:3:10","nodeType":"YulIdentifier","src":"10888:3:10"},"nativeSrc":"10888:32:10","nodeType":"YulFunctionCall","src":"10888:32:10"}],"functionName":{"name":"iszero","nativeSrc":"10881:6:10","nodeType":"YulIdentifier","src":"10881:6:10"},"nativeSrc":"10881:40:10","nodeType":"YulFunctionCall","src":"10881:40:10"},"nativeSrc":"10878:606:10","nodeType":"YulIf","src":"10878:606:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11504:4:10","nodeType":"YulLiteral","src":"11504:4:10","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"11510:3:10","nodeType":"YulIdentifier","src":"11510:3:10"}],"functionName":{"name":"mstore","nativeSrc":"11497:6:10","nodeType":"YulIdentifier","src":"11497:6:10"},"nativeSrc":"11497:17:10","nodeType":"YulFunctionCall","src":"11497:17:10"},"nativeSrc":"11497:17:10","nodeType":"YulExpressionStatement","src":"11497:17:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11534:4:10","nodeType":"YulLiteral","src":"11534:4:10","type":"","value":"0x60"},{"kind":"number","nativeSrc":"11540:1:10","nodeType":"YulLiteral","src":"11540:1:10","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"11527:6:10","nodeType":"YulIdentifier","src":"11527:6:10"},"nativeSrc":"11527:15:10","nodeType":"YulFunctionCall","src":"11527:15:10"},"nativeSrc":"11527:15:10","nodeType":"YulExpressionStatement","src":"11527:15:10"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2315,"isOffset":false,"isSlot":false,"src":"11049:6:10","valueSize":1},{"declaration":2309,"isOffset":false,"isSlot":false,"src":"10530:4:10","valueSize":1},{"declaration":2321,"isOffset":false,"isSlot":false,"src":"10491:8:10","valueSize":1},{"declaration":2318,"isOffset":false,"isSlot":false,"src":"10649:7:10","valueSize":1},{"declaration":2318,"isOffset":false,"isSlot":false,"src":"10892:7:10","valueSize":1},{"declaration":2318,"isOffset":false,"isSlot":false,"src":"11039:7:10","valueSize":1},{"declaration":2318,"isOffset":false,"isSlot":false,"src":"11389:7:10","valueSize":1},{"declaration":2318,"isOffset":false,"isSlot":false,"src":"11404:7:10","valueSize":1},{"declaration":2311,"isOffset":false,"isSlot":false,"src":"10583:2:10","valueSize":1},{"declaration":2307,"isOffset":false,"isSlot":false,"src":"10672:5:10","valueSize":1},{"declaration":2307,"isOffset":false,"isSlot":false,"src":"11458:5:10","valueSize":1},{"declaration":2313,"isOffset":false,"isSlot":false,"src":"10630:5:10","valueSize":1}],"flags":["memory-safe"],"id":2326,"nodeType":"InlineAssembly","src":"10404:1148:10"}]},"documentation":{"id":2304,"nodeType":"StructuredDocumentation","src":"9623:537:10","text":" @dev Imitates a Solidity `token.transferFrom(from, to, value)` call, relaxing the requirement on the return\n value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param from The sender of the tokens\n @param to The recipient of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":2328,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransferFrom","nameLocation":"10174:17:10","nodeType":"FunctionDefinition","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2307,"mutability":"mutable","name":"token","nameLocation":"10208:5:10","nodeType":"VariableDeclaration","scope":2328,"src":"10201:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":2306,"nodeType":"UserDefinedTypeName","pathNode":{"id":2305,"name":"IERC20","nameLocations":["10201:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"10201:6:10"},"referencedDeclaration":1137,"src":"10201:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2309,"mutability":"mutable","name":"from","nameLocation":"10231:4:10","nodeType":"VariableDeclaration","scope":2328,"src":"10223:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2308,"name":"address","nodeType":"ElementaryTypeName","src":"10223:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2311,"mutability":"mutable","name":"to","nameLocation":"10253:2:10","nodeType":"VariableDeclaration","scope":2328,"src":"10245:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2310,"name":"address","nodeType":"ElementaryTypeName","src":"10245:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2313,"mutability":"mutable","name":"value","nameLocation":"10273:5:10","nodeType":"VariableDeclaration","scope":2328,"src":"10265:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2312,"name":"uint256","nodeType":"ElementaryTypeName","src":"10265:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"bubble","nameLocation":"10293:6:10","nodeType":"VariableDeclaration","scope":2328,"src":"10288:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2314,"name":"bool","nodeType":"ElementaryTypeName","src":"10288:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10191:114:10"},"returnParameters":{"id":2319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2318,"mutability":"mutable","name":"success","nameLocation":"10328:7:10","nodeType":"VariableDeclaration","scope":2328,"src":"10323:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2317,"name":"bool","nodeType":"ElementaryTypeName","src":"10323:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10322:14:10"},"scope":2352,"src":"10165:1393:10","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2350,"nodeType":"Block","src":"12171:1140:10","statements":[{"assignments":[2344],"declarations":[{"constant":false,"id":2344,"mutability":"mutable","name":"selector","nameLocation":"12188:8:10","nodeType":"VariableDeclaration","scope":2350,"src":"12181:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2343,"name":"bytes4","nodeType":"ElementaryTypeName","src":"12181:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2348,"initialValue":{"expression":{"expression":{"id":2345,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"12199:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1137_$","typeString":"type(contract IERC20)"}},"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12206:7:10","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1124,"src":"12199:14:10","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.approve(address,uint256) returns (bool)"}},"id":2347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12214:8:10","memberName":"selector","nodeType":"MemberAccess","src":"12199:23:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"12181:41:10"},{"AST":{"nativeSrc":"12258:1047:10","nodeType":"YulBlock","src":"12258:1047:10","statements":[{"nativeSrc":"12272:22:10","nodeType":"YulVariableDeclaration","src":"12272:22:10","value":{"arguments":[{"kind":"number","nativeSrc":"12289:4:10","nodeType":"YulLiteral","src":"12289:4:10","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"12283:5:10","nodeType":"YulIdentifier","src":"12283:5:10"},"nativeSrc":"12283:11:10","nodeType":"YulFunctionCall","src":"12283:11:10"},"variables":[{"name":"fmp","nativeSrc":"12276:3:10","nodeType":"YulTypedName","src":"12276:3:10","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12314:4:10","nodeType":"YulLiteral","src":"12314:4:10","type":"","value":"0x00"},{"name":"selector","nativeSrc":"12320:8:10","nodeType":"YulIdentifier","src":"12320:8:10"}],"functionName":{"name":"mstore","nativeSrc":"12307:6:10","nodeType":"YulIdentifier","src":"12307:6:10"},"nativeSrc":"12307:22:10","nodeType":"YulFunctionCall","src":"12307:22:10"},"nativeSrc":"12307:22:10","nodeType":"YulExpressionStatement","src":"12307:22:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12349:4:10","nodeType":"YulLiteral","src":"12349:4:10","type":"","value":"0x04"},{"arguments":[{"name":"spender","nativeSrc":"12359:7:10","nodeType":"YulIdentifier","src":"12359:7:10"},{"arguments":[{"kind":"number","nativeSrc":"12372:2:10","nodeType":"YulLiteral","src":"12372:2:10","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"12380:1:10","nodeType":"YulLiteral","src":"12380:1:10","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12376:3:10","nodeType":"YulIdentifier","src":"12376:3:10"},"nativeSrc":"12376:6:10","nodeType":"YulFunctionCall","src":"12376:6:10"}],"functionName":{"name":"shr","nativeSrc":"12368:3:10","nodeType":"YulIdentifier","src":"12368:3:10"},"nativeSrc":"12368:15:10","nodeType":"YulFunctionCall","src":"12368:15:10"}],"functionName":{"name":"and","nativeSrc":"12355:3:10","nodeType":"YulIdentifier","src":"12355:3:10"},"nativeSrc":"12355:29:10","nodeType":"YulFunctionCall","src":"12355:29:10"}],"functionName":{"name":"mstore","nativeSrc":"12342:6:10","nodeType":"YulIdentifier","src":"12342:6:10"},"nativeSrc":"12342:43:10","nodeType":"YulFunctionCall","src":"12342:43:10"},"nativeSrc":"12342:43:10","nodeType":"YulExpressionStatement","src":"12342:43:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12405:4:10","nodeType":"YulLiteral","src":"12405:4:10","type":"","value":"0x24"},{"name":"value","nativeSrc":"12411:5:10","nodeType":"YulIdentifier","src":"12411:5:10"}],"functionName":{"name":"mstore","nativeSrc":"12398:6:10","nodeType":"YulIdentifier","src":"12398:6:10"},"nativeSrc":"12398:19:10","nodeType":"YulFunctionCall","src":"12398:19:10"},"nativeSrc":"12398:19:10","nodeType":"YulExpressionStatement","src":"12398:19:10"},{"nativeSrc":"12430:56:10","nodeType":"YulAssignment","src":"12430:56:10","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"12446:3:10","nodeType":"YulIdentifier","src":"12446:3:10"},"nativeSrc":"12446:5:10","nodeType":"YulFunctionCall","src":"12446:5:10"},{"name":"token","nativeSrc":"12453:5:10","nodeType":"YulIdentifier","src":"12453:5:10"},{"kind":"number","nativeSrc":"12460:1:10","nodeType":"YulLiteral","src":"12460:1:10","type":"","value":"0"},{"kind":"number","nativeSrc":"12463:4:10","nodeType":"YulLiteral","src":"12463:4:10","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12469:4:10","nodeType":"YulLiteral","src":"12469:4:10","type":"","value":"0x44"},{"kind":"number","nativeSrc":"12475:4:10","nodeType":"YulLiteral","src":"12475:4:10","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12481:4:10","nodeType":"YulLiteral","src":"12481:4:10","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"12441:4:10","nodeType":"YulIdentifier","src":"12441:4:10"},"nativeSrc":"12441:45:10","nodeType":"YulFunctionCall","src":"12441:45:10"},"variableNames":[{"name":"success","nativeSrc":"12430:7:10","nodeType":"YulIdentifier","src":"12430:7:10"}]},{"body":{"nativeSrc":"12703:562:10","nodeType":"YulBlock","src":"12703:562:10","statements":[{"body":{"nativeSrc":"12838:133:10","nodeType":"YulBlock","src":"12838:133:10","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"12875:3:10","nodeType":"YulIdentifier","src":"12875:3:10"},{"kind":"number","nativeSrc":"12880:4:10","nodeType":"YulLiteral","src":"12880:4:10","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"12886:14:10","nodeType":"YulIdentifier","src":"12886:14:10"},"nativeSrc":"12886:16:10","nodeType":"YulFunctionCall","src":"12886:16:10"}],"functionName":{"name":"returndatacopy","nativeSrc":"12860:14:10","nodeType":"YulIdentifier","src":"12860:14:10"},"nativeSrc":"12860:43:10","nodeType":"YulFunctionCall","src":"12860:43:10"},"nativeSrc":"12860:43:10","nodeType":"YulExpressionStatement","src":"12860:43:10"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"12931:3:10","nodeType":"YulIdentifier","src":"12931:3:10"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"12936:14:10","nodeType":"YulIdentifier","src":"12936:14:10"},"nativeSrc":"12936:16:10","nodeType":"YulFunctionCall","src":"12936:16:10"}],"functionName":{"name":"revert","nativeSrc":"12924:6:10","nodeType":"YulIdentifier","src":"12924:6:10"},"nativeSrc":"12924:29:10","nodeType":"YulFunctionCall","src":"12924:29:10"},"nativeSrc":"12924:29:10","nodeType":"YulExpressionStatement","src":"12924:29:10"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"12820:7:10","nodeType":"YulIdentifier","src":"12820:7:10"}],"functionName":{"name":"iszero","nativeSrc":"12813:6:10","nodeType":"YulIdentifier","src":"12813:6:10"},"nativeSrc":"12813:15:10","nodeType":"YulFunctionCall","src":"12813:15:10"},{"name":"bubble","nativeSrc":"12830:6:10","nodeType":"YulIdentifier","src":"12830:6:10"}],"functionName":{"name":"and","nativeSrc":"12809:3:10","nodeType":"YulIdentifier","src":"12809:3:10"},"nativeSrc":"12809:28:10","nodeType":"YulFunctionCall","src":"12809:28:10"},"nativeSrc":"12806:165:10","nodeType":"YulIf","src":"12806:165:10"},{"nativeSrc":"13170:81:10","nodeType":"YulAssignment","src":"13170:81:10","value":{"arguments":[{"name":"success","nativeSrc":"13185:7:10","nodeType":"YulIdentifier","src":"13185:7:10"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"13205:14:10","nodeType":"YulIdentifier","src":"13205:14:10"},"nativeSrc":"13205:16:10","nodeType":"YulFunctionCall","src":"13205:16:10"}],"functionName":{"name":"iszero","nativeSrc":"13198:6:10","nodeType":"YulIdentifier","src":"13198:6:10"},"nativeSrc":"13198:24:10","nodeType":"YulFunctionCall","src":"13198:24:10"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"13239:5:10","nodeType":"YulIdentifier","src":"13239:5:10"}],"functionName":{"name":"extcodesize","nativeSrc":"13227:11:10","nodeType":"YulIdentifier","src":"13227:11:10"},"nativeSrc":"13227:18:10","nodeType":"YulFunctionCall","src":"13227:18:10"},{"kind":"number","nativeSrc":"13247:1:10","nodeType":"YulLiteral","src":"13247:1:10","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"13224:2:10","nodeType":"YulIdentifier","src":"13224:2:10"},"nativeSrc":"13224:25:10","nodeType":"YulFunctionCall","src":"13224:25:10"}],"functionName":{"name":"and","nativeSrc":"13194:3:10","nodeType":"YulIdentifier","src":"13194:3:10"},"nativeSrc":"13194:56:10","nodeType":"YulFunctionCall","src":"13194:56:10"}],"functionName":{"name":"and","nativeSrc":"13181:3:10","nodeType":"YulIdentifier","src":"13181:3:10"},"nativeSrc":"13181:70:10","nodeType":"YulFunctionCall","src":"13181:70:10"},"variableNames":[{"name":"success","nativeSrc":"13170:7:10","nodeType":"YulIdentifier","src":"13170:7:10"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"12673:7:10","nodeType":"YulIdentifier","src":"12673:7:10"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12691:4:10","nodeType":"YulLiteral","src":"12691:4:10","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"12685:5:10","nodeType":"YulIdentifier","src":"12685:5:10"},"nativeSrc":"12685:11:10","nodeType":"YulFunctionCall","src":"12685:11:10"},{"kind":"number","nativeSrc":"12698:1:10","nodeType":"YulLiteral","src":"12698:1:10","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"12682:2:10","nodeType":"YulIdentifier","src":"12682:2:10"},"nativeSrc":"12682:18:10","nodeType":"YulFunctionCall","src":"12682:18:10"}],"functionName":{"name":"and","nativeSrc":"12669:3:10","nodeType":"YulIdentifier","src":"12669:3:10"},"nativeSrc":"12669:32:10","nodeType":"YulFunctionCall","src":"12669:32:10"}],"functionName":{"name":"iszero","nativeSrc":"12662:6:10","nodeType":"YulIdentifier","src":"12662:6:10"},"nativeSrc":"12662:40:10","nodeType":"YulFunctionCall","src":"12662:40:10"},"nativeSrc":"12659:606:10","nodeType":"YulIf","src":"12659:606:10"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13285:4:10","nodeType":"YulLiteral","src":"13285:4:10","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"13291:3:10","nodeType":"YulIdentifier","src":"13291:3:10"}],"functionName":{"name":"mstore","nativeSrc":"13278:6:10","nodeType":"YulIdentifier","src":"13278:6:10"},"nativeSrc":"13278:17:10","nodeType":"YulFunctionCall","src":"13278:17:10"},"nativeSrc":"13278:17:10","nodeType":"YulExpressionStatement","src":"13278:17:10"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2338,"isOffset":false,"isSlot":false,"src":"12830:6:10","valueSize":1},{"declaration":2344,"isOffset":false,"isSlot":false,"src":"12320:8:10","valueSize":1},{"declaration":2334,"isOffset":false,"isSlot":false,"src":"12359:7:10","valueSize":1},{"declaration":2341,"isOffset":false,"isSlot":false,"src":"12430:7:10","valueSize":1},{"declaration":2341,"isOffset":false,"isSlot":false,"src":"12673:7:10","valueSize":1},{"declaration":2341,"isOffset":false,"isSlot":false,"src":"12820:7:10","valueSize":1},{"declaration":2341,"isOffset":false,"isSlot":false,"src":"13170:7:10","valueSize":1},{"declaration":2341,"isOffset":false,"isSlot":false,"src":"13185:7:10","valueSize":1},{"declaration":2332,"isOffset":false,"isSlot":false,"src":"12453:5:10","valueSize":1},{"declaration":2332,"isOffset":false,"isSlot":false,"src":"13239:5:10","valueSize":1},{"declaration":2336,"isOffset":false,"isSlot":false,"src":"12411:5:10","valueSize":1}],"flags":["memory-safe"],"id":2349,"nodeType":"InlineAssembly","src":"12233:1072:10"}]},"documentation":{"id":2329,"nodeType":"StructuredDocumentation","src":"11564:490:10","text":" @dev Imitates a Solidity `token.approve(spender, value)` call, relaxing the requirement on the return value:\n the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param spender The spender of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":2351,"implemented":true,"kind":"function","modifiers":[],"name":"_safeApprove","nameLocation":"12068:12:10","nodeType":"FunctionDefinition","parameters":{"id":2339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2332,"mutability":"mutable","name":"token","nameLocation":"12088:5:10","nodeType":"VariableDeclaration","scope":2351,"src":"12081:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":2331,"nodeType":"UserDefinedTypeName","pathNode":{"id":2330,"name":"IERC20","nameLocations":["12081:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"12081:6:10"},"referencedDeclaration":1137,"src":"12081:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2334,"mutability":"mutable","name":"spender","nameLocation":"12103:7:10","nodeType":"VariableDeclaration","scope":2351,"src":"12095:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"12095:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2336,"mutability":"mutable","name":"value","nameLocation":"12120:5:10","nodeType":"VariableDeclaration","scope":2351,"src":"12112:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2335,"name":"uint256","nodeType":"ElementaryTypeName","src":"12112:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2338,"mutability":"mutable","name":"bubble","nameLocation":"12132:6:10","nodeType":"VariableDeclaration","scope":2351,"src":"12127:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2337,"name":"bool","nodeType":"ElementaryTypeName","src":"12127:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12080:59:10"},"returnParameters":{"id":2342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2341,"mutability":"mutable","name":"success","nameLocation":"12162:7:10","nodeType":"VariableDeclaration","scope":2351,"src":"12157:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2340,"name":"bool","nodeType":"ElementaryTypeName","src":"12157:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12156:14:10"},"scope":2352,"src":"12059:1252:10","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":2353,"src":"698:12615:10","usedErrors":[1909,1918],"usedEvents":[]}],"src":"115:13199:10"},"id":10},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[2382]},"id":2383,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2354,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:11"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2355,"nodeType":"StructuredDocumentation","src":"127:496:11","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2382,"linearizedBaseContracts":[2382],"name":"Context","nameLocation":"642:7:11","nodeType":"ContractDefinition","nodes":[{"body":{"id":2363,"nodeType":"Block","src":"718:34:11","statements":[{"expression":{"expression":{"id":2360,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:11","memberName":"sender","nodeType":"MemberAccess","src":"735:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2359,"id":2362,"nodeType":"Return","src":"728:17:11"}]},"id":2364,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:11","nodeType":"FunctionDefinition","parameters":{"id":2356,"nodeType":"ParameterList","parameters":[],"src":"675:2:11"},"returnParameters":{"id":2359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2364,"src":"709:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2357,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:11"},"scope":2382,"src":"656:96:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2372,"nodeType":"Block","src":"825:32:11","statements":[{"expression":{"expression":{"id":2369,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:11","memberName":"data","nodeType":"MemberAccess","src":"842:8:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2368,"id":2371,"nodeType":"Return","src":"835:15:11"}]},"id":2373,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:11","nodeType":"FunctionDefinition","parameters":{"id":2365,"nodeType":"ParameterList","parameters":[],"src":"775:2:11"},"returnParameters":{"id":2368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2373,"src":"809:14:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2366,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:11"},"scope":2382,"src":"758:99:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2380,"nodeType":"Block","src":"935:25:11","statements":[{"expression":{"hexValue":"30","id":2378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2377,"id":2379,"nodeType":"Return","src":"945:8:11"}]},"id":2381,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:11","nodeType":"FunctionDefinition","parameters":{"id":2374,"nodeType":"ParameterList","parameters":[],"src":"892:2:11"},"returnParameters":{"id":2377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2381,"src":"926:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2375,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:11"},"scope":2382,"src":"863:97:11","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2383,"src":"624:338:11","usedErrors":[],"usedEvents":[]}],"src":"101:862:11"},"id":11},"@openzeppelin/contracts/utils/LowLevelCall.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/LowLevelCall.sol","exportedSymbols":{"LowLevelCall":[2541]},"id":2542,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2384,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"LowLevelCall","contractDependencies":[],"contractKind":"library","documentation":{"id":2385,"nodeType":"StructuredDocumentation","src":"132:288:12","text":" @dev Library of low level call functions that implement different calling strategies to deal with the return data.\n WARNING: Using this library requires an advanced understanding of Solidity and how the EVM works. It is recommended\n to use the {Address} library instead."},"fullyImplemented":true,"id":2541,"linearizedBaseContracts":[2541],"name":"LowLevelCall","nameLocation":"429:12:12","nodeType":"ContractDefinition","nodes":[{"body":{"id":2401,"nodeType":"Block","src":"639:53:12","statements":[{"expression":{"arguments":[{"id":2396,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"669:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":2397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"677:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2398,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"680:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2395,"name":"callNoReturn","nodeType":"Identifier","overloadedDeclarations":[2402,2416],"referencedDeclaration":2416,"src":"656:12:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) returns (bool)"}},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"656:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2394,"id":2400,"nodeType":"Return","src":"649:36:12"}]},"documentation":{"id":2386,"nodeType":"StructuredDocumentation","src":"448:97:12","text":"@dev Performs a Solidity function call using a low level `call` and ignoring the return data."},"id":2402,"implemented":true,"kind":"function","modifiers":[],"name":"callNoReturn","nameLocation":"559:12:12","nodeType":"FunctionDefinition","parameters":{"id":2391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2388,"mutability":"mutable","name":"target","nameLocation":"580:6:12","nodeType":"VariableDeclaration","scope":2402,"src":"572:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2387,"name":"address","nodeType":"ElementaryTypeName","src":"572:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2390,"mutability":"mutable","name":"data","nameLocation":"601:4:12","nodeType":"VariableDeclaration","scope":2402,"src":"588:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2389,"name":"bytes","nodeType":"ElementaryTypeName","src":"588:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"571:35:12"},"returnParameters":{"id":2394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2393,"mutability":"mutable","name":"success","nameLocation":"630:7:12","nodeType":"VariableDeclaration","scope":2402,"src":"625:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2392,"name":"bool","nodeType":"ElementaryTypeName","src":"625:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"624:14:12"},"scope":2541,"src":"550:142:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2415,"nodeType":"Block","src":"909:144:12","statements":[{"AST":{"nativeSrc":"944:103:12","nodeType":"YulBlock","src":"944:103:12","statements":[{"nativeSrc":"958:79:12","nodeType":"YulAssignment","src":"958:79:12","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"974:3:12","nodeType":"YulIdentifier","src":"974:3:12"},"nativeSrc":"974:5:12","nodeType":"YulFunctionCall","src":"974:5:12"},{"name":"target","nativeSrc":"981:6:12","nodeType":"YulIdentifier","src":"981:6:12"},{"name":"value","nativeSrc":"989:5:12","nodeType":"YulIdentifier","src":"989:5:12"},{"arguments":[{"name":"data","nativeSrc":"1000:4:12","nodeType":"YulIdentifier","src":"1000:4:12"},{"kind":"number","nativeSrc":"1006:4:12","nodeType":"YulLiteral","src":"1006:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"996:3:12","nodeType":"YulIdentifier","src":"996:3:12"},"nativeSrc":"996:15:12","nodeType":"YulFunctionCall","src":"996:15:12"},{"arguments":[{"name":"data","nativeSrc":"1019:4:12","nodeType":"YulIdentifier","src":"1019:4:12"}],"functionName":{"name":"mload","nativeSrc":"1013:5:12","nodeType":"YulIdentifier","src":"1013:5:12"},"nativeSrc":"1013:11:12","nodeType":"YulFunctionCall","src":"1013:11:12"},{"kind":"number","nativeSrc":"1026:4:12","nodeType":"YulLiteral","src":"1026:4:12","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1032:4:12","nodeType":"YulLiteral","src":"1032:4:12","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"969:4:12","nodeType":"YulIdentifier","src":"969:4:12"},"nativeSrc":"969:68:12","nodeType":"YulFunctionCall","src":"969:68:12"},"variableNames":[{"name":"success","nativeSrc":"958:7:12","nodeType":"YulIdentifier","src":"958:7:12"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2409,"isOffset":false,"isSlot":false,"src":"1000:4:12","valueSize":1},{"declaration":2409,"isOffset":false,"isSlot":false,"src":"1019:4:12","valueSize":1},{"declaration":2412,"isOffset":false,"isSlot":false,"src":"958:7:12","valueSize":1},{"declaration":2405,"isOffset":false,"isSlot":false,"src":"981:6:12","valueSize":1},{"declaration":2407,"isOffset":false,"isSlot":false,"src":"989:5:12","valueSize":1}],"flags":["memory-safe"],"id":2414,"nodeType":"InlineAssembly","src":"919:128:12"}]},"documentation":{"id":2403,"nodeType":"StructuredDocumentation","src":"698:102:12","text":"@dev Same as {callNoReturn-address-bytes}, but allows specifying the value to be sent in the call."},"id":2416,"implemented":true,"kind":"function","modifiers":[],"name":"callNoReturn","nameLocation":"814:12:12","nodeType":"FunctionDefinition","parameters":{"id":2410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2405,"mutability":"mutable","name":"target","nameLocation":"835:6:12","nodeType":"VariableDeclaration","scope":2416,"src":"827:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2404,"name":"address","nodeType":"ElementaryTypeName","src":"827:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2407,"mutability":"mutable","name":"value","nameLocation":"851:5:12","nodeType":"VariableDeclaration","scope":2416,"src":"843:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2406,"name":"uint256","nodeType":"ElementaryTypeName","src":"843:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2409,"mutability":"mutable","name":"data","nameLocation":"871:4:12","nodeType":"VariableDeclaration","scope":2416,"src":"858:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2408,"name":"bytes","nodeType":"ElementaryTypeName","src":"858:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"826:50:12"},"returnParameters":{"id":2413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2412,"mutability":"mutable","name":"success","nameLocation":"900:7:12","nodeType":"VariableDeclaration","scope":2416,"src":"895:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2411,"name":"bool","nodeType":"ElementaryTypeName","src":"895:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"894:14:12"},"scope":2541,"src":"805:248:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2436,"nodeType":"Block","src":"1603:58:12","statements":[{"expression":{"arguments":[{"id":2431,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"1638:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":2432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1646:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2433,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2421,"src":"1649:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2430,"name":"callReturn64Bytes","nodeType":"Identifier","overloadedDeclarations":[2437,2455],"referencedDeclaration":2455,"src":"1620:17:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"function (address,uint256,bytes memory) returns (bool,bytes32,bytes32)"}},"id":2434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1620:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bool,bytes32,bytes32)"}},"functionReturnParameters":2429,"id":2435,"nodeType":"Return","src":"1613:41:12"}]},"documentation":{"id":2417,"nodeType":"StructuredDocumentation","src":"1059:389:12","text":"@dev Performs a Solidity function call using a low level `call` and returns the first 64 bytes of the result\n in the scratch space of memory. Useful for functions that return a tuple with two single-word values.\n WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n and this function doesn't zero it out."},"id":2437,"implemented":true,"kind":"function","modifiers":[],"name":"callReturn64Bytes","nameLocation":"1462:17:12","nodeType":"FunctionDefinition","parameters":{"id":2422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2419,"mutability":"mutable","name":"target","nameLocation":"1497:6:12","nodeType":"VariableDeclaration","scope":2437,"src":"1489:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2418,"name":"address","nodeType":"ElementaryTypeName","src":"1489:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2421,"mutability":"mutable","name":"data","nameLocation":"1526:4:12","nodeType":"VariableDeclaration","scope":2437,"src":"1513:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2420,"name":"bytes","nodeType":"ElementaryTypeName","src":"1513:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1479:57:12"},"returnParameters":{"id":2429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2424,"mutability":"mutable","name":"success","nameLocation":"1560:7:12","nodeType":"VariableDeclaration","scope":2437,"src":"1555:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2423,"name":"bool","nodeType":"ElementaryTypeName","src":"1555:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2426,"mutability":"mutable","name":"result1","nameLocation":"1577:7:12","nodeType":"VariableDeclaration","scope":2437,"src":"1569:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2425,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2428,"mutability":"mutable","name":"result2","nameLocation":"1594:7:12","nodeType":"VariableDeclaration","scope":2437,"src":"1586:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2427,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1586:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1554:48:12"},"scope":2541,"src":"1453:208:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2454,"nodeType":"Block","src":"1952:214:12","statements":[{"AST":{"nativeSrc":"1987:173:12","nodeType":"YulBlock","src":"1987:173:12","statements":[{"nativeSrc":"2001:79:12","nodeType":"YulAssignment","src":"2001:79:12","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"2017:3:12","nodeType":"YulIdentifier","src":"2017:3:12"},"nativeSrc":"2017:5:12","nodeType":"YulFunctionCall","src":"2017:5:12"},{"name":"target","nativeSrc":"2024:6:12","nodeType":"YulIdentifier","src":"2024:6:12"},{"name":"value","nativeSrc":"2032:5:12","nodeType":"YulIdentifier","src":"2032:5:12"},{"arguments":[{"name":"data","nativeSrc":"2043:4:12","nodeType":"YulIdentifier","src":"2043:4:12"},{"kind":"number","nativeSrc":"2049:4:12","nodeType":"YulLiteral","src":"2049:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2039:3:12","nodeType":"YulIdentifier","src":"2039:3:12"},"nativeSrc":"2039:15:12","nodeType":"YulFunctionCall","src":"2039:15:12"},{"arguments":[{"name":"data","nativeSrc":"2062:4:12","nodeType":"YulIdentifier","src":"2062:4:12"}],"functionName":{"name":"mload","nativeSrc":"2056:5:12","nodeType":"YulIdentifier","src":"2056:5:12"},"nativeSrc":"2056:11:12","nodeType":"YulFunctionCall","src":"2056:11:12"},{"kind":"number","nativeSrc":"2069:4:12","nodeType":"YulLiteral","src":"2069:4:12","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2075:4:12","nodeType":"YulLiteral","src":"2075:4:12","type":"","value":"0x40"}],"functionName":{"name":"call","nativeSrc":"2012:4:12","nodeType":"YulIdentifier","src":"2012:4:12"},"nativeSrc":"2012:68:12","nodeType":"YulFunctionCall","src":"2012:68:12"},"variableNames":[{"name":"success","nativeSrc":"2001:7:12","nodeType":"YulIdentifier","src":"2001:7:12"}]},{"nativeSrc":"2093:22:12","nodeType":"YulAssignment","src":"2093:22:12","value":{"arguments":[{"kind":"number","nativeSrc":"2110:4:12","nodeType":"YulLiteral","src":"2110:4:12","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"2104:5:12","nodeType":"YulIdentifier","src":"2104:5:12"},"nativeSrc":"2104:11:12","nodeType":"YulFunctionCall","src":"2104:11:12"},"variableNames":[{"name":"result1","nativeSrc":"2093:7:12","nodeType":"YulIdentifier","src":"2093:7:12"}]},{"nativeSrc":"2128:22:12","nodeType":"YulAssignment","src":"2128:22:12","value":{"arguments":[{"kind":"number","nativeSrc":"2145:4:12","nodeType":"YulLiteral","src":"2145:4:12","type":"","value":"0x20"}],"functionName":{"name":"mload","nativeSrc":"2139:5:12","nodeType":"YulIdentifier","src":"2139:5:12"},"nativeSrc":"2139:11:12","nodeType":"YulFunctionCall","src":"2139:11:12"},"variableNames":[{"name":"result2","nativeSrc":"2128:7:12","nodeType":"YulIdentifier","src":"2128:7:12"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2444,"isOffset":false,"isSlot":false,"src":"2043:4:12","valueSize":1},{"declaration":2444,"isOffset":false,"isSlot":false,"src":"2062:4:12","valueSize":1},{"declaration":2449,"isOffset":false,"isSlot":false,"src":"2093:7:12","valueSize":1},{"declaration":2451,"isOffset":false,"isSlot":false,"src":"2128:7:12","valueSize":1},{"declaration":2447,"isOffset":false,"isSlot":false,"src":"2001:7:12","valueSize":1},{"declaration":2440,"isOffset":false,"isSlot":false,"src":"2024:6:12","valueSize":1},{"declaration":2442,"isOffset":false,"isSlot":false,"src":"2032:5:12","valueSize":1}],"flags":["memory-safe"],"id":2453,"nodeType":"InlineAssembly","src":"1962:198:12"}]},"documentation":{"id":2438,"nodeType":"StructuredDocumentation","src":"1667:107:12","text":"@dev Same as {callReturn64Bytes-address-bytes}, but allows specifying the value to be sent in the call."},"id":2455,"implemented":true,"kind":"function","modifiers":[],"name":"callReturn64Bytes","nameLocation":"1788:17:12","nodeType":"FunctionDefinition","parameters":{"id":2445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2440,"mutability":"mutable","name":"target","nameLocation":"1823:6:12","nodeType":"VariableDeclaration","scope":2455,"src":"1815:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2439,"name":"address","nodeType":"ElementaryTypeName","src":"1815:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2442,"mutability":"mutable","name":"value","nameLocation":"1847:5:12","nodeType":"VariableDeclaration","scope":2455,"src":"1839:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2441,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2444,"mutability":"mutable","name":"data","nameLocation":"1875:4:12","nodeType":"VariableDeclaration","scope":2455,"src":"1862:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2443,"name":"bytes","nodeType":"ElementaryTypeName","src":"1862:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1805:80:12"},"returnParameters":{"id":2452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2447,"mutability":"mutable","name":"success","nameLocation":"1909:7:12","nodeType":"VariableDeclaration","scope":2455,"src":"1904:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2446,"name":"bool","nodeType":"ElementaryTypeName","src":"1904:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2449,"mutability":"mutable","name":"result1","nameLocation":"1926:7:12","nodeType":"VariableDeclaration","scope":2455,"src":"1918:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2448,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1918:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2451,"mutability":"mutable","name":"result2","nameLocation":"1943:7:12","nodeType":"VariableDeclaration","scope":2455,"src":"1935:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1935:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1903:48:12"},"scope":2541,"src":"1779:387:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2466,"nodeType":"Block","src":"2380:143:12","statements":[{"AST":{"nativeSrc":"2415:102:12","nodeType":"YulBlock","src":"2415:102:12","statements":[{"nativeSrc":"2429:78:12","nodeType":"YulAssignment","src":"2429:78:12","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"2451:3:12","nodeType":"YulIdentifier","src":"2451:3:12"},"nativeSrc":"2451:5:12","nodeType":"YulFunctionCall","src":"2451:5:12"},{"name":"target","nativeSrc":"2458:6:12","nodeType":"YulIdentifier","src":"2458:6:12"},{"arguments":[{"name":"data","nativeSrc":"2470:4:12","nodeType":"YulIdentifier","src":"2470:4:12"},{"kind":"number","nativeSrc":"2476:4:12","nodeType":"YulLiteral","src":"2476:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2466:3:12","nodeType":"YulIdentifier","src":"2466:3:12"},"nativeSrc":"2466:15:12","nodeType":"YulFunctionCall","src":"2466:15:12"},{"arguments":[{"name":"data","nativeSrc":"2489:4:12","nodeType":"YulIdentifier","src":"2489:4:12"}],"functionName":{"name":"mload","nativeSrc":"2483:5:12","nodeType":"YulIdentifier","src":"2483:5:12"},"nativeSrc":"2483:11:12","nodeType":"YulFunctionCall","src":"2483:11:12"},{"kind":"number","nativeSrc":"2496:4:12","nodeType":"YulLiteral","src":"2496:4:12","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2502:4:12","nodeType":"YulLiteral","src":"2502:4:12","type":"","value":"0x00"}],"functionName":{"name":"staticcall","nativeSrc":"2440:10:12","nodeType":"YulIdentifier","src":"2440:10:12"},"nativeSrc":"2440:67:12","nodeType":"YulFunctionCall","src":"2440:67:12"},"variableNames":[{"name":"success","nativeSrc":"2429:7:12","nodeType":"YulIdentifier","src":"2429:7:12"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2460,"isOffset":false,"isSlot":false,"src":"2470:4:12","valueSize":1},{"declaration":2460,"isOffset":false,"isSlot":false,"src":"2489:4:12","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"2429:7:12","valueSize":1},{"declaration":2458,"isOffset":false,"isSlot":false,"src":"2458:6:12","valueSize":1}],"flags":["memory-safe"],"id":2465,"nodeType":"InlineAssembly","src":"2390:127:12"}]},"documentation":{"id":2456,"nodeType":"StructuredDocumentation","src":"2172:103:12","text":"@dev Performs a Solidity function call using a low level `staticcall` and ignoring the return data."},"id":2467,"implemented":true,"kind":"function","modifiers":[],"name":"staticcallNoReturn","nameLocation":"2289:18:12","nodeType":"FunctionDefinition","parameters":{"id":2461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2458,"mutability":"mutable","name":"target","nameLocation":"2316:6:12","nodeType":"VariableDeclaration","scope":2467,"src":"2308:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2457,"name":"address","nodeType":"ElementaryTypeName","src":"2308:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2460,"mutability":"mutable","name":"data","nameLocation":"2337:4:12","nodeType":"VariableDeclaration","scope":2467,"src":"2324:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2459,"name":"bytes","nodeType":"ElementaryTypeName","src":"2324:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2307:35:12"},"returnParameters":{"id":2464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2463,"mutability":"mutable","name":"success","nameLocation":"2371:7:12","nodeType":"VariableDeclaration","scope":2467,"src":"2366:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2462,"name":"bool","nodeType":"ElementaryTypeName","src":"2366:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2365:14:12"},"scope":2541,"src":"2280:243:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2482,"nodeType":"Block","src":"3090:213:12","statements":[{"AST":{"nativeSrc":"3125:172:12","nodeType":"YulBlock","src":"3125:172:12","statements":[{"nativeSrc":"3139:78:12","nodeType":"YulAssignment","src":"3139:78:12","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3161:3:12","nodeType":"YulIdentifier","src":"3161:3:12"},"nativeSrc":"3161:5:12","nodeType":"YulFunctionCall","src":"3161:5:12"},{"name":"target","nativeSrc":"3168:6:12","nodeType":"YulIdentifier","src":"3168:6:12"},{"arguments":[{"name":"data","nativeSrc":"3180:4:12","nodeType":"YulIdentifier","src":"3180:4:12"},{"kind":"number","nativeSrc":"3186:4:12","nodeType":"YulLiteral","src":"3186:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3176:3:12","nodeType":"YulIdentifier","src":"3176:3:12"},"nativeSrc":"3176:15:12","nodeType":"YulFunctionCall","src":"3176:15:12"},{"arguments":[{"name":"data","nativeSrc":"3199:4:12","nodeType":"YulIdentifier","src":"3199:4:12"}],"functionName":{"name":"mload","nativeSrc":"3193:5:12","nodeType":"YulIdentifier","src":"3193:5:12"},"nativeSrc":"3193:11:12","nodeType":"YulFunctionCall","src":"3193:11:12"},{"kind":"number","nativeSrc":"3206:4:12","nodeType":"YulLiteral","src":"3206:4:12","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3212:4:12","nodeType":"YulLiteral","src":"3212:4:12","type":"","value":"0x40"}],"functionName":{"name":"staticcall","nativeSrc":"3150:10:12","nodeType":"YulIdentifier","src":"3150:10:12"},"nativeSrc":"3150:67:12","nodeType":"YulFunctionCall","src":"3150:67:12"},"variableNames":[{"name":"success","nativeSrc":"3139:7:12","nodeType":"YulIdentifier","src":"3139:7:12"}]},{"nativeSrc":"3230:22:12","nodeType":"YulAssignment","src":"3230:22:12","value":{"arguments":[{"kind":"number","nativeSrc":"3247:4:12","nodeType":"YulLiteral","src":"3247:4:12","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"3241:5:12","nodeType":"YulIdentifier","src":"3241:5:12"},"nativeSrc":"3241:11:12","nodeType":"YulFunctionCall","src":"3241:11:12"},"variableNames":[{"name":"result1","nativeSrc":"3230:7:12","nodeType":"YulIdentifier","src":"3230:7:12"}]},{"nativeSrc":"3265:22:12","nodeType":"YulAssignment","src":"3265:22:12","value":{"arguments":[{"kind":"number","nativeSrc":"3282:4:12","nodeType":"YulLiteral","src":"3282:4:12","type":"","value":"0x20"}],"functionName":{"name":"mload","nativeSrc":"3276:5:12","nodeType":"YulIdentifier","src":"3276:5:12"},"nativeSrc":"3276:11:12","nodeType":"YulFunctionCall","src":"3276:11:12"},"variableNames":[{"name":"result2","nativeSrc":"3265:7:12","nodeType":"YulIdentifier","src":"3265:7:12"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2472,"isOffset":false,"isSlot":false,"src":"3180:4:12","valueSize":1},{"declaration":2472,"isOffset":false,"isSlot":false,"src":"3199:4:12","valueSize":1},{"declaration":2477,"isOffset":false,"isSlot":false,"src":"3230:7:12","valueSize":1},{"declaration":2479,"isOffset":false,"isSlot":false,"src":"3265:7:12","valueSize":1},{"declaration":2475,"isOffset":false,"isSlot":false,"src":"3139:7:12","valueSize":1},{"declaration":2470,"isOffset":false,"isSlot":false,"src":"3168:6:12","valueSize":1}],"flags":["memory-safe"],"id":2481,"nodeType":"InlineAssembly","src":"3100:197:12"}]},"documentation":{"id":2468,"nodeType":"StructuredDocumentation","src":"2529:395:12","text":"@dev Performs a Solidity function call using a low level `staticcall` and returns the first 64 bytes of the result\n in the scratch space of memory. Useful for functions that return a tuple with two single-word values.\n WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n and this function doesn't zero it out."},"id":2483,"implemented":true,"kind":"function","modifiers":[],"name":"staticcallReturn64Bytes","nameLocation":"2938:23:12","nodeType":"FunctionDefinition","parameters":{"id":2473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2470,"mutability":"mutable","name":"target","nameLocation":"2979:6:12","nodeType":"VariableDeclaration","scope":2483,"src":"2971:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2469,"name":"address","nodeType":"ElementaryTypeName","src":"2971:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2472,"mutability":"mutable","name":"data","nameLocation":"3008:4:12","nodeType":"VariableDeclaration","scope":2483,"src":"2995:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2471,"name":"bytes","nodeType":"ElementaryTypeName","src":"2995:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2961:57:12"},"returnParameters":{"id":2480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2475,"mutability":"mutable","name":"success","nameLocation":"3047:7:12","nodeType":"VariableDeclaration","scope":2483,"src":"3042:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2474,"name":"bool","nodeType":"ElementaryTypeName","src":"3042:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2477,"mutability":"mutable","name":"result1","nameLocation":"3064:7:12","nodeType":"VariableDeclaration","scope":2483,"src":"3056:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2476,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3056:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2479,"mutability":"mutable","name":"result2","nameLocation":"3081:7:12","nodeType":"VariableDeclaration","scope":2483,"src":"3073:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2478,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3073:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3041:48:12"},"scope":2541,"src":"2929:374:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2494,"nodeType":"Block","src":"3516:145:12","statements":[{"AST":{"nativeSrc":"3551:104:12","nodeType":"YulBlock","src":"3551:104:12","statements":[{"nativeSrc":"3565:80:12","nodeType":"YulAssignment","src":"3565:80:12","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3589:3:12","nodeType":"YulIdentifier","src":"3589:3:12"},"nativeSrc":"3589:5:12","nodeType":"YulFunctionCall","src":"3589:5:12"},{"name":"target","nativeSrc":"3596:6:12","nodeType":"YulIdentifier","src":"3596:6:12"},{"arguments":[{"name":"data","nativeSrc":"3608:4:12","nodeType":"YulIdentifier","src":"3608:4:12"},{"kind":"number","nativeSrc":"3614:4:12","nodeType":"YulLiteral","src":"3614:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3604:3:12","nodeType":"YulIdentifier","src":"3604:3:12"},"nativeSrc":"3604:15:12","nodeType":"YulFunctionCall","src":"3604:15:12"},{"arguments":[{"name":"data","nativeSrc":"3627:4:12","nodeType":"YulIdentifier","src":"3627:4:12"}],"functionName":{"name":"mload","nativeSrc":"3621:5:12","nodeType":"YulIdentifier","src":"3621:5:12"},"nativeSrc":"3621:11:12","nodeType":"YulFunctionCall","src":"3621:11:12"},{"kind":"number","nativeSrc":"3634:4:12","nodeType":"YulLiteral","src":"3634:4:12","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3640:4:12","nodeType":"YulLiteral","src":"3640:4:12","type":"","value":"0x00"}],"functionName":{"name":"delegatecall","nativeSrc":"3576:12:12","nodeType":"YulIdentifier","src":"3576:12:12"},"nativeSrc":"3576:69:12","nodeType":"YulFunctionCall","src":"3576:69:12"},"variableNames":[{"name":"success","nativeSrc":"3565:7:12","nodeType":"YulIdentifier","src":"3565:7:12"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2488,"isOffset":false,"isSlot":false,"src":"3608:4:12","valueSize":1},{"declaration":2488,"isOffset":false,"isSlot":false,"src":"3627:4:12","valueSize":1},{"declaration":2491,"isOffset":false,"isSlot":false,"src":"3565:7:12","valueSize":1},{"declaration":2486,"isOffset":false,"isSlot":false,"src":"3596:6:12","valueSize":1}],"flags":["memory-safe"],"id":2493,"nodeType":"InlineAssembly","src":"3526:129:12"}]},"documentation":{"id":2484,"nodeType":"StructuredDocumentation","src":"3309:105:12","text":"@dev Performs a Solidity function call using a low level `delegatecall` and ignoring the return data."},"id":2495,"implemented":true,"kind":"function","modifiers":[],"name":"delegatecallNoReturn","nameLocation":"3428:20:12","nodeType":"FunctionDefinition","parameters":{"id":2489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2486,"mutability":"mutable","name":"target","nameLocation":"3457:6:12","nodeType":"VariableDeclaration","scope":2495,"src":"3449:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2485,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2488,"mutability":"mutable","name":"data","nameLocation":"3478:4:12","nodeType":"VariableDeclaration","scope":2495,"src":"3465:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2487,"name":"bytes","nodeType":"ElementaryTypeName","src":"3465:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3448:35:12"},"returnParameters":{"id":2492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2491,"mutability":"mutable","name":"success","nameLocation":"3507:7:12","nodeType":"VariableDeclaration","scope":2495,"src":"3502:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2490,"name":"bool","nodeType":"ElementaryTypeName","src":"3502:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3501:14:12"},"scope":2541,"src":"3419:242:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2510,"nodeType":"Block","src":"4227:215:12","statements":[{"AST":{"nativeSrc":"4262:174:12","nodeType":"YulBlock","src":"4262:174:12","statements":[{"nativeSrc":"4276:80:12","nodeType":"YulAssignment","src":"4276:80:12","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"4300:3:12","nodeType":"YulIdentifier","src":"4300:3:12"},"nativeSrc":"4300:5:12","nodeType":"YulFunctionCall","src":"4300:5:12"},{"name":"target","nativeSrc":"4307:6:12","nodeType":"YulIdentifier","src":"4307:6:12"},{"arguments":[{"name":"data","nativeSrc":"4319:4:12","nodeType":"YulIdentifier","src":"4319:4:12"},{"kind":"number","nativeSrc":"4325:4:12","nodeType":"YulLiteral","src":"4325:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4315:3:12","nodeType":"YulIdentifier","src":"4315:3:12"},"nativeSrc":"4315:15:12","nodeType":"YulFunctionCall","src":"4315:15:12"},{"arguments":[{"name":"data","nativeSrc":"4338:4:12","nodeType":"YulIdentifier","src":"4338:4:12"}],"functionName":{"name":"mload","nativeSrc":"4332:5:12","nodeType":"YulIdentifier","src":"4332:5:12"},"nativeSrc":"4332:11:12","nodeType":"YulFunctionCall","src":"4332:11:12"},{"kind":"number","nativeSrc":"4345:4:12","nodeType":"YulLiteral","src":"4345:4:12","type":"","value":"0x00"},{"kind":"number","nativeSrc":"4351:4:12","nodeType":"YulLiteral","src":"4351:4:12","type":"","value":"0x40"}],"functionName":{"name":"delegatecall","nativeSrc":"4287:12:12","nodeType":"YulIdentifier","src":"4287:12:12"},"nativeSrc":"4287:69:12","nodeType":"YulFunctionCall","src":"4287:69:12"},"variableNames":[{"name":"success","nativeSrc":"4276:7:12","nodeType":"YulIdentifier","src":"4276:7:12"}]},{"nativeSrc":"4369:22:12","nodeType":"YulAssignment","src":"4369:22:12","value":{"arguments":[{"kind":"number","nativeSrc":"4386:4:12","nodeType":"YulLiteral","src":"4386:4:12","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"4380:5:12","nodeType":"YulIdentifier","src":"4380:5:12"},"nativeSrc":"4380:11:12","nodeType":"YulFunctionCall","src":"4380:11:12"},"variableNames":[{"name":"result1","nativeSrc":"4369:7:12","nodeType":"YulIdentifier","src":"4369:7:12"}]},{"nativeSrc":"4404:22:12","nodeType":"YulAssignment","src":"4404:22:12","value":{"arguments":[{"kind":"number","nativeSrc":"4421:4:12","nodeType":"YulLiteral","src":"4421:4:12","type":"","value":"0x20"}],"functionName":{"name":"mload","nativeSrc":"4415:5:12","nodeType":"YulIdentifier","src":"4415:5:12"},"nativeSrc":"4415:11:12","nodeType":"YulFunctionCall","src":"4415:11:12"},"variableNames":[{"name":"result2","nativeSrc":"4404:7:12","nodeType":"YulIdentifier","src":"4404:7:12"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2500,"isOffset":false,"isSlot":false,"src":"4319:4:12","valueSize":1},{"declaration":2500,"isOffset":false,"isSlot":false,"src":"4338:4:12","valueSize":1},{"declaration":2505,"isOffset":false,"isSlot":false,"src":"4369:7:12","valueSize":1},{"declaration":2507,"isOffset":false,"isSlot":false,"src":"4404:7:12","valueSize":1},{"declaration":2503,"isOffset":false,"isSlot":false,"src":"4276:7:12","valueSize":1},{"declaration":2498,"isOffset":false,"isSlot":false,"src":"4307:6:12","valueSize":1}],"flags":["memory-safe"],"id":2509,"nodeType":"InlineAssembly","src":"4237:199:12"}]},"documentation":{"id":2496,"nodeType":"StructuredDocumentation","src":"3667:397:12","text":"@dev Performs a Solidity function call using a low level `delegatecall` and returns the first 64 bytes of the result\n in the scratch space of memory. Useful for functions that return a tuple with two single-word values.\n WARNING: Do not assume that the results are zero if `success` is false. Memory can be already allocated\n and this function doesn't zero it out."},"id":2511,"implemented":true,"kind":"function","modifiers":[],"name":"delegatecallReturn64Bytes","nameLocation":"4078:25:12","nodeType":"FunctionDefinition","parameters":{"id":2501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2498,"mutability":"mutable","name":"target","nameLocation":"4121:6:12","nodeType":"VariableDeclaration","scope":2511,"src":"4113:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2497,"name":"address","nodeType":"ElementaryTypeName","src":"4113:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2500,"mutability":"mutable","name":"data","nameLocation":"4150:4:12","nodeType":"VariableDeclaration","scope":2511,"src":"4137:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2499,"name":"bytes","nodeType":"ElementaryTypeName","src":"4137:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4103:57:12"},"returnParameters":{"id":2508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2503,"mutability":"mutable","name":"success","nameLocation":"4184:7:12","nodeType":"VariableDeclaration","scope":2511,"src":"4179:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2502,"name":"bool","nodeType":"ElementaryTypeName","src":"4179:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2505,"mutability":"mutable","name":"result1","nameLocation":"4201:7:12","nodeType":"VariableDeclaration","scope":2511,"src":"4193:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2504,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4193:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2507,"mutability":"mutable","name":"result2","nameLocation":"4218:7:12","nodeType":"VariableDeclaration","scope":2511,"src":"4210:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2506,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4210:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4178:48:12"},"scope":2541,"src":"4069:373:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2518,"nodeType":"Block","src":"4568:89:12","statements":[{"AST":{"nativeSrc":"4603:48:12","nodeType":"YulBlock","src":"4603:48:12","statements":[{"nativeSrc":"4617:24:12","nodeType":"YulAssignment","src":"4617:24:12","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4625:14:12","nodeType":"YulIdentifier","src":"4625:14:12"},"nativeSrc":"4625:16:12","nodeType":"YulFunctionCall","src":"4625:16:12"},"variableNames":[{"name":"size","nativeSrc":"4617:4:12","nodeType":"YulIdentifier","src":"4617:4:12"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2515,"isOffset":false,"isSlot":false,"src":"4617:4:12","valueSize":1}],"flags":["memory-safe"],"id":2517,"nodeType":"InlineAssembly","src":"4578:73:12"}]},"documentation":{"id":2512,"nodeType":"StructuredDocumentation","src":"4448:52:12","text":"@dev Returns the size of the return data buffer."},"id":2519,"implemented":true,"kind":"function","modifiers":[],"name":"returnDataSize","nameLocation":"4514:14:12","nodeType":"FunctionDefinition","parameters":{"id":2513,"nodeType":"ParameterList","parameters":[],"src":"4528:2:12"},"returnParameters":{"id":2516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"size","nameLocation":"4562:4:12","nodeType":"VariableDeclaration","scope":2519,"src":"4554:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2514,"name":"uint256","nodeType":"ElementaryTypeName","src":"4554:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4553:14:12"},"scope":2541,"src":"4505:152:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2526,"nodeType":"Block","src":"4806:268:12","statements":[{"AST":{"nativeSrc":"4841:227:12","nodeType":"YulBlock","src":"4841:227:12","statements":[{"nativeSrc":"4855:21:12","nodeType":"YulAssignment","src":"4855:21:12","value":{"arguments":[{"kind":"number","nativeSrc":"4871:4:12","nodeType":"YulLiteral","src":"4871:4:12","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"4865:5:12","nodeType":"YulIdentifier","src":"4865:5:12"},"nativeSrc":"4865:11:12","nodeType":"YulFunctionCall","src":"4865:11:12"},"variableNames":[{"name":"result","nativeSrc":"4855:6:12","nodeType":"YulIdentifier","src":"4855:6:12"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"4896:6:12","nodeType":"YulIdentifier","src":"4896:6:12"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4904:14:12","nodeType":"YulIdentifier","src":"4904:14:12"},"nativeSrc":"4904:16:12","nodeType":"YulFunctionCall","src":"4904:16:12"}],"functionName":{"name":"mstore","nativeSrc":"4889:6:12","nodeType":"YulIdentifier","src":"4889:6:12"},"nativeSrc":"4889:32:12","nodeType":"YulFunctionCall","src":"4889:32:12"},"nativeSrc":"4889:32:12","nodeType":"YulExpressionStatement","src":"4889:32:12"},{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"4953:6:12","nodeType":"YulIdentifier","src":"4953:6:12"},{"kind":"number","nativeSrc":"4961:4:12","nodeType":"YulLiteral","src":"4961:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4949:3:12","nodeType":"YulIdentifier","src":"4949:3:12"},"nativeSrc":"4949:17:12","nodeType":"YulFunctionCall","src":"4949:17:12"},{"kind":"number","nativeSrc":"4968:4:12","nodeType":"YulLiteral","src":"4968:4:12","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4974:14:12","nodeType":"YulIdentifier","src":"4974:14:12"},"nativeSrc":"4974:16:12","nodeType":"YulFunctionCall","src":"4974:16:12"}],"functionName":{"name":"returndatacopy","nativeSrc":"4934:14:12","nodeType":"YulIdentifier","src":"4934:14:12"},"nativeSrc":"4934:57:12","nodeType":"YulFunctionCall","src":"4934:57:12"},"nativeSrc":"4934:57:12","nodeType":"YulExpressionStatement","src":"4934:57:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5011:4:12","nodeType":"YulLiteral","src":"5011:4:12","type":"","value":"0x40"},{"arguments":[{"name":"result","nativeSrc":"5021:6:12","nodeType":"YulIdentifier","src":"5021:6:12"},{"arguments":[{"kind":"number","nativeSrc":"5033:4:12","nodeType":"YulLiteral","src":"5033:4:12","type":"","value":"0x20"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"5039:14:12","nodeType":"YulIdentifier","src":"5039:14:12"},"nativeSrc":"5039:16:12","nodeType":"YulFunctionCall","src":"5039:16:12"}],"functionName":{"name":"add","nativeSrc":"5029:3:12","nodeType":"YulIdentifier","src":"5029:3:12"},"nativeSrc":"5029:27:12","nodeType":"YulFunctionCall","src":"5029:27:12"}],"functionName":{"name":"add","nativeSrc":"5017:3:12","nodeType":"YulIdentifier","src":"5017:3:12"},"nativeSrc":"5017:40:12","nodeType":"YulFunctionCall","src":"5017:40:12"}],"functionName":{"name":"mstore","nativeSrc":"5004:6:12","nodeType":"YulIdentifier","src":"5004:6:12"},"nativeSrc":"5004:54:12","nodeType":"YulFunctionCall","src":"5004:54:12"},"nativeSrc":"5004:54:12","nodeType":"YulExpressionStatement","src":"5004:54:12"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2523,"isOffset":false,"isSlot":false,"src":"4855:6:12","valueSize":1},{"declaration":2523,"isOffset":false,"isSlot":false,"src":"4896:6:12","valueSize":1},{"declaration":2523,"isOffset":false,"isSlot":false,"src":"4953:6:12","valueSize":1},{"declaration":2523,"isOffset":false,"isSlot":false,"src":"5021:6:12","valueSize":1}],"flags":["memory-safe"],"id":2525,"nodeType":"InlineAssembly","src":"4816:252:12"}]},"documentation":{"id":2520,"nodeType":"StructuredDocumentation","src":"4663:72:12","text":"@dev Returns a buffer containing the return data from the last call."},"id":2527,"implemented":true,"kind":"function","modifiers":[],"name":"returnData","nameLocation":"4749:10:12","nodeType":"FunctionDefinition","parameters":{"id":2521,"nodeType":"ParameterList","parameters":[],"src":"4759:2:12"},"returnParameters":{"id":2524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2523,"mutability":"mutable","name":"result","nameLocation":"4798:6:12","nodeType":"VariableDeclaration","scope":2527,"src":"4785:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2522,"name":"bytes","nodeType":"ElementaryTypeName","src":"4785:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4784:21:12"},"scope":2541,"src":"4740:334:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2532,"nodeType":"Block","src":"5179:185:12","statements":[{"AST":{"nativeSrc":"5214:144:12","nodeType":"YulBlock","src":"5214:144:12","statements":[{"nativeSrc":"5228:22:12","nodeType":"YulVariableDeclaration","src":"5228:22:12","value":{"arguments":[{"kind":"number","nativeSrc":"5245:4:12","nodeType":"YulLiteral","src":"5245:4:12","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"5239:5:12","nodeType":"YulIdentifier","src":"5239:5:12"},"nativeSrc":"5239:11:12","nodeType":"YulFunctionCall","src":"5239:11:12"},"variables":[{"name":"fmp","nativeSrc":"5232:3:12","nodeType":"YulTypedName","src":"5232:3:12","type":""}]},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"5278:3:12","nodeType":"YulIdentifier","src":"5278:3:12"},{"kind":"number","nativeSrc":"5283:4:12","nodeType":"YulLiteral","src":"5283:4:12","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"5289:14:12","nodeType":"YulIdentifier","src":"5289:14:12"},"nativeSrc":"5289:16:12","nodeType":"YulFunctionCall","src":"5289:16:12"}],"functionName":{"name":"returndatacopy","nativeSrc":"5263:14:12","nodeType":"YulIdentifier","src":"5263:14:12"},"nativeSrc":"5263:43:12","nodeType":"YulFunctionCall","src":"5263:43:12"},"nativeSrc":"5263:43:12","nodeType":"YulExpressionStatement","src":"5263:43:12"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"5326:3:12","nodeType":"YulIdentifier","src":"5326:3:12"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"5331:14:12","nodeType":"YulIdentifier","src":"5331:14:12"},"nativeSrc":"5331:16:12","nodeType":"YulFunctionCall","src":"5331:16:12"}],"functionName":{"name":"revert","nativeSrc":"5319:6:12","nodeType":"YulIdentifier","src":"5319:6:12"},"nativeSrc":"5319:29:12","nodeType":"YulFunctionCall","src":"5319:29:12"},"nativeSrc":"5319:29:12","nodeType":"YulExpressionStatement","src":"5319:29:12"}]},"evmVersion":"cancun","externalReferences":[],"flags":["memory-safe"],"id":2531,"nodeType":"InlineAssembly","src":"5189:169:12"}]},"documentation":{"id":2528,"nodeType":"StructuredDocumentation","src":"5080:56:12","text":"@dev Revert with the return data from the last call."},"id":2533,"implemented":true,"kind":"function","modifiers":[],"name":"bubbleRevert","nameLocation":"5150:12:12","nodeType":"FunctionDefinition","parameters":{"id":2529,"nodeType":"ParameterList","parameters":[],"src":"5162:2:12"},"returnParameters":{"id":2530,"nodeType":"ParameterList","parameters":[],"src":"5179:0:12"},"scope":2541,"src":"5141:223:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2539,"nodeType":"Block","src":"5431:113:12","statements":[{"AST":{"nativeSrc":"5466:72:12","nodeType":"YulBlock","src":"5466:72:12","statements":[{"expression":{"arguments":[{"arguments":[{"name":"returndata","nativeSrc":"5491:10:12","nodeType":"YulIdentifier","src":"5491:10:12"},{"kind":"number","nativeSrc":"5503:4:12","nodeType":"YulLiteral","src":"5503:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5487:3:12","nodeType":"YulIdentifier","src":"5487:3:12"},"nativeSrc":"5487:21:12","nodeType":"YulFunctionCall","src":"5487:21:12"},{"arguments":[{"name":"returndata","nativeSrc":"5516:10:12","nodeType":"YulIdentifier","src":"5516:10:12"}],"functionName":{"name":"mload","nativeSrc":"5510:5:12","nodeType":"YulIdentifier","src":"5510:5:12"},"nativeSrc":"5510:17:12","nodeType":"YulFunctionCall","src":"5510:17:12"}],"functionName":{"name":"revert","nativeSrc":"5480:6:12","nodeType":"YulIdentifier","src":"5480:6:12"},"nativeSrc":"5480:48:12","nodeType":"YulFunctionCall","src":"5480:48:12"},"nativeSrc":"5480:48:12","nodeType":"YulExpressionStatement","src":"5480:48:12"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2535,"isOffset":false,"isSlot":false,"src":"5491:10:12","valueSize":1},{"declaration":2535,"isOffset":false,"isSlot":false,"src":"5516:10:12","valueSize":1}],"flags":["memory-safe"],"id":2538,"nodeType":"InlineAssembly","src":"5441:97:12"}]},"id":2540,"implemented":true,"kind":"function","modifiers":[],"name":"bubbleRevert","nameLocation":"5379:12:12","nodeType":"FunctionDefinition","parameters":{"id":2536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2535,"mutability":"mutable","name":"returndata","nameLocation":"5405:10:12","nodeType":"VariableDeclaration","scope":2540,"src":"5392:23:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2534,"name":"bytes","nodeType":"ElementaryTypeName","src":"5392:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5391:25:12"},"returnParameters":{"id":2537,"nodeType":"ParameterList","parameters":[],"src":"5431:0:12"},"scope":2541,"src":"5370:174:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2542,"src":"421:5125:12","usedErrors":[],"usedEvents":[]}],"src":"106:5441:12"},"id":12},"@openzeppelin/contracts/utils/Memory.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Memory.sol","exportedSymbols":{"Math":[4719],"Memory":[2890],"Panic":[2942]},"id":2891,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2543,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"100:24:13"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"./Panic.sol","id":2545,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2891,"sourceUnit":2943,"src":"126:34:13","symbolAliases":[{"foreign":{"id":2544,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"134:5:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":2547,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2891,"sourceUnit":4720,"src":"161:37:13","symbolAliases":[{"foreign":{"id":2546,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"169:4:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Memory","contractDependencies":[],"contractKind":"library","documentation":{"id":2548,"nodeType":"StructuredDocumentation","src":"200:579:13","text":" @dev Utilities to manipulate memory.\n Memory is a contiguous and dynamic byte array in which Solidity stores non-primitive types.\n This library provides functions to manipulate pointers to this dynamic array and work with slices of it.\n Slices provide a view into a portion of memory without copying data, enabling efficient substring operations.\n WARNING: When manipulating memory pointers or slices, make sure to follow the Solidity documentation\n guidelines for https://docs.soliditylang.org/en/v0.8.20/assembly.html#memory-safety[Memory Safety]."},"fullyImplemented":true,"id":2890,"linearizedBaseContracts":[2890],"name":"Memory","nameLocation":"788:6:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Memory.Pointer","id":2550,"name":"Pointer","nameLocation":"806:7:13","nodeType":"UserDefinedValueTypeDefinition","src":"801:24:13","underlyingType":{"id":2549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"817:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":2558,"nodeType":"Block","src":"963:83:13","statements":[{"AST":{"nativeSrc":"998:42:13","nodeType":"YulBlock","src":"998:42:13","statements":[{"nativeSrc":"1012:18:13","nodeType":"YulAssignment","src":"1012:18:13","value":{"arguments":[{"kind":"number","nativeSrc":"1025:4:13","nodeType":"YulLiteral","src":"1025:4:13","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"1019:5:13","nodeType":"YulIdentifier","src":"1019:5:13"},"nativeSrc":"1019:11:13","nodeType":"YulFunctionCall","src":"1019:11:13"},"variableNames":[{"name":"ptr","nativeSrc":"1012:3:13","nodeType":"YulIdentifier","src":"1012:3:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2555,"isOffset":false,"isSlot":false,"src":"1012:3:13","valueSize":1}],"flags":["memory-safe"],"id":2557,"nodeType":"InlineAssembly","src":"973:67:13"}]},"documentation":{"id":2551,"nodeType":"StructuredDocumentation","src":"831:59:13","text":"@dev Returns a `Pointer` to the current free `Pointer`."},"id":2559,"implemented":true,"kind":"function","modifiers":[],"name":"getFreeMemoryPointer","nameLocation":"904:20:13","nodeType":"FunctionDefinition","parameters":{"id":2552,"nodeType":"ParameterList","parameters":[],"src":"924:2:13"},"returnParameters":{"id":2556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2555,"mutability":"mutable","name":"ptr","nameLocation":"958:3:13","nodeType":"VariableDeclaration","scope":2559,"src":"950:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2554,"nodeType":"UserDefinedTypeName","pathNode":{"id":2553,"name":"Pointer","nameLocations":["950:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"950:7:13"},"referencedDeclaration":2550,"src":"950:7:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"949:13:13"},"scope":2890,"src":"895:151:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2567,"nodeType":"Block","src":"1521:82:13","statements":[{"AST":{"nativeSrc":"1556:41:13","nodeType":"YulBlock","src":"1556:41:13","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1577:4:13","nodeType":"YulLiteral","src":"1577:4:13","type":"","value":"0x40"},{"name":"ptr","nativeSrc":"1583:3:13","nodeType":"YulIdentifier","src":"1583:3:13"}],"functionName":{"name":"mstore","nativeSrc":"1570:6:13","nodeType":"YulIdentifier","src":"1570:6:13"},"nativeSrc":"1570:17:13","nodeType":"YulFunctionCall","src":"1570:17:13"},"nativeSrc":"1570:17:13","nodeType":"YulExpressionStatement","src":"1570:17:13"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2563,"isOffset":false,"isSlot":false,"src":"1583:3:13","valueSize":1}],"flags":["memory-safe"],"id":2566,"nodeType":"InlineAssembly","src":"1531:66:13"}]},"documentation":{"id":2560,"nodeType":"StructuredDocumentation","src":"1052:401:13","text":" @dev Sets the free `Pointer` to a specific value.\n The solidity memory layout requires that the FMP is never set to a value lower than 0x80. Setting the\n FMP to a value lower than 0x80 may cause unexpected behavior. Deallocating all memory can be achieved by\n setting the FMP to 0x80.\n WARNING: Everything after the pointer may be overwritten.*"},"id":2568,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeSetFreeMemoryPointer","nameLocation":"1467:26:13","nodeType":"FunctionDefinition","parameters":{"id":2564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2563,"mutability":"mutable","name":"ptr","nameLocation":"1502:3:13","nodeType":"VariableDeclaration","scope":2568,"src":"1494:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2562,"nodeType":"UserDefinedTypeName","pathNode":{"id":2561,"name":"Pointer","nameLocations":["1494:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"1494:7:13"},"referencedDeclaration":2550,"src":"1494:7:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"1493:13:13"},"returnParameters":{"id":2565,"nodeType":"ParameterList","parameters":[],"src":"1521:0:13"},"scope":2890,"src":"1458:145:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2596,"nodeType":"Block","src":"1742:84:13","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2588,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"1803:3:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}],"expression":{"id":2586,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"1788:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"type(Memory.Pointer)"}},"id":2587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1796:6:13","memberName":"unwrap","nodeType":"MemberAccess","src":"1788:14:13","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Pointer_$2550_$returns$_t_bytes32_$","typeString":"function (Memory.Pointer) pure returns (bytes32)"}},"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1788:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1780:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2584,"name":"uint256","nodeType":"ElementaryTypeName","src":"1780:7:13","typeDescriptions":{}}},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1780:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2591,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"1811:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1780:37:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1772:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2582,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1772:7:13","typeDescriptions":{}}},"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1772:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2580,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"1759:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"type(Memory.Pointer)"}},"id":2581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1767:4:13","memberName":"wrap","nodeType":"MemberAccess","src":"1759:12:13","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (bytes32) pure returns (Memory.Pointer)"}},"id":2594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1759:60:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"functionReturnParameters":2579,"id":2595,"nodeType":"Return","src":"1752:67:13"}]},"documentation":{"id":2569,"nodeType":"StructuredDocumentation","src":"1609:50:13","text":"@dev Move a pointer forward by a given offset."},"id":2597,"implemented":true,"kind":"function","modifiers":[],"name":"forward","nameLocation":"1673:7:13","nodeType":"FunctionDefinition","parameters":{"id":2575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2572,"mutability":"mutable","name":"ptr","nameLocation":"1689:3:13","nodeType":"VariableDeclaration","scope":2597,"src":"1681:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2571,"nodeType":"UserDefinedTypeName","pathNode":{"id":2570,"name":"Pointer","nameLocations":["1681:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"1681:7:13"},"referencedDeclaration":2550,"src":"1681:7:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"},{"constant":false,"id":2574,"mutability":"mutable","name":"offset","nameLocation":"1702:6:13","nodeType":"VariableDeclaration","scope":2597,"src":"1694:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2573,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1680:29:13"},"returnParameters":{"id":2579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2597,"src":"1733:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2577,"nodeType":"UserDefinedTypeName","pathNode":{"id":2576,"name":"Pointer","nameLocations":["1733:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"1733:7:13"},"referencedDeclaration":2550,"src":"1733:7:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"1732:9:13"},"scope":2890,"src":"1664:162:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2619,"nodeType":"Block","src":"1958:68:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2611,"name":"ptr1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2601,"src":"1990:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}],"expression":{"id":2609,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"1975:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"type(Memory.Pointer)"}},"id":2610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1983:6:13","memberName":"unwrap","nodeType":"MemberAccess","src":"1975:14:13","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Pointer_$2550_$returns$_t_bytes32_$","typeString":"function (Memory.Pointer) pure returns (bytes32)"}},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1975:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":2615,"name":"ptr2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2604,"src":"2014:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}],"expression":{"id":2613,"name":"Pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"1999:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"type(Memory.Pointer)"}},"id":2614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2007:6:13","memberName":"unwrap","nodeType":"MemberAccess","src":"1999:14:13","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Pointer_$2550_$returns$_t_bytes32_$","typeString":"function (Memory.Pointer) pure returns (bytes32)"}},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1999:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1975:44:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2608,"id":2618,"nodeType":"Return","src":"1968:51:13"}]},"documentation":{"id":2598,"nodeType":"StructuredDocumentation","src":"1832:49:13","text":"@dev Equality comparator for memory pointers."},"id":2620,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"1895:5:13","nodeType":"FunctionDefinition","parameters":{"id":2605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2601,"mutability":"mutable","name":"ptr1","nameLocation":"1909:4:13","nodeType":"VariableDeclaration","scope":2620,"src":"1901:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2600,"nodeType":"UserDefinedTypeName","pathNode":{"id":2599,"name":"Pointer","nameLocations":["1901:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"1901:7:13"},"referencedDeclaration":2550,"src":"1901:7:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"},{"constant":false,"id":2604,"mutability":"mutable","name":"ptr2","nameLocation":"1923:4:13","nodeType":"VariableDeclaration","scope":2620,"src":"1915:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2603,"nodeType":"UserDefinedTypeName","pathNode":{"id":2602,"name":"Pointer","nameLocations":["1915:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"1915:7:13"},"referencedDeclaration":2550,"src":"1915:7:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"1900:28:13"},"returnParameters":{"id":2608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2607,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2620,"src":"1952:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2606,"name":"bool","nodeType":"ElementaryTypeName","src":"1952:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1951:6:13"},"scope":2890,"src":"1886:140:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"Memory.Slice","id":2622,"name":"Slice","nameLocation":"2037:5:13","nodeType":"UserDefinedValueTypeDefinition","src":"2032:22:13","underlyingType":{"id":2621,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2046:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":2632,"nodeType":"Block","src":"2201:117:13","statements":[{"AST":{"nativeSrc":"2236:76:13","nodeType":"YulBlock","src":"2236:76:13","statements":[{"nativeSrc":"2250:52:13","nodeType":"YulAssignment","src":"2250:52:13","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2267:3:13","nodeType":"YulLiteral","src":"2267:3:13","type":"","value":"128"},{"arguments":[{"name":"self","nativeSrc":"2278:4:13","nodeType":"YulIdentifier","src":"2278:4:13"}],"functionName":{"name":"mload","nativeSrc":"2272:5:13","nodeType":"YulIdentifier","src":"2272:5:13"},"nativeSrc":"2272:11:13","nodeType":"YulFunctionCall","src":"2272:11:13"}],"functionName":{"name":"shl","nativeSrc":"2263:3:13","nodeType":"YulIdentifier","src":"2263:3:13"},"nativeSrc":"2263:21:13","nodeType":"YulFunctionCall","src":"2263:21:13"},{"arguments":[{"name":"self","nativeSrc":"2290:4:13","nodeType":"YulIdentifier","src":"2290:4:13"},{"kind":"number","nativeSrc":"2296:4:13","nodeType":"YulLiteral","src":"2296:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2286:3:13","nodeType":"YulIdentifier","src":"2286:3:13"},"nativeSrc":"2286:15:13","nodeType":"YulFunctionCall","src":"2286:15:13"}],"functionName":{"name":"or","nativeSrc":"2260:2:13","nodeType":"YulIdentifier","src":"2260:2:13"},"nativeSrc":"2260:42:13","nodeType":"YulFunctionCall","src":"2260:42:13"},"variableNames":[{"name":"result","nativeSrc":"2250:6:13","nodeType":"YulIdentifier","src":"2250:6:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2629,"isOffset":false,"isSlot":false,"src":"2250:6:13","valueSize":1},{"declaration":2625,"isOffset":false,"isSlot":false,"src":"2278:4:13","valueSize":1},{"declaration":2625,"isOffset":false,"isSlot":false,"src":"2290:4:13","valueSize":1}],"flags":["memory-safe"],"id":2631,"nodeType":"InlineAssembly","src":"2211:101:13"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"2060:63:13","text":"@dev Get a slice representation of a bytes object in memory"},"id":2633,"implemented":true,"kind":"function","modifiers":[],"name":"asSlice","nameLocation":"2137:7:13","nodeType":"FunctionDefinition","parameters":{"id":2626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"self","nameLocation":"2158:4:13","nodeType":"VariableDeclaration","scope":2633,"src":"2145:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2624,"name":"bytes","nodeType":"ElementaryTypeName","src":"2145:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2144:19:13"},"returnParameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"result","nameLocation":"2193:6:13","nodeType":"VariableDeclaration","scope":2633,"src":"2187:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2628,"nodeType":"UserDefinedTypeName","pathNode":{"id":2627,"name":"Slice","nameLocations":["2187:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"2187:5:13"},"referencedDeclaration":2622,"src":"2187:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"2186:14:13"},"scope":2890,"src":"2128:190:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2643,"nodeType":"Block","src":"2483:89:13","statements":[{"AST":{"nativeSrc":"2518:48:13","nodeType":"YulBlock","src":"2518:48:13","statements":[{"nativeSrc":"2532:24:13","nodeType":"YulAssignment","src":"2532:24:13","value":{"arguments":[{"kind":"number","nativeSrc":"2546:3:13","nodeType":"YulLiteral","src":"2546:3:13","type":"","value":"128"},{"name":"self","nativeSrc":"2551:4:13","nodeType":"YulIdentifier","src":"2551:4:13"}],"functionName":{"name":"shr","nativeSrc":"2542:3:13","nodeType":"YulIdentifier","src":"2542:3:13"},"nativeSrc":"2542:14:13","nodeType":"YulFunctionCall","src":"2542:14:13"},"variableNames":[{"name":"result","nativeSrc":"2532:6:13","nodeType":"YulIdentifier","src":"2532:6:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2640,"isOffset":false,"isSlot":false,"src":"2532:6:13","valueSize":1},{"declaration":2637,"isOffset":false,"isSlot":false,"src":"2551:4:13","valueSize":1}],"flags":["memory-safe"],"id":2642,"nodeType":"InlineAssembly","src":"2493:73:13"}]},"documentation":{"id":2634,"nodeType":"StructuredDocumentation","src":"2324:87:13","text":"@dev Returns the length of a given slice (equiv to self.length for calldata slices)"},"id":2644,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"2425:6:13","nodeType":"FunctionDefinition","parameters":{"id":2638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2637,"mutability":"mutable","name":"self","nameLocation":"2438:4:13","nodeType":"VariableDeclaration","scope":2644,"src":"2432:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2636,"nodeType":"UserDefinedTypeName","pathNode":{"id":2635,"name":"Slice","nameLocations":["2432:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"2432:5:13"},"referencedDeclaration":2622,"src":"2432:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"2431:12:13"},"returnParameters":{"id":2641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2640,"mutability":"mutable","name":"result","nameLocation":"2475:6:13","nodeType":"VariableDeclaration","scope":2644,"src":"2467:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2639,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2466:16:13"},"scope":2890,"src":"2416:156:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2683,"nodeType":"Block","src":"2736:163:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2656,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"2750:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":2658,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2648,"src":"2766:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2657,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"2759:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2750:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2668,"nodeType":"IfStatement","src":"2746:65:13","trueBody":{"expression":{"arguments":[{"expression":{"id":2664,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"2785:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":2665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2791:19:13","memberName":"ARRAY_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":2925,"src":"2785:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2661,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"2773:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2779:5:13","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"2773:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2773:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2667,"nodeType":"ExpressionStatement","src":"2773:38:13"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2671,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2648,"src":"2844:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2670,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"2837:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2837:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2673,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"2852:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2837:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"id":2677,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2648,"src":"2877:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2676,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"2868:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2868:14:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},{"id":2679,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"2884:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2675,"name":"forward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"2860:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Pointer_$2550_$_t_uint256_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Pointer,uint256) pure returns (Memory.Pointer)"}},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2860:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}],"id":2669,"name":"_asSlice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"2828:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_userDefinedValueType$_Pointer_$2550_$returns$_t_userDefinedValueType$_Slice_$2622_$","typeString":"function (uint256,Memory.Pointer) pure returns (Memory.Slice)"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2828:64:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"functionReturnParameters":2655,"id":2682,"nodeType":"Return","src":"2821:71:13"}]},"documentation":{"id":2645,"nodeType":"StructuredDocumentation","src":"2578:80:13","text":"@dev Offset a memory slice (equivalent to self[offset:] for calldata slices)"},"id":2684,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"2672:5:13","nodeType":"FunctionDefinition","parameters":{"id":2651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2648,"mutability":"mutable","name":"self","nameLocation":"2684:4:13","nodeType":"VariableDeclaration","scope":2684,"src":"2678:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2647,"nodeType":"UserDefinedTypeName","pathNode":{"id":2646,"name":"Slice","nameLocations":["2678:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"2678:5:13"},"referencedDeclaration":2622,"src":"2678:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"},{"constant":false,"id":2650,"mutability":"mutable","name":"offset","nameLocation":"2698:6:13","nodeType":"VariableDeclaration","scope":2684,"src":"2690:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2649,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2677:28:13"},"returnParameters":{"id":2655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2684,"src":"2729:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2653,"nodeType":"UserDefinedTypeName","pathNode":{"id":2652,"name":"Slice","nameLocations":["2729:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"2729:5:13"},"referencedDeclaration":2622,"src":"2729:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"2728:7:13"},"scope":2890,"src":"2663:236:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2723,"nodeType":"Block","src":"3087:151:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2698,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2690,"src":"3101:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2699,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2692,"src":"3110:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3101:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":2702,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"3123:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2701,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"3116:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3101:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2712,"nodeType":"IfStatement","src":"3097:71:13","trueBody":{"expression":{"arguments":[{"expression":{"id":2708,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3142:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":2709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3148:19:13","memberName":"ARRAY_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":2925,"src":"3142:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2705,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3130:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3136:5:13","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"3130:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3130:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2711,"nodeType":"ExpressionStatement","src":"3130:38:13"}},{"expression":{"arguments":[{"id":2714,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2692,"src":"3194:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"id":2717,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"3216:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2716,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"3207:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3207:14:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},{"id":2719,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2690,"src":"3223:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2715,"name":"forward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"3199:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Pointer_$2550_$_t_uint256_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Pointer,uint256) pure returns (Memory.Pointer)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3199:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}],"id":2713,"name":"_asSlice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"3185:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_userDefinedValueType$_Pointer_$2550_$returns$_t_userDefinedValueType$_Slice_$2622_$","typeString":"function (uint256,Memory.Pointer) pure returns (Memory.Slice)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3185:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"functionReturnParameters":2697,"id":2722,"nodeType":"Return","src":"3178:53:13"}]},"documentation":{"id":2685,"nodeType":"StructuredDocumentation","src":"2905:91:13","text":"@dev Offset and cut a Slice (equivalent to self[offset:offset+len] for calldata slices)"},"id":2724,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"3010:5:13","nodeType":"FunctionDefinition","parameters":{"id":2693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2688,"mutability":"mutable","name":"self","nameLocation":"3022:4:13","nodeType":"VariableDeclaration","scope":2724,"src":"3016:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2687,"nodeType":"UserDefinedTypeName","pathNode":{"id":2686,"name":"Slice","nameLocations":["3016:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"3016:5:13"},"referencedDeclaration":2622,"src":"3016:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"},{"constant":false,"id":2690,"mutability":"mutable","name":"offset","nameLocation":"3036:6:13","nodeType":"VariableDeclaration","scope":2724,"src":"3028:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2689,"name":"uint256","nodeType":"ElementaryTypeName","src":"3028:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2692,"mutability":"mutable","name":"len","nameLocation":"3052:3:13","nodeType":"VariableDeclaration","scope":2724,"src":"3044:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2691,"name":"uint256","nodeType":"ElementaryTypeName","src":"3044:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3015:41:13"},"returnParameters":{"id":2697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2724,"src":"3080:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2695,"nodeType":"UserDefinedTypeName","pathNode":{"id":2694,"name":"Slice","nameLocations":["3080:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"3080:5:13"},"referencedDeclaration":2622,"src":"3080:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"3079:7:13"},"scope":2890,"src":"3001:237:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2759,"nodeType":"Block","src":"3552:324:13","statements":[{"assignments":[2736],"declarations":[{"constant":false,"id":2736,"mutability":"mutable","name":"outOfBoundBytes","nameLocation":"3570:15:13","nodeType":"VariableDeclaration","scope":2759,"src":"3562:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2735,"name":"uint256","nodeType":"ElementaryTypeName","src":"3562:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2746,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30783230","id":2739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3607:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2740,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"3614:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3607:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":2743,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"3629:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2742,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"3622:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":2744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3622:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2737,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"3588:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4719_$","typeString":"type(library Math)"}},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3593:13:13","memberName":"saturatingSub","nodeType":"MemberAccess","referencedDeclaration":3294,"src":"3588:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3588:47:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3562:73:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2747,"name":"outOfBoundBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"3649:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30783166","id":2748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3667:4:13","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"0x1f"},"src":"3649:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2757,"nodeType":"IfStatement","src":"3645:66:13","trueBody":{"expression":{"arguments":[{"expression":{"id":2753,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3685:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":2754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3691:19:13","memberName":"ARRAY_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":2925,"src":"3685:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2750,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3673:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":2752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3679:5:13","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"3673:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3673:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2756,"nodeType":"ExpressionStatement","src":"3673:38:13"}},{"AST":{"nativeSrc":"3747:123:13","nodeType":"YulBlock","src":"3747:123:13","statements":[{"nativeSrc":"3761:99:13","nodeType":"YulAssignment","src":"3761:99:13","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"self","nativeSrc":"3788:4:13","nodeType":"YulIdentifier","src":"3788:4:13"},{"arguments":[{"kind":"number","nativeSrc":"3798:3:13","nodeType":"YulLiteral","src":"3798:3:13","type":"","value":"128"},{"arguments":[{"kind":"number","nativeSrc":"3807:1:13","nodeType":"YulLiteral","src":"3807:1:13","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3803:3:13","nodeType":"YulIdentifier","src":"3803:3:13"},"nativeSrc":"3803:6:13","nodeType":"YulFunctionCall","src":"3803:6:13"}],"functionName":{"name":"shr","nativeSrc":"3794:3:13","nodeType":"YulIdentifier","src":"3794:3:13"},"nativeSrc":"3794:16:13","nodeType":"YulFunctionCall","src":"3794:16:13"}],"functionName":{"name":"and","nativeSrc":"3784:3:13","nodeType":"YulIdentifier","src":"3784:3:13"},"nativeSrc":"3784:27:13","nodeType":"YulFunctionCall","src":"3784:27:13"},{"name":"offset","nativeSrc":"3813:6:13","nodeType":"YulIdentifier","src":"3813:6:13"}],"functionName":{"name":"add","nativeSrc":"3780:3:13","nodeType":"YulIdentifier","src":"3780:3:13"},"nativeSrc":"3780:40:13","nodeType":"YulFunctionCall","src":"3780:40:13"}],"functionName":{"name":"mload","nativeSrc":"3774:5:13","nodeType":"YulIdentifier","src":"3774:5:13"},"nativeSrc":"3774:47:13","nodeType":"YulFunctionCall","src":"3774:47:13"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3831:1:13","nodeType":"YulLiteral","src":"3831:1:13","type":"","value":"8"},{"name":"outOfBoundBytes","nativeSrc":"3834:15:13","nodeType":"YulIdentifier","src":"3834:15:13"}],"functionName":{"name":"mul","nativeSrc":"3827:3:13","nodeType":"YulIdentifier","src":"3827:3:13"},"nativeSrc":"3827:23:13","nodeType":"YulFunctionCall","src":"3827:23:13"},{"arguments":[{"kind":"number","nativeSrc":"3856:1:13","nodeType":"YulLiteral","src":"3856:1:13","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3852:3:13","nodeType":"YulIdentifier","src":"3852:3:13"},"nativeSrc":"3852:6:13","nodeType":"YulFunctionCall","src":"3852:6:13"}],"functionName":{"name":"shl","nativeSrc":"3823:3:13","nodeType":"YulIdentifier","src":"3823:3:13"},"nativeSrc":"3823:36:13","nodeType":"YulFunctionCall","src":"3823:36:13"}],"functionName":{"name":"and","nativeSrc":"3770:3:13","nodeType":"YulIdentifier","src":"3770:3:13"},"nativeSrc":"3770:90:13","nodeType":"YulFunctionCall","src":"3770:90:13"},"variableNames":[{"name":"value","nativeSrc":"3761:5:13","nodeType":"YulIdentifier","src":"3761:5:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2730,"isOffset":false,"isSlot":false,"src":"3813:6:13","valueSize":1},{"declaration":2736,"isOffset":false,"isSlot":false,"src":"3834:15:13","valueSize":1},{"declaration":2728,"isOffset":false,"isSlot":false,"src":"3788:4:13","valueSize":1},{"declaration":2733,"isOffset":false,"isSlot":false,"src":"3761:5:13","valueSize":1}],"flags":["memory-safe"],"id":2758,"nodeType":"InlineAssembly","src":"3722:148:13"}]},"documentation":{"id":2725,"nodeType":"StructuredDocumentation","src":"3244:223:13","text":" @dev Read a bytes32 buffer from a given Slice at a specific offset\n NOTE: If offset > length(slice) - 0x20, part of the return value will be out of bound of the slice. These bytes are zeroed."},"id":2760,"implemented":true,"kind":"function","modifiers":[],"name":"load","nameLocation":"3481:4:13","nodeType":"FunctionDefinition","parameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2728,"mutability":"mutable","name":"self","nameLocation":"3492:4:13","nodeType":"VariableDeclaration","scope":2760,"src":"3486:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2727,"nodeType":"UserDefinedTypeName","pathNode":{"id":2726,"name":"Slice","nameLocations":["3486:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"3486:5:13"},"referencedDeclaration":2622,"src":"3486:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"},{"constant":false,"id":2730,"mutability":"mutable","name":"offset","nameLocation":"3506:6:13","nodeType":"VariableDeclaration","scope":2760,"src":"3498:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2729,"name":"uint256","nodeType":"ElementaryTypeName","src":"3498:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3485:28:13"},"returnParameters":{"id":2734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2733,"mutability":"mutable","name":"value","nameLocation":"3545:5:13","nodeType":"VariableDeclaration","scope":2760,"src":"3537:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3537:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3536:15:13"},"scope":2890,"src":"3472:404:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2785,"nodeType":"Block","src":"4032:300:13","statements":[{"assignments":[2770],"declarations":[{"constant":false,"id":2770,"mutability":"mutable","name":"len","nameLocation":"4050:3:13","nodeType":"VariableDeclaration","scope":2785,"src":"4042:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2769,"name":"uint256","nodeType":"ElementaryTypeName","src":"4042:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2774,"initialValue":{"arguments":[{"id":2772,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"4063:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2771,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"4056:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":2773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4056:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4042:26:13"},{"assignments":[2779],"declarations":[{"constant":false,"id":2779,"mutability":"mutable","name":"ptr","nameLocation":"4093:3:13","nodeType":"VariableDeclaration","scope":2785,"src":"4078:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2778,"nodeType":"UserDefinedTypeName","pathNode":{"id":2777,"name":"Memory.Pointer","nameLocations":["4078:6:13","4085:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"4078:14:13"},"referencedDeclaration":2550,"src":"4078:14:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":2783,"initialValue":{"arguments":[{"id":2781,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"4108:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2780,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"4099:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4099:14:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"4078:35:13"},{"AST":{"nativeSrc":"4148:178:13","nodeType":"YulBlock","src":"4148:178:13","statements":[{"nativeSrc":"4162:21:13","nodeType":"YulAssignment","src":"4162:21:13","value":{"arguments":[{"kind":"number","nativeSrc":"4178:4:13","nodeType":"YulLiteral","src":"4178:4:13","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"4172:5:13","nodeType":"YulIdentifier","src":"4172:5:13"},"nativeSrc":"4172:11:13","nodeType":"YulFunctionCall","src":"4172:11:13"},"variableNames":[{"name":"result","nativeSrc":"4162:6:13","nodeType":"YulIdentifier","src":"4162:6:13"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"4203:6:13","nodeType":"YulIdentifier","src":"4203:6:13"},{"name":"len","nativeSrc":"4211:3:13","nodeType":"YulIdentifier","src":"4211:3:13"}],"functionName":{"name":"mstore","nativeSrc":"4196:6:13","nodeType":"YulIdentifier","src":"4196:6:13"},"nativeSrc":"4196:19:13","nodeType":"YulFunctionCall","src":"4196:19:13"},"nativeSrc":"4196:19:13","nodeType":"YulExpressionStatement","src":"4196:19:13"},{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"4238:6:13","nodeType":"YulIdentifier","src":"4238:6:13"},{"kind":"number","nativeSrc":"4246:4:13","nodeType":"YulLiteral","src":"4246:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4234:3:13","nodeType":"YulIdentifier","src":"4234:3:13"},"nativeSrc":"4234:17:13","nodeType":"YulFunctionCall","src":"4234:17:13"},{"name":"ptr","nativeSrc":"4253:3:13","nodeType":"YulIdentifier","src":"4253:3:13"},{"name":"len","nativeSrc":"4258:3:13","nodeType":"YulIdentifier","src":"4258:3:13"}],"functionName":{"name":"mcopy","nativeSrc":"4228:5:13","nodeType":"YulIdentifier","src":"4228:5:13"},"nativeSrc":"4228:34:13","nodeType":"YulFunctionCall","src":"4228:34:13"},"nativeSrc":"4228:34:13","nodeType":"YulExpressionStatement","src":"4228:34:13"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4282:4:13","nodeType":"YulLiteral","src":"4282:4:13","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"result","nativeSrc":"4296:6:13","nodeType":"YulIdentifier","src":"4296:6:13"},{"name":"len","nativeSrc":"4304:3:13","nodeType":"YulIdentifier","src":"4304:3:13"}],"functionName":{"name":"add","nativeSrc":"4292:3:13","nodeType":"YulIdentifier","src":"4292:3:13"},"nativeSrc":"4292:16:13","nodeType":"YulFunctionCall","src":"4292:16:13"},{"kind":"number","nativeSrc":"4310:4:13","nodeType":"YulLiteral","src":"4310:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4288:3:13","nodeType":"YulIdentifier","src":"4288:3:13"},"nativeSrc":"4288:27:13","nodeType":"YulFunctionCall","src":"4288:27:13"}],"functionName":{"name":"mstore","nativeSrc":"4275:6:13","nodeType":"YulIdentifier","src":"4275:6:13"},"nativeSrc":"4275:41:13","nodeType":"YulFunctionCall","src":"4275:41:13"},"nativeSrc":"4275:41:13","nodeType":"YulExpressionStatement","src":"4275:41:13"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2770,"isOffset":false,"isSlot":false,"src":"4211:3:13","valueSize":1},{"declaration":2770,"isOffset":false,"isSlot":false,"src":"4258:3:13","valueSize":1},{"declaration":2770,"isOffset":false,"isSlot":false,"src":"4304:3:13","valueSize":1},{"declaration":2779,"isOffset":false,"isSlot":false,"src":"4253:3:13","valueSize":1},{"declaration":2767,"isOffset":false,"isSlot":false,"src":"4162:6:13","valueSize":1},{"declaration":2767,"isOffset":false,"isSlot":false,"src":"4203:6:13","valueSize":1},{"declaration":2767,"isOffset":false,"isSlot":false,"src":"4238:6:13","valueSize":1},{"declaration":2767,"isOffset":false,"isSlot":false,"src":"4296:6:13","valueSize":1}],"flags":["memory-safe"],"id":2784,"nodeType":"InlineAssembly","src":"4123:203:13"}]},"documentation":{"id":2761,"nodeType":"StructuredDocumentation","src":"3882:72:13","text":"@dev Extract the data corresponding to a Slice (allocate new memory)"},"id":2786,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes","nameLocation":"3968:7:13","nodeType":"FunctionDefinition","parameters":{"id":2765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2764,"mutability":"mutable","name":"self","nameLocation":"3982:4:13","nodeType":"VariableDeclaration","scope":2786,"src":"3976:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2763,"nodeType":"UserDefinedTypeName","pathNode":{"id":2762,"name":"Slice","nameLocations":["3976:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"3976:5:13"},"referencedDeclaration":2622,"src":"3976:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"3975:12:13"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2767,"mutability":"mutable","name":"result","nameLocation":"4024:6:13","nodeType":"VariableDeclaration","scope":2786,"src":"4011:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2766,"name":"bytes","nodeType":"ElementaryTypeName","src":"4011:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4010:21:13"},"scope":2890,"src":"3959:373:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2829,"nodeType":"Block","src":"4474:277:13","statements":[{"assignments":[2802],"declarations":[{"constant":false,"id":2802,"mutability":"mutable","name":"ptrA","nameLocation":"4499:4:13","nodeType":"VariableDeclaration","scope":2829,"src":"4484:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2801,"nodeType":"UserDefinedTypeName","pathNode":{"id":2800,"name":"Memory.Pointer","nameLocations":["4484:6:13","4491:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"4484:14:13"},"referencedDeclaration":2550,"src":"4484:14:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":2806,"initialValue":{"arguments":[{"id":2804,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2790,"src":"4515:1:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2803,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"4506:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4506:11:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"4484:33:13"},{"assignments":[2811],"declarations":[{"constant":false,"id":2811,"mutability":"mutable","name":"ptrB","nameLocation":"4542:4:13","nodeType":"VariableDeclaration","scope":2829,"src":"4527:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2810,"nodeType":"UserDefinedTypeName","pathNode":{"id":2809,"name":"Memory.Pointer","nameLocations":["4527:6:13","4534:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"4527:14:13"},"referencedDeclaration":2550,"src":"4527:14:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":2815,"initialValue":{"arguments":[{"id":2813,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"4558:1:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2812,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"4549:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4549:11:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"4527:33:13"},{"assignments":[2817],"declarations":[{"constant":false,"id":2817,"mutability":"mutable","name":"lenA","nameLocation":"4578:4:13","nodeType":"VariableDeclaration","scope":2829,"src":"4570:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2816,"name":"uint256","nodeType":"ElementaryTypeName","src":"4570:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2821,"initialValue":{"arguments":[{"id":2819,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2790,"src":"4592:1:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2818,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"4585:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4585:9:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4570:24:13"},{"assignments":[2823],"declarations":[{"constant":false,"id":2823,"mutability":"mutable","name":"lenB","nameLocation":"4612:4:13","nodeType":"VariableDeclaration","scope":2829,"src":"4604:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2822,"name":"uint256","nodeType":"ElementaryTypeName","src":"4604:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2827,"initialValue":{"arguments":[{"id":2825,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"4626:1:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2824,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"4619:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4619:9:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4604:24:13"},{"AST":{"nativeSrc":"4663:82:13","nodeType":"YulBlock","src":"4663:82:13","statements":[{"nativeSrc":"4677:58:13","nodeType":"YulAssignment","src":"4677:58:13","value":{"arguments":[{"arguments":[{"name":"ptrA","nativeSrc":"4700:4:13","nodeType":"YulIdentifier","src":"4700:4:13"},{"name":"lenA","nativeSrc":"4706:4:13","nodeType":"YulIdentifier","src":"4706:4:13"}],"functionName":{"name":"keccak256","nativeSrc":"4690:9:13","nodeType":"YulIdentifier","src":"4690:9:13"},"nativeSrc":"4690:21:13","nodeType":"YulFunctionCall","src":"4690:21:13"},{"arguments":[{"name":"ptrB","nativeSrc":"4723:4:13","nodeType":"YulIdentifier","src":"4723:4:13"},{"name":"lenB","nativeSrc":"4729:4:13","nodeType":"YulIdentifier","src":"4729:4:13"}],"functionName":{"name":"keccak256","nativeSrc":"4713:9:13","nodeType":"YulIdentifier","src":"4713:9:13"},"nativeSrc":"4713:21:13","nodeType":"YulFunctionCall","src":"4713:21:13"}],"functionName":{"name":"eq","nativeSrc":"4687:2:13","nodeType":"YulIdentifier","src":"4687:2:13"},"nativeSrc":"4687:48:13","nodeType":"YulFunctionCall","src":"4687:48:13"},"variableNames":[{"name":"result","nativeSrc":"4677:6:13","nodeType":"YulIdentifier","src":"4677:6:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2817,"isOffset":false,"isSlot":false,"src":"4706:4:13","valueSize":1},{"declaration":2823,"isOffset":false,"isSlot":false,"src":"4729:4:13","valueSize":1},{"declaration":2802,"isOffset":false,"isSlot":false,"src":"4700:4:13","valueSize":1},{"declaration":2811,"isOffset":false,"isSlot":false,"src":"4723:4:13","valueSize":1},{"declaration":2796,"isOffset":false,"isSlot":false,"src":"4677:6:13","valueSize":1}],"flags":["memory-safe"],"id":2828,"nodeType":"InlineAssembly","src":"4638:107:13"}]},"documentation":{"id":2787,"nodeType":"StructuredDocumentation","src":"4338:62:13","text":"@dev Returns true if the two slices contain the same data."},"id":2830,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"4414:5:13","nodeType":"FunctionDefinition","parameters":{"id":2794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2790,"mutability":"mutable","name":"a","nameLocation":"4426:1:13","nodeType":"VariableDeclaration","scope":2830,"src":"4420:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2789,"nodeType":"UserDefinedTypeName","pathNode":{"id":2788,"name":"Slice","nameLocations":["4420:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"4420:5:13"},"referencedDeclaration":2622,"src":"4420:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"},{"constant":false,"id":2793,"mutability":"mutable","name":"b","nameLocation":"4435:1:13","nodeType":"VariableDeclaration","scope":2830,"src":"4429:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2792,"nodeType":"UserDefinedTypeName","pathNode":{"id":2791,"name":"Slice","nameLocations":["4429:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"4429:5:13"},"referencedDeclaration":2622,"src":"4429:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"4419:18:13"},"returnParameters":{"id":2797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"result","nameLocation":"4466:6:13","nodeType":"VariableDeclaration","scope":2830,"src":"4461:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2795,"name":"bool","nodeType":"ElementaryTypeName","src":"4461:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4460:13:13"},"scope":2890,"src":"4405:346:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2862,"nodeType":"Block","src":"4937:230:13","statements":[{"assignments":[2843],"declarations":[{"constant":false,"id":2843,"mutability":"mutable","name":"fmp","nameLocation":"4962:3:13","nodeType":"VariableDeclaration","scope":2862,"src":"4947:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2842,"nodeType":"UserDefinedTypeName","pathNode":{"id":2841,"name":"Memory.Pointer","nameLocations":["4947:6:13","4954:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"4947:14:13"},"referencedDeclaration":2550,"src":"4947:14:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":2846,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2844,"name":"getFreeMemoryPointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"4968:20:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function () pure returns (Memory.Pointer)"}},"id":2845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4968:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"4947:43:13"},{"assignments":[2851],"declarations":[{"constant":false,"id":2851,"mutability":"mutable","name":"end","nameLocation":"5015:3:13","nodeType":"VariableDeclaration","scope":2862,"src":"5000:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2850,"nodeType":"UserDefinedTypeName","pathNode":{"id":2849,"name":"Memory.Pointer","nameLocations":["5000:6:13","5007:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"5000:14:13"},"referencedDeclaration":2550,"src":"5000:14:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"id":2860,"initialValue":{"arguments":[{"arguments":[{"id":2854,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"5038:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2853,"name":"_pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"5029:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Slice) pure returns (Memory.Pointer)"}},"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5029:14:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},{"arguments":[{"id":2857,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"5052:4:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}],"id":2856,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"5045:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Slice_$2622_$returns$_t_uint256_$","typeString":"function (Memory.Slice) pure returns (uint256)"}},"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5045:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2852,"name":"forward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"5021:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Pointer_$2550_$_t_uint256_$returns$_t_userDefinedValueType$_Pointer_$2550_$","typeString":"function (Memory.Pointer,uint256) pure returns (Memory.Pointer)"}},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5021:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"nodeType":"VariableDeclarationStatement","src":"5000:58:13"},{"AST":{"nativeSrc":"5093:68:13","nodeType":"YulBlock","src":"5093:68:13","statements":[{"nativeSrc":"5107:30:13","nodeType":"YulAssignment","src":"5107:30:13","value":{"arguments":[{"arguments":[{"name":"fmp","nativeSrc":"5127:3:13","nodeType":"YulIdentifier","src":"5127:3:13"},{"name":"end","nativeSrc":"5132:3:13","nodeType":"YulIdentifier","src":"5132:3:13"}],"functionName":{"name":"lt","nativeSrc":"5124:2:13","nodeType":"YulIdentifier","src":"5124:2:13"},"nativeSrc":"5124:12:13","nodeType":"YulFunctionCall","src":"5124:12:13"}],"functionName":{"name":"iszero","nativeSrc":"5117:6:13","nodeType":"YulIdentifier","src":"5117:6:13"},"nativeSrc":"5117:20:13","nodeType":"YulFunctionCall","src":"5117:20:13"},"variableNames":[{"name":"result","nativeSrc":"5107:6:13","nodeType":"YulIdentifier","src":"5107:6:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2851,"isOffset":false,"isSlot":false,"src":"5132:3:13","valueSize":1},{"declaration":2843,"isOffset":false,"isSlot":false,"src":"5127:3:13","valueSize":1},{"declaration":2837,"isOffset":false,"isSlot":false,"src":"5107:6:13","valueSize":1}],"flags":["memory-safe"],"id":2861,"nodeType":"InlineAssembly","src":"5068:93:13"}]},"documentation":{"id":2831,"nodeType":"StructuredDocumentation","src":"4757:107:13","text":"@dev Returns true if the memory occupied by the slice is reserved (i.e. before the free memory pointer)"},"id":2863,"implemented":true,"kind":"function","modifiers":[],"name":"isReserved","nameLocation":"4878:10:13","nodeType":"FunctionDefinition","parameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"self","nameLocation":"4895:4:13","nodeType":"VariableDeclaration","scope":2863,"src":"4889:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2833,"nodeType":"UserDefinedTypeName","pathNode":{"id":2832,"name":"Slice","nameLocations":["4889:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"4889:5:13"},"referencedDeclaration":2622,"src":"4889:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"4888:12:13"},"returnParameters":{"id":2838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2837,"mutability":"mutable","name":"result","nameLocation":"4929:6:13","nodeType":"VariableDeclaration","scope":2863,"src":"4924:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2836,"name":"bool","nodeType":"ElementaryTypeName","src":"4924:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4923:13:13"},"scope":2890,"src":"4869:298:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2876,"nodeType":"Block","src":"5710:97:13","statements":[{"AST":{"nativeSrc":"5745:56:13","nodeType":"YulBlock","src":"5745:56:13","statements":[{"nativeSrc":"5759:32:13","nodeType":"YulAssignment","src":"5759:32:13","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5776:3:13","nodeType":"YulLiteral","src":"5776:3:13","type":"","value":"128"},{"name":"len","nativeSrc":"5781:3:13","nodeType":"YulIdentifier","src":"5781:3:13"}],"functionName":{"name":"shl","nativeSrc":"5772:3:13","nodeType":"YulIdentifier","src":"5772:3:13"},"nativeSrc":"5772:13:13","nodeType":"YulFunctionCall","src":"5772:13:13"},{"name":"ptr","nativeSrc":"5787:3:13","nodeType":"YulIdentifier","src":"5787:3:13"}],"functionName":{"name":"or","nativeSrc":"5769:2:13","nodeType":"YulIdentifier","src":"5769:2:13"},"nativeSrc":"5769:22:13","nodeType":"YulFunctionCall","src":"5769:22:13"},"variableNames":[{"name":"result","nativeSrc":"5759:6:13","nodeType":"YulIdentifier","src":"5759:6:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2866,"isOffset":false,"isSlot":false,"src":"5781:3:13","valueSize":1},{"declaration":2869,"isOffset":false,"isSlot":false,"src":"5787:3:13","valueSize":1},{"declaration":2873,"isOffset":false,"isSlot":false,"src":"5759:6:13","valueSize":1}],"flags":["memory-safe"],"id":2875,"nodeType":"InlineAssembly","src":"5720:81:13"}]},"documentation":{"id":2864,"nodeType":"StructuredDocumentation","src":"5173:445:13","text":" @dev Private helper: create a slice from raw values (length and pointer)\n NOTE: this function MUST NOT be called with `len` or `ptr` that exceed `2**128-1`. This should never be\n the case of slices produced by `asSlice(bytes)`, and function that reduce the scope of slices\n (`slice(Slice,uint256)` and `slice(Slice,uint256, uint256)`) should not cause this issue if the parent slice is\n correct."},"id":2877,"implemented":true,"kind":"function","modifiers":[],"name":"_asSlice","nameLocation":"5632:8:13","nodeType":"FunctionDefinition","parameters":{"id":2870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2866,"mutability":"mutable","name":"len","nameLocation":"5649:3:13","nodeType":"VariableDeclaration","scope":2877,"src":"5641:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2865,"name":"uint256","nodeType":"ElementaryTypeName","src":"5641:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2869,"mutability":"mutable","name":"ptr","nameLocation":"5669:3:13","nodeType":"VariableDeclaration","scope":2877,"src":"5654:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2868,"nodeType":"UserDefinedTypeName","pathNode":{"id":2867,"name":"Memory.Pointer","nameLocations":["5654:6:13","5661:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"5654:14:13"},"referencedDeclaration":2550,"src":"5654:14:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"5640:33:13"},"returnParameters":{"id":2874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2873,"mutability":"mutable","name":"result","nameLocation":"5702:6:13","nodeType":"VariableDeclaration","scope":2877,"src":"5696:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2872,"nodeType":"UserDefinedTypeName","pathNode":{"id":2871,"name":"Slice","nameLocations":["5696:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"5696:5:13"},"referencedDeclaration":2622,"src":"5696:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"5695:14:13"},"scope":2890,"src":"5623:184:13","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2888,"nodeType":"Block","src":"5989:102:13","statements":[{"AST":{"nativeSrc":"6024:61:13","nodeType":"YulBlock","src":"6024:61:13","statements":[{"nativeSrc":"6038:37:13","nodeType":"YulAssignment","src":"6038:37:13","value":{"arguments":[{"name":"self","nativeSrc":"6052:4:13","nodeType":"YulIdentifier","src":"6052:4:13"},{"arguments":[{"kind":"number","nativeSrc":"6062:3:13","nodeType":"YulLiteral","src":"6062:3:13","type":"","value":"128"},{"arguments":[{"kind":"number","nativeSrc":"6071:1:13","nodeType":"YulLiteral","src":"6071:1:13","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"6067:3:13","nodeType":"YulIdentifier","src":"6067:3:13"},"nativeSrc":"6067:6:13","nodeType":"YulFunctionCall","src":"6067:6:13"}],"functionName":{"name":"shr","nativeSrc":"6058:3:13","nodeType":"YulIdentifier","src":"6058:3:13"},"nativeSrc":"6058:16:13","nodeType":"YulFunctionCall","src":"6058:16:13"}],"functionName":{"name":"and","nativeSrc":"6048:3:13","nodeType":"YulIdentifier","src":"6048:3:13"},"nativeSrc":"6048:27:13","nodeType":"YulFunctionCall","src":"6048:27:13"},"variableNames":[{"name":"result","nativeSrc":"6038:6:13","nodeType":"YulIdentifier","src":"6038:6:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2885,"isOffset":false,"isSlot":false,"src":"6038:6:13","valueSize":1},{"declaration":2881,"isOffset":false,"isSlot":false,"src":"6052:4:13","valueSize":1}],"flags":["memory-safe"],"id":2887,"nodeType":"InlineAssembly","src":"5999:86:13"}]},"documentation":{"id":2878,"nodeType":"StructuredDocumentation","src":"5813:96:13","text":"@dev Returns the memory location of a given slice (equiv to self.offset for calldata slices)"},"id":2889,"implemented":true,"kind":"function","modifiers":[],"name":"_pointer","nameLocation":"5923:8:13","nodeType":"FunctionDefinition","parameters":{"id":2882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2881,"mutability":"mutable","name":"self","nameLocation":"5938:4:13","nodeType":"VariableDeclaration","scope":2889,"src":"5932:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"},"typeName":{"id":2880,"nodeType":"UserDefinedTypeName","pathNode":{"id":2879,"name":"Slice","nameLocations":["5932:5:13"],"nodeType":"IdentifierPath","referencedDeclaration":2622,"src":"5932:5:13"},"referencedDeclaration":2622,"src":"5932:5:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$2622","typeString":"Memory.Slice"}},"visibility":"internal"}],"src":"5931:12:13"},"returnParameters":{"id":2886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2885,"mutability":"mutable","name":"result","nameLocation":"5981:6:13","nodeType":"VariableDeclaration","scope":2889,"src":"5966:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"},"typeName":{"id":2884,"nodeType":"UserDefinedTypeName","pathNode":{"id":2883,"name":"Memory.Pointer","nameLocations":["5966:6:13","5973:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"5966:14:13"},"referencedDeclaration":2550,"src":"5966:14:13","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Pointer_$2550","typeString":"Memory.Pointer"}},"visibility":"internal"}],"src":"5965:23:13"},"scope":2890,"src":"5914:177:13","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2891,"src":"780:5313:13","usedErrors":[],"usedEvents":[]}],"src":"100:5994:13"},"id":13},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[2942]},"id":2943,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2892,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:14"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":2893,"nodeType":"StructuredDocumentation","src":"125:489:14","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n using Panic for uint256;\n // Use any of the declared internal constants\n function foo() { Panic.GENERIC.panic(); }\n // Alternatively\n function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"id":2942,"linearizedBaseContracts":[2942],"name":"Panic","nameLocation":"665:5:14","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":2894,"nodeType":"StructuredDocumentation","src":"677:36:14","text":"@dev generic / unspecified error"},"id":2897,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:14","nodeType":"VariableDeclaration","scope":2942,"src":"718:40:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2895,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":2896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":2898,"nodeType":"StructuredDocumentation","src":"764:37:14","text":"@dev used by the assert() builtin"},"id":2901,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:14","nodeType":"VariableDeclaration","scope":2942,"src":"806:39:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2899,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":2900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":2902,"nodeType":"StructuredDocumentation","src":"851:41:14","text":"@dev arithmetic underflow or overflow"},"id":2905,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:14","nodeType":"VariableDeclaration","scope":2942,"src":"897:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2903,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":2904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:14","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":2906,"nodeType":"StructuredDocumentation","src":"950:35:14","text":"@dev division or modulo by zero"},"id":2909,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:14","nodeType":"VariableDeclaration","scope":2942,"src":"990:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2907,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":2908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:14","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":2910,"nodeType":"StructuredDocumentation","src":"1045:30:14","text":"@dev enum conversion error"},"id":2913,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:14","nodeType":"VariableDeclaration","scope":2942,"src":"1080:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2911,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":2912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:14","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":2914,"nodeType":"StructuredDocumentation","src":"1140:36:14","text":"@dev invalid encoding in storage"},"id":2917,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:14","nodeType":"VariableDeclaration","scope":2942,"src":"1181:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2915,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":2916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:14","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":2918,"nodeType":"StructuredDocumentation","src":"1242:24:14","text":"@dev empty array pop"},"id":2921,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:14","nodeType":"VariableDeclaration","scope":2942,"src":"1271:48:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2919,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":2920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:14","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":2922,"nodeType":"StructuredDocumentation","src":"1325:35:14","text":"@dev array out of bounds access"},"id":2925,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:14","nodeType":"VariableDeclaration","scope":2942,"src":"1365:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2923,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":2924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:14","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":2926,"nodeType":"StructuredDocumentation","src":"1423:65:14","text":"@dev resource error (too large allocation or too large array)"},"id":2929,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:14","nodeType":"VariableDeclaration","scope":2942,"src":"1493:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":2928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:14","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":2930,"nodeType":"StructuredDocumentation","src":"1546:42:14","text":"@dev calling invalid internal function"},"id":2933,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:14","nodeType":"VariableDeclaration","scope":2942,"src":"1593:58:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":2932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:14","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":2940,"nodeType":"Block","src":"1819:151:14","statements":[{"AST":{"nativeSrc":"1854:110:14","nodeType":"YulBlock","src":"1854:110:14","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:14","nodeType":"YulLiteral","src":"1875:4:14","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:14","nodeType":"YulLiteral","src":"1881:10:14","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:14","nodeType":"YulIdentifier","src":"1868:6:14"},"nativeSrc":"1868:24:14","nodeType":"YulFunctionCall","src":"1868:24:14"},"nativeSrc":"1868:24:14","nodeType":"YulExpressionStatement","src":"1868:24:14"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:14","nodeType":"YulLiteral","src":"1912:4:14","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:14","nodeType":"YulIdentifier","src":"1918:4:14"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:14","nodeType":"YulIdentifier","src":"1905:6:14"},"nativeSrc":"1905:18:14","nodeType":"YulFunctionCall","src":"1905:18:14"},"nativeSrc":"1905:18:14","nodeType":"YulExpressionStatement","src":"1905:18:14"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:14","nodeType":"YulLiteral","src":"1943:4:14","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:14","nodeType":"YulLiteral","src":"1949:4:14","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:14","nodeType":"YulIdentifier","src":"1936:6:14"},"nativeSrc":"1936:18:14","nodeType":"YulFunctionCall","src":"1936:18:14"},"nativeSrc":"1936:18:14","nodeType":"YulExpressionStatement","src":"1936:18:14"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2936,"isOffset":false,"isSlot":false,"src":"1918:4:14","valueSize":1}],"flags":["memory-safe"],"id":2939,"nodeType":"InlineAssembly","src":"1829:135:14"}]},"documentation":{"id":2934,"nodeType":"StructuredDocumentation","src":"1658:113:14","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":2941,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:14","nodeType":"FunctionDefinition","parameters":{"id":2937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2936,"mutability":"mutable","name":"code","nameLocation":"1799:4:14","nodeType":"VariableDeclaration","scope":2941,"src":"1791:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2935,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:14"},"returnParameters":{"id":2938,"nodeType":"ParameterList","parameters":[],"src":"1819:0:14"},"scope":2942,"src":"1776:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2943,"src":"657:1315:14","usedErrors":[],"usedEvents":[]}],"src":"99:1874:14"},"id":14},"@openzeppelin/contracts/utils/Pausable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Pausable.sol","exportedSymbols":{"Context":[2382],"Pausable":[3050]},"id":3051,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2944,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:15"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":2946,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3051,"sourceUnit":2383,"src":"128:45:15","symbolAliases":[{"foreign":{"id":2945,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"136:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2948,"name":"Context","nameLocations":["645:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":2382,"src":"645:7:15"},"id":2949,"nodeType":"InheritanceSpecifier","src":"645:7:15"}],"canonicalName":"Pausable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2947,"nodeType":"StructuredDocumentation","src":"175:439:15","text":" @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."},"fullyImplemented":true,"id":3050,"linearizedBaseContracts":[3050,2382],"name":"Pausable","nameLocation":"633:8:15","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2951,"mutability":"mutable","name":"_paused","nameLocation":"672:7:15","nodeType":"VariableDeclaration","scope":3050,"src":"659:20:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2950,"name":"bool","nodeType":"ElementaryTypeName","src":"659:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":2952,"nodeType":"StructuredDocumentation","src":"686:73:15","text":" @dev Emitted when the pause is triggered by `account`."},"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":2956,"name":"Paused","nameLocation":"770:6:15","nodeType":"EventDefinition","parameters":{"id":2955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2954,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"785:7:15","nodeType":"VariableDeclaration","scope":2956,"src":"777:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2953,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"776:17:15"},"src":"764:30:15"},{"anonymous":false,"documentation":{"id":2957,"nodeType":"StructuredDocumentation","src":"800:70:15","text":" @dev Emitted when the pause is lifted by `account`."},"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":2961,"name":"Unpaused","nameLocation":"881:8:15","nodeType":"EventDefinition","parameters":{"id":2960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2959,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"898:7:15","nodeType":"VariableDeclaration","scope":2961,"src":"890:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2958,"name":"address","nodeType":"ElementaryTypeName","src":"890:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"889:17:15"},"src":"875:32:15"},{"documentation":{"id":2962,"nodeType":"StructuredDocumentation","src":"913:76:15","text":" @dev The operation failed because the contract is paused."},"errorSelector":"d93c0665","id":2964,"name":"EnforcedPause","nameLocation":"1000:13:15","nodeType":"ErrorDefinition","parameters":{"id":2963,"nodeType":"ParameterList","parameters":[],"src":"1013:2:15"},"src":"994:22:15"},{"documentation":{"id":2965,"nodeType":"StructuredDocumentation","src":"1022:80:15","text":" @dev The operation failed because the contract is not paused."},"errorSelector":"8dfc202b","id":2967,"name":"ExpectedPause","nameLocation":"1113:13:15","nodeType":"ErrorDefinition","parameters":{"id":2966,"nodeType":"ParameterList","parameters":[],"src":"1126:2:15"},"src":"1107:22:15"},{"body":{"id":2974,"nodeType":"Block","src":"1340:47:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2970,"name":"_requireNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"1350:17:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1350:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2972,"nodeType":"ExpressionStatement","src":"1350:19:15"},{"id":2973,"nodeType":"PlaceholderStatement","src":"1379:1:15"}]},"documentation":{"id":2968,"nodeType":"StructuredDocumentation","src":"1135:175:15","text":" @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."},"id":2975,"name":"whenNotPaused","nameLocation":"1324:13:15","nodeType":"ModifierDefinition","parameters":{"id":2969,"nodeType":"ParameterList","parameters":[],"src":"1337:2:15"},"src":"1315:72:15","virtual":false,"visibility":"internal"},{"body":{"id":2982,"nodeType":"Block","src":"1587:44:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2978,"name":"_requirePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"1597:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":2979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1597:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2980,"nodeType":"ExpressionStatement","src":"1597:16:15"},{"id":2981,"nodeType":"PlaceholderStatement","src":"1623:1:15"}]},"documentation":{"id":2976,"nodeType":"StructuredDocumentation","src":"1393:167:15","text":" @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."},"id":2983,"name":"whenPaused","nameLocation":"1574:10:15","nodeType":"ModifierDefinition","parameters":{"id":2977,"nodeType":"ParameterList","parameters":[],"src":"1584:2:15"},"src":"1565:66:15","virtual":false,"visibility":"internal"},{"body":{"id":2991,"nodeType":"Block","src":"1779:31:15","statements":[{"expression":{"id":2989,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"1796:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2988,"id":2990,"nodeType":"Return","src":"1789:14:15"}]},"documentation":{"id":2984,"nodeType":"StructuredDocumentation","src":"1637:84:15","text":" @dev Returns true if the contract is paused, and false otherwise."},"functionSelector":"5c975abb","id":2992,"implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"1735:6:15","nodeType":"FunctionDefinition","parameters":{"id":2985,"nodeType":"ParameterList","parameters":[],"src":"1741:2:15"},"returnParameters":{"id":2988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2992,"src":"1773:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2986,"name":"bool","nodeType":"ElementaryTypeName","src":"1773:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1772:6:15"},"scope":3050,"src":"1726:84:15","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3003,"nodeType":"Block","src":"1929:77:15","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2996,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2992,"src":"1943:6:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1943:8:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3002,"nodeType":"IfStatement","src":"1939:61:15","trueBody":{"id":3001,"nodeType":"Block","src":"1953:47:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2998,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"1974:13:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1974:15:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3000,"nodeType":"RevertStatement","src":"1967:22:15"}]}}]},"documentation":{"id":2993,"nodeType":"StructuredDocumentation","src":"1816:57:15","text":" @dev Throws if the contract is paused."},"id":3004,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNotPaused","nameLocation":"1887:17:15","nodeType":"FunctionDefinition","parameters":{"id":2994,"nodeType":"ParameterList","parameters":[],"src":"1904:2:15"},"returnParameters":{"id":2995,"nodeType":"ParameterList","parameters":[],"src":"1929:0:15"},"scope":3050,"src":"1878:128:15","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3016,"nodeType":"Block","src":"2126:78:15","statements":[{"condition":{"id":3010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2140:9:15","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3008,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2992,"src":"2141:6:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":3009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:8:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3015,"nodeType":"IfStatement","src":"2136:62:15","trueBody":{"id":3014,"nodeType":"Block","src":"2151:47:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3011,"name":"ExpectedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2967,"src":"2172:13:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2172:15:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3013,"nodeType":"RevertStatement","src":"2165:22:15"}]}}]},"documentation":{"id":3005,"nodeType":"StructuredDocumentation","src":"2012:61:15","text":" @dev Throws if the contract is not paused."},"id":3017,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaused","nameLocation":"2087:14:15","nodeType":"FunctionDefinition","parameters":{"id":3006,"nodeType":"ParameterList","parameters":[],"src":"2101:2:15"},"returnParameters":{"id":3007,"nodeType":"ParameterList","parameters":[],"src":"2126:0:15"},"scope":3050,"src":"2078:126:15","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3032,"nodeType":"Block","src":"2388:66:15","statements":[{"expression":{"id":3025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3023,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"2398:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2408:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2398:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3026,"nodeType":"ExpressionStatement","src":"2398:14:15"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3028,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"2434:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2434:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3027,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"2427:6:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2427:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3031,"nodeType":"EmitStatement","src":"2422:25:15"}]},"documentation":{"id":3018,"nodeType":"StructuredDocumentation","src":"2210:124:15","text":" @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."},"id":3033,"implemented":true,"kind":"function","modifiers":[{"id":3021,"kind":"modifierInvocation","modifierName":{"id":3020,"name":"whenNotPaused","nameLocations":["2374:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":2975,"src":"2374:13:15"},"nodeType":"ModifierInvocation","src":"2374:13:15"}],"name":"_pause","nameLocation":"2348:6:15","nodeType":"FunctionDefinition","parameters":{"id":3019,"nodeType":"ParameterList","parameters":[],"src":"2354:2:15"},"returnParameters":{"id":3022,"nodeType":"ParameterList","parameters":[],"src":"2388:0:15"},"scope":3050,"src":"2339:115:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3048,"nodeType":"Block","src":"2634:69:15","statements":[{"expression":{"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3039,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"2644:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2654:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2644:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3042,"nodeType":"ExpressionStatement","src":"2644:15:15"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3044,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"2683:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2683:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3043,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2961,"src":"2674:8:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2674:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3047,"nodeType":"EmitStatement","src":"2669:27:15"}]},"documentation":{"id":3034,"nodeType":"StructuredDocumentation","src":"2460:121:15","text":" @dev Returns to normal state.\n Requirements:\n - The contract must be paused."},"id":3049,"implemented":true,"kind":"function","modifiers":[{"id":3037,"kind":"modifierInvocation","modifierName":{"id":3036,"name":"whenPaused","nameLocations":["2623:10:15"],"nodeType":"IdentifierPath","referencedDeclaration":2983,"src":"2623:10:15"},"nodeType":"ModifierInvocation","src":"2623:10:15"}],"name":"_unpause","nameLocation":"2595:8:15","nodeType":"FunctionDefinition","parameters":{"id":3035,"nodeType":"ParameterList","parameters":[],"src":"2603:2:15"},"returnParameters":{"id":3038,"nodeType":"ParameterList","parameters":[],"src":"2634:0:15"},"scope":3050,"src":"2586:117:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3051,"src":"615:2090:15","usedErrors":[2964,2967],"usedEvents":[2956,2961]}],"src":"102:2604:15"},"id":15},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[3062]},"id":3063,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3052,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"115:25:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":3053,"nodeType":"StructuredDocumentation","src":"142:280:16","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":3062,"linearizedBaseContracts":[3062],"name":"IERC165","nameLocation":"433:7:16","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3054,"nodeType":"StructuredDocumentation","src":"447:340:16","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":3061,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:16","nodeType":"FunctionDefinition","parameters":{"id":3057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3056,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:16","nodeType":"VariableDeclaration","scope":3061,"src":"819:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3055,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:16"},"returnParameters":{"id":3060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3061,"src":"862:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3058,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:16"},"scope":3062,"src":"792:76:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3063,"src":"423:447:16","usedErrors":[],"usedEvents":[]}],"src":"115:756:16"},"id":16},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[4719],"Panic":[2942],"SafeCast":[6484]},"id":4720,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3064,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:17"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":3066,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4720,"sourceUnit":2943,"src":"129:35:17","symbolAliases":[{"foreign":{"id":3065,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"137:5:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":3068,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4720,"sourceUnit":6485,"src":"165:40:17","symbolAliases":[{"foreign":{"id":3067,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"173:8:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":3069,"nodeType":"StructuredDocumentation","src":"207:73:17","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":4719,"linearizedBaseContracts":[4719],"name":"Math","nameLocation":"289:4:17","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":3074,"members":[{"id":3070,"name":"Floor","nameLocation":"324:5:17","nodeType":"EnumValue","src":"324:5:17"},{"id":3071,"name":"Ceil","nameLocation":"367:4:17","nodeType":"EnumValue","src":"367:4:17"},{"id":3072,"name":"Trunc","nameLocation":"409:5:17","nodeType":"EnumValue","src":"409:5:17"},{"id":3073,"name":"Expand","nameLocation":"439:6:17","nodeType":"EnumValue","src":"439:6:17"}],"name":"Rounding","nameLocation":"305:8:17","nodeType":"EnumDefinition","src":"300:169:17"},{"body":{"id":3087,"nodeType":"Block","src":"731:112:17","statements":[{"AST":{"nativeSrc":"766:71:17","nodeType":"YulBlock","src":"766:71:17","statements":[{"nativeSrc":"780:16:17","nodeType":"YulAssignment","src":"780:16:17","value":{"arguments":[{"name":"a","nativeSrc":"791:1:17","nodeType":"YulIdentifier","src":"791:1:17"},{"name":"b","nativeSrc":"794:1:17","nodeType":"YulIdentifier","src":"794:1:17"}],"functionName":{"name":"add","nativeSrc":"787:3:17","nodeType":"YulIdentifier","src":"787:3:17"},"nativeSrc":"787:9:17","nodeType":"YulFunctionCall","src":"787:9:17"},"variableNames":[{"name":"low","nativeSrc":"780:3:17","nodeType":"YulIdentifier","src":"780:3:17"}]},{"nativeSrc":"809:18:17","nodeType":"YulAssignment","src":"809:18:17","value":{"arguments":[{"name":"low","nativeSrc":"820:3:17","nodeType":"YulIdentifier","src":"820:3:17"},{"name":"a","nativeSrc":"825:1:17","nodeType":"YulIdentifier","src":"825:1:17"}],"functionName":{"name":"lt","nativeSrc":"817:2:17","nodeType":"YulIdentifier","src":"817:2:17"},"nativeSrc":"817:10:17","nodeType":"YulFunctionCall","src":"817:10:17"},"variableNames":[{"name":"high","nativeSrc":"809:4:17","nodeType":"YulIdentifier","src":"809:4:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3077,"isOffset":false,"isSlot":false,"src":"791:1:17","valueSize":1},{"declaration":3077,"isOffset":false,"isSlot":false,"src":"825:1:17","valueSize":1},{"declaration":3079,"isOffset":false,"isSlot":false,"src":"794:1:17","valueSize":1},{"declaration":3082,"isOffset":false,"isSlot":false,"src":"809:4:17","valueSize":1},{"declaration":3084,"isOffset":false,"isSlot":false,"src":"780:3:17","valueSize":1},{"declaration":3084,"isOffset":false,"isSlot":false,"src":"820:3:17","valueSize":1}],"flags":["memory-safe"],"id":3086,"nodeType":"InlineAssembly","src":"741:96:17"}]},"documentation":{"id":3075,"nodeType":"StructuredDocumentation","src":"475:163:17","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2ยฒโตโถ + low."},"id":3088,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:17","nodeType":"FunctionDefinition","parameters":{"id":3080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3077,"mutability":"mutable","name":"a","nameLocation":"667:1:17","nodeType":"VariableDeclaration","scope":3088,"src":"659:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3076,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3079,"mutability":"mutable","name":"b","nameLocation":"678:1:17","nodeType":"VariableDeclaration","scope":3088,"src":"670:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3078,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:17"},"returnParameters":{"id":3085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3082,"mutability":"mutable","name":"high","nameLocation":"712:4:17","nodeType":"VariableDeclaration","scope":3088,"src":"704:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3081,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3084,"mutability":"mutable","name":"low","nameLocation":"726:3:17","nodeType":"VariableDeclaration","scope":3088,"src":"718:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3083,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:17"},"scope":4719,"src":"643:200:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3101,"nodeType":"Block","src":"1115:462:17","statements":[{"AST":{"nativeSrc":"1437:134:17","nodeType":"YulBlock","src":"1437:134:17","statements":[{"nativeSrc":"1451:30:17","nodeType":"YulVariableDeclaration","src":"1451:30:17","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:17","nodeType":"YulIdentifier","src":"1468:1:17"},{"name":"b","nativeSrc":"1471:1:17","nodeType":"YulIdentifier","src":"1471:1:17"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:17","nodeType":"YulLiteral","src":"1478:1:17","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:17","nodeType":"YulIdentifier","src":"1474:3:17"},"nativeSrc":"1474:6:17","nodeType":"YulFunctionCall","src":"1474:6:17"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:17","nodeType":"YulIdentifier","src":"1461:6:17"},"nativeSrc":"1461:20:17","nodeType":"YulFunctionCall","src":"1461:20:17"},"variables":[{"name":"mm","nativeSrc":"1455:2:17","nodeType":"YulTypedName","src":"1455:2:17","type":""}]},{"nativeSrc":"1494:16:17","nodeType":"YulAssignment","src":"1494:16:17","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:17","nodeType":"YulIdentifier","src":"1505:1:17"},{"name":"b","nativeSrc":"1508:1:17","nodeType":"YulIdentifier","src":"1508:1:17"}],"functionName":{"name":"mul","nativeSrc":"1501:3:17","nodeType":"YulIdentifier","src":"1501:3:17"},"nativeSrc":"1501:9:17","nodeType":"YulFunctionCall","src":"1501:9:17"},"variableNames":[{"name":"low","nativeSrc":"1494:3:17","nodeType":"YulIdentifier","src":"1494:3:17"}]},{"nativeSrc":"1523:38:17","nodeType":"YulAssignment","src":"1523:38:17","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:17","nodeType":"YulIdentifier","src":"1539:2:17"},{"name":"low","nativeSrc":"1543:3:17","nodeType":"YulIdentifier","src":"1543:3:17"}],"functionName":{"name":"sub","nativeSrc":"1535:3:17","nodeType":"YulIdentifier","src":"1535:3:17"},"nativeSrc":"1535:12:17","nodeType":"YulFunctionCall","src":"1535:12:17"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:17","nodeType":"YulIdentifier","src":"1552:2:17"},{"name":"low","nativeSrc":"1556:3:17","nodeType":"YulIdentifier","src":"1556:3:17"}],"functionName":{"name":"lt","nativeSrc":"1549:2:17","nodeType":"YulIdentifier","src":"1549:2:17"},"nativeSrc":"1549:11:17","nodeType":"YulFunctionCall","src":"1549:11:17"}],"functionName":{"name":"sub","nativeSrc":"1531:3:17","nodeType":"YulIdentifier","src":"1531:3:17"},"nativeSrc":"1531:30:17","nodeType":"YulFunctionCall","src":"1531:30:17"},"variableNames":[{"name":"high","nativeSrc":"1523:4:17","nodeType":"YulIdentifier","src":"1523:4:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3091,"isOffset":false,"isSlot":false,"src":"1468:1:17","valueSize":1},{"declaration":3091,"isOffset":false,"isSlot":false,"src":"1505:1:17","valueSize":1},{"declaration":3093,"isOffset":false,"isSlot":false,"src":"1471:1:17","valueSize":1},{"declaration":3093,"isOffset":false,"isSlot":false,"src":"1508:1:17","valueSize":1},{"declaration":3096,"isOffset":false,"isSlot":false,"src":"1523:4:17","valueSize":1},{"declaration":3098,"isOffset":false,"isSlot":false,"src":"1494:3:17","valueSize":1},{"declaration":3098,"isOffset":false,"isSlot":false,"src":"1543:3:17","valueSize":1},{"declaration":3098,"isOffset":false,"isSlot":false,"src":"1556:3:17","valueSize":1}],"flags":["memory-safe"],"id":3100,"nodeType":"InlineAssembly","src":"1412:159:17"}]},"documentation":{"id":3089,"nodeType":"StructuredDocumentation","src":"849:173:17","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2ยฒโตโถ + low."},"id":3102,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:17","nodeType":"FunctionDefinition","parameters":{"id":3094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3091,"mutability":"mutable","name":"a","nameLocation":"1051:1:17","nodeType":"VariableDeclaration","scope":3102,"src":"1043:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3090,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3093,"mutability":"mutable","name":"b","nameLocation":"1062:1:17","nodeType":"VariableDeclaration","scope":3102,"src":"1054:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3092,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:17"},"returnParameters":{"id":3099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3096,"mutability":"mutable","name":"high","nameLocation":"1096:4:17","nodeType":"VariableDeclaration","scope":3102,"src":"1088:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3095,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3098,"mutability":"mutable","name":"low","nameLocation":"1110:3:17","nodeType":"VariableDeclaration","scope":3102,"src":"1102:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3097,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:17"},"scope":4719,"src":"1027:550:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3136,"nodeType":"Block","src":"1784:149:17","statements":[{"id":3135,"nodeType":"UncheckedBlock","src":"1794:133:17","statements":[{"assignments":[3115],"declarations":[{"constant":false,"id":3115,"mutability":"mutable","name":"c","nameLocation":"1826:1:17","nodeType":"VariableDeclaration","scope":3135,"src":"1818:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3114,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3119,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3116,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"1830:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3117,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"1834:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:17"},{"expression":{"id":3124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3120,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3110,"src":"1849:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3121,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"1859:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3122,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"1864:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3125,"nodeType":"ExpressionStatement","src":"1849:16:17"},{"expression":{"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3126,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3112,"src":"1879:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3127,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"1888:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3130,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3110,"src":"1908:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3128,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"1892:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":3129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"1892:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3134,"nodeType":"ExpressionStatement","src":"1879:37:17"}]}]},"documentation":{"id":3103,"nodeType":"StructuredDocumentation","src":"1583:105:17","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":3137,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:17","nodeType":"FunctionDefinition","parameters":{"id":3108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3105,"mutability":"mutable","name":"a","nameLocation":"1717:1:17","nodeType":"VariableDeclaration","scope":3137,"src":"1709:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3107,"mutability":"mutable","name":"b","nameLocation":"1728:1:17","nodeType":"VariableDeclaration","scope":3137,"src":"1720:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:17"},"returnParameters":{"id":3113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3110,"mutability":"mutable","name":"success","nameLocation":"1759:7:17","nodeType":"VariableDeclaration","scope":3137,"src":"1754:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3109,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3112,"mutability":"mutable","name":"result","nameLocation":"1776:6:17","nodeType":"VariableDeclaration","scope":3137,"src":"1768:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3111,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:17"},"scope":4719,"src":"1693:240:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3171,"nodeType":"Block","src":"2143:149:17","statements":[{"id":3170,"nodeType":"UncheckedBlock","src":"2153:133:17","statements":[{"assignments":[3150],"declarations":[{"constant":false,"id":3150,"mutability":"mutable","name":"c","nameLocation":"2185:1:17","nodeType":"VariableDeclaration","scope":3170,"src":"2177:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3149,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3154,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3140,"src":"2189:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"2193:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:17"},{"expression":{"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3155,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"2208:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3156,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"2218:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3157,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3140,"src":"2223:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3160,"nodeType":"ExpressionStatement","src":"2208:16:17"},{"expression":{"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3161,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"2238:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3162,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"2247:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3165,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"2267:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3163,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"2251:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"2251:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3169,"nodeType":"ExpressionStatement","src":"2238:37:17"}]}]},"documentation":{"id":3138,"nodeType":"StructuredDocumentation","src":"1939:108:17","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":3172,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:17","nodeType":"FunctionDefinition","parameters":{"id":3143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3140,"mutability":"mutable","name":"a","nameLocation":"2076:1:17","nodeType":"VariableDeclaration","scope":3172,"src":"2068:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3139,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3142,"mutability":"mutable","name":"b","nameLocation":"2087:1:17","nodeType":"VariableDeclaration","scope":3172,"src":"2079:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3141,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:17"},"returnParameters":{"id":3148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3145,"mutability":"mutable","name":"success","nameLocation":"2118:7:17","nodeType":"VariableDeclaration","scope":3172,"src":"2113:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3144,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3147,"mutability":"mutable","name":"result","nameLocation":"2135:6:17","nodeType":"VariableDeclaration","scope":3172,"src":"2127:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3146,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:17"},"scope":4719,"src":"2052:240:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3201,"nodeType":"Block","src":"2505:391:17","statements":[{"id":3200,"nodeType":"UncheckedBlock","src":"2515:375:17","statements":[{"assignments":[3185],"declarations":[{"constant":false,"id":3185,"mutability":"mutable","name":"c","nameLocation":"2547:1:17","nodeType":"VariableDeclaration","scope":3200,"src":"2539:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3184,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3189,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3175,"src":"2551:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3177,"src":"2555:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:17"},{"AST":{"nativeSrc":"2595:188:17","nodeType":"YulBlock","src":"2595:188:17","statements":[{"nativeSrc":"2727:42:17","nodeType":"YulAssignment","src":"2727:42:17","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:17","nodeType":"YulIdentifier","src":"2748:1:17"},{"name":"a","nativeSrc":"2751:1:17","nodeType":"YulIdentifier","src":"2751:1:17"}],"functionName":{"name":"div","nativeSrc":"2744:3:17","nodeType":"YulIdentifier","src":"2744:3:17"},"nativeSrc":"2744:9:17","nodeType":"YulFunctionCall","src":"2744:9:17"},{"name":"b","nativeSrc":"2755:1:17","nodeType":"YulIdentifier","src":"2755:1:17"}],"functionName":{"name":"eq","nativeSrc":"2741:2:17","nodeType":"YulIdentifier","src":"2741:2:17"},"nativeSrc":"2741:16:17","nodeType":"YulFunctionCall","src":"2741:16:17"},{"arguments":[{"name":"a","nativeSrc":"2766:1:17","nodeType":"YulIdentifier","src":"2766:1:17"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:17","nodeType":"YulIdentifier","src":"2759:6:17"},"nativeSrc":"2759:9:17","nodeType":"YulFunctionCall","src":"2759:9:17"}],"functionName":{"name":"or","nativeSrc":"2738:2:17","nodeType":"YulIdentifier","src":"2738:2:17"},"nativeSrc":"2738:31:17","nodeType":"YulFunctionCall","src":"2738:31:17"},"variableNames":[{"name":"success","nativeSrc":"2727:7:17","nodeType":"YulIdentifier","src":"2727:7:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3175,"isOffset":false,"isSlot":false,"src":"2751:1:17","valueSize":1},{"declaration":3175,"isOffset":false,"isSlot":false,"src":"2766:1:17","valueSize":1},{"declaration":3177,"isOffset":false,"isSlot":false,"src":"2755:1:17","valueSize":1},{"declaration":3185,"isOffset":false,"isSlot":false,"src":"2748:1:17","valueSize":1},{"declaration":3180,"isOffset":false,"isSlot":false,"src":"2727:7:17","valueSize":1}],"flags":["memory-safe"],"id":3190,"nodeType":"InlineAssembly","src":"2570:213:17"},{"expression":{"id":3198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3191,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3182,"src":"2842:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3192,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"2851:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3195,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"2871:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3193,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"2855:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"2855:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3199,"nodeType":"ExpressionStatement","src":"2842:37:17"}]}]},"documentation":{"id":3173,"nodeType":"StructuredDocumentation","src":"2298:111:17","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":3202,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:17","nodeType":"FunctionDefinition","parameters":{"id":3178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3175,"mutability":"mutable","name":"a","nameLocation":"2438:1:17","nodeType":"VariableDeclaration","scope":3202,"src":"2430:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3174,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3177,"mutability":"mutable","name":"b","nameLocation":"2449:1:17","nodeType":"VariableDeclaration","scope":3202,"src":"2441:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3176,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:17"},"returnParameters":{"id":3183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3180,"mutability":"mutable","name":"success","nameLocation":"2480:7:17","nodeType":"VariableDeclaration","scope":3202,"src":"2475:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3179,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3182,"mutability":"mutable","name":"result","nameLocation":"2497:6:17","nodeType":"VariableDeclaration","scope":3202,"src":"2489:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3181,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:17"},"scope":4719,"src":"2414:482:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3222,"nodeType":"Block","src":"3111:231:17","statements":[{"id":3221,"nodeType":"UncheckedBlock","src":"3121:215:17","statements":[{"expression":{"id":3218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3214,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"3145:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3215,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"3155:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3219,"nodeType":"ExpressionStatement","src":"3145:15:17"},{"AST":{"nativeSrc":"3199:127:17","nodeType":"YulBlock","src":"3199:127:17","statements":[{"nativeSrc":"3293:19:17","nodeType":"YulAssignment","src":"3293:19:17","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:17","nodeType":"YulIdentifier","src":"3307:1:17"},{"name":"b","nativeSrc":"3310:1:17","nodeType":"YulIdentifier","src":"3310:1:17"}],"functionName":{"name":"div","nativeSrc":"3303:3:17","nodeType":"YulIdentifier","src":"3303:3:17"},"nativeSrc":"3303:9:17","nodeType":"YulFunctionCall","src":"3303:9:17"},"variableNames":[{"name":"result","nativeSrc":"3293:6:17","nodeType":"YulIdentifier","src":"3293:6:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3205,"isOffset":false,"isSlot":false,"src":"3307:1:17","valueSize":1},{"declaration":3207,"isOffset":false,"isSlot":false,"src":"3310:1:17","valueSize":1},{"declaration":3212,"isOffset":false,"isSlot":false,"src":"3293:6:17","valueSize":1}],"flags":["memory-safe"],"id":3220,"nodeType":"InlineAssembly","src":"3174:152:17"}]}]},"documentation":{"id":3203,"nodeType":"StructuredDocumentation","src":"2902:113:17","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":3223,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:17","nodeType":"FunctionDefinition","parameters":{"id":3208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3205,"mutability":"mutable","name":"a","nameLocation":"3044:1:17","nodeType":"VariableDeclaration","scope":3223,"src":"3036:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3204,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3207,"mutability":"mutable","name":"b","nameLocation":"3055:1:17","nodeType":"VariableDeclaration","scope":3223,"src":"3047:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3206,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:17"},"returnParameters":{"id":3213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3210,"mutability":"mutable","name":"success","nameLocation":"3086:7:17","nodeType":"VariableDeclaration","scope":3223,"src":"3081:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3209,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3212,"mutability":"mutable","name":"result","nameLocation":"3103:6:17","nodeType":"VariableDeclaration","scope":3223,"src":"3095:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3211,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:17"},"scope":4719,"src":"3020:322:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3243,"nodeType":"Block","src":"3567:231:17","statements":[{"id":3242,"nodeType":"UncheckedBlock","src":"3577:215:17","statements":[{"expression":{"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3235,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3231,"src":"3601:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3236,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3228,"src":"3611:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3240,"nodeType":"ExpressionStatement","src":"3601:15:17"},{"AST":{"nativeSrc":"3655:127:17","nodeType":"YulBlock","src":"3655:127:17","statements":[{"nativeSrc":"3749:19:17","nodeType":"YulAssignment","src":"3749:19:17","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:17","nodeType":"YulIdentifier","src":"3763:1:17"},{"name":"b","nativeSrc":"3766:1:17","nodeType":"YulIdentifier","src":"3766:1:17"}],"functionName":{"name":"mod","nativeSrc":"3759:3:17","nodeType":"YulIdentifier","src":"3759:3:17"},"nativeSrc":"3759:9:17","nodeType":"YulFunctionCall","src":"3759:9:17"},"variableNames":[{"name":"result","nativeSrc":"3749:6:17","nodeType":"YulIdentifier","src":"3749:6:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3226,"isOffset":false,"isSlot":false,"src":"3763:1:17","valueSize":1},{"declaration":3228,"isOffset":false,"isSlot":false,"src":"3766:1:17","valueSize":1},{"declaration":3233,"isOffset":false,"isSlot":false,"src":"3749:6:17","valueSize":1}],"flags":["memory-safe"],"id":3241,"nodeType":"InlineAssembly","src":"3630:152:17"}]}]},"documentation":{"id":3224,"nodeType":"StructuredDocumentation","src":"3348:123:17","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":3244,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:17","nodeType":"FunctionDefinition","parameters":{"id":3229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3226,"mutability":"mutable","name":"a","nameLocation":"3500:1:17","nodeType":"VariableDeclaration","scope":3244,"src":"3492:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3225,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3228,"mutability":"mutable","name":"b","nameLocation":"3511:1:17","nodeType":"VariableDeclaration","scope":3244,"src":"3503:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3227,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:17"},"returnParameters":{"id":3234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3231,"mutability":"mutable","name":"success","nameLocation":"3542:7:17","nodeType":"VariableDeclaration","scope":3244,"src":"3537:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3230,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3233,"mutability":"mutable","name":"result","nameLocation":"3559:6:17","nodeType":"VariableDeclaration","scope":3244,"src":"3551:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3232,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:17"},"scope":4719,"src":"3476:322:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3273,"nodeType":"Block","src":"3989:122:17","statements":[{"assignments":[3255,3257],"declarations":[{"constant":false,"id":3255,"mutability":"mutable","name":"success","nameLocation":"4005:7:17","nodeType":"VariableDeclaration","scope":3273,"src":"4000:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3254,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3257,"mutability":"mutable","name":"result","nameLocation":"4022:6:17","nodeType":"VariableDeclaration","scope":3273,"src":"4014:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3256,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3262,"initialValue":{"arguments":[{"id":3259,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"4039:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3260,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"4042:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3258,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"4032:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:17"},{"expression":{"arguments":[{"id":3264,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"4069:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3265,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3257,"src":"4078:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3267,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3266,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:17","memberName":"max","nodeType":"MemberAccess","src":"4086:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3263,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"4061:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3253,"id":3272,"nodeType":"Return","src":"4054:50:17"}]},"documentation":{"id":3245,"nodeType":"StructuredDocumentation","src":"3804:103:17","text":" @dev Unsigned saturating addition, bounds to `2ยฒโตโถ - 1` instead of overflowing."},"id":3274,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:17","nodeType":"FunctionDefinition","parameters":{"id":3250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3247,"mutability":"mutable","name":"a","nameLocation":"3943:1:17","nodeType":"VariableDeclaration","scope":3274,"src":"3935:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3246,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3249,"mutability":"mutable","name":"b","nameLocation":"3954:1:17","nodeType":"VariableDeclaration","scope":3274,"src":"3946:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3248,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:17"},"returnParameters":{"id":3253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3252,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3274,"src":"3980:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3251,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:17"},"scope":4719,"src":"3912:199:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3293,"nodeType":"Block","src":"4294:73:17","statements":[{"assignments":[null,3285],"declarations":[null,{"constant":false,"id":3285,"mutability":"mutable","name":"result","nameLocation":"4315:6:17","nodeType":"VariableDeclaration","scope":3293,"src":"4307:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3284,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3290,"initialValue":{"arguments":[{"id":3287,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"4332:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3288,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3279,"src":"4335:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3286,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"4325:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:17"},{"expression":{"id":3291,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"4354:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3283,"id":3292,"nodeType":"Return","src":"4347:13:17"}]},"documentation":{"id":3275,"nodeType":"StructuredDocumentation","src":"4117:95:17","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":3294,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:17","nodeType":"FunctionDefinition","parameters":{"id":3280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3277,"mutability":"mutable","name":"a","nameLocation":"4248:1:17","nodeType":"VariableDeclaration","scope":3294,"src":"4240:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3276,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3279,"mutability":"mutable","name":"b","nameLocation":"4259:1:17","nodeType":"VariableDeclaration","scope":3294,"src":"4251:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3278,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:17"},"returnParameters":{"id":3283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3294,"src":"4285:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3281,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:17"},"scope":4719,"src":"4217:150:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3323,"nodeType":"Block","src":"4564:122:17","statements":[{"assignments":[3305,3307],"declarations":[{"constant":false,"id":3305,"mutability":"mutable","name":"success","nameLocation":"4580:7:17","nodeType":"VariableDeclaration","scope":3323,"src":"4575:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3304,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3307,"mutability":"mutable","name":"result","nameLocation":"4597:6:17","nodeType":"VariableDeclaration","scope":3323,"src":"4589:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3306,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3312,"initialValue":{"arguments":[{"id":3309,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"4614:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3310,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"4617:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3308,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"4607:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:17"},{"expression":{"arguments":[{"id":3314,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3305,"src":"4644:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3315,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"4653:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3317,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3316,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:17","memberName":"max","nodeType":"MemberAccess","src":"4661:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3313,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"4636:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3303,"id":3322,"nodeType":"Return","src":"4629:50:17"}]},"documentation":{"id":3295,"nodeType":"StructuredDocumentation","src":"4373:109:17","text":" @dev Unsigned saturating multiplication, bounds to `2ยฒโตโถ - 1` instead of overflowing."},"id":3324,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:17","nodeType":"FunctionDefinition","parameters":{"id":3300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3297,"mutability":"mutable","name":"a","nameLocation":"4518:1:17","nodeType":"VariableDeclaration","scope":3324,"src":"4510:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3296,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3299,"mutability":"mutable","name":"b","nameLocation":"4529:1:17","nodeType":"VariableDeclaration","scope":3324,"src":"4521:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3298,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:17"},"returnParameters":{"id":3303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3324,"src":"4555:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3301,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:17"},"scope":4719,"src":"4487:199:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3350,"nodeType":"Block","src":"5174:207:17","statements":[{"id":3349,"nodeType":"UncheckedBlock","src":"5184:191:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3336,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"5322:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"5328:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3338,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"5332:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5328:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3340,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5327:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3343,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"5353:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3341,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"5337:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5346:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"5337:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5337:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5327:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3346,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5326:38:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5322:42:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3335,"id":3348,"nodeType":"Return","src":"5315:49:17"}]}]},"documentation":{"id":3325,"nodeType":"StructuredDocumentation","src":"4692:390:17","text":" @dev Branchless ternary evaluation for `condition ? a : b`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `condition ? a : b`) to only compute\n one branch when needed, making this function more expensive."},"id":3351,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5096:7:17","nodeType":"FunctionDefinition","parameters":{"id":3332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3327,"mutability":"mutable","name":"condition","nameLocation":"5109:9:17","nodeType":"VariableDeclaration","scope":3351,"src":"5104:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3326,"name":"bool","nodeType":"ElementaryTypeName","src":"5104:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3329,"mutability":"mutable","name":"a","nameLocation":"5128:1:17","nodeType":"VariableDeclaration","scope":3351,"src":"5120:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3328,"name":"uint256","nodeType":"ElementaryTypeName","src":"5120:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3331,"mutability":"mutable","name":"b","nameLocation":"5139:1:17","nodeType":"VariableDeclaration","scope":3351,"src":"5131:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3330,"name":"uint256","nodeType":"ElementaryTypeName","src":"5131:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5103:38:17"},"returnParameters":{"id":3335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3334,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3351,"src":"5165:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3333,"name":"uint256","nodeType":"ElementaryTypeName","src":"5165:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5164:9:17"},"scope":4719,"src":"5087:294:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3369,"nodeType":"Block","src":"5518:44:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3362,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"5543:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3363,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3356,"src":"5547:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5543:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3365,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"5550:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3366,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3356,"src":"5553:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3361,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"5535:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3360,"id":3368,"nodeType":"Return","src":"5528:27:17"}]},"documentation":{"id":3352,"nodeType":"StructuredDocumentation","src":"5387:59:17","text":" @dev Returns the largest of two numbers."},"id":3370,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5460:3:17","nodeType":"FunctionDefinition","parameters":{"id":3357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3354,"mutability":"mutable","name":"a","nameLocation":"5472:1:17","nodeType":"VariableDeclaration","scope":3370,"src":"5464:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3353,"name":"uint256","nodeType":"ElementaryTypeName","src":"5464:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3356,"mutability":"mutable","name":"b","nameLocation":"5483:1:17","nodeType":"VariableDeclaration","scope":3370,"src":"5475:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3355,"name":"uint256","nodeType":"ElementaryTypeName","src":"5475:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5463:22:17"},"returnParameters":{"id":3360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3370,"src":"5509:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3358,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:9:17"},"scope":4719,"src":"5451:111:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3388,"nodeType":"Block","src":"5700:44:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3381,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"5725:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3382,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"5729:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5725:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3384,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"5732:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3385,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"5735:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3380,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"5717:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5717:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3379,"id":3387,"nodeType":"Return","src":"5710:27:17"}]},"documentation":{"id":3371,"nodeType":"StructuredDocumentation","src":"5568:60:17","text":" @dev Returns the smallest of two numbers."},"id":3389,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5642:3:17","nodeType":"FunctionDefinition","parameters":{"id":3376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3373,"mutability":"mutable","name":"a","nameLocation":"5654:1:17","nodeType":"VariableDeclaration","scope":3389,"src":"5646:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3372,"name":"uint256","nodeType":"ElementaryTypeName","src":"5646:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3375,"mutability":"mutable","name":"b","nameLocation":"5665:1:17","nodeType":"VariableDeclaration","scope":3389,"src":"5657:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3374,"name":"uint256","nodeType":"ElementaryTypeName","src":"5657:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5645:22:17"},"returnParameters":{"id":3379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3389,"src":"5691:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3377,"name":"uint256","nodeType":"ElementaryTypeName","src":"5691:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5690:9:17"},"scope":4719,"src":"5633:111:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3412,"nodeType":"Block","src":"5928:120:17","statements":[{"id":3411,"nodeType":"UncheckedBlock","src":"5938:104:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3399,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"6011:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3400,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"6015:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6011:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3402,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6010:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3403,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"6021:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3404,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"6025:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6021:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3406,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6020:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":3407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6030:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6020:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6010:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3398,"id":3410,"nodeType":"Return","src":"6003:28:17"}]}]},"documentation":{"id":3390,"nodeType":"StructuredDocumentation","src":"5750:102:17","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":3413,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5866:7:17","nodeType":"FunctionDefinition","parameters":{"id":3395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3392,"mutability":"mutable","name":"a","nameLocation":"5882:1:17","nodeType":"VariableDeclaration","scope":3413,"src":"5874:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3391,"name":"uint256","nodeType":"ElementaryTypeName","src":"5874:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3394,"mutability":"mutable","name":"b","nameLocation":"5893:1:17","nodeType":"VariableDeclaration","scope":3413,"src":"5885:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3393,"name":"uint256","nodeType":"ElementaryTypeName","src":"5885:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5873:22:17"},"returnParameters":{"id":3398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3413,"src":"5919:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3396,"name":"uint256","nodeType":"ElementaryTypeName","src":"5919:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5918:9:17"},"scope":4719,"src":"5857:191:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3453,"nodeType":"Block","src":"6340:633:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3423,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3418,"src":"6354:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6359:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6354:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3434,"nodeType":"IfStatement","src":"6350:150:17","trueBody":{"id":3433,"nodeType":"Block","src":"6362:138:17","statements":[{"expression":{"arguments":[{"expression":{"id":3429,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"6466:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6472:16:17","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":2909,"src":"6466:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3426,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"6454:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6460:5:17","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"6454:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6454:35:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3432,"nodeType":"ExpressionStatement","src":"6454:35:17"}]}},{"id":3452,"nodeType":"UncheckedBlock","src":"6883:84:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3437,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"6930:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6934:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6930:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3435,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"6914:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6923:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"6914:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6914:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3441,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"6941:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6945:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6941:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3444,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6940:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3445,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3418,"src":"6950:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6940:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6954:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6940:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3449,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6939:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6914:42:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3422,"id":3451,"nodeType":"Return","src":"6907:49:17"}]}]},"documentation":{"id":3414,"nodeType":"StructuredDocumentation","src":"6054:210:17","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":3454,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6278:7:17","nodeType":"FunctionDefinition","parameters":{"id":3419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3416,"mutability":"mutable","name":"a","nameLocation":"6294:1:17","nodeType":"VariableDeclaration","scope":3454,"src":"6286:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3415,"name":"uint256","nodeType":"ElementaryTypeName","src":"6286:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3418,"mutability":"mutable","name":"b","nameLocation":"6305:1:17","nodeType":"VariableDeclaration","scope":3454,"src":"6297:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3417,"name":"uint256","nodeType":"ElementaryTypeName","src":"6297:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6285:22:17"},"returnParameters":{"id":3422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3421,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3454,"src":"6331:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3420,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6330:9:17"},"scope":4719,"src":"6269:704:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3589,"nodeType":"Block","src":"7394:3585:17","statements":[{"id":3588,"nodeType":"UncheckedBlock","src":"7404:3569:17","statements":[{"assignments":[3467,3469],"declarations":[{"constant":false,"id":3467,"mutability":"mutable","name":"high","nameLocation":"7437:4:17","nodeType":"VariableDeclaration","scope":3588,"src":"7429:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3466,"name":"uint256","nodeType":"ElementaryTypeName","src":"7429:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3469,"mutability":"mutable","name":"low","nameLocation":"7451:3:17","nodeType":"VariableDeclaration","scope":3588,"src":"7443:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3468,"name":"uint256","nodeType":"ElementaryTypeName","src":"7443:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3474,"initialValue":{"arguments":[{"id":3471,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3457,"src":"7465:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3472,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"7468:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3470,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"7458:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7458:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7428:42:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3475,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"7552:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7560:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7552:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3483,"nodeType":"IfStatement","src":"7548:365:17","trueBody":{"id":3482,"nodeType":"Block","src":"7563:350:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3478,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"7881:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3479,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"7887:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7881:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3465,"id":3481,"nodeType":"Return","src":"7874:24:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3484,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"8023:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3485,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"8038:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8023:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3502,"nodeType":"IfStatement","src":"8019:142:17","trueBody":{"id":3501,"nodeType":"Block","src":"8044:117:17","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3491,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"8082:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8097:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8082:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3494,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"8100:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8106:16:17","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":2909,"src":"8100:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3496,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"8124:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8130:14:17","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":2905,"src":"8124:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3490,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"8074:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8074:71:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3487,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"8062:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8068:5:17","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"8062:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8062:84:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3500,"nodeType":"ExpressionStatement","src":"8062:84:17"}]}},{"assignments":[3504],"declarations":[{"constant":false,"id":3504,"mutability":"mutable","name":"remainder","nameLocation":"8421:9:17","nodeType":"VariableDeclaration","scope":3588,"src":"8413:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3503,"name":"uint256","nodeType":"ElementaryTypeName","src":"8413:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3505,"nodeType":"VariableDeclarationStatement","src":"8413:17:17"},{"AST":{"nativeSrc":"8469:283:17","nodeType":"YulBlock","src":"8469:283:17","statements":[{"nativeSrc":"8538:38:17","nodeType":"YulAssignment","src":"8538:38:17","value":{"arguments":[{"name":"x","nativeSrc":"8558:1:17","nodeType":"YulIdentifier","src":"8558:1:17"},{"name":"y","nativeSrc":"8561:1:17","nodeType":"YulIdentifier","src":"8561:1:17"},{"name":"denominator","nativeSrc":"8564:11:17","nodeType":"YulIdentifier","src":"8564:11:17"}],"functionName":{"name":"mulmod","nativeSrc":"8551:6:17","nodeType":"YulIdentifier","src":"8551:6:17"},"nativeSrc":"8551:25:17","nodeType":"YulFunctionCall","src":"8551:25:17"},"variableNames":[{"name":"remainder","nativeSrc":"8538:9:17","nodeType":"YulIdentifier","src":"8538:9:17"}]},{"nativeSrc":"8658:37:17","nodeType":"YulAssignment","src":"8658:37:17","value":{"arguments":[{"name":"high","nativeSrc":"8670:4:17","nodeType":"YulIdentifier","src":"8670:4:17"},{"arguments":[{"name":"remainder","nativeSrc":"8679:9:17","nodeType":"YulIdentifier","src":"8679:9:17"},{"name":"low","nativeSrc":"8690:3:17","nodeType":"YulIdentifier","src":"8690:3:17"}],"functionName":{"name":"gt","nativeSrc":"8676:2:17","nodeType":"YulIdentifier","src":"8676:2:17"},"nativeSrc":"8676:18:17","nodeType":"YulFunctionCall","src":"8676:18:17"}],"functionName":{"name":"sub","nativeSrc":"8666:3:17","nodeType":"YulIdentifier","src":"8666:3:17"},"nativeSrc":"8666:29:17","nodeType":"YulFunctionCall","src":"8666:29:17"},"variableNames":[{"name":"high","nativeSrc":"8658:4:17","nodeType":"YulIdentifier","src":"8658:4:17"}]},{"nativeSrc":"8712:26:17","nodeType":"YulAssignment","src":"8712:26:17","value":{"arguments":[{"name":"low","nativeSrc":"8723:3:17","nodeType":"YulIdentifier","src":"8723:3:17"},{"name":"remainder","nativeSrc":"8728:9:17","nodeType":"YulIdentifier","src":"8728:9:17"}],"functionName":{"name":"sub","nativeSrc":"8719:3:17","nodeType":"YulIdentifier","src":"8719:3:17"},"nativeSrc":"8719:19:17","nodeType":"YulFunctionCall","src":"8719:19:17"},"variableNames":[{"name":"low","nativeSrc":"8712:3:17","nodeType":"YulIdentifier","src":"8712:3:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3461,"isOffset":false,"isSlot":false,"src":"8564:11:17","valueSize":1},{"declaration":3467,"isOffset":false,"isSlot":false,"src":"8658:4:17","valueSize":1},{"declaration":3467,"isOffset":false,"isSlot":false,"src":"8670:4:17","valueSize":1},{"declaration":3469,"isOffset":false,"isSlot":false,"src":"8690:3:17","valueSize":1},{"declaration":3469,"isOffset":false,"isSlot":false,"src":"8712:3:17","valueSize":1},{"declaration":3469,"isOffset":false,"isSlot":false,"src":"8723:3:17","valueSize":1},{"declaration":3504,"isOffset":false,"isSlot":false,"src":"8538:9:17","valueSize":1},{"declaration":3504,"isOffset":false,"isSlot":false,"src":"8679:9:17","valueSize":1},{"declaration":3504,"isOffset":false,"isSlot":false,"src":"8728:9:17","valueSize":1},{"declaration":3457,"isOffset":false,"isSlot":false,"src":"8558:1:17","valueSize":1},{"declaration":3459,"isOffset":false,"isSlot":false,"src":"8561:1:17","valueSize":1}],"flags":["memory-safe"],"id":3506,"nodeType":"InlineAssembly","src":"8444:308:17"},{"assignments":[3508],"declarations":[{"constant":false,"id":3508,"mutability":"mutable","name":"twos","nameLocation":"8964:4:17","nodeType":"VariableDeclaration","scope":3588,"src":"8956:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3507,"name":"uint256","nodeType":"ElementaryTypeName","src":"8956:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3515,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3509,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"8971:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":3510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8986:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3511,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"8990:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8986:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3513,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8985:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8971:31:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8956:46:17"},{"AST":{"nativeSrc":"9041:359:17","nodeType":"YulBlock","src":"9041:359:17","statements":[{"nativeSrc":"9106:37:17","nodeType":"YulAssignment","src":"9106:37:17","value":{"arguments":[{"name":"denominator","nativeSrc":"9125:11:17","nodeType":"YulIdentifier","src":"9125:11:17"},{"name":"twos","nativeSrc":"9138:4:17","nodeType":"YulIdentifier","src":"9138:4:17"}],"functionName":{"name":"div","nativeSrc":"9121:3:17","nodeType":"YulIdentifier","src":"9121:3:17"},"nativeSrc":"9121:22:17","nodeType":"YulFunctionCall","src":"9121:22:17"},"variableNames":[{"name":"denominator","nativeSrc":"9106:11:17","nodeType":"YulIdentifier","src":"9106:11:17"}]},{"nativeSrc":"9207:21:17","nodeType":"YulAssignment","src":"9207:21:17","value":{"arguments":[{"name":"low","nativeSrc":"9218:3:17","nodeType":"YulIdentifier","src":"9218:3:17"},{"name":"twos","nativeSrc":"9223:4:17","nodeType":"YulIdentifier","src":"9223:4:17"}],"functionName":{"name":"div","nativeSrc":"9214:3:17","nodeType":"YulIdentifier","src":"9214:3:17"},"nativeSrc":"9214:14:17","nodeType":"YulFunctionCall","src":"9214:14:17"},"variableNames":[{"name":"low","nativeSrc":"9207:3:17","nodeType":"YulIdentifier","src":"9207:3:17"}]},{"nativeSrc":"9347:39:17","nodeType":"YulAssignment","src":"9347:39:17","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9367:1:17","nodeType":"YulLiteral","src":"9367:1:17","type":"","value":"0"},{"name":"twos","nativeSrc":"9370:4:17","nodeType":"YulIdentifier","src":"9370:4:17"}],"functionName":{"name":"sub","nativeSrc":"9363:3:17","nodeType":"YulIdentifier","src":"9363:3:17"},"nativeSrc":"9363:12:17","nodeType":"YulFunctionCall","src":"9363:12:17"},{"name":"twos","nativeSrc":"9377:4:17","nodeType":"YulIdentifier","src":"9377:4:17"}],"functionName":{"name":"div","nativeSrc":"9359:3:17","nodeType":"YulIdentifier","src":"9359:3:17"},"nativeSrc":"9359:23:17","nodeType":"YulFunctionCall","src":"9359:23:17"},{"kind":"number","nativeSrc":"9384:1:17","nodeType":"YulLiteral","src":"9384:1:17","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9355:3:17","nodeType":"YulIdentifier","src":"9355:3:17"},"nativeSrc":"9355:31:17","nodeType":"YulFunctionCall","src":"9355:31:17"},"variableNames":[{"name":"twos","nativeSrc":"9347:4:17","nodeType":"YulIdentifier","src":"9347:4:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3461,"isOffset":false,"isSlot":false,"src":"9106:11:17","valueSize":1},{"declaration":3461,"isOffset":false,"isSlot":false,"src":"9125:11:17","valueSize":1},{"declaration":3469,"isOffset":false,"isSlot":false,"src":"9207:3:17","valueSize":1},{"declaration":3469,"isOffset":false,"isSlot":false,"src":"9218:3:17","valueSize":1},{"declaration":3508,"isOffset":false,"isSlot":false,"src":"9138:4:17","valueSize":1},{"declaration":3508,"isOffset":false,"isSlot":false,"src":"9223:4:17","valueSize":1},{"declaration":3508,"isOffset":false,"isSlot":false,"src":"9347:4:17","valueSize":1},{"declaration":3508,"isOffset":false,"isSlot":false,"src":"9370:4:17","valueSize":1},{"declaration":3508,"isOffset":false,"isSlot":false,"src":"9377:4:17","valueSize":1}],"flags":["memory-safe"],"id":3516,"nodeType":"InlineAssembly","src":"9016:384:17"},{"expression":{"id":3521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3517,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"9463:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3518,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"9470:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3519,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"9477:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9470:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9463:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3522,"nodeType":"ExpressionStatement","src":"9463:18:17"},{"assignments":[3524],"declarations":[{"constant":false,"id":3524,"mutability":"mutable","name":"inverse","nameLocation":"9824:7:17","nodeType":"VariableDeclaration","scope":3588,"src":"9816:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3523,"name":"uint256","nodeType":"ElementaryTypeName","src":"9816:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3531,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":3525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9835:1:17","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3526,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"9839:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9835:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3528,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9834:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":3529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9854:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9834:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9816:39:17"},{"expression":{"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3532,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10072:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10083:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3534,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"10087:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3535,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10101:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10087:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10083:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10072:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3539,"nodeType":"ExpressionStatement","src":"10072:36:17"},{"expression":{"id":3546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3540,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10142:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10153:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3542,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"10157:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3543,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10171:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10157:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10153:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10142:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3547,"nodeType":"ExpressionStatement","src":"10142:36:17"},{"expression":{"id":3554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3548,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10214:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10225:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3550,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"10229:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3551,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10243:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10229:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10225:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10214:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3555,"nodeType":"ExpressionStatement","src":"10214:36:17"},{"expression":{"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3556,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10285:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10296:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3558,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"10300:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3559,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10314:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10300:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10296:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10285:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3563,"nodeType":"ExpressionStatement","src":"10285:36:17"},{"expression":{"id":3570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3564,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10358:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10369:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3566,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"10373:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3567,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10387:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10373:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10369:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10358:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3571,"nodeType":"ExpressionStatement","src":"10358:36:17"},{"expression":{"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10432:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10443:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3574,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"10447:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3575,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10461:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10447:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10443:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10432:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3579,"nodeType":"ExpressionStatement","src":"10432:36:17"},{"expression":{"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3580,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"10913:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3581,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"10922:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3582,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"10928:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10922:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10913:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3585,"nodeType":"ExpressionStatement","src":"10913:22:17"},{"expression":{"id":3586,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"10956:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3465,"id":3587,"nodeType":"Return","src":"10949:13:17"}]}]},"documentation":{"id":3455,"nodeType":"StructuredDocumentation","src":"6979:312:17","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":3590,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7305:6:17","nodeType":"FunctionDefinition","parameters":{"id":3462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3457,"mutability":"mutable","name":"x","nameLocation":"7320:1:17","nodeType":"VariableDeclaration","scope":3590,"src":"7312:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3456,"name":"uint256","nodeType":"ElementaryTypeName","src":"7312:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3459,"mutability":"mutable","name":"y","nameLocation":"7331:1:17","nodeType":"VariableDeclaration","scope":3590,"src":"7323:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3458,"name":"uint256","nodeType":"ElementaryTypeName","src":"7323:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3461,"mutability":"mutable","name":"denominator","nameLocation":"7342:11:17","nodeType":"VariableDeclaration","scope":3590,"src":"7334:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3460,"name":"uint256","nodeType":"ElementaryTypeName","src":"7334:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7311:43:17"},"returnParameters":{"id":3465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3464,"mutability":"mutable","name":"result","nameLocation":"7386:6:17","nodeType":"VariableDeclaration","scope":3590,"src":"7378:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3463,"name":"uint256","nodeType":"ElementaryTypeName","src":"7378:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7377:16:17"},"scope":4719,"src":"7296:3683:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3626,"nodeType":"Block","src":"11218:128:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3606,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"11242:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3607,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3595,"src":"11245:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3608,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3597,"src":"11248:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3605,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[3590,3627],"referencedDeclaration":3590,"src":"11235:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11235:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3613,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3600,"src":"11296:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":3612,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"11279:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11279:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3616,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"11316:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3617,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3595,"src":"11319:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3618,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3597,"src":"11322:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3615,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11309:6:17","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11309:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11309:29:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11279:59:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3610,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"11263:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":3611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11272:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"11263:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11263:76:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11235:104:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3604,"id":3625,"nodeType":"Return","src":"11228:111:17"}]},"documentation":{"id":3591,"nodeType":"StructuredDocumentation","src":"10985:118:17","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":3627,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11117:6:17","nodeType":"FunctionDefinition","parameters":{"id":3601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3593,"mutability":"mutable","name":"x","nameLocation":"11132:1:17","nodeType":"VariableDeclaration","scope":3627,"src":"11124:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3592,"name":"uint256","nodeType":"ElementaryTypeName","src":"11124:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3595,"mutability":"mutable","name":"y","nameLocation":"11143:1:17","nodeType":"VariableDeclaration","scope":3627,"src":"11135:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3594,"name":"uint256","nodeType":"ElementaryTypeName","src":"11135:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3597,"mutability":"mutable","name":"denominator","nameLocation":"11154:11:17","nodeType":"VariableDeclaration","scope":3627,"src":"11146:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3596,"name":"uint256","nodeType":"ElementaryTypeName","src":"11146:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3600,"mutability":"mutable","name":"rounding","nameLocation":"11176:8:17","nodeType":"VariableDeclaration","scope":3627,"src":"11167:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":3599,"nodeType":"UserDefinedTypeName","pathNode":{"id":3598,"name":"Rounding","nameLocations":["11167:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"11167:8:17"},"referencedDeclaration":3074,"src":"11167:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11123:62:17"},"returnParameters":{"id":3604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3627,"src":"11209:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3602,"name":"uint256","nodeType":"ElementaryTypeName","src":"11209:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11208:9:17"},"scope":4719,"src":"11108:238:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3676,"nodeType":"Block","src":"11554:245:17","statements":[{"id":3675,"nodeType":"UncheckedBlock","src":"11564:229:17","statements":[{"assignments":[3640,3642],"declarations":[{"constant":false,"id":3640,"mutability":"mutable","name":"high","nameLocation":"11597:4:17","nodeType":"VariableDeclaration","scope":3675,"src":"11589:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3639,"name":"uint256","nodeType":"ElementaryTypeName","src":"11589:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3642,"mutability":"mutable","name":"low","nameLocation":"11611:3:17","nodeType":"VariableDeclaration","scope":3675,"src":"11603:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3641,"name":"uint256","nodeType":"ElementaryTypeName","src":"11603:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3647,"initialValue":{"arguments":[{"id":3644,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3630,"src":"11625:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3645,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3632,"src":"11628:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3643,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"11618:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":3646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11618:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11588:42:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3648,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3640,"src":"11648:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11656:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3650,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"11661:1:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11656:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11648:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3661,"nodeType":"IfStatement","src":"11644:86:17","trueBody":{"id":3660,"nodeType":"Block","src":"11664:66:17","statements":[{"expression":{"arguments":[{"expression":{"id":3656,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"11694:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11700:14:17","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":2905,"src":"11694:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3653,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"11682:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11688:5:17","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"11682:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11682:33:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3659,"nodeType":"ExpressionStatement","src":"11682:33:17"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3662,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3640,"src":"11751:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":3663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11760:3:17","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3664,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"11766:1:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11760:7:17","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3666,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11759:9:17","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11751:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11750:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3669,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"11773:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":3670,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"11780:1:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11773:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3672,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11772:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11750:32:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3638,"id":3674,"nodeType":"Return","src":"11743:39:17"}]}]},"documentation":{"id":3628,"nodeType":"StructuredDocumentation","src":"11352:111:17","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":3677,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11477:6:17","nodeType":"FunctionDefinition","parameters":{"id":3635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3630,"mutability":"mutable","name":"x","nameLocation":"11492:1:17","nodeType":"VariableDeclaration","scope":3677,"src":"11484:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3629,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3632,"mutability":"mutable","name":"y","nameLocation":"11503:1:17","nodeType":"VariableDeclaration","scope":3677,"src":"11495:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3631,"name":"uint256","nodeType":"ElementaryTypeName","src":"11495:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3634,"mutability":"mutable","name":"n","nameLocation":"11512:1:17","nodeType":"VariableDeclaration","scope":3677,"src":"11506:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3633,"name":"uint8","nodeType":"ElementaryTypeName","src":"11506:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11483:31:17"},"returnParameters":{"id":3638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3637,"mutability":"mutable","name":"result","nameLocation":"11546:6:17","nodeType":"VariableDeclaration","scope":3677,"src":"11538:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3636,"name":"uint256","nodeType":"ElementaryTypeName","src":"11538:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11537:16:17"},"scope":4719,"src":"11468:331:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3715,"nodeType":"Block","src":"12017:113:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3693,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"12041:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3694,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3682,"src":"12044:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3695,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"12047:1:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3692,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[3677,3716],"referencedDeclaration":3677,"src":"12034:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":3696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12034:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3700,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3687,"src":"12085:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":3699,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"12068:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12068:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3703,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"12105:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3704,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3682,"src":"12108:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12111:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3706,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"12116:1:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12111:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3702,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12098:6:17","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12098:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12121:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12098:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12068:54:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3697,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"12052:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":3698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12061:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"12052:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12052:71:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12034:89:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3691,"id":3714,"nodeType":"Return","src":"12027:96:17"}]},"documentation":{"id":3678,"nodeType":"StructuredDocumentation","src":"11805:109:17","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":3716,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11928:6:17","nodeType":"FunctionDefinition","parameters":{"id":3688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3680,"mutability":"mutable","name":"x","nameLocation":"11943:1:17","nodeType":"VariableDeclaration","scope":3716,"src":"11935:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3679,"name":"uint256","nodeType":"ElementaryTypeName","src":"11935:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3682,"mutability":"mutable","name":"y","nameLocation":"11954:1:17","nodeType":"VariableDeclaration","scope":3716,"src":"11946:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3681,"name":"uint256","nodeType":"ElementaryTypeName","src":"11946:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3684,"mutability":"mutable","name":"n","nameLocation":"11963:1:17","nodeType":"VariableDeclaration","scope":3716,"src":"11957:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3683,"name":"uint8","nodeType":"ElementaryTypeName","src":"11957:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3687,"mutability":"mutable","name":"rounding","nameLocation":"11975:8:17","nodeType":"VariableDeclaration","scope":3716,"src":"11966:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":3686,"nodeType":"UserDefinedTypeName","pathNode":{"id":3685,"name":"Rounding","nameLocations":["11966:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"11966:8:17"},"referencedDeclaration":3074,"src":"11966:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11934:50:17"},"returnParameters":{"id":3691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3690,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3716,"src":"12008:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3689,"name":"uint256","nodeType":"ElementaryTypeName","src":"12008:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12007:9:17"},"scope":4719,"src":"11919:211:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3812,"nodeType":"Block","src":"12764:1849:17","statements":[{"id":3811,"nodeType":"UncheckedBlock","src":"12774:1833:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3726,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"12802:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12807:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12802:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3731,"nodeType":"IfStatement","src":"12798:20:17","trueBody":{"expression":{"hexValue":"30","id":3729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12817:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3725,"id":3730,"nodeType":"Return","src":"12810:8:17"}},{"assignments":[3733],"declarations":[{"constant":false,"id":3733,"mutability":"mutable","name":"remainder","nameLocation":"13297:9:17","nodeType":"VariableDeclaration","scope":3811,"src":"13289:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3732,"name":"uint256","nodeType":"ElementaryTypeName","src":"13289:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3737,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3734,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"13309:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":3735,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"13313:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13309:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13289:25:17"},{"assignments":[3739],"declarations":[{"constant":false,"id":3739,"mutability":"mutable","name":"gcd","nameLocation":"13336:3:17","nodeType":"VariableDeclaration","scope":3811,"src":"13328:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3738,"name":"uint256","nodeType":"ElementaryTypeName","src":"13328:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3741,"initialValue":{"id":3740,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"13342:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13328:15:17"},{"assignments":[3743],"declarations":[{"constant":false,"id":3743,"mutability":"mutable","name":"x","nameLocation":"13486:1:17","nodeType":"VariableDeclaration","scope":3811,"src":"13479:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3742,"name":"int256","nodeType":"ElementaryTypeName","src":"13479:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3745,"initialValue":{"hexValue":"30","id":3744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13490:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13479:12:17"},{"assignments":[3747],"declarations":[{"constant":false,"id":3747,"mutability":"mutable","name":"y","nameLocation":"13512:1:17","nodeType":"VariableDeclaration","scope":3811,"src":"13505:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3746,"name":"int256","nodeType":"ElementaryTypeName","src":"13505:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3749,"initialValue":{"hexValue":"31","id":3748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13505:12:17"},{"body":{"id":3786,"nodeType":"Block","src":"13555:882:17","statements":[{"assignments":[3754],"declarations":[{"constant":false,"id":3754,"mutability":"mutable","name":"quotient","nameLocation":"13581:8:17","nodeType":"VariableDeclaration","scope":3786,"src":"13573:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3753,"name":"uint256","nodeType":"ElementaryTypeName","src":"13573:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3758,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3755,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"13592:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3756,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"13598:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13592:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13573:34:17"},{"expression":{"id":3769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3759,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"13627:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3760,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"13632:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3761,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13626:16:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":3762,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"13732:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3763,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"13977:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3764,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"13983:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3765,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3754,"src":"13995:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13983:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13977:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13645:376:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13626:395:17","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3770,"nodeType":"ExpressionStatement","src":"13626:395:17"},{"expression":{"id":3784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3771,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"14041:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":3772,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"14044:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3773,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14040:6:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":3774,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"14126:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3775,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"14380:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3776,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"14384:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3779,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3754,"src":"14395:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14388:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":3777,"name":"int256","nodeType":"ElementaryTypeName","src":"14388:6:17","typeDescriptions":{}}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14388:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14384:20:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14380:24:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3783,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14049:373:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"14040:382:17","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3785,"nodeType":"ExpressionStatement","src":"14040:382:17"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3750,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"13539:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13552:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13539:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3787,"nodeType":"WhileStatement","src":"13532:905:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3788,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"14455:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":3789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14462:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14455:8:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3793,"nodeType":"IfStatement","src":"14451:22:17","trueBody":{"expression":{"hexValue":"30","id":3791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14472:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3725,"id":3792,"nodeType":"Return","src":"14465:8:17"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3795,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"14524:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14528:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14524:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3798,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"14531:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":3802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14543:2:17","subExpression":{"id":3801,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"14544:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14535:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3799,"name":"uint256","nodeType":"ElementaryTypeName","src":"14535:7:17","typeDescriptions":{}}},"id":3803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14535:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14531:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3807,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"14556:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14548:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3805,"name":"uint256","nodeType":"ElementaryTypeName","src":"14548:7:17","typeDescriptions":{}}},"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14548:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3794,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"14516:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14516:43:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3725,"id":3810,"nodeType":"Return","src":"14509:50:17"}]}]},"documentation":{"id":3717,"nodeType":"StructuredDocumentation","src":"12136:553:17","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"id":3813,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12703:6:17","nodeType":"FunctionDefinition","parameters":{"id":3722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3719,"mutability":"mutable","name":"a","nameLocation":"12718:1:17","nodeType":"VariableDeclaration","scope":3813,"src":"12710:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3718,"name":"uint256","nodeType":"ElementaryTypeName","src":"12710:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3721,"mutability":"mutable","name":"n","nameLocation":"12729:1:17","nodeType":"VariableDeclaration","scope":3813,"src":"12721:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3720,"name":"uint256","nodeType":"ElementaryTypeName","src":"12721:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12709:22:17"},"returnParameters":{"id":3725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3813,"src":"12755:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3723,"name":"uint256","nodeType":"ElementaryTypeName","src":"12755:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12754:9:17"},"scope":4719,"src":"12694:1919:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3833,"nodeType":"Block","src":"15213:82:17","statements":[{"id":3832,"nodeType":"UncheckedBlock","src":"15223:66:17","statements":[{"expression":{"arguments":[{"id":3825,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3816,"src":"15266:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3826,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3818,"src":"15269:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":3827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15273:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15269:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3829,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3818,"src":"15276:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3823,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"15254:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4719_$","typeString":"type(library Math)"}},"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15259:6:17","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":3870,"src":"15254:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":3830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15254:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3822,"id":3831,"nodeType":"Return","src":"15247:31:17"}]}]},"documentation":{"id":3814,"nodeType":"StructuredDocumentation","src":"14619:514:17","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) โ‰ก 1 mod p`. As a consequence, we have `a * a**(p-2) โ‰ก 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"id":3834,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15147:11:17","nodeType":"FunctionDefinition","parameters":{"id":3819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3816,"mutability":"mutable","name":"a","nameLocation":"15167:1:17","nodeType":"VariableDeclaration","scope":3834,"src":"15159:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3815,"name":"uint256","nodeType":"ElementaryTypeName","src":"15159:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3818,"mutability":"mutable","name":"p","nameLocation":"15178:1:17","nodeType":"VariableDeclaration","scope":3834,"src":"15170:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3817,"name":"uint256","nodeType":"ElementaryTypeName","src":"15170:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15158:22:17"},"returnParameters":{"id":3822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3834,"src":"15204:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3820,"name":"uint256","nodeType":"ElementaryTypeName","src":"15204:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15203:9:17"},"scope":4719,"src":"15138:157:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3869,"nodeType":"Block","src":"16065:174:17","statements":[{"assignments":[3847,3849],"declarations":[{"constant":false,"id":3847,"mutability":"mutable","name":"success","nameLocation":"16081:7:17","nodeType":"VariableDeclaration","scope":3869,"src":"16076:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3846,"name":"bool","nodeType":"ElementaryTypeName","src":"16076:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3849,"mutability":"mutable","name":"result","nameLocation":"16098:6:17","nodeType":"VariableDeclaration","scope":3869,"src":"16090:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3848,"name":"uint256","nodeType":"ElementaryTypeName","src":"16090:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3855,"initialValue":{"arguments":[{"id":3851,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3837,"src":"16118:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3852,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3839,"src":"16121:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3853,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"16124:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3850,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[3894,3976],"referencedDeclaration":3894,"src":"16108:9:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16108:18:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16075:51:17"},{"condition":{"id":3857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16140:8:17","subExpression":{"id":3856,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"16141:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3866,"nodeType":"IfStatement","src":"16136:74:17","trueBody":{"id":3865,"nodeType":"Block","src":"16150:60:17","statements":[{"expression":{"arguments":[{"expression":{"id":3861,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"16176:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16182:16:17","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":2909,"src":"16176:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3858,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"16164:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16170:5:17","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"16164:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16164:35:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3864,"nodeType":"ExpressionStatement","src":"16164:35:17"}]}},{"expression":{"id":3867,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"16226:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3845,"id":3868,"nodeType":"Return","src":"16219:13:17"}]},"documentation":{"id":3835,"nodeType":"StructuredDocumentation","src":"15301:678:17","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"id":3870,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15993:6:17","nodeType":"FunctionDefinition","parameters":{"id":3842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3837,"mutability":"mutable","name":"b","nameLocation":"16008:1:17","nodeType":"VariableDeclaration","scope":3870,"src":"16000:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3836,"name":"uint256","nodeType":"ElementaryTypeName","src":"16000:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3839,"mutability":"mutable","name":"e","nameLocation":"16019:1:17","nodeType":"VariableDeclaration","scope":3870,"src":"16011:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3838,"name":"uint256","nodeType":"ElementaryTypeName","src":"16011:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3841,"mutability":"mutable","name":"m","nameLocation":"16030:1:17","nodeType":"VariableDeclaration","scope":3870,"src":"16022:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3840,"name":"uint256","nodeType":"ElementaryTypeName","src":"16022:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15999:33:17"},"returnParameters":{"id":3845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3870,"src":"16056:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3843,"name":"uint256","nodeType":"ElementaryTypeName","src":"16056:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16055:9:17"},"scope":4719,"src":"15984:255:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3893,"nodeType":"Block","src":"17093:1493:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3884,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"17107:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17112:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17107:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3891,"nodeType":"IfStatement","src":"17103:29:17","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17123:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17130:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3889,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17122:10:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3883,"id":3890,"nodeType":"Return","src":"17115:17:17"}},{"AST":{"nativeSrc":"17167:1413:17","nodeType":"YulBlock","src":"17167:1413:17","statements":[{"nativeSrc":"17181:22:17","nodeType":"YulVariableDeclaration","src":"17181:22:17","value":{"arguments":[{"kind":"number","nativeSrc":"17198:4:17","nodeType":"YulLiteral","src":"17198:4:17","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17192:5:17","nodeType":"YulIdentifier","src":"17192:5:17"},"nativeSrc":"17192:11:17","nodeType":"YulFunctionCall","src":"17192:11:17"},"variables":[{"name":"ptr","nativeSrc":"17185:3:17","nodeType":"YulTypedName","src":"17185:3:17","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18111:3:17","nodeType":"YulIdentifier","src":"18111:3:17"},{"kind":"number","nativeSrc":"18116:4:17","nodeType":"YulLiteral","src":"18116:4:17","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18104:6:17","nodeType":"YulIdentifier","src":"18104:6:17"},"nativeSrc":"18104:17:17","nodeType":"YulFunctionCall","src":"18104:17:17"},"nativeSrc":"18104:17:17","nodeType":"YulExpressionStatement","src":"18104:17:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18145:3:17","nodeType":"YulIdentifier","src":"18145:3:17"},{"kind":"number","nativeSrc":"18150:4:17","nodeType":"YulLiteral","src":"18150:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18141:3:17","nodeType":"YulIdentifier","src":"18141:3:17"},"nativeSrc":"18141:14:17","nodeType":"YulFunctionCall","src":"18141:14:17"},{"kind":"number","nativeSrc":"18157:4:17","nodeType":"YulLiteral","src":"18157:4:17","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18134:6:17","nodeType":"YulIdentifier","src":"18134:6:17"},"nativeSrc":"18134:28:17","nodeType":"YulFunctionCall","src":"18134:28:17"},"nativeSrc":"18134:28:17","nodeType":"YulExpressionStatement","src":"18134:28:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18186:3:17","nodeType":"YulIdentifier","src":"18186:3:17"},{"kind":"number","nativeSrc":"18191:4:17","nodeType":"YulLiteral","src":"18191:4:17","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18182:3:17","nodeType":"YulIdentifier","src":"18182:3:17"},"nativeSrc":"18182:14:17","nodeType":"YulFunctionCall","src":"18182:14:17"},{"kind":"number","nativeSrc":"18198:4:17","nodeType":"YulLiteral","src":"18198:4:17","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18175:6:17","nodeType":"YulIdentifier","src":"18175:6:17"},"nativeSrc":"18175:28:17","nodeType":"YulFunctionCall","src":"18175:28:17"},"nativeSrc":"18175:28:17","nodeType":"YulExpressionStatement","src":"18175:28:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18227:3:17","nodeType":"YulIdentifier","src":"18227:3:17"},{"kind":"number","nativeSrc":"18232:4:17","nodeType":"YulLiteral","src":"18232:4:17","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18223:3:17","nodeType":"YulIdentifier","src":"18223:3:17"},"nativeSrc":"18223:14:17","nodeType":"YulFunctionCall","src":"18223:14:17"},{"name":"b","nativeSrc":"18239:1:17","nodeType":"YulIdentifier","src":"18239:1:17"}],"functionName":{"name":"mstore","nativeSrc":"18216:6:17","nodeType":"YulIdentifier","src":"18216:6:17"},"nativeSrc":"18216:25:17","nodeType":"YulFunctionCall","src":"18216:25:17"},"nativeSrc":"18216:25:17","nodeType":"YulExpressionStatement","src":"18216:25:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18265:3:17","nodeType":"YulIdentifier","src":"18265:3:17"},{"kind":"number","nativeSrc":"18270:4:17","nodeType":"YulLiteral","src":"18270:4:17","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18261:3:17","nodeType":"YulIdentifier","src":"18261:3:17"},"nativeSrc":"18261:14:17","nodeType":"YulFunctionCall","src":"18261:14:17"},{"name":"e","nativeSrc":"18277:1:17","nodeType":"YulIdentifier","src":"18277:1:17"}],"functionName":{"name":"mstore","nativeSrc":"18254:6:17","nodeType":"YulIdentifier","src":"18254:6:17"},"nativeSrc":"18254:25:17","nodeType":"YulFunctionCall","src":"18254:25:17"},"nativeSrc":"18254:25:17","nodeType":"YulExpressionStatement","src":"18254:25:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18303:3:17","nodeType":"YulIdentifier","src":"18303:3:17"},{"kind":"number","nativeSrc":"18308:4:17","nodeType":"YulLiteral","src":"18308:4:17","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18299:3:17","nodeType":"YulIdentifier","src":"18299:3:17"},"nativeSrc":"18299:14:17","nodeType":"YulFunctionCall","src":"18299:14:17"},{"name":"m","nativeSrc":"18315:1:17","nodeType":"YulIdentifier","src":"18315:1:17"}],"functionName":{"name":"mstore","nativeSrc":"18292:6:17","nodeType":"YulIdentifier","src":"18292:6:17"},"nativeSrc":"18292:25:17","nodeType":"YulFunctionCall","src":"18292:25:17"},"nativeSrc":"18292:25:17","nodeType":"YulExpressionStatement","src":"18292:25:17"},{"nativeSrc":"18479:57:17","nodeType":"YulAssignment","src":"18479:57:17","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18501:3:17","nodeType":"YulIdentifier","src":"18501:3:17"},"nativeSrc":"18501:5:17","nodeType":"YulFunctionCall","src":"18501:5:17"},{"kind":"number","nativeSrc":"18508:4:17","nodeType":"YulLiteral","src":"18508:4:17","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18514:3:17","nodeType":"YulIdentifier","src":"18514:3:17"},{"kind":"number","nativeSrc":"18519:4:17","nodeType":"YulLiteral","src":"18519:4:17","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18525:4:17","nodeType":"YulLiteral","src":"18525:4:17","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18531:4:17","nodeType":"YulLiteral","src":"18531:4:17","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18490:10:17","nodeType":"YulIdentifier","src":"18490:10:17"},"nativeSrc":"18490:46:17","nodeType":"YulFunctionCall","src":"18490:46:17"},"variableNames":[{"name":"success","nativeSrc":"18479:7:17","nodeType":"YulIdentifier","src":"18479:7:17"}]},{"nativeSrc":"18549:21:17","nodeType":"YulAssignment","src":"18549:21:17","value":{"arguments":[{"kind":"number","nativeSrc":"18565:4:17","nodeType":"YulLiteral","src":"18565:4:17","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18559:5:17","nodeType":"YulIdentifier","src":"18559:5:17"},"nativeSrc":"18559:11:17","nodeType":"YulFunctionCall","src":"18559:11:17"},"variableNames":[{"name":"result","nativeSrc":"18549:6:17","nodeType":"YulIdentifier","src":"18549:6:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3873,"isOffset":false,"isSlot":false,"src":"18239:1:17","valueSize":1},{"declaration":3875,"isOffset":false,"isSlot":false,"src":"18277:1:17","valueSize":1},{"declaration":3877,"isOffset":false,"isSlot":false,"src":"18315:1:17","valueSize":1},{"declaration":3882,"isOffset":false,"isSlot":false,"src":"18549:6:17","valueSize":1},{"declaration":3880,"isOffset":false,"isSlot":false,"src":"18479:7:17","valueSize":1}],"flags":["memory-safe"],"id":3892,"nodeType":"InlineAssembly","src":"17142:1438:17"}]},"documentation":{"id":3871,"nodeType":"StructuredDocumentation","src":"16245:738:17","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"id":3894,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16997:9:17","nodeType":"FunctionDefinition","parameters":{"id":3878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3873,"mutability":"mutable","name":"b","nameLocation":"17015:1:17","nodeType":"VariableDeclaration","scope":3894,"src":"17007:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3872,"name":"uint256","nodeType":"ElementaryTypeName","src":"17007:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3875,"mutability":"mutable","name":"e","nameLocation":"17026:1:17","nodeType":"VariableDeclaration","scope":3894,"src":"17018:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3874,"name":"uint256","nodeType":"ElementaryTypeName","src":"17018:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3877,"mutability":"mutable","name":"m","nameLocation":"17037:1:17","nodeType":"VariableDeclaration","scope":3894,"src":"17029:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3876,"name":"uint256","nodeType":"ElementaryTypeName","src":"17029:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17006:33:17"},"returnParameters":{"id":3883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3880,"mutability":"mutable","name":"success","nameLocation":"17068:7:17","nodeType":"VariableDeclaration","scope":3894,"src":"17063:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3879,"name":"bool","nodeType":"ElementaryTypeName","src":"17063:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3882,"mutability":"mutable","name":"result","nameLocation":"17085:6:17","nodeType":"VariableDeclaration","scope":3894,"src":"17077:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3881,"name":"uint256","nodeType":"ElementaryTypeName","src":"17077:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17062:30:17"},"scope":4719,"src":"16988:1598:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3929,"nodeType":"Block","src":"18783:179:17","statements":[{"assignments":[3907,3909],"declarations":[{"constant":false,"id":3907,"mutability":"mutable","name":"success","nameLocation":"18799:7:17","nodeType":"VariableDeclaration","scope":3929,"src":"18794:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3906,"name":"bool","nodeType":"ElementaryTypeName","src":"18794:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3909,"mutability":"mutable","name":"result","nameLocation":"18821:6:17","nodeType":"VariableDeclaration","scope":3929,"src":"18808:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3908,"name":"bytes","nodeType":"ElementaryTypeName","src":"18808:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3915,"initialValue":{"arguments":[{"id":3911,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3897,"src":"18841:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3912,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"18844:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3913,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"18847:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3910,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[3894,3976],"referencedDeclaration":3976,"src":"18831:9:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":3914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18831:18:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18793:56:17"},{"condition":{"id":3917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18863:8:17","subExpression":{"id":3916,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"18864:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3926,"nodeType":"IfStatement","src":"18859:74:17","trueBody":{"id":3925,"nodeType":"Block","src":"18873:60:17","statements":[{"expression":{"arguments":[{"expression":{"id":3921,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"18899:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18905:16:17","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":2909,"src":"18899:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3918,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"18887:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2942_$","typeString":"type(library Panic)"}},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18893:5:17","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"18887:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18887:35:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3924,"nodeType":"ExpressionStatement","src":"18887:35:17"}]}},{"expression":{"id":3927,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"18949:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3905,"id":3928,"nodeType":"Return","src":"18942:13:17"}]},"documentation":{"id":3895,"nodeType":"StructuredDocumentation","src":"18592:85:17","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":3930,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18691:6:17","nodeType":"FunctionDefinition","parameters":{"id":3902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3897,"mutability":"mutable","name":"b","nameLocation":"18711:1:17","nodeType":"VariableDeclaration","scope":3930,"src":"18698:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3896,"name":"bytes","nodeType":"ElementaryTypeName","src":"18698:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3899,"mutability":"mutable","name":"e","nameLocation":"18727:1:17","nodeType":"VariableDeclaration","scope":3930,"src":"18714:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3898,"name":"bytes","nodeType":"ElementaryTypeName","src":"18714:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3901,"mutability":"mutable","name":"m","nameLocation":"18743:1:17","nodeType":"VariableDeclaration","scope":3930,"src":"18730:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3900,"name":"bytes","nodeType":"ElementaryTypeName","src":"18730:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18697:48:17"},"returnParameters":{"id":3905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3930,"src":"18769:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3903,"name":"bytes","nodeType":"ElementaryTypeName","src":"18769:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18768:14:17"},"scope":4719,"src":"18682:280:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3975,"nodeType":"Block","src":"19216:771:17","statements":[{"condition":{"arguments":[{"id":3945,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"19241:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3944,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"19230:10:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":3946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19230:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3954,"nodeType":"IfStatement","src":"19226:47:17","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19253:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":3950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19270:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19260:9:17","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3948,"name":"bytes","nodeType":"ElementaryTypeName","src":"19264:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19260:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3952,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19252:21:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":3943,"id":3953,"nodeType":"Return","src":"19245:28:17"}},{"assignments":[3956],"declarations":[{"constant":false,"id":3956,"mutability":"mutable","name":"mLen","nameLocation":"19292:4:17","nodeType":"VariableDeclaration","scope":3975,"src":"19284:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3955,"name":"uint256","nodeType":"ElementaryTypeName","src":"19284:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3959,"initialValue":{"expression":{"id":3957,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"19299:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19301:6:17","memberName":"length","nodeType":"MemberAccess","src":"19299:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19284:23:17"},{"expression":{"id":3972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3960,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"19389:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3963,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3933,"src":"19415:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19417:6:17","memberName":"length","nodeType":"MemberAccess","src":"19415:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3965,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3935,"src":"19425:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19427:6:17","memberName":"length","nodeType":"MemberAccess","src":"19425:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3967,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"19435:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3968,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3933,"src":"19441:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3969,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3935,"src":"19444:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3970,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"19447:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3961,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19398:3:17","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19402:12:17","memberName":"encodePacked","nodeType":"MemberAccess","src":"19398:16:17","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19398:51:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19389:60:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3973,"nodeType":"ExpressionStatement","src":"19389:60:17"},{"AST":{"nativeSrc":"19485:496:17","nodeType":"YulBlock","src":"19485:496:17","statements":[{"nativeSrc":"19499:32:17","nodeType":"YulVariableDeclaration","src":"19499:32:17","value":{"arguments":[{"name":"result","nativeSrc":"19518:6:17","nodeType":"YulIdentifier","src":"19518:6:17"},{"kind":"number","nativeSrc":"19526:4:17","nodeType":"YulLiteral","src":"19526:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19514:3:17","nodeType":"YulIdentifier","src":"19514:3:17"},"nativeSrc":"19514:17:17","nodeType":"YulFunctionCall","src":"19514:17:17"},"variables":[{"name":"dataPtr","nativeSrc":"19503:7:17","nodeType":"YulTypedName","src":"19503:7:17","type":""}]},{"nativeSrc":"19621:73:17","nodeType":"YulAssignment","src":"19621:73:17","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19643:3:17","nodeType":"YulIdentifier","src":"19643:3:17"},"nativeSrc":"19643:5:17","nodeType":"YulFunctionCall","src":"19643:5:17"},{"kind":"number","nativeSrc":"19650:4:17","nodeType":"YulLiteral","src":"19650:4:17","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19656:7:17","nodeType":"YulIdentifier","src":"19656:7:17"},{"arguments":[{"name":"result","nativeSrc":"19671:6:17","nodeType":"YulIdentifier","src":"19671:6:17"}],"functionName":{"name":"mload","nativeSrc":"19665:5:17","nodeType":"YulIdentifier","src":"19665:5:17"},"nativeSrc":"19665:13:17","nodeType":"YulFunctionCall","src":"19665:13:17"},{"name":"dataPtr","nativeSrc":"19680:7:17","nodeType":"YulIdentifier","src":"19680:7:17"},{"name":"mLen","nativeSrc":"19689:4:17","nodeType":"YulIdentifier","src":"19689:4:17"}],"functionName":{"name":"staticcall","nativeSrc":"19632:10:17","nodeType":"YulIdentifier","src":"19632:10:17"},"nativeSrc":"19632:62:17","nodeType":"YulFunctionCall","src":"19632:62:17"},"variableNames":[{"name":"success","nativeSrc":"19621:7:17","nodeType":"YulIdentifier","src":"19621:7:17"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19850:6:17","nodeType":"YulIdentifier","src":"19850:6:17"},{"name":"mLen","nativeSrc":"19858:4:17","nodeType":"YulIdentifier","src":"19858:4:17"}],"functionName":{"name":"mstore","nativeSrc":"19843:6:17","nodeType":"YulIdentifier","src":"19843:6:17"},"nativeSrc":"19843:20:17","nodeType":"YulFunctionCall","src":"19843:20:17"},"nativeSrc":"19843:20:17","nodeType":"YulExpressionStatement","src":"19843:20:17"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19946:4:17","nodeType":"YulLiteral","src":"19946:4:17","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19956:7:17","nodeType":"YulIdentifier","src":"19956:7:17"},{"name":"mLen","nativeSrc":"19965:4:17","nodeType":"YulIdentifier","src":"19965:4:17"}],"functionName":{"name":"add","nativeSrc":"19952:3:17","nodeType":"YulIdentifier","src":"19952:3:17"},"nativeSrc":"19952:18:17","nodeType":"YulFunctionCall","src":"19952:18:17"}],"functionName":{"name":"mstore","nativeSrc":"19939:6:17","nodeType":"YulIdentifier","src":"19939:6:17"},"nativeSrc":"19939:32:17","nodeType":"YulFunctionCall","src":"19939:32:17"},"nativeSrc":"19939:32:17","nodeType":"YulExpressionStatement","src":"19939:32:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3956,"isOffset":false,"isSlot":false,"src":"19689:4:17","valueSize":1},{"declaration":3956,"isOffset":false,"isSlot":false,"src":"19858:4:17","valueSize":1},{"declaration":3956,"isOffset":false,"isSlot":false,"src":"19965:4:17","valueSize":1},{"declaration":3942,"isOffset":false,"isSlot":false,"src":"19518:6:17","valueSize":1},{"declaration":3942,"isOffset":false,"isSlot":false,"src":"19671:6:17","valueSize":1},{"declaration":3942,"isOffset":false,"isSlot":false,"src":"19850:6:17","valueSize":1},{"declaration":3940,"isOffset":false,"isSlot":false,"src":"19621:7:17","valueSize":1}],"flags":["memory-safe"],"id":3974,"nodeType":"InlineAssembly","src":"19460:521:17"}]},"documentation":{"id":3931,"nodeType":"StructuredDocumentation","src":"18968:88:17","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":3976,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19070:9:17","nodeType":"FunctionDefinition","parameters":{"id":3938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3933,"mutability":"mutable","name":"b","nameLocation":"19102:1:17","nodeType":"VariableDeclaration","scope":3976,"src":"19089:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3932,"name":"bytes","nodeType":"ElementaryTypeName","src":"19089:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3935,"mutability":"mutable","name":"e","nameLocation":"19126:1:17","nodeType":"VariableDeclaration","scope":3976,"src":"19113:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3934,"name":"bytes","nodeType":"ElementaryTypeName","src":"19113:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3937,"mutability":"mutable","name":"m","nameLocation":"19150:1:17","nodeType":"VariableDeclaration","scope":3976,"src":"19137:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3936,"name":"bytes","nodeType":"ElementaryTypeName","src":"19137:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19079:78:17"},"returnParameters":{"id":3943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3940,"mutability":"mutable","name":"success","nameLocation":"19186:7:17","nodeType":"VariableDeclaration","scope":3976,"src":"19181:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3939,"name":"bool","nodeType":"ElementaryTypeName","src":"19181:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3942,"mutability":"mutable","name":"result","nameLocation":"19208:6:17","nodeType":"VariableDeclaration","scope":3976,"src":"19195:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3941,"name":"bytes","nodeType":"ElementaryTypeName","src":"19195:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19180:35:17"},"scope":4719,"src":"19061:926:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4022,"nodeType":"Block","src":"20139:417:17","statements":[{"assignments":[3985],"declarations":[{"constant":false,"id":3985,"mutability":"mutable","name":"chunk","nameLocation":"20157:5:17","nodeType":"VariableDeclaration","scope":4022,"src":"20149:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3984,"name":"uint256","nodeType":"ElementaryTypeName","src":"20149:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3986,"nodeType":"VariableDeclarationStatement","src":"20149:13:17"},{"body":{"id":4018,"nodeType":"Block","src":"20222:307:17","statements":[{"AST":{"nativeSrc":"20324:73:17","nodeType":"YulBlock","src":"20324:73:17","statements":[{"nativeSrc":"20342:41:17","nodeType":"YulAssignment","src":"20342:41:17","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"20365:6:17","nodeType":"YulIdentifier","src":"20365:6:17"},{"kind":"number","nativeSrc":"20373:4:17","nodeType":"YulLiteral","src":"20373:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20361:3:17","nodeType":"YulIdentifier","src":"20361:3:17"},"nativeSrc":"20361:17:17","nodeType":"YulFunctionCall","src":"20361:17:17"},{"name":"i","nativeSrc":"20380:1:17","nodeType":"YulIdentifier","src":"20380:1:17"}],"functionName":{"name":"add","nativeSrc":"20357:3:17","nodeType":"YulIdentifier","src":"20357:3:17"},"nativeSrc":"20357:25:17","nodeType":"YulFunctionCall","src":"20357:25:17"}],"functionName":{"name":"mload","nativeSrc":"20351:5:17","nodeType":"YulIdentifier","src":"20351:5:17"},"nativeSrc":"20351:32:17","nodeType":"YulFunctionCall","src":"20351:32:17"},"variableNames":[{"name":"chunk","nativeSrc":"20342:5:17","nodeType":"YulIdentifier","src":"20342:5:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3979,"isOffset":false,"isSlot":false,"src":"20365:6:17","valueSize":1},{"declaration":3985,"isOffset":false,"isSlot":false,"src":"20342:5:17","valueSize":1},{"declaration":3988,"isOffset":false,"isSlot":false,"src":"20380:1:17","valueSize":1}],"flags":["memory-safe"],"id":3999,"nodeType":"InlineAssembly","src":"20299:98:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4000,"name":"chunk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"20414:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":4001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"20442:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783230","id":4004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20446:4:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"20442:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4006,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"20452:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20459:6:17","memberName":"length","nodeType":"MemberAccess","src":"20452:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4002,"name":"saturatingSub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3294,"src":"20428:13:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20428:38:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20424:42:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4010,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20423:44:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20414:53:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20471:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20414:58:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4017,"nodeType":"IfStatement","src":"20410:109:17","trueBody":{"id":4016,"nodeType":"Block","src":"20474:45:17","statements":[{"expression":{"hexValue":"66616c7365","id":4014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20499:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3983,"id":4015,"nodeType":"Return","src":"20492:12:17"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3991,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"20192:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3992,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"20196:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20203:6:17","memberName":"length","nodeType":"MemberAccess","src":"20196:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20192:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4019,"initializationExpression":{"assignments":[3988],"declarations":[{"constant":false,"id":3988,"mutability":"mutable","name":"i","nameLocation":"20185:1:17","nodeType":"VariableDeclaration","scope":4019,"src":"20177:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3987,"name":"uint256","nodeType":"ElementaryTypeName","src":"20177:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3990,"initialValue":{"hexValue":"30","id":3989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20189:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20177:13:17"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3995,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"20211:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"30783230","id":3996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20216:4:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"20211:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3998,"nodeType":"ExpressionStatement","src":"20211:9:17"},"nodeType":"ForStatement","src":"20172:357:17"},{"expression":{"hexValue":"74727565","id":4020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20545:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3983,"id":4021,"nodeType":"Return","src":"20538:11:17"}]},"documentation":{"id":3977,"nodeType":"StructuredDocumentation","src":"19993:72:17","text":" @dev Returns whether the provided byte array is zero."},"id":4023,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20079:10:17","nodeType":"FunctionDefinition","parameters":{"id":3980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3979,"mutability":"mutable","name":"buffer","nameLocation":"20103:6:17","nodeType":"VariableDeclaration","scope":4023,"src":"20090:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3978,"name":"bytes","nodeType":"ElementaryTypeName","src":"20090:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20089:21:17"},"returnParameters":{"id":3983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4023,"src":"20133:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3981,"name":"bool","nodeType":"ElementaryTypeName","src":"20133:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20132:6:17"},"scope":4719,"src":"20070:486:17","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4241,"nodeType":"Block","src":"20916:5124:17","statements":[{"id":4240,"nodeType":"UncheckedBlock","src":"20926:5108:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4031,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"21020:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":4032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21025:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"21020:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4037,"nodeType":"IfStatement","src":"21016:53:17","trueBody":{"id":4036,"nodeType":"Block","src":"21028:41:17","statements":[{"expression":{"id":4034,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"21053:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4030,"id":4035,"nodeType":"Return","src":"21046:8:17"}]}},{"assignments":[4039],"declarations":[{"constant":false,"id":4039,"mutability":"mutable","name":"aa","nameLocation":"22004:2:17","nodeType":"VariableDeclaration","scope":4240,"src":"21996:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4038,"name":"uint256","nodeType":"ElementaryTypeName","src":"21996:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4041,"initialValue":{"id":4040,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"22009:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21996:14:17"},{"assignments":[4043],"declarations":[{"constant":false,"id":4043,"mutability":"mutable","name":"xn","nameLocation":"22032:2:17","nodeType":"VariableDeclaration","scope":4240,"src":"22024:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4042,"name":"uint256","nodeType":"ElementaryTypeName","src":"22024:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4045,"initialValue":{"hexValue":"31","id":4044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22037:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"22024:14:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4046,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22057:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":4049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22064:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":4048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"22064:8:17","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":4050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22063:10:17","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"22057:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4061,"nodeType":"IfStatement","src":"22053:92:17","trueBody":{"id":4060,"nodeType":"Block","src":"22075:70:17","statements":[{"expression":{"id":4054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4052,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22093:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":4053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22100:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"22093:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4055,"nodeType":"ExpressionStatement","src":"22093:10:17"},{"expression":{"id":4058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4056,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"22121:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":4057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22128:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22121:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4059,"nodeType":"ExpressionStatement","src":"22121:9:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4062,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22162:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":4065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22169:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":4064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22174:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22169:7:17","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":4066,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22168:9:17","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"22162:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4077,"nodeType":"IfStatement","src":"22158:90:17","trueBody":{"id":4076,"nodeType":"Block","src":"22179:69:17","statements":[{"expression":{"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4068,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22197:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":4069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22204:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22197:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4071,"nodeType":"ExpressionStatement","src":"22197:9:17"},{"expression":{"id":4074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4072,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"22224:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":4073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22231:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22224:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4075,"nodeType":"ExpressionStatement","src":"22224:9:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4078,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22265:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":4081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22272:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":4080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22277:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22272:7:17","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":4082,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22271:9:17","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"22265:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4093,"nodeType":"IfStatement","src":"22261:90:17","trueBody":{"id":4092,"nodeType":"Block","src":"22282:69:17","statements":[{"expression":{"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4084,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22300:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":4085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22307:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22300:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4087,"nodeType":"ExpressionStatement","src":"22300:9:17"},{"expression":{"id":4090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4088,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"22327:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":4089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22334:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22327:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4091,"nodeType":"ExpressionStatement","src":"22327:9:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4094,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22368:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":4097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22375:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22380:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22375:7:17","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":4098,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22374:9:17","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22368:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4109,"nodeType":"IfStatement","src":"22364:89:17","trueBody":{"id":4108,"nodeType":"Block","src":"22385:68:17","statements":[{"expression":{"id":4102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4100,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22403:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":4101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22410:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22403:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4103,"nodeType":"ExpressionStatement","src":"22403:9:17"},{"expression":{"id":4106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4104,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"22430:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":4105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22437:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22430:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4107,"nodeType":"ExpressionStatement","src":"22430:8:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4110,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22470:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":4113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22477:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22482:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22477:6:17","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":4114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22476:8:17","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22470:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4125,"nodeType":"IfStatement","src":"22466:87:17","trueBody":{"id":4124,"nodeType":"Block","src":"22486:67:17","statements":[{"expression":{"id":4118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4116,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22504:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":4117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22511:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22504:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4119,"nodeType":"ExpressionStatement","src":"22504:8:17"},{"expression":{"id":4122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4120,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"22530:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":4121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22537:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22530:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4123,"nodeType":"ExpressionStatement","src":"22530:8:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4126,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22570:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":4129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22577:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22582:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22577:6:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":4130,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22576:8:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22570:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4141,"nodeType":"IfStatement","src":"22566:87:17","trueBody":{"id":4140,"nodeType":"Block","src":"22586:67:17","statements":[{"expression":{"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4132,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22604:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22611:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22604:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4135,"nodeType":"ExpressionStatement","src":"22604:8:17"},{"expression":{"id":4138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4136,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"22630:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":4137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22637:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22630:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4139,"nodeType":"ExpressionStatement","src":"22630:8:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4142,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"22670:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":4145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22677:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22682:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22677:6:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":4146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22676:8:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22670:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4153,"nodeType":"IfStatement","src":"22666:61:17","trueBody":{"id":4152,"nodeType":"Block","src":"22686:41:17","statements":[{"expression":{"id":4150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4148,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"22704:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":4149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22711:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22704:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4151,"nodeType":"ExpressionStatement","src":"22704:8:17"}]}},{"expression":{"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4154,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"23147:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":4155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23153:1:17","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4156,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"23157:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23153:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23152:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23164:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23152:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23147:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4162,"nodeType":"ExpressionStatement","src":"23147:18:17"},{"expression":{"id":4172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4163,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25052:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4164,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25058:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4165,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"25063:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4166,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25067:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25063:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25058:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4169,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25057:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25074:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25057:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25052:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4173,"nodeType":"ExpressionStatement","src":"25052:23:17"},{"expression":{"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4174,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25161:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4175,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25167:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4176,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"25172:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4177,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25176:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25172:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25167:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4180,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25166:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25183:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25166:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25161:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4184,"nodeType":"ExpressionStatement","src":"25161:23:17"},{"expression":{"id":4194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4185,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25272:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4186,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25278:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4187,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"25283:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4188,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25287:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25283:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25278:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4191,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25277:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25294:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25277:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25272:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4195,"nodeType":"ExpressionStatement","src":"25272:23:17"},{"expression":{"id":4205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4196,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25381:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4197,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25387:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4198,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"25392:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4199,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25396:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25392:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25387:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25386:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25403:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25386:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25381:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4206,"nodeType":"ExpressionStatement","src":"25381:23:17"},{"expression":{"id":4216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4207,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25491:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4208,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25497:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"25502:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4210,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25506:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25502:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25497:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4213,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25496:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25513:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25496:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25491:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4217,"nodeType":"ExpressionStatement","src":"25491:23:17"},{"expression":{"id":4227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4218,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25601:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4219,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25607:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4220,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"25612:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4221,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25616:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25612:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25607:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4224,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25606:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25623:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25606:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25601:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4228,"nodeType":"ExpressionStatement","src":"25601:23:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4229,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"25990:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4232,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"26011:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4233,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"26016:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4234,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"26020:2:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26016:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26011:11:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4230,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"25995:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26004:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"25995:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25995:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25990:33:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4030,"id":4239,"nodeType":"Return","src":"25983:40:17"}]}]},"documentation":{"id":4024,"nodeType":"StructuredDocumentation","src":"20562:292:17","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"id":4242,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20868:4:17","nodeType":"FunctionDefinition","parameters":{"id":4027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4026,"mutability":"mutable","name":"a","nameLocation":"20881:1:17","nodeType":"VariableDeclaration","scope":4242,"src":"20873:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4025,"name":"uint256","nodeType":"ElementaryTypeName","src":"20873:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20872:11:17"},"returnParameters":{"id":4030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4029,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4242,"src":"20907:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4028,"name":"uint256","nodeType":"ElementaryTypeName","src":"20907:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20906:9:17"},"scope":4719,"src":"20859:5181:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4275,"nodeType":"Block","src":"26213:171:17","statements":[{"id":4274,"nodeType":"UncheckedBlock","src":"26223:155:17","statements":[{"assignments":[4254],"declarations":[{"constant":false,"id":4254,"mutability":"mutable","name":"result","nameLocation":"26255:6:17","nodeType":"VariableDeclaration","scope":4274,"src":"26247:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4253,"name":"uint256","nodeType":"ElementaryTypeName","src":"26247:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4258,"initialValue":{"arguments":[{"id":4256,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4245,"src":"26269:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4255,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[4242,4276],"referencedDeclaration":4242,"src":"26264:4:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26264:7:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26247:24:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4259,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"26292:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4263,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4248,"src":"26334:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":4262,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"26317:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26317:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4265,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"26347:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4266,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"26356:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26347:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4268,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4245,"src":"26365:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26347:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26317:49:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4260,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"26301:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26310:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"26301:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26301:66:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26292:75:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4252,"id":4273,"nodeType":"Return","src":"26285:82:17"}]}]},"documentation":{"id":4243,"nodeType":"StructuredDocumentation","src":"26046:86:17","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":4276,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"26146:4:17","nodeType":"FunctionDefinition","parameters":{"id":4249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4245,"mutability":"mutable","name":"a","nameLocation":"26159:1:17","nodeType":"VariableDeclaration","scope":4276,"src":"26151:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4244,"name":"uint256","nodeType":"ElementaryTypeName","src":"26151:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4248,"mutability":"mutable","name":"rounding","nameLocation":"26171:8:17","nodeType":"VariableDeclaration","scope":4276,"src":"26162:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":4247,"nodeType":"UserDefinedTypeName","pathNode":{"id":4246,"name":"Rounding","nameLocations":["26162:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"26162:8:17"},"referencedDeclaration":3074,"src":"26162:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"26150:30:17"},"returnParameters":{"id":4252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4276,"src":"26204:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4250,"name":"uint256","nodeType":"ElementaryTypeName","src":"26204:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26203:9:17"},"scope":4719,"src":"26137:247:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4366,"nodeType":"Block","src":"26573:2359:17","statements":[{"expression":{"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4284,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"26655:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4287,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"26675:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":4288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26679:34:17","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26675:38:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4285,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"26659:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26668:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"26659:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26659:55:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":4291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26718:1:17","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26659:60:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26655:64:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4294,"nodeType":"ExpressionStatement","src":"26655:64:17"},{"expression":{"id":4307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4295,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"26795:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4298,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"26817:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4299,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"26822:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26817:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4301,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26816:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":4302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26827:18:17","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26816:29:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4296,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"26800:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26809:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"26800:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26800:46:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":4305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26850:1:17","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26800:51:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26795:56:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4308,"nodeType":"ExpressionStatement","src":"26795:56:17"},{"expression":{"id":4321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4309,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"26926:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4312,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"26948:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4313,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"26953:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26948:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4315,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26947:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":4316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26958:10:17","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26947:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4310,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"26931:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26940:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"26931:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26931:38:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":4319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26973:1:17","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26931:43:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26926:48:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4322,"nodeType":"ExpressionStatement","src":"26926:48:17"},{"expression":{"id":4335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4323,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"27049:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4326,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"27071:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4327,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"27076:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27071:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4329,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27070:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":4330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27081:6:17","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"27070:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4324,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"27054:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27063:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"27054:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27054:34:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27092:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27054:39:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27049:44:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4336,"nodeType":"ExpressionStatement","src":"27049:44:17"},{"expression":{"id":4349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4337,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"27166:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4340,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"27188:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4341,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"27193:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27188:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27187:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":4344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27198:4:17","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"27187:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4338,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"27171:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27180:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"27171:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27171:32:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":4347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27207:1:17","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"27171:37:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27166:42:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4350,"nodeType":"ExpressionStatement","src":"27166:42:17"},{"expression":{"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4351,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"27280:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4354,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"27302:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4355,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"27307:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27302:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4357,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27301:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":4358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27312:3:17","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27301:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4352,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"27285:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27294:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"27285:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27285:31:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27320:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"27285:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27280:41:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4364,"nodeType":"ExpressionStatement","src":"27280:41:17"},{"AST":{"nativeSrc":"28807:119:17","nodeType":"YulBlock","src":"28807:119:17","statements":[{"nativeSrc":"28821:95:17","nodeType":"YulAssignment","src":"28821:95:17","value":{"arguments":[{"name":"r","nativeSrc":"28829:1:17","nodeType":"YulIdentifier","src":"28829:1:17"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28841:1:17","nodeType":"YulIdentifier","src":"28841:1:17"},{"name":"x","nativeSrc":"28844:1:17","nodeType":"YulIdentifier","src":"28844:1:17"}],"functionName":{"name":"shr","nativeSrc":"28837:3:17","nodeType":"YulIdentifier","src":"28837:3:17"},"nativeSrc":"28837:9:17","nodeType":"YulFunctionCall","src":"28837:9:17"},{"kind":"number","nativeSrc":"28848:66:17","nodeType":"YulLiteral","src":"28848:66:17","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28832:4:17","nodeType":"YulIdentifier","src":"28832:4:17"},"nativeSrc":"28832:83:17","nodeType":"YulFunctionCall","src":"28832:83:17"}],"functionName":{"name":"or","nativeSrc":"28826:2:17","nodeType":"YulIdentifier","src":"28826:2:17"},"nativeSrc":"28826:90:17","nodeType":"YulFunctionCall","src":"28826:90:17"},"variableNames":[{"name":"r","nativeSrc":"28821:1:17","nodeType":"YulIdentifier","src":"28821:1:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4282,"isOffset":false,"isSlot":false,"src":"28821:1:17","valueSize":1},{"declaration":4282,"isOffset":false,"isSlot":false,"src":"28829:1:17","valueSize":1},{"declaration":4282,"isOffset":false,"isSlot":false,"src":"28841:1:17","valueSize":1},{"declaration":4279,"isOffset":false,"isSlot":false,"src":"28844:1:17","valueSize":1}],"flags":["memory-safe"],"id":4365,"nodeType":"InlineAssembly","src":"28782:144:17"}]},"documentation":{"id":4277,"nodeType":"StructuredDocumentation","src":"26390:119:17","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":4367,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26523:4:17","nodeType":"FunctionDefinition","parameters":{"id":4280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4279,"mutability":"mutable","name":"x","nameLocation":"26536:1:17","nodeType":"VariableDeclaration","scope":4367,"src":"26528:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4278,"name":"uint256","nodeType":"ElementaryTypeName","src":"26528:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26527:11:17"},"returnParameters":{"id":4283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4282,"mutability":"mutable","name":"r","nameLocation":"26570:1:17","nodeType":"VariableDeclaration","scope":4367,"src":"26562:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4281,"name":"uint256","nodeType":"ElementaryTypeName","src":"26562:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26561:11:17"},"scope":4719,"src":"26514:2418:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4400,"nodeType":"Block","src":"29165:175:17","statements":[{"id":4399,"nodeType":"UncheckedBlock","src":"29175:159:17","statements":[{"assignments":[4379],"declarations":[{"constant":false,"id":4379,"mutability":"mutable","name":"result","nameLocation":"29207:6:17","nodeType":"VariableDeclaration","scope":4399,"src":"29199:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4378,"name":"uint256","nodeType":"ElementaryTypeName","src":"29199:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4383,"initialValue":{"arguments":[{"id":4381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4370,"src":"29221:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4380,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[4367,4401],"referencedDeclaration":4367,"src":"29216:4:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29216:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29199:28:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4384,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"29248:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4388,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4373,"src":"29290:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":4387,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"29273:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29273:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29303:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4391,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"29308:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29303:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4393,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4370,"src":"29317:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29303:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29273:49:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4385,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"29257:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29266:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"29257:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29257:66:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29248:75:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4377,"id":4398,"nodeType":"Return","src":"29241:82:17"}]}]},"documentation":{"id":4368,"nodeType":"StructuredDocumentation","src":"28938:142:17","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4401,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"29094:4:17","nodeType":"FunctionDefinition","parameters":{"id":4374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4370,"mutability":"mutable","name":"value","nameLocation":"29107:5:17","nodeType":"VariableDeclaration","scope":4401,"src":"29099:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4369,"name":"uint256","nodeType":"ElementaryTypeName","src":"29099:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4373,"mutability":"mutable","name":"rounding","nameLocation":"29123:8:17","nodeType":"VariableDeclaration","scope":4401,"src":"29114:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":4372,"nodeType":"UserDefinedTypeName","pathNode":{"id":4371,"name":"Rounding","nameLocations":["29114:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"29114:8:17"},"referencedDeclaration":3074,"src":"29114:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"29098:34:17"},"returnParameters":{"id":4377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4401,"src":"29156:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4375,"name":"uint256","nodeType":"ElementaryTypeName","src":"29156:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29155:9:17"},"scope":4719,"src":"29085:255:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4529,"nodeType":"Block","src":"29533:854:17","statements":[{"assignments":[4410],"declarations":[{"constant":false,"id":4410,"mutability":"mutable","name":"result","nameLocation":"29551:6:17","nodeType":"VariableDeclaration","scope":4529,"src":"29543:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4409,"name":"uint256","nodeType":"ElementaryTypeName","src":"29543:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4412,"initialValue":{"hexValue":"30","id":4411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29543:18:17"},{"id":4526,"nodeType":"UncheckedBlock","src":"29571:787:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"29599:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":4416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29608:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29614:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29608:8:17","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29599:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4429,"nodeType":"IfStatement","src":"29595:103:17","trueBody":{"id":4428,"nodeType":"Block","src":"29618:80:17","statements":[{"expression":{"id":4422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4418,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"29636:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":4421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29651:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29645:8:17","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29636:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4423,"nodeType":"ExpressionStatement","src":"29636:17:17"},{"expression":{"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4424,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"29671:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":4425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29671:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4427,"nodeType":"ExpressionStatement","src":"29671:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4430,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"29715:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":4433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29724:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29730:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29724:8:17","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29715:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4446,"nodeType":"IfStatement","src":"29711:103:17","trueBody":{"id":4445,"nodeType":"Block","src":"29734:80:17","statements":[{"expression":{"id":4439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"29752:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":4438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29761:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29767:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29761:8:17","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29752:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4440,"nodeType":"ExpressionStatement","src":"29752:17:17"},{"expression":{"id":4443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4441,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"29787:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29797:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29787:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4444,"nodeType":"ExpressionStatement","src":"29787:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4447,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"29831:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29840:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29846:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29840:8:17","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29831:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4463,"nodeType":"IfStatement","src":"29827:103:17","trueBody":{"id":4462,"nodeType":"Block","src":"29850:80:17","statements":[{"expression":{"id":4456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4452,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"29868:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29877:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29883:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29877:8:17","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29868:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4457,"nodeType":"ExpressionStatement","src":"29868:17:17"},{"expression":{"id":4460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4458,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"29903:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":4459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29913:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29903:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4461,"nodeType":"ExpressionStatement","src":"29903:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"29947:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29956:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29962:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29956:7:17","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29947:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4480,"nodeType":"IfStatement","src":"29943:100:17","trueBody":{"id":4479,"nodeType":"Block","src":"29965:78:17","statements":[{"expression":{"id":4473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"29983:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29992:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29998:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29992:7:17","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29983:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4474,"nodeType":"ExpressionStatement","src":"29983:16:17"},{"expression":{"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4475,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"30017:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":4476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30027:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"30017:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4478,"nodeType":"ExpressionStatement","src":"30017:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4481,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"30060:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30069:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30075:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30069:7:17","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"30060:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4497,"nodeType":"IfStatement","src":"30056:100:17","trueBody":{"id":4496,"nodeType":"Block","src":"30078:78:17","statements":[{"expression":{"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"30096:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30105:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30111:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30105:7:17","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"30096:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4491,"nodeType":"ExpressionStatement","src":"30096:16:17"},{"expression":{"id":4494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4492,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"30130:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":4493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30140:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30130:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4495,"nodeType":"ExpressionStatement","src":"30130:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"30173:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30182:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30188:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30182:7:17","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"30173:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4514,"nodeType":"IfStatement","src":"30169:100:17","trueBody":{"id":4513,"nodeType":"Block","src":"30191:78:17","statements":[{"expression":{"id":4507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4503,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"30209:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30218:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30224:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30218:7:17","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"30209:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4508,"nodeType":"ExpressionStatement","src":"30209:16:17"},{"expression":{"id":4511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4509,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"30243:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":4510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30253:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30243:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4512,"nodeType":"ExpressionStatement","src":"30243:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4404,"src":"30286:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":4518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30295:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":4517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30301:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30295:7:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"30286:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4525,"nodeType":"IfStatement","src":"30282:66:17","trueBody":{"id":4524,"nodeType":"Block","src":"30304:44:17","statements":[{"expression":{"id":4522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4520,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"30322:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30332:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30322:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4523,"nodeType":"ExpressionStatement","src":"30322:11:17"}]}}]},{"expression":{"id":4527,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"30374:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4408,"id":4528,"nodeType":"Return","src":"30367:13:17"}]},"documentation":{"id":4402,"nodeType":"StructuredDocumentation","src":"29346:120:17","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":4530,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29480:5:17","nodeType":"FunctionDefinition","parameters":{"id":4405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4404,"mutability":"mutable","name":"value","nameLocation":"29494:5:17","nodeType":"VariableDeclaration","scope":4530,"src":"29486:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4403,"name":"uint256","nodeType":"ElementaryTypeName","src":"29486:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29485:15:17"},"returnParameters":{"id":4408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4530,"src":"29524:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4406,"name":"uint256","nodeType":"ElementaryTypeName","src":"29524:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29523:9:17"},"scope":4719,"src":"29471:916:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4563,"nodeType":"Block","src":"30622:177:17","statements":[{"id":4562,"nodeType":"UncheckedBlock","src":"30632:161:17","statements":[{"assignments":[4542],"declarations":[{"constant":false,"id":4542,"mutability":"mutable","name":"result","nameLocation":"30664:6:17","nodeType":"VariableDeclaration","scope":4562,"src":"30656:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4541,"name":"uint256","nodeType":"ElementaryTypeName","src":"30656:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4546,"initialValue":{"arguments":[{"id":4544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4533,"src":"30679:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4543,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[4530,4564],"referencedDeclaration":4530,"src":"30673:5:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30673:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30656:29:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4547,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4542,"src":"30706:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4551,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4536,"src":"30748:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":4550,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"30731:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30731:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30761:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":4554,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4542,"src":"30767:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30761:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4556,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4533,"src":"30776:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30761:20:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30731:50:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4548,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"30715:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30724:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"30715:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30715:67:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30706:76:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4540,"id":4561,"nodeType":"Return","src":"30699:83:17"}]}]},"documentation":{"id":4531,"nodeType":"StructuredDocumentation","src":"30393:143:17","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4564,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30550:5:17","nodeType":"FunctionDefinition","parameters":{"id":4537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4533,"mutability":"mutable","name":"value","nameLocation":"30564:5:17","nodeType":"VariableDeclaration","scope":4564,"src":"30556:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4532,"name":"uint256","nodeType":"ElementaryTypeName","src":"30556:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4536,"mutability":"mutable","name":"rounding","nameLocation":"30580:8:17","nodeType":"VariableDeclaration","scope":4564,"src":"30571:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":4535,"nodeType":"UserDefinedTypeName","pathNode":{"id":4534,"name":"Rounding","nameLocations":["30571:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"30571:8:17"},"referencedDeclaration":3074,"src":"30571:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30555:34:17"},"returnParameters":{"id":4540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4564,"src":"30613:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4538,"name":"uint256","nodeType":"ElementaryTypeName","src":"30613:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30612:9:17"},"scope":4719,"src":"30541:258:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4640,"nodeType":"Block","src":"31117:675:17","statements":[{"expression":{"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4572,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31199:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4575,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"31219:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":4576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31223:34:17","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"31219:38:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4573,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"31203:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31212:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"31203:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31203:55:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":4579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31262:1:17","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"31203:60:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31199:64:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4582,"nodeType":"ExpressionStatement","src":"31199:64:17"},{"expression":{"id":4595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4583,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31339:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4586,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"31361:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4587,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31366:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31361:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4589,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31360:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":4590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31371:18:17","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31360:29:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4584,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"31344:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31353:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"31344:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31344:46:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":4593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31394:1:17","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31344:51:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31339:56:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4596,"nodeType":"ExpressionStatement","src":"31339:56:17"},{"expression":{"id":4609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4597,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31470:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4600,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"31492:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4601,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31497:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31492:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4603,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31491:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":4604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31502:10:17","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31491:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4598,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"31475:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31484:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"31475:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31475:38:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":4607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31517:1:17","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31475:43:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31470:48:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4610,"nodeType":"ExpressionStatement","src":"31470:48:17"},{"expression":{"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4611,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31593:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4614,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"31615:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4615,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31620:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31615:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4617,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31614:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":4618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31625:6:17","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31614:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4612,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"31598:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31607:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"31598:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31598:34:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31636:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31598:39:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31593:44:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4624,"nodeType":"ExpressionStatement","src":"31593:44:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4625,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31743:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":4626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31748:1:17","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31743:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4628,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31742:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4631,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"31770:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4632,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"31775:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31770:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4634,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31769:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":4635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31780:4:17","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31769:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4629,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"31753:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31762:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"31753:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31753:32:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31742:43:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4571,"id":4639,"nodeType":"Return","src":"31735:50:17"}]},"documentation":{"id":4565,"nodeType":"StructuredDocumentation","src":"30805:246:17","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":4641,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31065:6:17","nodeType":"FunctionDefinition","parameters":{"id":4568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4567,"mutability":"mutable","name":"x","nameLocation":"31080:1:17","nodeType":"VariableDeclaration","scope":4641,"src":"31072:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4566,"name":"uint256","nodeType":"ElementaryTypeName","src":"31072:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31071:11:17"},"returnParameters":{"id":4571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4570,"mutability":"mutable","name":"r","nameLocation":"31114:1:17","nodeType":"VariableDeclaration","scope":4641,"src":"31106:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4569,"name":"uint256","nodeType":"ElementaryTypeName","src":"31106:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31105:11:17"},"scope":4719,"src":"31056:736:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4677,"nodeType":"Block","src":"32029:184:17","statements":[{"id":4676,"nodeType":"UncheckedBlock","src":"32039:168:17","statements":[{"assignments":[4653],"declarations":[{"constant":false,"id":4653,"mutability":"mutable","name":"result","nameLocation":"32071:6:17","nodeType":"VariableDeclaration","scope":4676,"src":"32063:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4652,"name":"uint256","nodeType":"ElementaryTypeName","src":"32063:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4657,"initialValue":{"arguments":[{"id":4655,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"32087:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4654,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[4641,4678],"referencedDeclaration":4641,"src":"32080:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32080:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32063:30:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4658,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"32114:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4662,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"32156:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":4661,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"32139:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32139:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32169:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4665,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"32175:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":4666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32185:1:17","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"32175:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32174:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32169:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"32190:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32169:26:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"32139:56:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4659,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"32123:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6484_$","typeString":"type(library SafeCast)"}},"id":4660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32132:6:17","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6483,"src":"32123:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32123:73:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32114:82:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4651,"id":4675,"nodeType":"Return","src":"32107:89:17"}]}]},"documentation":{"id":4642,"nodeType":"StructuredDocumentation","src":"31798:144:17","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4678,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31956:6:17","nodeType":"FunctionDefinition","parameters":{"id":4648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4644,"mutability":"mutable","name":"value","nameLocation":"31971:5:17","nodeType":"VariableDeclaration","scope":4678,"src":"31963:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4643,"name":"uint256","nodeType":"ElementaryTypeName","src":"31963:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4647,"mutability":"mutable","name":"rounding","nameLocation":"31987:8:17","nodeType":"VariableDeclaration","scope":4678,"src":"31978:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":4646,"nodeType":"UserDefinedTypeName","pathNode":{"id":4645,"name":"Rounding","nameLocations":["31978:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"31978:8:17"},"referencedDeclaration":3074,"src":"31978:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31962:34:17"},"returnParameters":{"id":4651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4678,"src":"32020:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4649,"name":"uint256","nodeType":"ElementaryTypeName","src":"32020:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32019:9:17"},"scope":4719,"src":"31947:266:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4696,"nodeType":"Block","src":"32411:48:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4689,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4682,"src":"32434:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}],"id":4688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32428:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4687,"name":"uint8","nodeType":"ElementaryTypeName","src":"32428:5:17","typeDescriptions":{}}},"id":4690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32428:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":4691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32446:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32428:19:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":4693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32451:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32428:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4686,"id":4695,"nodeType":"Return","src":"32421:31:17"}]},"documentation":{"id":4679,"nodeType":"StructuredDocumentation","src":"32219:113:17","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":4697,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32346:16:17","nodeType":"FunctionDefinition","parameters":{"id":4683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4682,"mutability":"mutable","name":"rounding","nameLocation":"32372:8:17","nodeType":"VariableDeclaration","scope":4697,"src":"32363:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"},"typeName":{"id":4681,"nodeType":"UserDefinedTypeName","pathNode":{"id":4680,"name":"Rounding","nameLocations":["32363:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":3074,"src":"32363:8:17"},"referencedDeclaration":3074,"src":"32363:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3074","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32362:19:17"},"returnParameters":{"id":4686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4685,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4697,"src":"32405:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4684,"name":"bool","nodeType":"ElementaryTypeName","src":"32405:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32404:6:17"},"scope":4719,"src":"32337:122:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4717,"nodeType":"Block","src":"32602:59:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4706,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"32627:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32632:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32627:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"323536","id":4709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32635:3:17","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323535","id":4710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32640:3:17","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":4712,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"32651:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4711,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[4367,4401],"referencedDeclaration":4367,"src":"32646:4:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32646:7:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32640:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4705,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"32619:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32619:35:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4704,"id":4716,"nodeType":"Return","src":"32612:42:17"}]},"documentation":{"id":4698,"nodeType":"StructuredDocumentation","src":"32465:76:17","text":" @dev Counts the number of leading zero bits in a uint256."},"id":4718,"implemented":true,"kind":"function","modifiers":[],"name":"clz","nameLocation":"32555:3:17","nodeType":"FunctionDefinition","parameters":{"id":4701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4700,"mutability":"mutable","name":"x","nameLocation":"32567:1:17","nodeType":"VariableDeclaration","scope":4718,"src":"32559:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4699,"name":"uint256","nodeType":"ElementaryTypeName","src":"32559:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32558:11:17"},"returnParameters":{"id":4704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4718,"src":"32593:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4702,"name":"uint256","nodeType":"ElementaryTypeName","src":"32593:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32592:9:17"},"scope":4719,"src":"32546:115:17","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4720,"src":"281:32382:17","usedErrors":[],"usedEvents":[]}],"src":"103:32561:17"},"id":17},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[6484]},"id":6485,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4721,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:18"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":4722,"nodeType":"StructuredDocumentation","src":"218:550:18","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":6484,"linearizedBaseContracts":[6484],"name":"SafeCast","nameLocation":"777:8:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4723,"nodeType":"StructuredDocumentation","src":"792:67:18","text":" @dev Value doesn't fit in a uint of `bits` size."},"errorSelector":"6dfcc650","id":4729,"name":"SafeCastOverflowedUintDowncast","nameLocation":"870:30:18","nodeType":"ErrorDefinition","parameters":{"id":4728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4725,"mutability":"mutable","name":"bits","nameLocation":"907:4:18","nodeType":"VariableDeclaration","scope":4729,"src":"901:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4724,"name":"uint8","nodeType":"ElementaryTypeName","src":"901:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4727,"mutability":"mutable","name":"value","nameLocation":"921:5:18","nodeType":"VariableDeclaration","scope":4729,"src":"913:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4726,"name":"uint256","nodeType":"ElementaryTypeName","src":"913:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"900:27:18"},"src":"864:64:18"},{"documentation":{"id":4730,"nodeType":"StructuredDocumentation","src":"934:74:18","text":" @dev An int value doesn't fit in a uint of `bits` size."},"errorSelector":"a8ce4432","id":4734,"name":"SafeCastOverflowedIntToUint","nameLocation":"1019:27:18","nodeType":"ErrorDefinition","parameters":{"id":4733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4732,"mutability":"mutable","name":"value","nameLocation":"1054:5:18","nodeType":"VariableDeclaration","scope":4734,"src":"1047:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4731,"name":"int256","nodeType":"ElementaryTypeName","src":"1047:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1046:14:18"},"src":"1013:48:18"},{"documentation":{"id":4735,"nodeType":"StructuredDocumentation","src":"1067:67:18","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":4741,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1145:29:18","nodeType":"ErrorDefinition","parameters":{"id":4740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4737,"mutability":"mutable","name":"bits","nameLocation":"1181:4:18","nodeType":"VariableDeclaration","scope":4741,"src":"1175:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4736,"name":"uint8","nodeType":"ElementaryTypeName","src":"1175:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4739,"mutability":"mutable","name":"value","nameLocation":"1194:5:18","nodeType":"VariableDeclaration","scope":4741,"src":"1187:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4738,"name":"int256","nodeType":"ElementaryTypeName","src":"1187:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1174:26:18"},"src":"1139:62:18"},{"documentation":{"id":4742,"nodeType":"StructuredDocumentation","src":"1207:74:18","text":" @dev A uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":4746,"name":"SafeCastOverflowedUintToInt","nameLocation":"1292:27:18","nodeType":"ErrorDefinition","parameters":{"id":4745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4744,"mutability":"mutable","name":"value","nameLocation":"1328:5:18","nodeType":"VariableDeclaration","scope":4746,"src":"1320:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4743,"name":"uint256","nodeType":"ElementaryTypeName","src":"1320:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1319:15:18"},"src":"1286:49:18"},{"body":{"id":4773,"nodeType":"Block","src":"1692:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"1706:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1719:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":4756,"name":"uint248","nodeType":"ElementaryTypeName","src":"1719:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":4755,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1714:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1714:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":4759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1728:3:18","memberName":"max","nodeType":"MemberAccess","src":"1714:17:18","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1706:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4767,"nodeType":"IfStatement","src":"1702:105:18","trueBody":{"id":4766,"nodeType":"Block","src":"1733:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":4762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1785:3:18","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":4763,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"1790:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4761,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"1754:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1754:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4765,"nodeType":"RevertStatement","src":"1747:49:18"}]}},{"expression":{"arguments":[{"id":4770,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"1831:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1823:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":4768,"name":"uint248","nodeType":"ElementaryTypeName","src":"1823:7:18","typeDescriptions":{}}},"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":4753,"id":4772,"nodeType":"Return","src":"1816:21:18"}]},"documentation":{"id":4747,"nodeType":"StructuredDocumentation","src":"1341:280:18","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":4774,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1635:9:18","nodeType":"FunctionDefinition","parameters":{"id":4750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4749,"mutability":"mutable","name":"value","nameLocation":"1653:5:18","nodeType":"VariableDeclaration","scope":4774,"src":"1645:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4748,"name":"uint256","nodeType":"ElementaryTypeName","src":"1645:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1644:15:18"},"returnParameters":{"id":4753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4774,"src":"1683:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":4751,"name":"uint248","nodeType":"ElementaryTypeName","src":"1683:7:18","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1682:9:18"},"scope":6484,"src":"1626:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4801,"nodeType":"Block","src":"2201:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4777,"src":"2215:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2228:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":4784,"name":"uint240","nodeType":"ElementaryTypeName","src":"2228:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":4783,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2223:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2223:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":4787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2237:3:18","memberName":"max","nodeType":"MemberAccess","src":"2223:17:18","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2215:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4795,"nodeType":"IfStatement","src":"2211:105:18","trueBody":{"id":4794,"nodeType":"Block","src":"2242:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":4790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2294:3:18","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":4791,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4777,"src":"2299:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4789,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"2263:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4793,"nodeType":"RevertStatement","src":"2256:49:18"}]}},{"expression":{"arguments":[{"id":4798,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4777,"src":"2340:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2332:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":4796,"name":"uint240","nodeType":"ElementaryTypeName","src":"2332:7:18","typeDescriptions":{}}},"id":4799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2332:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":4781,"id":4800,"nodeType":"Return","src":"2325:21:18"}]},"documentation":{"id":4775,"nodeType":"StructuredDocumentation","src":"1850:280:18","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":4802,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2144:9:18","nodeType":"FunctionDefinition","parameters":{"id":4778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4777,"mutability":"mutable","name":"value","nameLocation":"2162:5:18","nodeType":"VariableDeclaration","scope":4802,"src":"2154:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4776,"name":"uint256","nodeType":"ElementaryTypeName","src":"2154:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2153:15:18"},"returnParameters":{"id":4781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4802,"src":"2192:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":4779,"name":"uint240","nodeType":"ElementaryTypeName","src":"2192:7:18","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2191:9:18"},"scope":6484,"src":"2135:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4829,"nodeType":"Block","src":"2710:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"2724:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2737:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":4812,"name":"uint232","nodeType":"ElementaryTypeName","src":"2737:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":4811,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2732:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2732:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":4815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2746:3:18","memberName":"max","nodeType":"MemberAccess","src":"2732:17:18","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2724:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4823,"nodeType":"IfStatement","src":"2720:105:18","trueBody":{"id":4822,"nodeType":"Block","src":"2751:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":4818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2803:3:18","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":4819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"2808:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4817,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"2772:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4821,"nodeType":"RevertStatement","src":"2765:49:18"}]}},{"expression":{"arguments":[{"id":4826,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"2849:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2841:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":4824,"name":"uint232","nodeType":"ElementaryTypeName","src":"2841:7:18","typeDescriptions":{}}},"id":4827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2841:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":4809,"id":4828,"nodeType":"Return","src":"2834:21:18"}]},"documentation":{"id":4803,"nodeType":"StructuredDocumentation","src":"2359:280:18","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":4830,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2653:9:18","nodeType":"FunctionDefinition","parameters":{"id":4806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4805,"mutability":"mutable","name":"value","nameLocation":"2671:5:18","nodeType":"VariableDeclaration","scope":4830,"src":"2663:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4804,"name":"uint256","nodeType":"ElementaryTypeName","src":"2663:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2662:15:18"},"returnParameters":{"id":4809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4808,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4830,"src":"2701:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":4807,"name":"uint232","nodeType":"ElementaryTypeName","src":"2701:7:18","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2700:9:18"},"scope":6484,"src":"2644:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4857,"nodeType":"Block","src":"3219:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4833,"src":"3233:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3246:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":4840,"name":"uint224","nodeType":"ElementaryTypeName","src":"3246:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":4839,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3241:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3241:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":4843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3255:3:18","memberName":"max","nodeType":"MemberAccess","src":"3241:17:18","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3233:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4851,"nodeType":"IfStatement","src":"3229:105:18","trueBody":{"id":4850,"nodeType":"Block","src":"3260:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":4846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3312:3:18","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":4847,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4833,"src":"3317:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4845,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"3281:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3281:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4849,"nodeType":"RevertStatement","src":"3274:49:18"}]}},{"expression":{"arguments":[{"id":4854,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4833,"src":"3358:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3350:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":4852,"name":"uint224","nodeType":"ElementaryTypeName","src":"3350:7:18","typeDescriptions":{}}},"id":4855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3350:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":4837,"id":4856,"nodeType":"Return","src":"3343:21:18"}]},"documentation":{"id":4831,"nodeType":"StructuredDocumentation","src":"2868:280:18","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":4858,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3162:9:18","nodeType":"FunctionDefinition","parameters":{"id":4834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4833,"mutability":"mutable","name":"value","nameLocation":"3180:5:18","nodeType":"VariableDeclaration","scope":4858,"src":"3172:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4832,"name":"uint256","nodeType":"ElementaryTypeName","src":"3172:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3171:15:18"},"returnParameters":{"id":4837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4836,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4858,"src":"3210:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4835,"name":"uint224","nodeType":"ElementaryTypeName","src":"3210:7:18","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3209:9:18"},"scope":6484,"src":"3153:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4885,"nodeType":"Block","src":"3728:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4866,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4861,"src":"3742:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3755:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":4868,"name":"uint216","nodeType":"ElementaryTypeName","src":"3755:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":4867,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3750:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3750:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":4871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3764:3:18","memberName":"max","nodeType":"MemberAccess","src":"3750:17:18","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3742:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4879,"nodeType":"IfStatement","src":"3738:105:18","trueBody":{"id":4878,"nodeType":"Block","src":"3769:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":4874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3821:3:18","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":4875,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4861,"src":"3826:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4873,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"3790:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3790:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4877,"nodeType":"RevertStatement","src":"3783:49:18"}]}},{"expression":{"arguments":[{"id":4882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4861,"src":"3867:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3859:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":4880,"name":"uint216","nodeType":"ElementaryTypeName","src":"3859:7:18","typeDescriptions":{}}},"id":4883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":4865,"id":4884,"nodeType":"Return","src":"3852:21:18"}]},"documentation":{"id":4859,"nodeType":"StructuredDocumentation","src":"3377:280:18","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":4886,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3671:9:18","nodeType":"FunctionDefinition","parameters":{"id":4862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4861,"mutability":"mutable","name":"value","nameLocation":"3689:5:18","nodeType":"VariableDeclaration","scope":4886,"src":"3681:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4860,"name":"uint256","nodeType":"ElementaryTypeName","src":"3681:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3680:15:18"},"returnParameters":{"id":4865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4864,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4886,"src":"3719:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":4863,"name":"uint216","nodeType":"ElementaryTypeName","src":"3719:7:18","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3718:9:18"},"scope":6484,"src":"3662:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4913,"nodeType":"Block","src":"4237:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"4251:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4264:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":4896,"name":"uint208","nodeType":"ElementaryTypeName","src":"4264:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":4895,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4259:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4259:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":4899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4273:3:18","memberName":"max","nodeType":"MemberAccess","src":"4259:17:18","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4251:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4907,"nodeType":"IfStatement","src":"4247:105:18","trueBody":{"id":4906,"nodeType":"Block","src":"4278:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":4902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4330:3:18","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":4903,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"4335:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4901,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"4299:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4299:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4905,"nodeType":"RevertStatement","src":"4292:49:18"}]}},{"expression":{"arguments":[{"id":4910,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"4376:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4368:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":4908,"name":"uint208","nodeType":"ElementaryTypeName","src":"4368:7:18","typeDescriptions":{}}},"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4368:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":4893,"id":4912,"nodeType":"Return","src":"4361:21:18"}]},"documentation":{"id":4887,"nodeType":"StructuredDocumentation","src":"3886:280:18","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":4914,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4180:9:18","nodeType":"FunctionDefinition","parameters":{"id":4890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4889,"mutability":"mutable","name":"value","nameLocation":"4198:5:18","nodeType":"VariableDeclaration","scope":4914,"src":"4190:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4888,"name":"uint256","nodeType":"ElementaryTypeName","src":"4190:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4189:15:18"},"returnParameters":{"id":4893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4914,"src":"4228:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":4891,"name":"uint208","nodeType":"ElementaryTypeName","src":"4228:7:18","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4227:9:18"},"scope":6484,"src":"4171:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4941,"nodeType":"Block","src":"4746:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"4760:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4773:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":4924,"name":"uint200","nodeType":"ElementaryTypeName","src":"4773:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":4923,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4768:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4768:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":4927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4782:3:18","memberName":"max","nodeType":"MemberAccess","src":"4768:17:18","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4760:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4935,"nodeType":"IfStatement","src":"4756:105:18","trueBody":{"id":4934,"nodeType":"Block","src":"4787:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":4930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:3:18","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":4931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"4844:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4929,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"4808:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4933,"nodeType":"RevertStatement","src":"4801:49:18"}]}},{"expression":{"arguments":[{"id":4938,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"4885:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4877:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":4936,"name":"uint200","nodeType":"ElementaryTypeName","src":"4877:7:18","typeDescriptions":{}}},"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4877:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":4921,"id":4940,"nodeType":"Return","src":"4870:21:18"}]},"documentation":{"id":4915,"nodeType":"StructuredDocumentation","src":"4395:280:18","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":4942,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4689:9:18","nodeType":"FunctionDefinition","parameters":{"id":4918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4917,"mutability":"mutable","name":"value","nameLocation":"4707:5:18","nodeType":"VariableDeclaration","scope":4942,"src":"4699:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4916,"name":"uint256","nodeType":"ElementaryTypeName","src":"4699:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4698:15:18"},"returnParameters":{"id":4921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4942,"src":"4737:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":4919,"name":"uint200","nodeType":"ElementaryTypeName","src":"4737:7:18","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4736:9:18"},"scope":6484,"src":"4680:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4969,"nodeType":"Block","src":"5255:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4945,"src":"5269:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5282:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":4952,"name":"uint192","nodeType":"ElementaryTypeName","src":"5282:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":4951,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5277:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5277:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":4955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5291:3:18","memberName":"max","nodeType":"MemberAccess","src":"5277:17:18","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5269:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4963,"nodeType":"IfStatement","src":"5265:105:18","trueBody":{"id":4962,"nodeType":"Block","src":"5296:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":4958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5348:3:18","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":4959,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4945,"src":"5353:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4957,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"5317:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5317:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4961,"nodeType":"RevertStatement","src":"5310:49:18"}]}},{"expression":{"arguments":[{"id":4966,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4945,"src":"5394:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5386:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":4964,"name":"uint192","nodeType":"ElementaryTypeName","src":"5386:7:18","typeDescriptions":{}}},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5386:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":4949,"id":4968,"nodeType":"Return","src":"5379:21:18"}]},"documentation":{"id":4943,"nodeType":"StructuredDocumentation","src":"4904:280:18","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":4970,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5198:9:18","nodeType":"FunctionDefinition","parameters":{"id":4946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4945,"mutability":"mutable","name":"value","nameLocation":"5216:5:18","nodeType":"VariableDeclaration","scope":4970,"src":"5208:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4944,"name":"uint256","nodeType":"ElementaryTypeName","src":"5208:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5207:15:18"},"returnParameters":{"id":4949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4948,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4970,"src":"5246:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":4947,"name":"uint192","nodeType":"ElementaryTypeName","src":"5246:7:18","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5245:9:18"},"scope":6484,"src":"5189:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4997,"nodeType":"Block","src":"5764:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"5778:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5791:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":4980,"name":"uint184","nodeType":"ElementaryTypeName","src":"5791:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":4979,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5786:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5786:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":4983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5800:3:18","memberName":"max","nodeType":"MemberAccess","src":"5786:17:18","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5778:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4991,"nodeType":"IfStatement","src":"5774:105:18","trueBody":{"id":4990,"nodeType":"Block","src":"5805:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":4986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5857:3:18","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":4987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"5862:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4985,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"5826:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":4988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5826:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4989,"nodeType":"RevertStatement","src":"5819:49:18"}]}},{"expression":{"arguments":[{"id":4994,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"5903:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5895:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":4992,"name":"uint184","nodeType":"ElementaryTypeName","src":"5895:7:18","typeDescriptions":{}}},"id":4995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5895:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":4977,"id":4996,"nodeType":"Return","src":"5888:21:18"}]},"documentation":{"id":4971,"nodeType":"StructuredDocumentation","src":"5413:280:18","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":4998,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5707:9:18","nodeType":"FunctionDefinition","parameters":{"id":4974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4973,"mutability":"mutable","name":"value","nameLocation":"5725:5:18","nodeType":"VariableDeclaration","scope":4998,"src":"5717:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4972,"name":"uint256","nodeType":"ElementaryTypeName","src":"5717:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5716:15:18"},"returnParameters":{"id":4977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4976,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4998,"src":"5755:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":4975,"name":"uint184","nodeType":"ElementaryTypeName","src":"5755:7:18","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5754:9:18"},"scope":6484,"src":"5698:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5025,"nodeType":"Block","src":"6273:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5006,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"6287:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6300:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5008,"name":"uint176","nodeType":"ElementaryTypeName","src":"6300:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":5007,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6295:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6295:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":5011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6309:3:18","memberName":"max","nodeType":"MemberAccess","src":"6295:17:18","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6287:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5019,"nodeType":"IfStatement","src":"6283:105:18","trueBody":{"id":5018,"nodeType":"Block","src":"6314:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":5014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6366:3:18","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":5015,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"6371:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5013,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"6335:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6335:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5017,"nodeType":"RevertStatement","src":"6328:49:18"}]}},{"expression":{"arguments":[{"id":5022,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"6412:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6404:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5020,"name":"uint176","nodeType":"ElementaryTypeName","src":"6404:7:18","typeDescriptions":{}}},"id":5023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6404:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":5005,"id":5024,"nodeType":"Return","src":"6397:21:18"}]},"documentation":{"id":4999,"nodeType":"StructuredDocumentation","src":"5922:280:18","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":5026,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6216:9:18","nodeType":"FunctionDefinition","parameters":{"id":5002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5001,"mutability":"mutable","name":"value","nameLocation":"6234:5:18","nodeType":"VariableDeclaration","scope":5026,"src":"6226:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5000,"name":"uint256","nodeType":"ElementaryTypeName","src":"6226:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6225:15:18"},"returnParameters":{"id":5005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5026,"src":"6264:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":5003,"name":"uint176","nodeType":"ElementaryTypeName","src":"6264:7:18","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6263:9:18"},"scope":6484,"src":"6207:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5053,"nodeType":"Block","src":"6782:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5034,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"6796:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6809:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5036,"name":"uint168","nodeType":"ElementaryTypeName","src":"6809:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":5035,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6804:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6804:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":5039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6818:3:18","memberName":"max","nodeType":"MemberAccess","src":"6804:17:18","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6796:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5047,"nodeType":"IfStatement","src":"6792:105:18","trueBody":{"id":5046,"nodeType":"Block","src":"6823:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":5042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6875:3:18","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":5043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"6880:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5041,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"6844:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6844:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5045,"nodeType":"RevertStatement","src":"6837:49:18"}]}},{"expression":{"arguments":[{"id":5050,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"6921:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6913:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5048,"name":"uint168","nodeType":"ElementaryTypeName","src":"6913:7:18","typeDescriptions":{}}},"id":5051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6913:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":5033,"id":5052,"nodeType":"Return","src":"6906:21:18"}]},"documentation":{"id":5027,"nodeType":"StructuredDocumentation","src":"6431:280:18","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":5054,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6725:9:18","nodeType":"FunctionDefinition","parameters":{"id":5030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5029,"mutability":"mutable","name":"value","nameLocation":"6743:5:18","nodeType":"VariableDeclaration","scope":5054,"src":"6735:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5028,"name":"uint256","nodeType":"ElementaryTypeName","src":"6735:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6734:15:18"},"returnParameters":{"id":5033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5054,"src":"6773:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":5031,"name":"uint168","nodeType":"ElementaryTypeName","src":"6773:7:18","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6772:9:18"},"scope":6484,"src":"6716:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5081,"nodeType":"Block","src":"7291:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"7305:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7318:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5064,"name":"uint160","nodeType":"ElementaryTypeName","src":"7318:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":5063,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7313:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7313:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":5067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7327:3:18","memberName":"max","nodeType":"MemberAccess","src":"7313:17:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7305:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5075,"nodeType":"IfStatement","src":"7301:105:18","trueBody":{"id":5074,"nodeType":"Block","src":"7332:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":5070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7384:3:18","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":5071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"7389:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5069,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"7353:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7353:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5073,"nodeType":"RevertStatement","src":"7346:49:18"}]}},{"expression":{"arguments":[{"id":5078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"7430:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7422:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5076,"name":"uint160","nodeType":"ElementaryTypeName","src":"7422:7:18","typeDescriptions":{}}},"id":5079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7422:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5061,"id":5080,"nodeType":"Return","src":"7415:21:18"}]},"documentation":{"id":5055,"nodeType":"StructuredDocumentation","src":"6940:280:18","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":5082,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7234:9:18","nodeType":"FunctionDefinition","parameters":{"id":5058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"mutability":"mutable","name":"value","nameLocation":"7252:5:18","nodeType":"VariableDeclaration","scope":5082,"src":"7244:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5056,"name":"uint256","nodeType":"ElementaryTypeName","src":"7244:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7243:15:18"},"returnParameters":{"id":5061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5082,"src":"7282:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5059,"name":"uint160","nodeType":"ElementaryTypeName","src":"7282:7:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7281:9:18"},"scope":6484,"src":"7225:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5109,"nodeType":"Block","src":"7800:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5085,"src":"7814:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7827:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5092,"name":"uint152","nodeType":"ElementaryTypeName","src":"7827:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":5091,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7822:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7822:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":5095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7836:3:18","memberName":"max","nodeType":"MemberAccess","src":"7822:17:18","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7814:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5103,"nodeType":"IfStatement","src":"7810:105:18","trueBody":{"id":5102,"nodeType":"Block","src":"7841:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":5098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7893:3:18","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":5099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5085,"src":"7898:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5097,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"7862:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7862:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5101,"nodeType":"RevertStatement","src":"7855:49:18"}]}},{"expression":{"arguments":[{"id":5106,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5085,"src":"7939:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7931:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5104,"name":"uint152","nodeType":"ElementaryTypeName","src":"7931:7:18","typeDescriptions":{}}},"id":5107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7931:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":5089,"id":5108,"nodeType":"Return","src":"7924:21:18"}]},"documentation":{"id":5083,"nodeType":"StructuredDocumentation","src":"7449:280:18","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":5110,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7743:9:18","nodeType":"FunctionDefinition","parameters":{"id":5086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5085,"mutability":"mutable","name":"value","nameLocation":"7761:5:18","nodeType":"VariableDeclaration","scope":5110,"src":"7753:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5084,"name":"uint256","nodeType":"ElementaryTypeName","src":"7753:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7752:15:18"},"returnParameters":{"id":5089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5110,"src":"7791:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":5087,"name":"uint152","nodeType":"ElementaryTypeName","src":"7791:7:18","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7790:9:18"},"scope":6484,"src":"7734:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5137,"nodeType":"Block","src":"8309:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5118,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"8323:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8336:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5120,"name":"uint144","nodeType":"ElementaryTypeName","src":"8336:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":5119,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8331:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8331:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":5123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8345:3:18","memberName":"max","nodeType":"MemberAccess","src":"8331:17:18","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8323:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5131,"nodeType":"IfStatement","src":"8319:105:18","trueBody":{"id":5130,"nodeType":"Block","src":"8350:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":5126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8402:3:18","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":5127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"8407:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5125,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"8371:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8371:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5129,"nodeType":"RevertStatement","src":"8364:49:18"}]}},{"expression":{"arguments":[{"id":5134,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"8448:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8440:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5132,"name":"uint144","nodeType":"ElementaryTypeName","src":"8440:7:18","typeDescriptions":{}}},"id":5135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8440:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":5117,"id":5136,"nodeType":"Return","src":"8433:21:18"}]},"documentation":{"id":5111,"nodeType":"StructuredDocumentation","src":"7958:280:18","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":5138,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8252:9:18","nodeType":"FunctionDefinition","parameters":{"id":5114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5113,"mutability":"mutable","name":"value","nameLocation":"8270:5:18","nodeType":"VariableDeclaration","scope":5138,"src":"8262:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5112,"name":"uint256","nodeType":"ElementaryTypeName","src":"8262:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8261:15:18"},"returnParameters":{"id":5117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5138,"src":"8300:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":5115,"name":"uint144","nodeType":"ElementaryTypeName","src":"8300:7:18","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8299:9:18"},"scope":6484,"src":"8243:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5165,"nodeType":"Block","src":"8818:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5146,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5141,"src":"8832:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8845:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5148,"name":"uint136","nodeType":"ElementaryTypeName","src":"8845:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":5147,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8840:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8840:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":5151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8854:3:18","memberName":"max","nodeType":"MemberAccess","src":"8840:17:18","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8832:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5159,"nodeType":"IfStatement","src":"8828:105:18","trueBody":{"id":5158,"nodeType":"Block","src":"8859:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":5154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8911:3:18","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":5155,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5141,"src":"8916:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5153,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"8880:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8880:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5157,"nodeType":"RevertStatement","src":"8873:49:18"}]}},{"expression":{"arguments":[{"id":5162,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5141,"src":"8957:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8949:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5160,"name":"uint136","nodeType":"ElementaryTypeName","src":"8949:7:18","typeDescriptions":{}}},"id":5163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8949:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":5145,"id":5164,"nodeType":"Return","src":"8942:21:18"}]},"documentation":{"id":5139,"nodeType":"StructuredDocumentation","src":"8467:280:18","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":5166,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8761:9:18","nodeType":"FunctionDefinition","parameters":{"id":5142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5141,"mutability":"mutable","name":"value","nameLocation":"8779:5:18","nodeType":"VariableDeclaration","scope":5166,"src":"8771:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5140,"name":"uint256","nodeType":"ElementaryTypeName","src":"8771:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8770:15:18"},"returnParameters":{"id":5145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5166,"src":"8809:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":5143,"name":"uint136","nodeType":"ElementaryTypeName","src":"8809:7:18","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8808:9:18"},"scope":6484,"src":"8752:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5193,"nodeType":"Block","src":"9327:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5174,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"9341:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9354:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5176,"name":"uint128","nodeType":"ElementaryTypeName","src":"9354:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":5175,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9349:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9349:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":5179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9363:3:18","memberName":"max","nodeType":"MemberAccess","src":"9349:17:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9341:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5187,"nodeType":"IfStatement","src":"9337:105:18","trueBody":{"id":5186,"nodeType":"Block","src":"9368:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":5182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:3:18","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":5183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"9425:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5181,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"9389:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9389:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5185,"nodeType":"RevertStatement","src":"9382:49:18"}]}},{"expression":{"arguments":[{"id":5190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"9466:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9458:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5188,"name":"uint128","nodeType":"ElementaryTypeName","src":"9458:7:18","typeDescriptions":{}}},"id":5191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9458:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":5173,"id":5192,"nodeType":"Return","src":"9451:21:18"}]},"documentation":{"id":5167,"nodeType":"StructuredDocumentation","src":"8976:280:18","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":5194,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9270:9:18","nodeType":"FunctionDefinition","parameters":{"id":5170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5169,"mutability":"mutable","name":"value","nameLocation":"9288:5:18","nodeType":"VariableDeclaration","scope":5194,"src":"9280:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5168,"name":"uint256","nodeType":"ElementaryTypeName","src":"9280:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9279:15:18"},"returnParameters":{"id":5173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5194,"src":"9318:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5171,"name":"uint128","nodeType":"ElementaryTypeName","src":"9318:7:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9317:9:18"},"scope":6484,"src":"9261:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5221,"nodeType":"Block","src":"9836:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5202,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5197,"src":"9850:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9863:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5204,"name":"uint120","nodeType":"ElementaryTypeName","src":"9863:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":5203,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9858:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9858:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":5207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9872:3:18","memberName":"max","nodeType":"MemberAccess","src":"9858:17:18","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9850:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5215,"nodeType":"IfStatement","src":"9846:105:18","trueBody":{"id":5214,"nodeType":"Block","src":"9877:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":5210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9929:3:18","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":5211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5197,"src":"9934:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5209,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"9898:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9898:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5213,"nodeType":"RevertStatement","src":"9891:49:18"}]}},{"expression":{"arguments":[{"id":5218,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5197,"src":"9975:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9967:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5216,"name":"uint120","nodeType":"ElementaryTypeName","src":"9967:7:18","typeDescriptions":{}}},"id":5219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9967:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":5201,"id":5220,"nodeType":"Return","src":"9960:21:18"}]},"documentation":{"id":5195,"nodeType":"StructuredDocumentation","src":"9485:280:18","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":5222,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9779:9:18","nodeType":"FunctionDefinition","parameters":{"id":5198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5197,"mutability":"mutable","name":"value","nameLocation":"9797:5:18","nodeType":"VariableDeclaration","scope":5222,"src":"9789:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5196,"name":"uint256","nodeType":"ElementaryTypeName","src":"9789:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9788:15:18"},"returnParameters":{"id":5201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5200,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5222,"src":"9827:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":5199,"name":"uint120","nodeType":"ElementaryTypeName","src":"9827:7:18","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9826:9:18"},"scope":6484,"src":"9770:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5249,"nodeType":"Block","src":"10345:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5230,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5225,"src":"10359:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10372:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5232,"name":"uint112","nodeType":"ElementaryTypeName","src":"10372:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":5231,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10367:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10367:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":5235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10381:3:18","memberName":"max","nodeType":"MemberAccess","src":"10367:17:18","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10359:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5243,"nodeType":"IfStatement","src":"10355:105:18","trueBody":{"id":5242,"nodeType":"Block","src":"10386:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":5238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10438:3:18","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":5239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5225,"src":"10443:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5237,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"10407:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10407:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5241,"nodeType":"RevertStatement","src":"10400:49:18"}]}},{"expression":{"arguments":[{"id":5246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5225,"src":"10484:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10476:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5244,"name":"uint112","nodeType":"ElementaryTypeName","src":"10476:7:18","typeDescriptions":{}}},"id":5247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10476:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":5229,"id":5248,"nodeType":"Return","src":"10469:21:18"}]},"documentation":{"id":5223,"nodeType":"StructuredDocumentation","src":"9994:280:18","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":5250,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10288:9:18","nodeType":"FunctionDefinition","parameters":{"id":5226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5225,"mutability":"mutable","name":"value","nameLocation":"10306:5:18","nodeType":"VariableDeclaration","scope":5250,"src":"10298:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5224,"name":"uint256","nodeType":"ElementaryTypeName","src":"10298:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10297:15:18"},"returnParameters":{"id":5229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5250,"src":"10336:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":5227,"name":"uint112","nodeType":"ElementaryTypeName","src":"10336:7:18","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10335:9:18"},"scope":6484,"src":"10279:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5277,"nodeType":"Block","src":"10854:152:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5253,"src":"10868:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10881:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5260,"name":"uint104","nodeType":"ElementaryTypeName","src":"10881:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":5259,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10876:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10876:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":5263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10890:3:18","memberName":"max","nodeType":"MemberAccess","src":"10876:17:18","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10868:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5271,"nodeType":"IfStatement","src":"10864:105:18","trueBody":{"id":5270,"nodeType":"Block","src":"10895:74:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":5266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:3:18","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":5267,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5253,"src":"10952:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5265,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"10916:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10916:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5269,"nodeType":"RevertStatement","src":"10909:49:18"}]}},{"expression":{"arguments":[{"id":5274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5253,"src":"10993:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10985:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5272,"name":"uint104","nodeType":"ElementaryTypeName","src":"10985:7:18","typeDescriptions":{}}},"id":5275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10985:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":5257,"id":5276,"nodeType":"Return","src":"10978:21:18"}]},"documentation":{"id":5251,"nodeType":"StructuredDocumentation","src":"10503:280:18","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":5278,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10797:9:18","nodeType":"FunctionDefinition","parameters":{"id":5254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5253,"mutability":"mutable","name":"value","nameLocation":"10815:5:18","nodeType":"VariableDeclaration","scope":5278,"src":"10807:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5252,"name":"uint256","nodeType":"ElementaryTypeName","src":"10807:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10806:15:18"},"returnParameters":{"id":5257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5278,"src":"10845:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5255,"name":"uint104","nodeType":"ElementaryTypeName","src":"10845:7:18","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10844:9:18"},"scope":6484,"src":"10788:218:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5305,"nodeType":"Block","src":"11357:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5286,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"11371:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11384:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5288,"name":"uint96","nodeType":"ElementaryTypeName","src":"11384:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":5287,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11379:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11379:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":5291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11392:3:18","memberName":"max","nodeType":"MemberAccess","src":"11379:16:18","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11371:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5299,"nodeType":"IfStatement","src":"11367:103:18","trueBody":{"id":5298,"nodeType":"Block","src":"11397:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":5294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:2:18","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":5295,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"11453:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5293,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"11418:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11418:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5297,"nodeType":"RevertStatement","src":"11411:48:18"}]}},{"expression":{"arguments":[{"id":5302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"11493:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11486:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5300,"name":"uint96","nodeType":"ElementaryTypeName","src":"11486:6:18","typeDescriptions":{}}},"id":5303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11486:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":5285,"id":5304,"nodeType":"Return","src":"11479:20:18"}]},"documentation":{"id":5279,"nodeType":"StructuredDocumentation","src":"11012:276:18","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":5306,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11302:8:18","nodeType":"FunctionDefinition","parameters":{"id":5282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5281,"mutability":"mutable","name":"value","nameLocation":"11319:5:18","nodeType":"VariableDeclaration","scope":5306,"src":"11311:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5280,"name":"uint256","nodeType":"ElementaryTypeName","src":"11311:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11310:15:18"},"returnParameters":{"id":5285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5306,"src":"11349:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5283,"name":"uint96","nodeType":"ElementaryTypeName","src":"11349:6:18","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11348:8:18"},"scope":6484,"src":"11293:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5333,"nodeType":"Block","src":"11857:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5309,"src":"11871:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11884:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5316,"name":"uint88","nodeType":"ElementaryTypeName","src":"11884:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":5315,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11879:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11879:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":5319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11892:3:18","memberName":"max","nodeType":"MemberAccess","src":"11879:16:18","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11871:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5327,"nodeType":"IfStatement","src":"11867:103:18","trueBody":{"id":5326,"nodeType":"Block","src":"11897:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":5322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11949:2:18","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":5323,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5309,"src":"11953:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5321,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"11918:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11918:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5325,"nodeType":"RevertStatement","src":"11911:48:18"}]}},{"expression":{"arguments":[{"id":5330,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5309,"src":"11993:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11986:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5328,"name":"uint88","nodeType":"ElementaryTypeName","src":"11986:6:18","typeDescriptions":{}}},"id":5331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11986:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":5313,"id":5332,"nodeType":"Return","src":"11979:20:18"}]},"documentation":{"id":5307,"nodeType":"StructuredDocumentation","src":"11512:276:18","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":5334,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11802:8:18","nodeType":"FunctionDefinition","parameters":{"id":5310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5309,"mutability":"mutable","name":"value","nameLocation":"11819:5:18","nodeType":"VariableDeclaration","scope":5334,"src":"11811:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5308,"name":"uint256","nodeType":"ElementaryTypeName","src":"11811:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11810:15:18"},"returnParameters":{"id":5313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5334,"src":"11849:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":5311,"name":"uint88","nodeType":"ElementaryTypeName","src":"11849:6:18","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11848:8:18"},"scope":6484,"src":"11793:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5361,"nodeType":"Block","src":"12357:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5337,"src":"12371:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12384:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":5344,"name":"uint80","nodeType":"ElementaryTypeName","src":"12384:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":5343,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12379:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12379:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":5347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12392:3:18","memberName":"max","nodeType":"MemberAccess","src":"12379:16:18","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12371:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5355,"nodeType":"IfStatement","src":"12367:103:18","trueBody":{"id":5354,"nodeType":"Block","src":"12397:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":5350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12449:2:18","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":5351,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5337,"src":"12453:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5349,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"12418:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12418:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5353,"nodeType":"RevertStatement","src":"12411:48:18"}]}},{"expression":{"arguments":[{"id":5358,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5337,"src":"12493:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12486:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":5356,"name":"uint80","nodeType":"ElementaryTypeName","src":"12486:6:18","typeDescriptions":{}}},"id":5359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12486:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":5341,"id":5360,"nodeType":"Return","src":"12479:20:18"}]},"documentation":{"id":5335,"nodeType":"StructuredDocumentation","src":"12012:276:18","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":5362,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12302:8:18","nodeType":"FunctionDefinition","parameters":{"id":5338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5337,"mutability":"mutable","name":"value","nameLocation":"12319:5:18","nodeType":"VariableDeclaration","scope":5362,"src":"12311:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5336,"name":"uint256","nodeType":"ElementaryTypeName","src":"12311:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12310:15:18"},"returnParameters":{"id":5341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5340,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5362,"src":"12349:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":5339,"name":"uint80","nodeType":"ElementaryTypeName","src":"12349:6:18","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12348:8:18"},"scope":6484,"src":"12293:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5389,"nodeType":"Block","src":"12857:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5370,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"12871:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12884:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":5372,"name":"uint72","nodeType":"ElementaryTypeName","src":"12884:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":5371,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12879:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12879:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":5375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12892:3:18","memberName":"max","nodeType":"MemberAccess","src":"12879:16:18","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12871:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5383,"nodeType":"IfStatement","src":"12867:103:18","trueBody":{"id":5382,"nodeType":"Block","src":"12897:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":5378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12949:2:18","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":5379,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"12953:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5377,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"12918:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12918:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5381,"nodeType":"RevertStatement","src":"12911:48:18"}]}},{"expression":{"arguments":[{"id":5386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"12993:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12986:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":5384,"name":"uint72","nodeType":"ElementaryTypeName","src":"12986:6:18","typeDescriptions":{}}},"id":5387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12986:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":5369,"id":5388,"nodeType":"Return","src":"12979:20:18"}]},"documentation":{"id":5363,"nodeType":"StructuredDocumentation","src":"12512:276:18","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":5390,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12802:8:18","nodeType":"FunctionDefinition","parameters":{"id":5366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5365,"mutability":"mutable","name":"value","nameLocation":"12819:5:18","nodeType":"VariableDeclaration","scope":5390,"src":"12811:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5364,"name":"uint256","nodeType":"ElementaryTypeName","src":"12811:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12810:15:18"},"returnParameters":{"id":5369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5368,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5390,"src":"12849:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":5367,"name":"uint72","nodeType":"ElementaryTypeName","src":"12849:6:18","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12848:8:18"},"scope":6484,"src":"12793:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5417,"nodeType":"Block","src":"13357:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5393,"src":"13371:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13384:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5400,"name":"uint64","nodeType":"ElementaryTypeName","src":"13384:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":5399,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13379:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13379:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":5403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13392:3:18","memberName":"max","nodeType":"MemberAccess","src":"13379:16:18","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13371:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5411,"nodeType":"IfStatement","src":"13367:103:18","trueBody":{"id":5410,"nodeType":"Block","src":"13397:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":5406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13449:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":5407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5393,"src":"13453:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5405,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"13418:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13418:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5409,"nodeType":"RevertStatement","src":"13411:48:18"}]}},{"expression":{"arguments":[{"id":5414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5393,"src":"13493:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13486:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5412,"name":"uint64","nodeType":"ElementaryTypeName","src":"13486:6:18","typeDescriptions":{}}},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13486:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5397,"id":5416,"nodeType":"Return","src":"13479:20:18"}]},"documentation":{"id":5391,"nodeType":"StructuredDocumentation","src":"13012:276:18","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":5418,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13302:8:18","nodeType":"FunctionDefinition","parameters":{"id":5394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5393,"mutability":"mutable","name":"value","nameLocation":"13319:5:18","nodeType":"VariableDeclaration","scope":5418,"src":"13311:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5392,"name":"uint256","nodeType":"ElementaryTypeName","src":"13311:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13310:15:18"},"returnParameters":{"id":5397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5418,"src":"13349:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5395,"name":"uint64","nodeType":"ElementaryTypeName","src":"13349:6:18","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13348:8:18"},"scope":6484,"src":"13293:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5445,"nodeType":"Block","src":"13857:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5426,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5421,"src":"13871:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13884:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":5428,"name":"uint56","nodeType":"ElementaryTypeName","src":"13884:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":5427,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13879:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13879:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":5431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13892:3:18","memberName":"max","nodeType":"MemberAccess","src":"13879:16:18","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13871:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5439,"nodeType":"IfStatement","src":"13867:103:18","trueBody":{"id":5438,"nodeType":"Block","src":"13897:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":5434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13949:2:18","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":5435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5421,"src":"13953:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5433,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"13918:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13918:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5437,"nodeType":"RevertStatement","src":"13911:48:18"}]}},{"expression":{"arguments":[{"id":5442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5421,"src":"13993:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13986:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":5440,"name":"uint56","nodeType":"ElementaryTypeName","src":"13986:6:18","typeDescriptions":{}}},"id":5443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13986:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":5425,"id":5444,"nodeType":"Return","src":"13979:20:18"}]},"documentation":{"id":5419,"nodeType":"StructuredDocumentation","src":"13512:276:18","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":5446,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13802:8:18","nodeType":"FunctionDefinition","parameters":{"id":5422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5421,"mutability":"mutable","name":"value","nameLocation":"13819:5:18","nodeType":"VariableDeclaration","scope":5446,"src":"13811:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5420,"name":"uint256","nodeType":"ElementaryTypeName","src":"13811:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13810:15:18"},"returnParameters":{"id":5425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5424,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5446,"src":"13849:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":5423,"name":"uint56","nodeType":"ElementaryTypeName","src":"13849:6:18","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13848:8:18"},"scope":6484,"src":"13793:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5473,"nodeType":"Block","src":"14357:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5449,"src":"14371:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14384:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5456,"name":"uint48","nodeType":"ElementaryTypeName","src":"14384:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":5455,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14379:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14379:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":5459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14392:3:18","memberName":"max","nodeType":"MemberAccess","src":"14379:16:18","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14371:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5467,"nodeType":"IfStatement","src":"14367:103:18","trueBody":{"id":5466,"nodeType":"Block","src":"14397:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":5462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14449:2:18","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":5463,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5449,"src":"14453:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5461,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"14418:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14418:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5465,"nodeType":"RevertStatement","src":"14411:48:18"}]}},{"expression":{"arguments":[{"id":5470,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5449,"src":"14493:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14486:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5468,"name":"uint48","nodeType":"ElementaryTypeName","src":"14486:6:18","typeDescriptions":{}}},"id":5471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14486:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":5453,"id":5472,"nodeType":"Return","src":"14479:20:18"}]},"documentation":{"id":5447,"nodeType":"StructuredDocumentation","src":"14012:276:18","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":5474,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14302:8:18","nodeType":"FunctionDefinition","parameters":{"id":5450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5449,"mutability":"mutable","name":"value","nameLocation":"14319:5:18","nodeType":"VariableDeclaration","scope":5474,"src":"14311:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5448,"name":"uint256","nodeType":"ElementaryTypeName","src":"14311:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14310:15:18"},"returnParameters":{"id":5453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5474,"src":"14349:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5451,"name":"uint48","nodeType":"ElementaryTypeName","src":"14349:6:18","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14348:8:18"},"scope":6484,"src":"14293:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5501,"nodeType":"Block","src":"14857:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5482,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5477,"src":"14871:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14884:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":5484,"name":"uint40","nodeType":"ElementaryTypeName","src":"14884:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":5483,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14879:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14879:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":5487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14892:3:18","memberName":"max","nodeType":"MemberAccess","src":"14879:16:18","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14871:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5495,"nodeType":"IfStatement","src":"14867:103:18","trueBody":{"id":5494,"nodeType":"Block","src":"14897:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":5490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14949:2:18","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":5491,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5477,"src":"14953:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5489,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"14918:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14918:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5493,"nodeType":"RevertStatement","src":"14911:48:18"}]}},{"expression":{"arguments":[{"id":5498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5477,"src":"14993:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14986:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":5496,"name":"uint40","nodeType":"ElementaryTypeName","src":"14986:6:18","typeDescriptions":{}}},"id":5499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14986:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":5481,"id":5500,"nodeType":"Return","src":"14979:20:18"}]},"documentation":{"id":5475,"nodeType":"StructuredDocumentation","src":"14512:276:18","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":5502,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14802:8:18","nodeType":"FunctionDefinition","parameters":{"id":5478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5477,"mutability":"mutable","name":"value","nameLocation":"14819:5:18","nodeType":"VariableDeclaration","scope":5502,"src":"14811:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5476,"name":"uint256","nodeType":"ElementaryTypeName","src":"14811:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14810:15:18"},"returnParameters":{"id":5481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5480,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5502,"src":"14849:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":5479,"name":"uint40","nodeType":"ElementaryTypeName","src":"14849:6:18","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14848:8:18"},"scope":6484,"src":"14793:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5529,"nodeType":"Block","src":"15357:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"15371:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15384:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5512,"name":"uint32","nodeType":"ElementaryTypeName","src":"15384:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":5511,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15379:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15379:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":5515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15392:3:18","memberName":"max","nodeType":"MemberAccess","src":"15379:16:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15371:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5523,"nodeType":"IfStatement","src":"15367:103:18","trueBody":{"id":5522,"nodeType":"Block","src":"15397:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":5518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15449:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":5519,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"15453:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5517,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"15418:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15418:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5521,"nodeType":"RevertStatement","src":"15411:48:18"}]}},{"expression":{"arguments":[{"id":5526,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"15493:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15486:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5524,"name":"uint32","nodeType":"ElementaryTypeName","src":"15486:6:18","typeDescriptions":{}}},"id":5527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15486:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5509,"id":5528,"nodeType":"Return","src":"15479:20:18"}]},"documentation":{"id":5503,"nodeType":"StructuredDocumentation","src":"15012:276:18","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":5530,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15302:8:18","nodeType":"FunctionDefinition","parameters":{"id":5506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5505,"mutability":"mutable","name":"value","nameLocation":"15319:5:18","nodeType":"VariableDeclaration","scope":5530,"src":"15311:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5504,"name":"uint256","nodeType":"ElementaryTypeName","src":"15311:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15310:15:18"},"returnParameters":{"id":5509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5508,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5530,"src":"15349:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5507,"name":"uint32","nodeType":"ElementaryTypeName","src":"15349:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15348:8:18"},"scope":6484,"src":"15293:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5557,"nodeType":"Block","src":"15857:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5533,"src":"15871:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15884:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":5540,"name":"uint24","nodeType":"ElementaryTypeName","src":"15884:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":5539,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15879:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15879:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":5543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15892:3:18","memberName":"max","nodeType":"MemberAccess","src":"15879:16:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15871:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5551,"nodeType":"IfStatement","src":"15867:103:18","trueBody":{"id":5550,"nodeType":"Block","src":"15897:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":5546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15949:2:18","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":5547,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5533,"src":"15953:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5545,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"15918:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15918:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5549,"nodeType":"RevertStatement","src":"15911:48:18"}]}},{"expression":{"arguments":[{"id":5554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5533,"src":"15993:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15986:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":5552,"name":"uint24","nodeType":"ElementaryTypeName","src":"15986:6:18","typeDescriptions":{}}},"id":5555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15986:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":5537,"id":5556,"nodeType":"Return","src":"15979:20:18"}]},"documentation":{"id":5531,"nodeType":"StructuredDocumentation","src":"15512:276:18","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":5558,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15802:8:18","nodeType":"FunctionDefinition","parameters":{"id":5534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5533,"mutability":"mutable","name":"value","nameLocation":"15819:5:18","nodeType":"VariableDeclaration","scope":5558,"src":"15811:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5532,"name":"uint256","nodeType":"ElementaryTypeName","src":"15811:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15810:15:18"},"returnParameters":{"id":5537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5536,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5558,"src":"15849:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5535,"name":"uint24","nodeType":"ElementaryTypeName","src":"15849:6:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15848:8:18"},"scope":6484,"src":"15793:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5585,"nodeType":"Block","src":"16357:149:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5566,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"16371:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16384:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":5568,"name":"uint16","nodeType":"ElementaryTypeName","src":"16384:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":5567,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16379:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16379:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":5571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16392:3:18","memberName":"max","nodeType":"MemberAccess","src":"16379:16:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16371:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5579,"nodeType":"IfStatement","src":"16367:103:18","trueBody":{"id":5578,"nodeType":"Block","src":"16397:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":5574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16449:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":5575,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"16453:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5573,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"16418:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16418:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5577,"nodeType":"RevertStatement","src":"16411:48:18"}]}},{"expression":{"arguments":[{"id":5582,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"16493:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16486:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":5580,"name":"uint16","nodeType":"ElementaryTypeName","src":"16486:6:18","typeDescriptions":{}}},"id":5583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16486:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":5565,"id":5584,"nodeType":"Return","src":"16479:20:18"}]},"documentation":{"id":5559,"nodeType":"StructuredDocumentation","src":"16012:276:18","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":5586,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16302:8:18","nodeType":"FunctionDefinition","parameters":{"id":5562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5561,"mutability":"mutable","name":"value","nameLocation":"16319:5:18","nodeType":"VariableDeclaration","scope":5586,"src":"16311:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5560,"name":"uint256","nodeType":"ElementaryTypeName","src":"16311:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16310:15:18"},"returnParameters":{"id":5565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5564,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5586,"src":"16349:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5563,"name":"uint16","nodeType":"ElementaryTypeName","src":"16349:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16348:8:18"},"scope":6484,"src":"16293:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5613,"nodeType":"Block","src":"16851:146:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5594,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5589,"src":"16865:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5597,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16878:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5596,"name":"uint8","nodeType":"ElementaryTypeName","src":"16878:5:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":5595,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16873:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16873:11:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":5599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16885:3:18","memberName":"max","nodeType":"MemberAccess","src":"16873:15:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16865:23:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5607,"nodeType":"IfStatement","src":"16861:101:18","trueBody":{"id":5606,"nodeType":"Block","src":"16890:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":5602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16942:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":5603,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5589,"src":"16945:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5601,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"16911:30:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16911:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5605,"nodeType":"RevertStatement","src":"16904:47:18"}]}},{"expression":{"arguments":[{"id":5610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5589,"src":"16984:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16978:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5608,"name":"uint8","nodeType":"ElementaryTypeName","src":"16978:5:18","typeDescriptions":{}}},"id":5611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16978:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5593,"id":5612,"nodeType":"Return","src":"16971:19:18"}]},"documentation":{"id":5587,"nodeType":"StructuredDocumentation","src":"16512:272:18","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":5614,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16798:7:18","nodeType":"FunctionDefinition","parameters":{"id":5590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5589,"mutability":"mutable","name":"value","nameLocation":"16814:5:18","nodeType":"VariableDeclaration","scope":5614,"src":"16806:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5588,"name":"uint256","nodeType":"ElementaryTypeName","src":"16806:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16805:15:18"},"returnParameters":{"id":5593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5614,"src":"16844:5:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5591,"name":"uint8","nodeType":"ElementaryTypeName","src":"16844:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16843:7:18"},"scope":6484,"src":"16789:208:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5636,"nodeType":"Block","src":"17233:128:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5622,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5617,"src":"17247:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17255:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17247:9:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5630,"nodeType":"IfStatement","src":"17243:81:18","trueBody":{"id":5629,"nodeType":"Block","src":"17258:66:18","statements":[{"errorCall":{"arguments":[{"id":5626,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5617,"src":"17307:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5625,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4734,"src":"17279:27:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":5627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17279:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5628,"nodeType":"RevertStatement","src":"17272:41:18"}]}},{"expression":{"arguments":[{"id":5633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5617,"src":"17348:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17340:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5631,"name":"uint256","nodeType":"ElementaryTypeName","src":"17340:7:18","typeDescriptions":{}}},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17340:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5621,"id":5635,"nodeType":"Return","src":"17333:21:18"}]},"documentation":{"id":5615,"nodeType":"StructuredDocumentation","src":"17003:160:18","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":5637,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17177:9:18","nodeType":"FunctionDefinition","parameters":{"id":5618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5617,"mutability":"mutable","name":"value","nameLocation":"17194:5:18","nodeType":"VariableDeclaration","scope":5637,"src":"17187:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5616,"name":"int256","nodeType":"ElementaryTypeName","src":"17187:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17186:14:18"},"returnParameters":{"id":5621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5637,"src":"17224:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5619,"name":"uint256","nodeType":"ElementaryTypeName","src":"17224:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17223:9:18"},"scope":6484,"src":"17168:193:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5662,"nodeType":"Block","src":"17758:150:18","statements":[{"expression":{"id":5650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5645,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"17768:10:18","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5640,"src":"17788:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17781:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":5646,"name":"int248","nodeType":"ElementaryTypeName","src":"17781:6:18","typeDescriptions":{}}},"id":5649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17781:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17768:26:18","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":5651,"nodeType":"ExpressionStatement","src":"17768:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5652,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"17808:10:18","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5653,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5640,"src":"17822:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17808:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5661,"nodeType":"IfStatement","src":"17804:98:18","trueBody":{"id":5660,"nodeType":"Block","src":"17829:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":5656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17880:3:18","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":5657,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5640,"src":"17885:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5655,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"17850:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17850:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5659,"nodeType":"RevertStatement","src":"17843:48:18"}]}}]},"documentation":{"id":5638,"nodeType":"StructuredDocumentation","src":"17367:312:18","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":5663,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17693:8:18","nodeType":"FunctionDefinition","parameters":{"id":5641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5640,"mutability":"mutable","name":"value","nameLocation":"17709:5:18","nodeType":"VariableDeclaration","scope":5663,"src":"17702:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5639,"name":"int256","nodeType":"ElementaryTypeName","src":"17702:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17701:14:18"},"returnParameters":{"id":5644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5643,"mutability":"mutable","name":"downcasted","nameLocation":"17746:10:18","nodeType":"VariableDeclaration","scope":5663,"src":"17739:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":5642,"name":"int248","nodeType":"ElementaryTypeName","src":"17739:6:18","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17738:19:18"},"scope":6484,"src":"17684:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5688,"nodeType":"Block","src":"18305:150:18","statements":[{"expression":{"id":5676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5671,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5669,"src":"18315:10:18","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5674,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5666,"src":"18335:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18328:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":5672,"name":"int240","nodeType":"ElementaryTypeName","src":"18328:6:18","typeDescriptions":{}}},"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18328:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18315:26:18","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":5677,"nodeType":"ExpressionStatement","src":"18315:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5678,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5669,"src":"18355:10:18","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5679,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5666,"src":"18369:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18355:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5687,"nodeType":"IfStatement","src":"18351:98:18","trueBody":{"id":5686,"nodeType":"Block","src":"18376:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":5682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18427:3:18","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":5683,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5666,"src":"18432:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5681,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"18397:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18397:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5685,"nodeType":"RevertStatement","src":"18390:48:18"}]}}]},"documentation":{"id":5664,"nodeType":"StructuredDocumentation","src":"17914:312:18","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":5689,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18240:8:18","nodeType":"FunctionDefinition","parameters":{"id":5667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5666,"mutability":"mutable","name":"value","nameLocation":"18256:5:18","nodeType":"VariableDeclaration","scope":5689,"src":"18249:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5665,"name":"int256","nodeType":"ElementaryTypeName","src":"18249:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18248:14:18"},"returnParameters":{"id":5670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5669,"mutability":"mutable","name":"downcasted","nameLocation":"18293:10:18","nodeType":"VariableDeclaration","scope":5689,"src":"18286:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":5668,"name":"int240","nodeType":"ElementaryTypeName","src":"18286:6:18","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18285:19:18"},"scope":6484,"src":"18231:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5714,"nodeType":"Block","src":"18852:150:18","statements":[{"expression":{"id":5702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5697,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5695,"src":"18862:10:18","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5692,"src":"18882:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18875:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":5698,"name":"int232","nodeType":"ElementaryTypeName","src":"18875:6:18","typeDescriptions":{}}},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18875:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18862:26:18","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":5703,"nodeType":"ExpressionStatement","src":"18862:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5704,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5695,"src":"18902:10:18","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5705,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5692,"src":"18916:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18902:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5713,"nodeType":"IfStatement","src":"18898:98:18","trueBody":{"id":5712,"nodeType":"Block","src":"18923:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":5708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18974:3:18","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":5709,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5692,"src":"18979:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5707,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"18944:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18944:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5711,"nodeType":"RevertStatement","src":"18937:48:18"}]}}]},"documentation":{"id":5690,"nodeType":"StructuredDocumentation","src":"18461:312:18","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":5715,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18787:8:18","nodeType":"FunctionDefinition","parameters":{"id":5693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5692,"mutability":"mutable","name":"value","nameLocation":"18803:5:18","nodeType":"VariableDeclaration","scope":5715,"src":"18796:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5691,"name":"int256","nodeType":"ElementaryTypeName","src":"18796:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18795:14:18"},"returnParameters":{"id":5696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5695,"mutability":"mutable","name":"downcasted","nameLocation":"18840:10:18","nodeType":"VariableDeclaration","scope":5715,"src":"18833:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":5694,"name":"int232","nodeType":"ElementaryTypeName","src":"18833:6:18","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18832:19:18"},"scope":6484,"src":"18778:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5740,"nodeType":"Block","src":"19399:150:18","statements":[{"expression":{"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5723,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5721,"src":"19409:10:18","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5726,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"19429:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19422:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":5724,"name":"int224","nodeType":"ElementaryTypeName","src":"19422:6:18","typeDescriptions":{}}},"id":5727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19422:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19409:26:18","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":5729,"nodeType":"ExpressionStatement","src":"19409:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5730,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5721,"src":"19449:10:18","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5731,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"19463:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19449:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5739,"nodeType":"IfStatement","src":"19445:98:18","trueBody":{"id":5738,"nodeType":"Block","src":"19470:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":5734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19521:3:18","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":5735,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"19526:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5733,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"19491:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19491:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5737,"nodeType":"RevertStatement","src":"19484:48:18"}]}}]},"documentation":{"id":5716,"nodeType":"StructuredDocumentation","src":"19008:312:18","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":5741,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19334:8:18","nodeType":"FunctionDefinition","parameters":{"id":5719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5718,"mutability":"mutable","name":"value","nameLocation":"19350:5:18","nodeType":"VariableDeclaration","scope":5741,"src":"19343:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5717,"name":"int256","nodeType":"ElementaryTypeName","src":"19343:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19342:14:18"},"returnParameters":{"id":5722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5721,"mutability":"mutable","name":"downcasted","nameLocation":"19387:10:18","nodeType":"VariableDeclaration","scope":5741,"src":"19380:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":5720,"name":"int224","nodeType":"ElementaryTypeName","src":"19380:6:18","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19379:19:18"},"scope":6484,"src":"19325:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5766,"nodeType":"Block","src":"19946:150:18","statements":[{"expression":{"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5749,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5747,"src":"19956:10:18","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"19976:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19969:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":5750,"name":"int216","nodeType":"ElementaryTypeName","src":"19969:6:18","typeDescriptions":{}}},"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19969:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19956:26:18","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":5755,"nodeType":"ExpressionStatement","src":"19956:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5756,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5747,"src":"19996:10:18","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5757,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20010:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19996:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5765,"nodeType":"IfStatement","src":"19992:98:18","trueBody":{"id":5764,"nodeType":"Block","src":"20017:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":5760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20068:3:18","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":5761,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20073:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5759,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"20038:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20038:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5763,"nodeType":"RevertStatement","src":"20031:48:18"}]}}]},"documentation":{"id":5742,"nodeType":"StructuredDocumentation","src":"19555:312:18","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":5767,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19881:8:18","nodeType":"FunctionDefinition","parameters":{"id":5745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5744,"mutability":"mutable","name":"value","nameLocation":"19897:5:18","nodeType":"VariableDeclaration","scope":5767,"src":"19890:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5743,"name":"int256","nodeType":"ElementaryTypeName","src":"19890:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19889:14:18"},"returnParameters":{"id":5748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5747,"mutability":"mutable","name":"downcasted","nameLocation":"19934:10:18","nodeType":"VariableDeclaration","scope":5767,"src":"19927:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":5746,"name":"int216","nodeType":"ElementaryTypeName","src":"19927:6:18","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19926:19:18"},"scope":6484,"src":"19872:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5792,"nodeType":"Block","src":"20493:150:18","statements":[{"expression":{"id":5780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5775,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5773,"src":"20503:10:18","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5778,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5770,"src":"20523:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20516:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":5776,"name":"int208","nodeType":"ElementaryTypeName","src":"20516:6:18","typeDescriptions":{}}},"id":5779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20516:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20503:26:18","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":5781,"nodeType":"ExpressionStatement","src":"20503:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5782,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5773,"src":"20543:10:18","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5783,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5770,"src":"20557:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20543:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5791,"nodeType":"IfStatement","src":"20539:98:18","trueBody":{"id":5790,"nodeType":"Block","src":"20564:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":5786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20615:3:18","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":5787,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5770,"src":"20620:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5785,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"20585:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20585:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5789,"nodeType":"RevertStatement","src":"20578:48:18"}]}}]},"documentation":{"id":5768,"nodeType":"StructuredDocumentation","src":"20102:312:18","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":5793,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20428:8:18","nodeType":"FunctionDefinition","parameters":{"id":5771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5770,"mutability":"mutable","name":"value","nameLocation":"20444:5:18","nodeType":"VariableDeclaration","scope":5793,"src":"20437:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5769,"name":"int256","nodeType":"ElementaryTypeName","src":"20437:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20436:14:18"},"returnParameters":{"id":5774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5773,"mutability":"mutable","name":"downcasted","nameLocation":"20481:10:18","nodeType":"VariableDeclaration","scope":5793,"src":"20474:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":5772,"name":"int208","nodeType":"ElementaryTypeName","src":"20474:6:18","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20473:19:18"},"scope":6484,"src":"20419:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5818,"nodeType":"Block","src":"21040:150:18","statements":[{"expression":{"id":5806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5801,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5799,"src":"21050:10:18","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5804,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"21070:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21063:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":5802,"name":"int200","nodeType":"ElementaryTypeName","src":"21063:6:18","typeDescriptions":{}}},"id":5805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21063:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21050:26:18","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":5807,"nodeType":"ExpressionStatement","src":"21050:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5808,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5799,"src":"21090:10:18","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5809,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"21104:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21090:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5817,"nodeType":"IfStatement","src":"21086:98:18","trueBody":{"id":5816,"nodeType":"Block","src":"21111:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":5812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21162:3:18","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":5813,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"21167:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5811,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"21132:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21132:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5815,"nodeType":"RevertStatement","src":"21125:48:18"}]}}]},"documentation":{"id":5794,"nodeType":"StructuredDocumentation","src":"20649:312:18","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":5819,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20975:8:18","nodeType":"FunctionDefinition","parameters":{"id":5797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5796,"mutability":"mutable","name":"value","nameLocation":"20991:5:18","nodeType":"VariableDeclaration","scope":5819,"src":"20984:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5795,"name":"int256","nodeType":"ElementaryTypeName","src":"20984:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20983:14:18"},"returnParameters":{"id":5800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5799,"mutability":"mutable","name":"downcasted","nameLocation":"21028:10:18","nodeType":"VariableDeclaration","scope":5819,"src":"21021:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":5798,"name":"int200","nodeType":"ElementaryTypeName","src":"21021:6:18","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21020:19:18"},"scope":6484,"src":"20966:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5844,"nodeType":"Block","src":"21587:150:18","statements":[{"expression":{"id":5832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5827,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"21597:10:18","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5830,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5822,"src":"21617:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21610:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":5828,"name":"int192","nodeType":"ElementaryTypeName","src":"21610:6:18","typeDescriptions":{}}},"id":5831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21610:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21597:26:18","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":5833,"nodeType":"ExpressionStatement","src":"21597:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5834,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"21637:10:18","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5822,"src":"21651:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21637:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5843,"nodeType":"IfStatement","src":"21633:98:18","trueBody":{"id":5842,"nodeType":"Block","src":"21658:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":5838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21709:3:18","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":5839,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5822,"src":"21714:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5837,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"21679:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21679:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5841,"nodeType":"RevertStatement","src":"21672:48:18"}]}}]},"documentation":{"id":5820,"nodeType":"StructuredDocumentation","src":"21196:312:18","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":5845,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21522:8:18","nodeType":"FunctionDefinition","parameters":{"id":5823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5822,"mutability":"mutable","name":"value","nameLocation":"21538:5:18","nodeType":"VariableDeclaration","scope":5845,"src":"21531:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5821,"name":"int256","nodeType":"ElementaryTypeName","src":"21531:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21530:14:18"},"returnParameters":{"id":5826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5825,"mutability":"mutable","name":"downcasted","nameLocation":"21575:10:18","nodeType":"VariableDeclaration","scope":5845,"src":"21568:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":5824,"name":"int192","nodeType":"ElementaryTypeName","src":"21568:6:18","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21567:19:18"},"scope":6484,"src":"21513:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5870,"nodeType":"Block","src":"22134:150:18","statements":[{"expression":{"id":5858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5853,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"22144:10:18","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5856,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"22164:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22157:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":5854,"name":"int184","nodeType":"ElementaryTypeName","src":"22157:6:18","typeDescriptions":{}}},"id":5857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22157:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22144:26:18","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":5859,"nodeType":"ExpressionStatement","src":"22144:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5860,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5851,"src":"22184:10:18","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"22198:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22184:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5869,"nodeType":"IfStatement","src":"22180:98:18","trueBody":{"id":5868,"nodeType":"Block","src":"22205:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":5864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22256:3:18","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":5865,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"22261:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5863,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"22226:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22226:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5867,"nodeType":"RevertStatement","src":"22219:48:18"}]}}]},"documentation":{"id":5846,"nodeType":"StructuredDocumentation","src":"21743:312:18","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":5871,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22069:8:18","nodeType":"FunctionDefinition","parameters":{"id":5849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5848,"mutability":"mutable","name":"value","nameLocation":"22085:5:18","nodeType":"VariableDeclaration","scope":5871,"src":"22078:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5847,"name":"int256","nodeType":"ElementaryTypeName","src":"22078:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22077:14:18"},"returnParameters":{"id":5852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5851,"mutability":"mutable","name":"downcasted","nameLocation":"22122:10:18","nodeType":"VariableDeclaration","scope":5871,"src":"22115:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":5850,"name":"int184","nodeType":"ElementaryTypeName","src":"22115:6:18","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22114:19:18"},"scope":6484,"src":"22060:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5896,"nodeType":"Block","src":"22681:150:18","statements":[{"expression":{"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5879,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5877,"src":"22691:10:18","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5874,"src":"22711:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22704:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":5880,"name":"int176","nodeType":"ElementaryTypeName","src":"22704:6:18","typeDescriptions":{}}},"id":5883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22704:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22691:26:18","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":5885,"nodeType":"ExpressionStatement","src":"22691:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5886,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5877,"src":"22731:10:18","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5887,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5874,"src":"22745:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22731:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5895,"nodeType":"IfStatement","src":"22727:98:18","trueBody":{"id":5894,"nodeType":"Block","src":"22752:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":5890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22803:3:18","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":5891,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5874,"src":"22808:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5889,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"22773:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22773:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5893,"nodeType":"RevertStatement","src":"22766:48:18"}]}}]},"documentation":{"id":5872,"nodeType":"StructuredDocumentation","src":"22290:312:18","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":5897,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22616:8:18","nodeType":"FunctionDefinition","parameters":{"id":5875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5874,"mutability":"mutable","name":"value","nameLocation":"22632:5:18","nodeType":"VariableDeclaration","scope":5897,"src":"22625:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5873,"name":"int256","nodeType":"ElementaryTypeName","src":"22625:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22624:14:18"},"returnParameters":{"id":5878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5877,"mutability":"mutable","name":"downcasted","nameLocation":"22669:10:18","nodeType":"VariableDeclaration","scope":5897,"src":"22662:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":5876,"name":"int176","nodeType":"ElementaryTypeName","src":"22662:6:18","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22661:19:18"},"scope":6484,"src":"22607:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5922,"nodeType":"Block","src":"23228:150:18","statements":[{"expression":{"id":5910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5905,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"23238:10:18","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5908,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"23258:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23251:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":5906,"name":"int168","nodeType":"ElementaryTypeName","src":"23251:6:18","typeDescriptions":{}}},"id":5909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23251:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23238:26:18","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":5911,"nodeType":"ExpressionStatement","src":"23238:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5912,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"23278:10:18","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5913,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"23292:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23278:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5921,"nodeType":"IfStatement","src":"23274:98:18","trueBody":{"id":5920,"nodeType":"Block","src":"23299:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":5916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23350:3:18","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":5917,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"23355:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5915,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"23320:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23320:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5919,"nodeType":"RevertStatement","src":"23313:48:18"}]}}]},"documentation":{"id":5898,"nodeType":"StructuredDocumentation","src":"22837:312:18","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":5923,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23163:8:18","nodeType":"FunctionDefinition","parameters":{"id":5901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5900,"mutability":"mutable","name":"value","nameLocation":"23179:5:18","nodeType":"VariableDeclaration","scope":5923,"src":"23172:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5899,"name":"int256","nodeType":"ElementaryTypeName","src":"23172:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23171:14:18"},"returnParameters":{"id":5904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5903,"mutability":"mutable","name":"downcasted","nameLocation":"23216:10:18","nodeType":"VariableDeclaration","scope":5923,"src":"23209:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":5902,"name":"int168","nodeType":"ElementaryTypeName","src":"23209:6:18","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23208:19:18"},"scope":6484,"src":"23154:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5948,"nodeType":"Block","src":"23775:150:18","statements":[{"expression":{"id":5936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5931,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"23785:10:18","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5926,"src":"23805:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23798:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":5932,"name":"int160","nodeType":"ElementaryTypeName","src":"23798:6:18","typeDescriptions":{}}},"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23798:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23785:26:18","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":5937,"nodeType":"ExpressionStatement","src":"23785:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5938,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"23825:10:18","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5939,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5926,"src":"23839:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23825:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5947,"nodeType":"IfStatement","src":"23821:98:18","trueBody":{"id":5946,"nodeType":"Block","src":"23846:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":5942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23897:3:18","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":5943,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5926,"src":"23902:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5941,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"23867:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23867:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5945,"nodeType":"RevertStatement","src":"23860:48:18"}]}}]},"documentation":{"id":5924,"nodeType":"StructuredDocumentation","src":"23384:312:18","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":5949,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23710:8:18","nodeType":"FunctionDefinition","parameters":{"id":5927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5926,"mutability":"mutable","name":"value","nameLocation":"23726:5:18","nodeType":"VariableDeclaration","scope":5949,"src":"23719:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5925,"name":"int256","nodeType":"ElementaryTypeName","src":"23719:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23718:14:18"},"returnParameters":{"id":5930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5929,"mutability":"mutable","name":"downcasted","nameLocation":"23763:10:18","nodeType":"VariableDeclaration","scope":5949,"src":"23756:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":5928,"name":"int160","nodeType":"ElementaryTypeName","src":"23756:6:18","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23755:19:18"},"scope":6484,"src":"23701:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5974,"nodeType":"Block","src":"24322:150:18","statements":[{"expression":{"id":5962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5957,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5955,"src":"24332:10:18","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5960,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"24352:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24345:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":5958,"name":"int152","nodeType":"ElementaryTypeName","src":"24345:6:18","typeDescriptions":{}}},"id":5961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24345:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24332:26:18","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":5963,"nodeType":"ExpressionStatement","src":"24332:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5964,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5955,"src":"24372:10:18","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5965,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"24386:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24372:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5973,"nodeType":"IfStatement","src":"24368:98:18","trueBody":{"id":5972,"nodeType":"Block","src":"24393:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":5968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24444:3:18","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":5969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"24449:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5967,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"24414:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24414:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5971,"nodeType":"RevertStatement","src":"24407:48:18"}]}}]},"documentation":{"id":5950,"nodeType":"StructuredDocumentation","src":"23931:312:18","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":5975,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24257:8:18","nodeType":"FunctionDefinition","parameters":{"id":5953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5952,"mutability":"mutable","name":"value","nameLocation":"24273:5:18","nodeType":"VariableDeclaration","scope":5975,"src":"24266:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5951,"name":"int256","nodeType":"ElementaryTypeName","src":"24266:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24265:14:18"},"returnParameters":{"id":5956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5955,"mutability":"mutable","name":"downcasted","nameLocation":"24310:10:18","nodeType":"VariableDeclaration","scope":5975,"src":"24303:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":5954,"name":"int152","nodeType":"ElementaryTypeName","src":"24303:6:18","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24302:19:18"},"scope":6484,"src":"24248:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6000,"nodeType":"Block","src":"24869:150:18","statements":[{"expression":{"id":5988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5983,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"24879:10:18","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5986,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5978,"src":"24899:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24892:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":5984,"name":"int144","nodeType":"ElementaryTypeName","src":"24892:6:18","typeDescriptions":{}}},"id":5987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24892:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24879:26:18","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":5989,"nodeType":"ExpressionStatement","src":"24879:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5990,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"24919:10:18","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5978,"src":"24933:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24919:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5999,"nodeType":"IfStatement","src":"24915:98:18","trueBody":{"id":5998,"nodeType":"Block","src":"24940:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":5994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24991:3:18","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":5995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5978,"src":"24996:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5993,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"24961:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24961:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5997,"nodeType":"RevertStatement","src":"24954:48:18"}]}}]},"documentation":{"id":5976,"nodeType":"StructuredDocumentation","src":"24478:312:18","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":6001,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24804:8:18","nodeType":"FunctionDefinition","parameters":{"id":5979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5978,"mutability":"mutable","name":"value","nameLocation":"24820:5:18","nodeType":"VariableDeclaration","scope":6001,"src":"24813:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5977,"name":"int256","nodeType":"ElementaryTypeName","src":"24813:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24812:14:18"},"returnParameters":{"id":5982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5981,"mutability":"mutable","name":"downcasted","nameLocation":"24857:10:18","nodeType":"VariableDeclaration","scope":6001,"src":"24850:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":5980,"name":"int144","nodeType":"ElementaryTypeName","src":"24850:6:18","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24849:19:18"},"scope":6484,"src":"24795:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6026,"nodeType":"Block","src":"25416:150:18","statements":[{"expression":{"id":6014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6009,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6007,"src":"25426:10:18","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6012,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6004,"src":"25446:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25439:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":6010,"name":"int136","nodeType":"ElementaryTypeName","src":"25439:6:18","typeDescriptions":{}}},"id":6013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25439:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25426:26:18","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":6015,"nodeType":"ExpressionStatement","src":"25426:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6016,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6007,"src":"25466:10:18","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6017,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6004,"src":"25480:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25466:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6025,"nodeType":"IfStatement","src":"25462:98:18","trueBody":{"id":6024,"nodeType":"Block","src":"25487:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":6020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25538:3:18","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":6021,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6004,"src":"25543:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6019,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"25508:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25508:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6023,"nodeType":"RevertStatement","src":"25501:48:18"}]}}]},"documentation":{"id":6002,"nodeType":"StructuredDocumentation","src":"25025:312:18","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":6027,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25351:8:18","nodeType":"FunctionDefinition","parameters":{"id":6005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6004,"mutability":"mutable","name":"value","nameLocation":"25367:5:18","nodeType":"VariableDeclaration","scope":6027,"src":"25360:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6003,"name":"int256","nodeType":"ElementaryTypeName","src":"25360:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25359:14:18"},"returnParameters":{"id":6008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6007,"mutability":"mutable","name":"downcasted","nameLocation":"25404:10:18","nodeType":"VariableDeclaration","scope":6027,"src":"25397:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":6006,"name":"int136","nodeType":"ElementaryTypeName","src":"25397:6:18","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25396:19:18"},"scope":6484,"src":"25342:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6052,"nodeType":"Block","src":"25963:150:18","statements":[{"expression":{"id":6040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6035,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6033,"src":"25973:10:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6038,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6030,"src":"25993:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25986:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":6036,"name":"int128","nodeType":"ElementaryTypeName","src":"25986:6:18","typeDescriptions":{}}},"id":6039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25986:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25973:26:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":6041,"nodeType":"ExpressionStatement","src":"25973:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6042,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6033,"src":"26013:10:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6030,"src":"26027:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26013:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6051,"nodeType":"IfStatement","src":"26009:98:18","trueBody":{"id":6050,"nodeType":"Block","src":"26034:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":6046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26085:3:18","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":6047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6030,"src":"26090:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6045,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"26055:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26055:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6049,"nodeType":"RevertStatement","src":"26048:48:18"}]}}]},"documentation":{"id":6028,"nodeType":"StructuredDocumentation","src":"25572:312:18","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":6053,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25898:8:18","nodeType":"FunctionDefinition","parameters":{"id":6031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6030,"mutability":"mutable","name":"value","nameLocation":"25914:5:18","nodeType":"VariableDeclaration","scope":6053,"src":"25907:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6029,"name":"int256","nodeType":"ElementaryTypeName","src":"25907:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25906:14:18"},"returnParameters":{"id":6034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6033,"mutability":"mutable","name":"downcasted","nameLocation":"25951:10:18","nodeType":"VariableDeclaration","scope":6053,"src":"25944:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6032,"name":"int128","nodeType":"ElementaryTypeName","src":"25944:6:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25943:19:18"},"scope":6484,"src":"25889:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6078,"nodeType":"Block","src":"26510:150:18","statements":[{"expression":{"id":6066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6061,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"26520:10:18","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"26540:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26533:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":6062,"name":"int120","nodeType":"ElementaryTypeName","src":"26533:6:18","typeDescriptions":{}}},"id":6065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26533:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26520:26:18","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":6067,"nodeType":"ExpressionStatement","src":"26520:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6068,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"26560:10:18","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"26574:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26560:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6077,"nodeType":"IfStatement","src":"26556:98:18","trueBody":{"id":6076,"nodeType":"Block","src":"26581:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":6072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26632:3:18","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":6073,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"26637:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6071,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"26602:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26602:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6075,"nodeType":"RevertStatement","src":"26595:48:18"}]}}]},"documentation":{"id":6054,"nodeType":"StructuredDocumentation","src":"26119:312:18","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":6079,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26445:8:18","nodeType":"FunctionDefinition","parameters":{"id":6057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6056,"mutability":"mutable","name":"value","nameLocation":"26461:5:18","nodeType":"VariableDeclaration","scope":6079,"src":"26454:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6055,"name":"int256","nodeType":"ElementaryTypeName","src":"26454:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26453:14:18"},"returnParameters":{"id":6060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6059,"mutability":"mutable","name":"downcasted","nameLocation":"26498:10:18","nodeType":"VariableDeclaration","scope":6079,"src":"26491:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":6058,"name":"int120","nodeType":"ElementaryTypeName","src":"26491:6:18","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26490:19:18"},"scope":6484,"src":"26436:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6104,"nodeType":"Block","src":"27057:150:18","statements":[{"expression":{"id":6092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6087,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6085,"src":"27067:10:18","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6082,"src":"27087:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27080:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":6088,"name":"int112","nodeType":"ElementaryTypeName","src":"27080:6:18","typeDescriptions":{}}},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27080:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27067:26:18","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":6093,"nodeType":"ExpressionStatement","src":"27067:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6094,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6085,"src":"27107:10:18","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6082,"src":"27121:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27107:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6103,"nodeType":"IfStatement","src":"27103:98:18","trueBody":{"id":6102,"nodeType":"Block","src":"27128:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":6098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27179:3:18","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":6099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6082,"src":"27184:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6097,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"27149:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27149:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6101,"nodeType":"RevertStatement","src":"27142:48:18"}]}}]},"documentation":{"id":6080,"nodeType":"StructuredDocumentation","src":"26666:312:18","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":6105,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26992:8:18","nodeType":"FunctionDefinition","parameters":{"id":6083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6082,"mutability":"mutable","name":"value","nameLocation":"27008:5:18","nodeType":"VariableDeclaration","scope":6105,"src":"27001:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6081,"name":"int256","nodeType":"ElementaryTypeName","src":"27001:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27000:14:18"},"returnParameters":{"id":6086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6085,"mutability":"mutable","name":"downcasted","nameLocation":"27045:10:18","nodeType":"VariableDeclaration","scope":6105,"src":"27038:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":6084,"name":"int112","nodeType":"ElementaryTypeName","src":"27038:6:18","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27037:19:18"},"scope":6484,"src":"26983:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6130,"nodeType":"Block","src":"27604:150:18","statements":[{"expression":{"id":6118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6113,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"27614:10:18","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6116,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6108,"src":"27634:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27627:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":6114,"name":"int104","nodeType":"ElementaryTypeName","src":"27627:6:18","typeDescriptions":{}}},"id":6117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27627:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27614:26:18","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":6119,"nodeType":"ExpressionStatement","src":"27614:26:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6120,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"27654:10:18","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6121,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6108,"src":"27668:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27654:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6129,"nodeType":"IfStatement","src":"27650:98:18","trueBody":{"id":6128,"nodeType":"Block","src":"27675:73:18","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":6124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27726:3:18","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":6125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6108,"src":"27731:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6123,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"27696:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27696:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6127,"nodeType":"RevertStatement","src":"27689:48:18"}]}}]},"documentation":{"id":6106,"nodeType":"StructuredDocumentation","src":"27213:312:18","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":6131,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27539:8:18","nodeType":"FunctionDefinition","parameters":{"id":6109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6108,"mutability":"mutable","name":"value","nameLocation":"27555:5:18","nodeType":"VariableDeclaration","scope":6131,"src":"27548:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6107,"name":"int256","nodeType":"ElementaryTypeName","src":"27548:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27547:14:18"},"returnParameters":{"id":6112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6111,"mutability":"mutable","name":"downcasted","nameLocation":"27592:10:18","nodeType":"VariableDeclaration","scope":6131,"src":"27585:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":6110,"name":"int104","nodeType":"ElementaryTypeName","src":"27585:6:18","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27584:19:18"},"scope":6484,"src":"27530:224:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6156,"nodeType":"Block","src":"28144:148:18","statements":[{"expression":{"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6139,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6137,"src":"28154:10:18","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6142,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"28173:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28167:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":6140,"name":"int96","nodeType":"ElementaryTypeName","src":"28167:5:18","typeDescriptions":{}}},"id":6143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28167:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28154:25:18","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":6145,"nodeType":"ExpressionStatement","src":"28154:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6146,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6137,"src":"28193:10:18","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6147,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"28207:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28193:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6155,"nodeType":"IfStatement","src":"28189:97:18","trueBody":{"id":6154,"nodeType":"Block","src":"28214:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":6150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28265:2:18","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":6151,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"28269:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6149,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"28235:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28235:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6153,"nodeType":"RevertStatement","src":"28228:47:18"}]}}]},"documentation":{"id":6132,"nodeType":"StructuredDocumentation","src":"27760:307:18","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":6157,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28081:7:18","nodeType":"FunctionDefinition","parameters":{"id":6135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6134,"mutability":"mutable","name":"value","nameLocation":"28096:5:18","nodeType":"VariableDeclaration","scope":6157,"src":"28089:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6133,"name":"int256","nodeType":"ElementaryTypeName","src":"28089:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28088:14:18"},"returnParameters":{"id":6138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6137,"mutability":"mutable","name":"downcasted","nameLocation":"28132:10:18","nodeType":"VariableDeclaration","scope":6157,"src":"28126:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":6136,"name":"int96","nodeType":"ElementaryTypeName","src":"28126:5:18","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28125:18:18"},"scope":6484,"src":"28072:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6182,"nodeType":"Block","src":"28682:148:18","statements":[{"expression":{"id":6170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6165,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"28692:10:18","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6168,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6160,"src":"28711:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28705:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":6166,"name":"int88","nodeType":"ElementaryTypeName","src":"28705:5:18","typeDescriptions":{}}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28705:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28692:25:18","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":6171,"nodeType":"ExpressionStatement","src":"28692:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6172,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"28731:10:18","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6173,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6160,"src":"28745:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28731:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6181,"nodeType":"IfStatement","src":"28727:97:18","trueBody":{"id":6180,"nodeType":"Block","src":"28752:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":6176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28803:2:18","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":6177,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6160,"src":"28807:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6175,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"28773:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28773:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6179,"nodeType":"RevertStatement","src":"28766:47:18"}]}}]},"documentation":{"id":6158,"nodeType":"StructuredDocumentation","src":"28298:307:18","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":6183,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28619:7:18","nodeType":"FunctionDefinition","parameters":{"id":6161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6160,"mutability":"mutable","name":"value","nameLocation":"28634:5:18","nodeType":"VariableDeclaration","scope":6183,"src":"28627:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6159,"name":"int256","nodeType":"ElementaryTypeName","src":"28627:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28626:14:18"},"returnParameters":{"id":6164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6163,"mutability":"mutable","name":"downcasted","nameLocation":"28670:10:18","nodeType":"VariableDeclaration","scope":6183,"src":"28664:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":6162,"name":"int88","nodeType":"ElementaryTypeName","src":"28664:5:18","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28663:18:18"},"scope":6484,"src":"28610:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6208,"nodeType":"Block","src":"29220:148:18","statements":[{"expression":{"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6191,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"29230:10:18","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6194,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"29249:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29243:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":6192,"name":"int80","nodeType":"ElementaryTypeName","src":"29243:5:18","typeDescriptions":{}}},"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29243:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29230:25:18","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":6197,"nodeType":"ExpressionStatement","src":"29230:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6198,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"29269:10:18","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"29283:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29269:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6207,"nodeType":"IfStatement","src":"29265:97:18","trueBody":{"id":6206,"nodeType":"Block","src":"29290:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":6202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29341:2:18","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":6203,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6186,"src":"29345:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6201,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"29311:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29311:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6205,"nodeType":"RevertStatement","src":"29304:47:18"}]}}]},"documentation":{"id":6184,"nodeType":"StructuredDocumentation","src":"28836:307:18","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":6209,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29157:7:18","nodeType":"FunctionDefinition","parameters":{"id":6187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6186,"mutability":"mutable","name":"value","nameLocation":"29172:5:18","nodeType":"VariableDeclaration","scope":6209,"src":"29165:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6185,"name":"int256","nodeType":"ElementaryTypeName","src":"29165:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29164:14:18"},"returnParameters":{"id":6190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6189,"mutability":"mutable","name":"downcasted","nameLocation":"29208:10:18","nodeType":"VariableDeclaration","scope":6209,"src":"29202:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":6188,"name":"int80","nodeType":"ElementaryTypeName","src":"29202:5:18","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29201:18:18"},"scope":6484,"src":"29148:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6234,"nodeType":"Block","src":"29758:148:18","statements":[{"expression":{"id":6222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6217,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"29768:10:18","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"29787:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29781:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":6218,"name":"int72","nodeType":"ElementaryTypeName","src":"29781:5:18","typeDescriptions":{}}},"id":6221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29781:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29768:25:18","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":6223,"nodeType":"ExpressionStatement","src":"29768:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6224,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"29807:10:18","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"29821:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29807:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6233,"nodeType":"IfStatement","src":"29803:97:18","trueBody":{"id":6232,"nodeType":"Block","src":"29828:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":6228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29879:2:18","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":6229,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"29883:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6227,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"29849:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29849:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6231,"nodeType":"RevertStatement","src":"29842:47:18"}]}}]},"documentation":{"id":6210,"nodeType":"StructuredDocumentation","src":"29374:307:18","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":6235,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29695:7:18","nodeType":"FunctionDefinition","parameters":{"id":6213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6212,"mutability":"mutable","name":"value","nameLocation":"29710:5:18","nodeType":"VariableDeclaration","scope":6235,"src":"29703:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6211,"name":"int256","nodeType":"ElementaryTypeName","src":"29703:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29702:14:18"},"returnParameters":{"id":6216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6215,"mutability":"mutable","name":"downcasted","nameLocation":"29746:10:18","nodeType":"VariableDeclaration","scope":6235,"src":"29740:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":6214,"name":"int72","nodeType":"ElementaryTypeName","src":"29740:5:18","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29739:18:18"},"scope":6484,"src":"29686:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6260,"nodeType":"Block","src":"30296:148:18","statements":[{"expression":{"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6243,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6241,"src":"30306:10:18","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"30325:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30319:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":6244,"name":"int64","nodeType":"ElementaryTypeName","src":"30319:5:18","typeDescriptions":{}}},"id":6247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30319:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30306:25:18","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":6249,"nodeType":"ExpressionStatement","src":"30306:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6250,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6241,"src":"30345:10:18","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"30359:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30345:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6259,"nodeType":"IfStatement","src":"30341:97:18","trueBody":{"id":6258,"nodeType":"Block","src":"30366:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":6254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30417:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":6255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"30421:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6253,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"30387:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30387:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6257,"nodeType":"RevertStatement","src":"30380:47:18"}]}}]},"documentation":{"id":6236,"nodeType":"StructuredDocumentation","src":"29912:307:18","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":6261,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30233:7:18","nodeType":"FunctionDefinition","parameters":{"id":6239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6238,"mutability":"mutable","name":"value","nameLocation":"30248:5:18","nodeType":"VariableDeclaration","scope":6261,"src":"30241:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6237,"name":"int256","nodeType":"ElementaryTypeName","src":"30241:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30240:14:18"},"returnParameters":{"id":6242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6241,"mutability":"mutable","name":"downcasted","nameLocation":"30284:10:18","nodeType":"VariableDeclaration","scope":6261,"src":"30278:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":6240,"name":"int64","nodeType":"ElementaryTypeName","src":"30278:5:18","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30277:18:18"},"scope":6484,"src":"30224:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6286,"nodeType":"Block","src":"30834:148:18","statements":[{"expression":{"id":6274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6269,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"30844:10:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6272,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"30863:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30857:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":6270,"name":"int56","nodeType":"ElementaryTypeName","src":"30857:5:18","typeDescriptions":{}}},"id":6273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30857:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30844:25:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":6275,"nodeType":"ExpressionStatement","src":"30844:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6276,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"30883:10:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6277,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"30897:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30883:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6285,"nodeType":"IfStatement","src":"30879:97:18","trueBody":{"id":6284,"nodeType":"Block","src":"30904:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":6280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30955:2:18","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":6281,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"30959:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6279,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"30925:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30925:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6283,"nodeType":"RevertStatement","src":"30918:47:18"}]}}]},"documentation":{"id":6262,"nodeType":"StructuredDocumentation","src":"30450:307:18","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":6287,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30771:7:18","nodeType":"FunctionDefinition","parameters":{"id":6265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6264,"mutability":"mutable","name":"value","nameLocation":"30786:5:18","nodeType":"VariableDeclaration","scope":6287,"src":"30779:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6263,"name":"int256","nodeType":"ElementaryTypeName","src":"30779:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30778:14:18"},"returnParameters":{"id":6268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6267,"mutability":"mutable","name":"downcasted","nameLocation":"30822:10:18","nodeType":"VariableDeclaration","scope":6287,"src":"30816:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":6266,"name":"int56","nodeType":"ElementaryTypeName","src":"30816:5:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30815:18:18"},"scope":6484,"src":"30762:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6312,"nodeType":"Block","src":"31372:148:18","statements":[{"expression":{"id":6300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6295,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"31382:10:18","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6298,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6290,"src":"31401:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31395:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":6296,"name":"int48","nodeType":"ElementaryTypeName","src":"31395:5:18","typeDescriptions":{}}},"id":6299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31395:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31382:25:18","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":6301,"nodeType":"ExpressionStatement","src":"31382:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6302,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"31421:10:18","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6303,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6290,"src":"31435:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31421:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6311,"nodeType":"IfStatement","src":"31417:97:18","trueBody":{"id":6310,"nodeType":"Block","src":"31442:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":6306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31493:2:18","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":6307,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6290,"src":"31497:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6305,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"31463:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31463:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6309,"nodeType":"RevertStatement","src":"31456:47:18"}]}}]},"documentation":{"id":6288,"nodeType":"StructuredDocumentation","src":"30988:307:18","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":6313,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31309:7:18","nodeType":"FunctionDefinition","parameters":{"id":6291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6290,"mutability":"mutable","name":"value","nameLocation":"31324:5:18","nodeType":"VariableDeclaration","scope":6313,"src":"31317:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6289,"name":"int256","nodeType":"ElementaryTypeName","src":"31317:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31316:14:18"},"returnParameters":{"id":6294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6293,"mutability":"mutable","name":"downcasted","nameLocation":"31360:10:18","nodeType":"VariableDeclaration","scope":6313,"src":"31354:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":6292,"name":"int48","nodeType":"ElementaryTypeName","src":"31354:5:18","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31353:18:18"},"scope":6484,"src":"31300:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6338,"nodeType":"Block","src":"31910:148:18","statements":[{"expression":{"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6321,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6319,"src":"31920:10:18","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"31939:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31933:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":6322,"name":"int40","nodeType":"ElementaryTypeName","src":"31933:5:18","typeDescriptions":{}}},"id":6325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31933:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31920:25:18","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":6327,"nodeType":"ExpressionStatement","src":"31920:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6328,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6319,"src":"31959:10:18","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"31973:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31959:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6337,"nodeType":"IfStatement","src":"31955:97:18","trueBody":{"id":6336,"nodeType":"Block","src":"31980:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":6332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32031:2:18","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":6333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"32035:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6331,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"32001:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32001:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6335,"nodeType":"RevertStatement","src":"31994:47:18"}]}}]},"documentation":{"id":6314,"nodeType":"StructuredDocumentation","src":"31526:307:18","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":6339,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31847:7:18","nodeType":"FunctionDefinition","parameters":{"id":6317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6316,"mutability":"mutable","name":"value","nameLocation":"31862:5:18","nodeType":"VariableDeclaration","scope":6339,"src":"31855:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6315,"name":"int256","nodeType":"ElementaryTypeName","src":"31855:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31854:14:18"},"returnParameters":{"id":6320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6319,"mutability":"mutable","name":"downcasted","nameLocation":"31898:10:18","nodeType":"VariableDeclaration","scope":6339,"src":"31892:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":6318,"name":"int40","nodeType":"ElementaryTypeName","src":"31892:5:18","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31891:18:18"},"scope":6484,"src":"31838:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6364,"nodeType":"Block","src":"32448:148:18","statements":[{"expression":{"id":6352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6347,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"32458:10:18","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6350,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"32477:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32471:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":6348,"name":"int32","nodeType":"ElementaryTypeName","src":"32471:5:18","typeDescriptions":{}}},"id":6351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32471:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32458:25:18","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":6353,"nodeType":"ExpressionStatement","src":"32458:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6354,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"32497:10:18","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6355,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"32511:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32497:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6363,"nodeType":"IfStatement","src":"32493:97:18","trueBody":{"id":6362,"nodeType":"Block","src":"32518:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":6358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32569:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":6359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"32573:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6357,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"32539:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32539:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6361,"nodeType":"RevertStatement","src":"32532:47:18"}]}}]},"documentation":{"id":6340,"nodeType":"StructuredDocumentation","src":"32064:307:18","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":6365,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32385:7:18","nodeType":"FunctionDefinition","parameters":{"id":6343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6342,"mutability":"mutable","name":"value","nameLocation":"32400:5:18","nodeType":"VariableDeclaration","scope":6365,"src":"32393:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6341,"name":"int256","nodeType":"ElementaryTypeName","src":"32393:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32392:14:18"},"returnParameters":{"id":6346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6345,"mutability":"mutable","name":"downcasted","nameLocation":"32436:10:18","nodeType":"VariableDeclaration","scope":6365,"src":"32430:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":6344,"name":"int32","nodeType":"ElementaryTypeName","src":"32430:5:18","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32429:18:18"},"scope":6484,"src":"32376:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6390,"nodeType":"Block","src":"32986:148:18","statements":[{"expression":{"id":6378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6373,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6371,"src":"32996:10:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6368,"src":"33015:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33009:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6374,"name":"int24","nodeType":"ElementaryTypeName","src":"33009:5:18","typeDescriptions":{}}},"id":6377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33009:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32996:25:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6379,"nodeType":"ExpressionStatement","src":"32996:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6380,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6371,"src":"33035:10:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6368,"src":"33049:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33035:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6389,"nodeType":"IfStatement","src":"33031:97:18","trueBody":{"id":6388,"nodeType":"Block","src":"33056:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":6384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33107:2:18","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":6385,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6368,"src":"33111:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6383,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"33077:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33077:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6387,"nodeType":"RevertStatement","src":"33070:47:18"}]}}]},"documentation":{"id":6366,"nodeType":"StructuredDocumentation","src":"32602:307:18","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":6391,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32923:7:18","nodeType":"FunctionDefinition","parameters":{"id":6369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6368,"mutability":"mutable","name":"value","nameLocation":"32938:5:18","nodeType":"VariableDeclaration","scope":6391,"src":"32931:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6367,"name":"int256","nodeType":"ElementaryTypeName","src":"32931:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32930:14:18"},"returnParameters":{"id":6372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6371,"mutability":"mutable","name":"downcasted","nameLocation":"32974:10:18","nodeType":"VariableDeclaration","scope":6391,"src":"32968:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6370,"name":"int24","nodeType":"ElementaryTypeName","src":"32968:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32967:18:18"},"scope":6484,"src":"32914:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6416,"nodeType":"Block","src":"33524:148:18","statements":[{"expression":{"id":6404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6399,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"33534:10:18","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"33553:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33547:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":6400,"name":"int16","nodeType":"ElementaryTypeName","src":"33547:5:18","typeDescriptions":{}}},"id":6403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33547:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33534:25:18","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":6405,"nodeType":"ExpressionStatement","src":"33534:25:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6406,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"33573:10:18","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"33587:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33573:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6415,"nodeType":"IfStatement","src":"33569:97:18","trueBody":{"id":6414,"nodeType":"Block","src":"33594:72:18","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":6410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33645:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":6411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"33649:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6409,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"33615:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33615:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6413,"nodeType":"RevertStatement","src":"33608:47:18"}]}}]},"documentation":{"id":6392,"nodeType":"StructuredDocumentation","src":"33140:307:18","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":6417,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33461:7:18","nodeType":"FunctionDefinition","parameters":{"id":6395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6394,"mutability":"mutable","name":"value","nameLocation":"33476:5:18","nodeType":"VariableDeclaration","scope":6417,"src":"33469:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6393,"name":"int256","nodeType":"ElementaryTypeName","src":"33469:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33468:14:18"},"returnParameters":{"id":6398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6397,"mutability":"mutable","name":"downcasted","nameLocation":"33512:10:18","nodeType":"VariableDeclaration","scope":6417,"src":"33506:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":6396,"name":"int16","nodeType":"ElementaryTypeName","src":"33506:5:18","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33505:18:18"},"scope":6484,"src":"33452:220:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6442,"nodeType":"Block","src":"34055:146:18","statements":[{"expression":{"id":6430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6425,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"34065:10:18","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"34083:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34078:4:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":6426,"name":"int8","nodeType":"ElementaryTypeName","src":"34078:4:18","typeDescriptions":{}}},"id":6429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34078:11:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34065:24:18","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":6431,"nodeType":"ExpressionStatement","src":"34065:24:18"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6432,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"34103:10:18","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"34117:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34103:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6441,"nodeType":"IfStatement","src":"34099:96:18","trueBody":{"id":6440,"nodeType":"Block","src":"34124:71:18","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":6436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34175:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":6437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"34178:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6435,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"34145:29:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34145:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6439,"nodeType":"RevertStatement","src":"34138:46:18"}]}}]},"documentation":{"id":6418,"nodeType":"StructuredDocumentation","src":"33678:302:18","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":6443,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33994:6:18","nodeType":"FunctionDefinition","parameters":{"id":6421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6420,"mutability":"mutable","name":"value","nameLocation":"34008:5:18","nodeType":"VariableDeclaration","scope":6443,"src":"34001:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6419,"name":"int256","nodeType":"ElementaryTypeName","src":"34001:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34000:14:18"},"returnParameters":{"id":6424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6423,"mutability":"mutable","name":"downcasted","nameLocation":"34043:10:18","nodeType":"VariableDeclaration","scope":6443,"src":"34038:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":6422,"name":"int8","nodeType":"ElementaryTypeName","src":"34038:4:18","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34037:17:18"},"scope":6484,"src":"33985:216:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6472,"nodeType":"Block","src":"34441:250:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6451,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"34554:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":6456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34575:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6455,"name":"int256","nodeType":"ElementaryTypeName","src":"34575:6:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":6454,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34570:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34570:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":6458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34583:3:18","memberName":"max","nodeType":"MemberAccess","src":"34570:16:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34562:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6452,"name":"uint256","nodeType":"ElementaryTypeName","src":"34562:7:18","typeDescriptions":{}}},"id":6459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34562:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34554:33:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6466,"nodeType":"IfStatement","src":"34550:105:18","trueBody":{"id":6465,"nodeType":"Block","src":"34589:66:18","statements":[{"errorCall":{"arguments":[{"id":6462,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"34638:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6461,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4746,"src":"34610:27:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":6463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34610:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6464,"nodeType":"RevertStatement","src":"34603:41:18"}]}},{"expression":{"arguments":[{"id":6469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"34678:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34671:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6467,"name":"int256","nodeType":"ElementaryTypeName","src":"34671:6:18","typeDescriptions":{}}},"id":6470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34671:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6450,"id":6471,"nodeType":"Return","src":"34664:20:18"}]},"documentation":{"id":6444,"nodeType":"StructuredDocumentation","src":"34207:165:18","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":6473,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34386:8:18","nodeType":"FunctionDefinition","parameters":{"id":6447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6446,"mutability":"mutable","name":"value","nameLocation":"34403:5:18","nodeType":"VariableDeclaration","scope":6473,"src":"34395:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6445,"name":"uint256","nodeType":"ElementaryTypeName","src":"34395:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34394:15:18"},"returnParameters":{"id":6450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6449,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6473,"src":"34433:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6448,"name":"int256","nodeType":"ElementaryTypeName","src":"34433:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34432:8:18"},"scope":6484,"src":"34377:314:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6482,"nodeType":"Block","src":"34850:87:18","statements":[{"AST":{"nativeSrc":"34885:46:18","nodeType":"YulBlock","src":"34885:46:18","statements":[{"nativeSrc":"34899:22:18","nodeType":"YulAssignment","src":"34899:22:18","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34918:1:18","nodeType":"YulIdentifier","src":"34918:1:18"}],"functionName":{"name":"iszero","nativeSrc":"34911:6:18","nodeType":"YulIdentifier","src":"34911:6:18"},"nativeSrc":"34911:9:18","nodeType":"YulFunctionCall","src":"34911:9:18"}],"functionName":{"name":"iszero","nativeSrc":"34904:6:18","nodeType":"YulIdentifier","src":"34904:6:18"},"nativeSrc":"34904:17:18","nodeType":"YulFunctionCall","src":"34904:17:18"},"variableNames":[{"name":"u","nativeSrc":"34899:1:18","nodeType":"YulIdentifier","src":"34899:1:18"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6476,"isOffset":false,"isSlot":false,"src":"34918:1:18","valueSize":1},{"declaration":6479,"isOffset":false,"isSlot":false,"src":"34899:1:18","valueSize":1}],"flags":["memory-safe"],"id":6481,"nodeType":"InlineAssembly","src":"34860:71:18"}]},"documentation":{"id":6474,"nodeType":"StructuredDocumentation","src":"34697:90:18","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":6483,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34801:6:18","nodeType":"FunctionDefinition","parameters":{"id":6477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6476,"mutability":"mutable","name":"b","nameLocation":"34813:1:18","nodeType":"VariableDeclaration","scope":6483,"src":"34808:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6475,"name":"bool","nodeType":"ElementaryTypeName","src":"34808:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34807:8:18"},"returnParameters":{"id":6480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6479,"mutability":"mutable","name":"u","nameLocation":"34847:1:18","nodeType":"VariableDeclaration","scope":6483,"src":"34839:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6478,"name":"uint256","nodeType":"ElementaryTypeName","src":"34839:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34838:11:18"},"scope":6484,"src":"34792:145:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6485,"src":"769:34170:18","usedErrors":[4729,4734,4741,4746],"usedEvents":[]}],"src":"192:34748:18"},"id":18},"contracts/BagFiZapper.sol":{"ast":{"absolutePath":"contracts/BagFiZapper.sol","exportedSymbols":{"BagFiZapper":[6593],"IERC1363":[229],"IERC20":[1137],"IERC20Metadata":[1897],"IERC4626":[407],"SafeERC20":[2352]},"id":6594,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6486,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:19"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":6487,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6594,"sourceUnit":1138,"src":"58:56:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":6488,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6594,"sourceUnit":2353,"src":"115:65:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":6489,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6594,"sourceUnit":408,"src":"181:57:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"BagFiZapper","contractDependencies":[],"contractKind":"contract","documentation":{"id":6490,"nodeType":"StructuredDocumentation","src":"240:179:19","text":" @title BagFiZapper\n @dev Facilitates 1-click zap-ins: taking any token, converting it to the Vault's asset (via 1inch/LiFi),\n and depositing into the ERC4626 vault."},"fullyImplemented":true,"id":6593,"linearizedBaseContracts":[6593],"name":"BagFiZapper","nameLocation":"429:11:19","nodeType":"ContractDefinition","nodes":[{"global":false,"id":6494,"libraryName":{"id":6491,"name":"SafeERC20","nameLocations":["453:9:19"],"nodeType":"IdentifierPath","referencedDeclaration":2352,"src":"453:9:19"},"nodeType":"UsingForDirective","src":"447:27:19","typeName":{"id":6493,"nodeType":"UserDefinedTypeName","pathNode":{"id":6492,"name":"IERC20","nameLocations":["467:6:19"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"467:6:19"},"referencedDeclaration":1137,"src":"467:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}},{"body":{"id":6591,"nodeType":"Block","src":"1130:775:19","statements":[{"expression":{"arguments":[{"expression":{"id":6515,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1220:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1224:6:19","memberName":"sender","nodeType":"MemberAccess","src":"1220:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6519,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1240:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_BagFiZapper_$6593","typeString":"contract BagFiZapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BagFiZapper_$6593","typeString":"contract BagFiZapper"}],"id":6518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1232:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6517,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:19","typeDescriptions":{}}},"id":6520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1232:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6521,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6503,"src":"1247:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6512,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"1195:7:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":6514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1203:16:19","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":1977,"src":"1195:24:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$1137_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":6522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1195:61:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6523,"nodeType":"ExpressionStatement","src":"1195:61:19"},{"expression":{"arguments":[{"id":6527,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6505,"src":"1321:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6528,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6503,"src":"1329:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6524,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"1305:7:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":6526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1313:7:19","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1124,"src":"1305:15:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":6529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6530,"nodeType":"ExpressionStatement","src":"1305:33:19"},{"assignments":[6532,null],"declarations":[{"constant":false,"id":6532,"mutability":"mutable","name":"success","nameLocation":"1409:7:19","nodeType":"VariableDeclaration","scope":6591,"src":"1404:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6531,"name":"bool","nodeType":"ElementaryTypeName","src":"1404:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":6540,"initialValue":{"arguments":[{"id":6538,"name":"swapData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"1452:8:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":6533,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6505,"src":"1422:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1429:4:19","memberName":"call","nodeType":"MemberAccess","src":"1422:11:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":6537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":6535,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1441:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1445:5:19","memberName":"value","nodeType":"MemberAccess","src":"1441:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1422:29:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":6539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1403:58:19"},{"expression":{"arguments":[{"id":6542,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6532,"src":"1479:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53776170206661696c6564","id":6543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1488:13:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69","typeString":"literal_string \"Swap failed\""},"value":"Swap failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69","typeString":"literal_string \"Swap failed\""}],"id":6541,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1471:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1471:31:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6545,"nodeType":"ExpressionStatement","src":"1471:31:19"},{"assignments":[6548],"declarations":[{"constant":false,"id":6548,"mutability":"mutable","name":"asset","nameLocation":"1586:5:19","nodeType":"VariableDeclaration","scope":6591,"src":"1579:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":6547,"nodeType":"UserDefinedTypeName","pathNode":{"id":6546,"name":"IERC20","nameLocations":["1579:6:19"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"1579:6:19"},"referencedDeclaration":1137,"src":"1579:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"}],"id":6554,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6550,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"1601:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$407","typeString":"contract IERC4626"}},"id":6551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1607:5:19","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":276,"src":"1601:11:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":6552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1601:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6549,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"1594:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1137_$","typeString":"type(contract IERC20)"}},"id":6553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1594:21:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1579:36:19"},{"assignments":[6556],"declarations":[{"constant":false,"id":6556,"mutability":"mutable","name":"swappedAmount","nameLocation":"1633:13:19","nodeType":"VariableDeclaration","scope":6591,"src":"1625:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6555,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6564,"initialValue":{"arguments":[{"arguments":[{"id":6561,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1673:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_BagFiZapper_$6593","typeString":"contract BagFiZapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BagFiZapper_$6593","typeString":"contract BagFiZapper"}],"id":6560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1665:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6559,"name":"address","nodeType":"ElementaryTypeName","src":"1665:7:19","typeDescriptions":{}}},"id":6562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1665:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6557,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6548,"src":"1649:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":6558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1655:9:19","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1094,"src":"1649:15:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":6563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1649:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1625:54:19"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6566,"name":"swappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6556,"src":"1697:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1713:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1697:17:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20617373657473207265636569766564","id":6569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1716:20:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4","typeString":"literal_string \"No assets received\""},"value":"No assets received"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4","typeString":"literal_string \"No assets received\""}],"id":6565,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1689:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1689:48:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6571,"nodeType":"ExpressionStatement","src":"1689:48:19"},{"expression":{"arguments":[{"arguments":[{"id":6577,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"1814:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$407","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$407","typeString":"contract IERC4626"}],"id":6576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1806:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6575,"name":"address","nodeType":"ElementaryTypeName","src":"1806:7:19","typeDescriptions":{}}},"id":6578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1806:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6579,"name":"swappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6556,"src":"1822:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6572,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6548,"src":"1792:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":6574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1798:7:19","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1124,"src":"1792:13:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":6580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1792:44:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6581,"nodeType":"ExpressionStatement","src":"1792:44:19"},{"expression":{"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6582,"name":"sharesOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6510,"src":"1846:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6585,"name":"swappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6556,"src":"1872:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6586,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1887:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1891:6:19","memberName":"sender","nodeType":"MemberAccess","src":"1887:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6583,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"1858:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$407","typeString":"contract IERC4626"}},"id":6584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1864:7:19","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":324,"src":"1858:13:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":6588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1858:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1846:52:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6590,"nodeType":"ExpressionStatement","src":"1846:52:19"}]},"documentation":{"id":6495,"nodeType":"StructuredDocumentation","src":"480:448:19","text":" @dev Zap a supported token into the vault. This assumes the offchain API (like 1inch)\n provided the swap data to convert `tokenIn` to the Vault's `asset()`.\n \n @param vault The ERC4626 vault.\n @param tokenIn The token the user is depositing.\n @param amountIn The amount of `tokenIn` to deposit.\n @param router The swap router (e.g., 1inch).\n @param swapData The encoded swap transaction."},"functionSelector":"c53dbf70","id":6592,"implemented":true,"kind":"function","modifiers":[],"name":"zapIn","nameLocation":"942:5:19","nodeType":"FunctionDefinition","parameters":{"id":6508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6498,"mutability":"mutable","name":"vault","nameLocation":"966:5:19","nodeType":"VariableDeclaration","scope":6592,"src":"957:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$407","typeString":"contract IERC4626"},"typeName":{"id":6497,"nodeType":"UserDefinedTypeName","pathNode":{"id":6496,"name":"IERC4626","nameLocations":["957:8:19"],"nodeType":"IdentifierPath","referencedDeclaration":407,"src":"957:8:19"},"referencedDeclaration":407,"src":"957:8:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$407","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":6501,"mutability":"mutable","name":"tokenIn","nameLocation":"988:7:19","nodeType":"VariableDeclaration","scope":6592,"src":"981:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":6500,"nodeType":"UserDefinedTypeName","pathNode":{"id":6499,"name":"IERC20","nameLocations":["981:6:19"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"981:6:19"},"referencedDeclaration":1137,"src":"981:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":6503,"mutability":"mutable","name":"amountIn","nameLocation":"1013:8:19","nodeType":"VariableDeclaration","scope":6592,"src":"1005:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6502,"name":"uint256","nodeType":"ElementaryTypeName","src":"1005:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6505,"mutability":"mutable","name":"router","nameLocation":"1039:6:19","nodeType":"VariableDeclaration","scope":6592,"src":"1031:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6504,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6507,"mutability":"mutable","name":"swapData","nameLocation":"1070:8:19","nodeType":"VariableDeclaration","scope":6592,"src":"1055:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6506,"name":"bytes","nodeType":"ElementaryTypeName","src":"1055:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"947:137:19"},"returnParameters":{"id":6511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6510,"mutability":"mutable","name":"sharesOut","nameLocation":"1119:9:19","nodeType":"VariableDeclaration","scope":6592,"src":"1111:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1111:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1110:19:19"},"scope":6593,"src":"933:972:19","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":6594,"src":"420:1487:19","usedErrors":[1909],"usedEvents":[]}],"src":"32:1876:19"},"id":19},"contracts/SmartBagVault.sol":{"ast":{"absolutePath":"contracts/SmartBagVault.sol","exportedSymbols":{"Context":[2382],"ERC20":[1059],"ERC4626":[1871],"IERC1363":[229],"IERC20":[1137],"IERC20Metadata":[1897],"IERC4626":[407],"LowLevelCall":[2541],"Math":[4719],"Memory":[2890],"Ownable":[147],"Pausable":[3050],"SafeERC20":[2352],"SmartBagVault":[6916]},"id":6917,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6595,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:20"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol","id":6596,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6917,"sourceUnit":1872,"src":"58:68:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":6597,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6917,"sourceUnit":148,"src":"127:52:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":6598,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6917,"sourceUnit":2353,"src":"180:65:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Pausable.sol","file":"@openzeppelin/contracts/utils/Pausable.sol","id":6599,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6917,"sourceUnit":3051,"src":"246:52:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6601,"name":"ERC4626","nameLocations":["519:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":1871,"src":"519:7:20"},"id":6602,"nodeType":"InheritanceSpecifier","src":"519:7:20"},{"baseName":{"id":6603,"name":"Ownable","nameLocations":["528:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":147,"src":"528:7:20"},"id":6604,"nodeType":"InheritanceSpecifier","src":"528:7:20"},{"baseName":{"id":6605,"name":"Pausable","nameLocations":["537:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":3050,"src":"537:8:20"},"id":6606,"nodeType":"InheritanceSpecifier","src":"537:8:20"}],"canonicalName":"SmartBagVault","contractDependencies":[],"contractKind":"contract","documentation":{"id":6600,"nodeType":"StructuredDocumentation","src":"300:192:20","text":" @title SmartBagVault\n @dev An ERC4626 compliant vault that takes a single asset (e.g., USDC) and\n automatically deploys it into whitelisted yield strategies (e.g., Aave, Curve)."},"fullyImplemented":true,"id":6916,"linearizedBaseContracts":[6916,3050,147,1871,407,1059,449,1897,1137,2382],"name":"SmartBagVault","nameLocation":"502:13:20","nodeType":"ContractDefinition","nodes":[{"global":false,"id":6610,"libraryName":{"id":6607,"name":"SafeERC20","nameLocations":["558:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2352,"src":"558:9:20"},"nodeType":"UsingForDirective","src":"552:27:20","typeName":{"id":6609,"nodeType":"UserDefinedTypeName","pathNode":{"id":6608,"name":"IERC20","nameLocations":["572:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"572:6:20"},"referencedDeclaration":1137,"src":"572:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}},{"constant":false,"id":6613,"mutability":"immutable","name":"_asset","nameLocation":"651:6:20","nodeType":"VariableDeclaration","scope":6916,"src":"626:31:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":6612,"nodeType":"UserDefinedTypeName","pathNode":{"id":6611,"name":"IERC20","nameLocations":["626:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"626:6:20"},"referencedDeclaration":1137,"src":"626:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"functionSelector":"b20b2429","id":6616,"mutability":"mutable","name":"activeStrategies","nameLocation":"743:16:20","nodeType":"VariableDeclaration","scope":6916,"src":"726:33:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":6614,"name":"address","nodeType":"ElementaryTypeName","src":"726:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6615,"nodeType":"ArrayTypeName","src":"726:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"constant":false,"functionSelector":"d2581503","id":6620,"mutability":"mutable","name":"isActiveStrategy","nameLocation":"856:16:20","nodeType":"VariableDeclaration","scope":6916,"src":"824:48:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":6619,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6617,"name":"address","nodeType":"ElementaryTypeName","src":"832:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"824:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6618,"name":"bool","nodeType":"ElementaryTypeName","src":"843:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"anonymous":false,"eventSelector":"3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f1","id":6624,"name":"StrategyAdded","nameLocation":"885:13:20","nodeType":"EventDefinition","parameters":{"id":6623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6622,"indexed":true,"mutability":"mutable","name":"strategy","nameLocation":"915:8:20","nodeType":"VariableDeclaration","scope":6624,"src":"899:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6621,"name":"address","nodeType":"ElementaryTypeName","src":"899:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"898:26:20"},"src":"879:46:20"},{"anonymous":false,"eventSelector":"09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea4","id":6628,"name":"StrategyRemoved","nameLocation":"936:15:20","nodeType":"EventDefinition","parameters":{"id":6627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6626,"indexed":true,"mutability":"mutable","name":"strategy","nameLocation":"968:8:20","nodeType":"VariableDeclaration","scope":6628,"src":"952:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6625,"name":"address","nodeType":"ElementaryTypeName","src":"952:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"951:26:20"},"src":"930:48:20"},{"anonymous":false,"eventSelector":"04c429193504ad3c2cf06e0f2297127fd05e32601d5555ce5fd7eae9b77e4d1a","id":6634,"name":"FundsDeployed","nameLocation":"989:13:20","nodeType":"EventDefinition","parameters":{"id":6633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6630,"indexed":true,"mutability":"mutable","name":"strategy","nameLocation":"1019:8:20","nodeType":"VariableDeclaration","scope":6634,"src":"1003:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6629,"name":"address","nodeType":"ElementaryTypeName","src":"1003:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6632,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1037:6:20","nodeType":"VariableDeclaration","scope":6634,"src":"1029:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6631,"name":"uint256","nodeType":"ElementaryTypeName","src":"1029:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1002:42:20"},"src":"983:62:20"},{"anonymous":false,"eventSelector":"9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e752","id":6636,"name":"Paused","nameLocation":"1056:6:20","nodeType":"EventDefinition","parameters":{"id":6635,"nodeType":"ParameterList","parameters":[],"src":"1062:2:20"},"src":"1050:15:20"},{"anonymous":false,"eventSelector":"a45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d16933","id":6638,"name":"Unpaused","nameLocation":"1076:8:20","nodeType":"EventDefinition","parameters":{"id":6637,"nodeType":"ParameterList","parameters":[],"src":"1084:2:20"},"src":"1070:17:20"},{"body":{"id":6663,"nodeType":"Block","src":"1253:32:20","statements":[{"expression":{"id":6661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6659,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6613,"src":"1263:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6660,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6641,"src":"1272:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"src":"1263:15:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":6662,"nodeType":"ExpressionStatement","src":"1263:15:20"}]},"id":6664,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6648,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6641,"src":"1181:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}}],"id":6649,"kind":"baseConstructorSpecifier","modifierName":{"id":6647,"name":"ERC4626","nameLocations":["1173:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":1871,"src":"1173:7:20"},"nodeType":"ModifierInvocation","src":"1173:15:20"},{"arguments":[{"id":6651,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6643,"src":"1204:5:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":6652,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6645,"src":"1211:7:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":6653,"kind":"baseConstructorSpecifier","modifierName":{"id":6650,"name":"ERC20","nameLocations":["1198:5:20"],"nodeType":"IdentifierPath","referencedDeclaration":1059,"src":"1198:5:20"},"nodeType":"ModifierInvocation","src":"1198:21:20"},{"arguments":[{"expression":{"id":6655,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1237:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1241:6:20","memberName":"sender","nodeType":"MemberAccess","src":"1237:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6657,"kind":"baseConstructorSpecifier","modifierName":{"id":6654,"name":"Ownable","nameLocations":["1229:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":147,"src":"1229:7:20"},"nodeType":"ModifierInvocation","src":"1229:19:20"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6641,"mutability":"mutable","name":"asset_","nameLocation":"1112:6:20","nodeType":"VariableDeclaration","scope":6664,"src":"1105:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"},"typeName":{"id":6640,"nodeType":"UserDefinedTypeName","pathNode":{"id":6639,"name":"IERC20","nameLocations":["1105:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"1105:6:20"},"referencedDeclaration":1137,"src":"1105:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":6643,"mutability":"mutable","name":"name_","nameLocation":"1134:5:20","nodeType":"VariableDeclaration","scope":6664,"src":"1120:19:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6642,"name":"string","nodeType":"ElementaryTypeName","src":"1120:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6645,"mutability":"mutable","name":"symbol_","nameLocation":"1155:7:20","nodeType":"VariableDeclaration","scope":6664,"src":"1141:21:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6644,"name":"string","nodeType":"ElementaryTypeName","src":"1141:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1104:59:20"},"returnParameters":{"id":6658,"nodeType":"ParameterList","parameters":[],"src":"1253:0:20"},"scope":6916,"src":"1093:192:20","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6708,"nodeType":"Block","src":"1469:287:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6675,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"1487:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1507:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1499:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6676,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:20","typeDescriptions":{}}},"id":6679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1499:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1487:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53747261746567792063616e6e6f74206265207a65726f2061646472657373","id":6681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1511:33:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2","typeString":"literal_string \"Strategy cannot be zero address\""},"value":"Strategy cannot be zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2","typeString":"literal_string \"Strategy cannot be zero address\""}],"id":6674,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1479:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1479:66:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6683,"nodeType":"ExpressionStatement","src":"1479:66:20"},{"expression":{"arguments":[{"id":6688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1563:27:20","subExpression":{"baseExpression":{"id":6685,"name":"isActiveStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6620,"src":"1564:16:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6687,"indexExpression":{"id":6686,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"1581:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1564:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472617465677920616c726561647920616374697665","id":6689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1592:25:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa","typeString":"literal_string \"Strategy already active\""},"value":"Strategy already active"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa","typeString":"literal_string \"Strategy already active\""}],"id":6684,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1555:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1555:63:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6691,"nodeType":"ExpressionStatement","src":"1555:63:20"},{"expression":{"arguments":[{"id":6695,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"1659:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6692,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"1637:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1654:4:20","memberName":"push","nodeType":"MemberAccess","src":"1637:21:20","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":6696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1637:31:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6697,"nodeType":"ExpressionStatement","src":"1637:31:20"},{"expression":{"id":6702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6698,"name":"isActiveStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6620,"src":"1678:16:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6700,"indexExpression":{"id":6699,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"1695:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1678:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":6701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1707:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1678:33:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6703,"nodeType":"ExpressionStatement","src":"1678:33:20"},{"eventCall":{"arguments":[{"id":6705,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"1740:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6704,"name":"StrategyAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6624,"src":"1726:13:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":6706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1726:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6707,"nodeType":"EmitStatement","src":"1721:28:20"}]},"documentation":{"id":6665,"nodeType":"StructuredDocumentation","src":"1291:101:20","text":" @dev Add a new strategy.\n @param strategy The address of the strategy to add"},"functionSelector":"223e5479","id":6709,"implemented":true,"kind":"function","modifiers":[{"id":6670,"kind":"modifierInvocation","modifierName":{"id":6669,"name":"onlyOwner","nameLocations":["1445:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"1445:9:20"},"nodeType":"ModifierInvocation","src":"1445:9:20"},{"id":6672,"kind":"modifierInvocation","modifierName":{"id":6671,"name":"whenNotPaused","nameLocations":["1455:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2975,"src":"1455:13:20"},"nodeType":"ModifierInvocation","src":"1455:13:20"}],"name":"addStrategy","nameLocation":"1406:11:20","nodeType":"FunctionDefinition","parameters":{"id":6668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6667,"mutability":"mutable","name":"strategy","nameLocation":"1426:8:20","nodeType":"VariableDeclaration","scope":6709,"src":"1418:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6666,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1417:18:20"},"returnParameters":{"id":6673,"nodeType":"ParameterList","parameters":[],"src":"1469:0:20"},"scope":6916,"src":"1397:359:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6802,"nodeType":"Block","src":"1945:857:20","statements":[{"expression":{"arguments":[{"baseExpression":{"id":6720,"name":"isActiveStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6620,"src":"1963:16:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6722,"indexExpression":{"id":6721,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6712,"src":"1980:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1963:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374726174656779206973206e6f7420616374697665","id":6723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1991:24:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a","typeString":"literal_string \"Strategy is not active\""},"value":"Strategy is not active"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a","typeString":"literal_string \"Strategy is not active\""}],"id":6719,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1955:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1955:61:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6725,"nodeType":"ExpressionStatement","src":"1955:61:20"},{"assignments":[6727],"declarations":[{"constant":false,"id":6727,"mutability":"mutable","name":"indexToRemove","nameLocation":"2081:13:20","nodeType":"VariableDeclaration","scope":6802,"src":"2073:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6726,"name":"uint256","nodeType":"ElementaryTypeName","src":"2073:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6729,"initialValue":{"hexValue":"30","id":6728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2097:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2073:25:20"},{"assignments":[6731],"declarations":[{"constant":false,"id":6731,"mutability":"mutable","name":"found","nameLocation":"2113:5:20","nodeType":"VariableDeclaration","scope":6802,"src":"2108:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6730,"name":"bool","nodeType":"ElementaryTypeName","src":"2108:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6733,"initialValue":{"hexValue":"66616c7365","id":6732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2121:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"2108:18:20"},{"body":{"id":6761,"nodeType":"Block","src":"2190:164:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":6745,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"2208:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6747,"indexExpression":{"id":6746,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6735,"src":"2225:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2208:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6748,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6712,"src":"2231:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2208:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6760,"nodeType":"IfStatement","src":"2204:140:20","trueBody":{"id":6759,"nodeType":"Block","src":"2241:103:20","statements":[{"expression":{"id":6752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6750,"name":"indexToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6727,"src":"2259:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6751,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6735,"src":"2275:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2259:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6753,"nodeType":"ExpressionStatement","src":"2259:17:20"},{"expression":{"id":6756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6754,"name":"found","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6731,"src":"2294:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":6755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2302:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2294:12:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6757,"nodeType":"ExpressionStatement","src":"2294:12:20"},{"id":6758,"nodeType":"Break","src":"2324:5:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6738,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6735,"src":"2156:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6739,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"2160:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2177:6:20","memberName":"length","nodeType":"MemberAccess","src":"2160:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2156:27:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6762,"initializationExpression":{"assignments":[6735],"declarations":[{"constant":false,"id":6735,"mutability":"mutable","name":"i","nameLocation":"2149:1:20","nodeType":"VariableDeclaration","scope":6762,"src":"2141:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6734,"name":"uint256","nodeType":"ElementaryTypeName","src":"2141:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6737,"initialValue":{"hexValue":"30","id":6736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2153:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2141:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":6743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2185:3:20","subExpression":{"id":6742,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6735,"src":"2185:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6744,"nodeType":"ExpressionStatement","src":"2185:3:20"},"nodeType":"ForStatement","src":"2136:218:20"},{"expression":{"arguments":[{"id":6764,"name":"found","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6731,"src":"2380:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374726174656779206e6f7420666f756e6420696e206163746976652073747261746567696573","id":6765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2387:41:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273","typeString":"literal_string \"Strategy not found in active strategies\""},"value":"Strategy not found in active strategies"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273","typeString":"literal_string \"Strategy not found in active strategies\""}],"id":6763,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2372:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2372:57:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6767,"nodeType":"ExpressionStatement","src":"2372:57:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6768,"name":"indexToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6727,"src":"2522:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6769,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"2538:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2555:6:20","memberName":"length","nodeType":"MemberAccess","src":"2538:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2564:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2538:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2522:43:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6786,"nodeType":"IfStatement","src":"2518:153:20","trueBody":{"id":6785,"nodeType":"Block","src":"2567:104:20","statements":[{"expression":{"id":6783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6774,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"2581:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6776,"indexExpression":{"id":6775,"name":"indexToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6727,"src":"2598:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2581:31:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":6777,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"2615:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6782,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6778,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"2632:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2649:6:20","memberName":"length","nodeType":"MemberAccess","src":"2632:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2658:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2632:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2615:45:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2581:79:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6784,"nodeType":"ExpressionStatement","src":"2581:79:20"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6787,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"2680:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2697:3:20","memberName":"pop","nodeType":"MemberAccess","src":"2680:20:20","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":6790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2680:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6791,"nodeType":"ExpressionStatement","src":"2680:22:20"},{"expression":{"id":6796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6792,"name":"isActiveStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6620,"src":"2721:16:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6794,"indexExpression":{"id":6793,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6712,"src":"2738:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2721:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":6795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2750:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2721:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6797,"nodeType":"ExpressionStatement","src":"2721:34:20"},{"eventCall":{"arguments":[{"id":6799,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6712,"src":"2786:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6798,"name":"StrategyRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"2770:15:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":6800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2770:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6801,"nodeType":"EmitStatement","src":"2765:30:20"}]},"documentation":{"id":6710,"nodeType":"StructuredDocumentation","src":"1762:103:20","text":" @dev Remove a strategy.\n @param strategy The address of the strategy to remove"},"functionSelector":"175188e8","id":6803,"implemented":true,"kind":"function","modifiers":[{"id":6715,"kind":"modifierInvocation","modifierName":{"id":6714,"name":"onlyOwner","nameLocations":["1921:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"1921:9:20"},"nodeType":"ModifierInvocation","src":"1921:9:20"},{"id":6717,"kind":"modifierInvocation","modifierName":{"id":6716,"name":"whenNotPaused","nameLocations":["1931:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2975,"src":"1931:13:20"},"nodeType":"ModifierInvocation","src":"1931:13:20"}],"name":"removeStrategy","nameLocation":"1879:14:20","nodeType":"FunctionDefinition","parameters":{"id":6713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6712,"mutability":"mutable","name":"strategy","nameLocation":"1902:8:20","nodeType":"VariableDeclaration","scope":6803,"src":"1894:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6711,"name":"address","nodeType":"ElementaryTypeName","src":"1894:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1893:18:20"},"returnParameters":{"id":6718,"nodeType":"ParameterList","parameters":[],"src":"1945:0:20"},"scope":6916,"src":"1870:932:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6841,"nodeType":"Block","src":"3084:414:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6816,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"3102:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6817,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"3118:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3135:6:20","memberName":"length","nodeType":"MemberAccess","src":"3118:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3102:39:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420737472617465677920696e646578","id":6820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3143:24:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b","typeString":"literal_string \"Invalid strategy index\""},"value":"Invalid strategy index"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b","typeString":"literal_string \"Invalid strategy index\""}],"id":6815,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3094:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3094:74:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6822,"nodeType":"ExpressionStatement","src":"3094:74:20"},{"assignments":[6824],"declarations":[{"constant":false,"id":6824,"mutability":"mutable","name":"strategy","nameLocation":"3186:8:20","nodeType":"VariableDeclaration","scope":6841,"src":"3178:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6823,"name":"address","nodeType":"ElementaryTypeName","src":"3178:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6828,"initialValue":{"baseExpression":{"id":6825,"name":"activeStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"3197:16:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6827,"indexExpression":{"id":6826,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"3214:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3197:31:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3178:50:20"},{"expression":{"arguments":[{"id":6832,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6824,"src":"3418:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6833,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6808,"src":"3428:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6829,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6613,"src":"3398:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1137","typeString":"contract IERC20"}},"id":6831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3405:12:20","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":1946,"src":"3398:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1137_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$1137_$","typeString":"function (contract IERC20,address,uint256)"}},"id":6834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3398:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6835,"nodeType":"ExpressionStatement","src":"3398:37:20"},{"eventCall":{"arguments":[{"id":6837,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6824,"src":"3474:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6838,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6808,"src":"3484:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6836,"name":"FundsDeployed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"3460:13:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3460:31:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6840,"nodeType":"EmitStatement","src":"3455:36:20"}]},"documentation":{"id":6804,"nodeType":"StructuredDocumentation","src":"2808:173:20","text":" @dev Deploy underlying assets to a specific strategy.\n Note: In a production environment, this should interface with specific protocols (Aave, etc.)"},"functionSelector":"0c474691","id":6842,"implemented":true,"kind":"function","modifiers":[{"id":6811,"kind":"modifierInvocation","modifierName":{"id":6810,"name":"onlyOwner","nameLocations":["3060:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"3060:9:20"},"nodeType":"ModifierInvocation","src":"3060:9:20"},{"id":6813,"kind":"modifierInvocation","modifierName":{"id":6812,"name":"whenNotPaused","nameLocations":["3070:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2975,"src":"3070:13:20"},"nodeType":"ModifierInvocation","src":"3070:13:20"}],"name":"deployToStrategy","nameLocation":"2995:16:20","nodeType":"FunctionDefinition","parameters":{"id":6809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6806,"mutability":"mutable","name":"strategyIndex","nameLocation":"3020:13:20","nodeType":"VariableDeclaration","scope":6842,"src":"3012:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6805,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6808,"mutability":"mutable","name":"amount","nameLocation":"3043:6:20","nodeType":"VariableDeclaration","scope":6842,"src":"3035:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6807,"name":"uint256","nodeType":"ElementaryTypeName","src":"3035:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3011:39:20"},"returnParameters":{"id":6814,"nodeType":"ParameterList","parameters":[],"src":"3084:0:20"},"scope":6916,"src":"2986:512:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6851,"nodeType":"Block","src":"3597:25:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6848,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"3607:6:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3607:8:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6850,"nodeType":"ExpressionStatement","src":"3607:8:20"}]},"documentation":{"id":6843,"nodeType":"StructuredDocumentation","src":"3504:52:20","text":" @dev Pause all critical functions"},"functionSelector":"8456cb59","id":6852,"implemented":true,"kind":"function","modifiers":[{"id":6846,"kind":"modifierInvocation","modifierName":{"id":6845,"name":"onlyOwner","nameLocations":["3587:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"3587:9:20"},"nodeType":"ModifierInvocation","src":"3587:9:20"}],"name":"pause","nameLocation":"3570:5:20","nodeType":"FunctionDefinition","parameters":{"id":6844,"nodeType":"ParameterList","parameters":[],"src":"3575:2:20"},"returnParameters":{"id":6847,"nodeType":"ParameterList","parameters":[],"src":"3597:0:20"},"scope":6916,"src":"3561:61:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6861,"nodeType":"Block","src":"3725:27:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6858,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3049,"src":"3735:8:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3735:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6860,"nodeType":"ExpressionStatement","src":"3735:10:20"}]},"documentation":{"id":6853,"nodeType":"StructuredDocumentation","src":"3628:54:20","text":" @dev Unpause all critical functions"},"functionSelector":"3f4ba83a","id":6862,"implemented":true,"kind":"function","modifiers":[{"id":6856,"kind":"modifierInvocation","modifierName":{"id":6855,"name":"onlyOwner","nameLocations":["3715:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"3715:9:20"},"nodeType":"ModifierInvocation","src":"3715:9:20"}],"name":"unpause","nameLocation":"3696:7:20","nodeType":"FunctionDefinition","parameters":{"id":6854,"nodeType":"ParameterList","parameters":[],"src":"3703:2:20"},"returnParameters":{"id":6857,"nodeType":"ParameterList","parameters":[],"src":"3725:0:20"},"scope":6916,"src":"3687:65:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1774],"body":{"id":6886,"nodeType":"Block","src":"3975:214:20","statements":[{"expression":{"arguments":[{"id":6880,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6865,"src":"4000:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6881,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6867,"src":"4008:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6882,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6869,"src":"4018:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6883,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"4026:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6877,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3985:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SmartBagVault_$6916_$","typeString":"type(contract super SmartBagVault)"}},"id":6879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3991:8:20","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":1774,"src":"3985:14:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":6884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3985:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6885,"nodeType":"ExpressionStatement","src":"3985:48:20"}]},"documentation":{"id":6863,"nodeType":"StructuredDocumentation","src":"3758:50:20","text":" @dev Called after deposit/mint."},"id":6887,"implemented":true,"kind":"function","modifiers":[{"id":6875,"kind":"modifierInvocation","modifierName":{"id":6874,"name":"whenNotPaused","nameLocations":["3961:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2975,"src":"3961:13:20"},"nodeType":"ModifierInvocation","src":"3961:13:20"}],"name":"_deposit","nameLocation":"3822:8:20","nodeType":"FunctionDefinition","overrides":{"id":6873,"nodeType":"OverrideSpecifier","overrides":[],"src":"3952:8:20"},"parameters":{"id":6872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6865,"mutability":"mutable","name":"caller","nameLocation":"3848:6:20","nodeType":"VariableDeclaration","scope":6887,"src":"3840:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6864,"name":"address","nodeType":"ElementaryTypeName","src":"3840:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6867,"mutability":"mutable","name":"receiver","nameLocation":"3872:8:20","nodeType":"VariableDeclaration","scope":6887,"src":"3864:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6866,"name":"address","nodeType":"ElementaryTypeName","src":"3864:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6869,"mutability":"mutable","name":"assets","nameLocation":"3898:6:20","nodeType":"VariableDeclaration","scope":6887,"src":"3890:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6868,"name":"uint256","nodeType":"ElementaryTypeName","src":"3890:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6871,"mutability":"mutable","name":"shares","nameLocation":"3922:6:20","nodeType":"VariableDeclaration","scope":6887,"src":"3914:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6870,"name":"uint256","nodeType":"ElementaryTypeName","src":"3914:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3830:104:20"},"returnParameters":{"id":6876,"nodeType":"ParameterList","parameters":[],"src":"3975:0:20"},"scope":6916,"src":"3813:376:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1818],"body":{"id":6914,"nodeType":"Block","src":"4437:73:20","statements":[{"expression":{"arguments":[{"id":6907,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4463:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6908,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6892,"src":"4471:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6909,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6894,"src":"4481:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6910,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"4488:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6911,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"4496:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6904,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4447:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SmartBagVault_$6916_$","typeString":"type(contract super SmartBagVault)"}},"id":6906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4453:9:20","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":1818,"src":"4447:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":6912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4447:56:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6913,"nodeType":"ExpressionStatement","src":"4447:56:20"}]},"documentation":{"id":6888,"nodeType":"StructuredDocumentation","src":"4195:51:20","text":" @dev Called after withdraw/burn."},"id":6915,"implemented":true,"kind":"function","modifiers":[{"id":6902,"kind":"modifierInvocation","modifierName":{"id":6901,"name":"whenNotPaused","nameLocations":["4423:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2975,"src":"4423:13:20"},"nodeType":"ModifierInvocation","src":"4423:13:20"}],"name":"_withdraw","nameLocation":"4260:9:20","nodeType":"FunctionDefinition","overrides":{"id":6900,"nodeType":"OverrideSpecifier","overrides":[],"src":"4414:8:20"},"parameters":{"id":6899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6890,"mutability":"mutable","name":"caller","nameLocation":"4287:6:20","nodeType":"VariableDeclaration","scope":6915,"src":"4279:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6889,"name":"address","nodeType":"ElementaryTypeName","src":"4279:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6892,"mutability":"mutable","name":"receiver","nameLocation":"4311:8:20","nodeType":"VariableDeclaration","scope":6915,"src":"4303:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6891,"name":"address","nodeType":"ElementaryTypeName","src":"4303:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6894,"mutability":"mutable","name":"owner","nameLocation":"4337:5:20","nodeType":"VariableDeclaration","scope":6915,"src":"4329:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6893,"name":"address","nodeType":"ElementaryTypeName","src":"4329:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6896,"mutability":"mutable","name":"assets","nameLocation":"4360:6:20","nodeType":"VariableDeclaration","scope":6915,"src":"4352:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6895,"name":"uint256","nodeType":"ElementaryTypeName","src":"4352:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6898,"mutability":"mutable","name":"shares","nameLocation":"4384:6:20","nodeType":"VariableDeclaration","scope":6915,"src":"4376:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6897,"name":"uint256","nodeType":"ElementaryTypeName","src":"4376:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4269:127:20"},"returnParameters":{"id":6903,"nodeType":"ParameterList","parameters":[],"src":"4437:0:20"},"scope":6916,"src":"4251:259:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":6917,"src":"493:4019:20","usedErrors":[13,18,419,424,429,438,443,448,1175,1184,1193,1202,1909,2964,2967],"usedEvents":[24,258,270,1071,1080,2956,2961,6624,6628,6634,6636,6638]}],"src":"32:4481:20"},"id":20},"contracts/mocks/MockERC20.sol":{"ast":{"absolutePath":"contracts/mocks/MockERC20.sol","exportedSymbols":{"MockERC20":[7090]},"id":7091,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6918,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:21"},{"abstract":false,"baseContracts":[],"canonicalName":"MockERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":6919,"nodeType":"StructuredDocumentation","src":"58:45:21","text":" @dev Simple ERC20 mock for testing"},"fullyImplemented":true,"id":7090,"linearizedBaseContracts":[7090],"name":"MockERC20","nameLocation":"113:9:21","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":6921,"mutability":"mutable","name":"name","nameLocation":"143:4:21","nodeType":"VariableDeclaration","scope":7090,"src":"129:18:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6920,"name":"string","nodeType":"ElementaryTypeName","src":"129:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":6923,"mutability":"mutable","name":"symbol","nameLocation":"167:6:21","nodeType":"VariableDeclaration","scope":7090,"src":"153:20:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6922,"name":"string","nodeType":"ElementaryTypeName","src":"153:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"functionSelector":"313ce567","id":6925,"mutability":"mutable","name":"decimals","nameLocation":"192:8:21","nodeType":"VariableDeclaration","scope":7090,"src":"179:21:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6924,"name":"uint8","nodeType":"ElementaryTypeName","src":"179:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":6929,"mutability":"mutable","name":"balanceOf","nameLocation":"241:9:21","nodeType":"VariableDeclaration","scope":7090,"src":"206:44:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6928,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6926,"name":"address","nodeType":"ElementaryTypeName","src":"214:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"206:27:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6927,"name":"uint256","nodeType":"ElementaryTypeName","src":"225:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"functionSelector":"dd62ed3e","id":6935,"mutability":"mutable","name":"allowance","nameLocation":"311:9:21","nodeType":"VariableDeclaration","scope":7090,"src":"256:64:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":6934,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6930,"name":"address","nodeType":"ElementaryTypeName","src":"264:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"256:47:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6933,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6931,"name":"address","nodeType":"ElementaryTypeName","src":"283:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"275:27:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6932,"name":"uint256","nodeType":"ElementaryTypeName","src":"294:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"body":{"id":6956,"nodeType":"Block","src":"400:85:21","statements":[{"expression":{"id":6946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6944,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6921,"src":"410:4:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6945,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"417:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"410:12:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6947,"nodeType":"ExpressionStatement","src":"410:12:21"},{"expression":{"id":6950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6948,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6923,"src":"432:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6949,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6939,"src":"441:7:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"432:16:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6951,"nodeType":"ExpressionStatement","src":"432:16:21"},{"expression":{"id":6954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6952,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6925,"src":"458:8:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6953,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6941,"src":"469:9:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"458:20:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6955,"nodeType":"ExpressionStatement","src":"458:20:21"}]},"id":6957,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6937,"mutability":"mutable","name":"name_","nameLocation":"353:5:21","nodeType":"VariableDeclaration","scope":6957,"src":"339:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6936,"name":"string","nodeType":"ElementaryTypeName","src":"339:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6939,"mutability":"mutable","name":"symbol_","nameLocation":"374:7:21","nodeType":"VariableDeclaration","scope":6957,"src":"360:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6938,"name":"string","nodeType":"ElementaryTypeName","src":"360:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6941,"mutability":"mutable","name":"decimals_","nameLocation":"389:9:21","nodeType":"VariableDeclaration","scope":6957,"src":"383:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6940,"name":"uint8","nodeType":"ElementaryTypeName","src":"383:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"338:61:21"},"returnParameters":{"id":6943,"nodeType":"ParameterList","parameters":[],"src":"400:0:21"},"scope":7090,"src":"327:158:21","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6993,"nodeType":"Block","src":"561:220:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":6966,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"575:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6969,"indexExpression":{"expression":{"id":6967,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"585:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"589:6:21","memberName":"sender","nodeType":"MemberAccess","src":"585:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"575:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6970,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"599:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"575:30:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6977,"nodeType":"IfStatement","src":"571:109:21","trueBody":{"id":6976,"nodeType":"Block","src":"607:73:21","statements":[{"expression":{"arguments":[{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":6973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"628:40:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"id":6972,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"621:6:21","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"621:48:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6975,"nodeType":"ExpressionStatement","src":"621:48:21"}]}},{"expression":{"id":6983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6978,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"689:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6981,"indexExpression":{"expression":{"id":6979,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"699:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"703:6:21","memberName":"sender","nodeType":"MemberAccess","src":"699:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"689:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6982,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"714:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"689:31:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6984,"nodeType":"ExpressionStatement","src":"689:31:21"},{"expression":{"id":6989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6985,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"730:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6987,"indexExpression":{"id":6986,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6959,"src":"740:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"730:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6988,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"747:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6990,"nodeType":"ExpressionStatement","src":"730:23:21"},{"expression":{"hexValue":"74727565","id":6991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"770:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6965,"id":6992,"nodeType":"Return","src":"763:11:21"}]},"functionSelector":"a9059cbb","id":6994,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"500:8:21","nodeType":"FunctionDefinition","parameters":{"id":6962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6959,"mutability":"mutable","name":"to","nameLocation":"517:2:21","nodeType":"VariableDeclaration","scope":6994,"src":"509:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6958,"name":"address","nodeType":"ElementaryTypeName","src":"509:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6961,"mutability":"mutable","name":"amount","nameLocation":"529:6:21","nodeType":"VariableDeclaration","scope":6994,"src":"521:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6960,"name":"uint256","nodeType":"ElementaryTypeName","src":"521:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"508:28:21"},"returnParameters":{"id":6965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6964,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6994,"src":"555:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6963,"name":"bool","nodeType":"ElementaryTypeName","src":"555:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"554:6:21"},"scope":7090,"src":"491:290:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7014,"nodeType":"Block","src":"861:77:21","statements":[{"expression":{"id":7010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7003,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6935,"src":"871:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7007,"indexExpression":{"expression":{"id":7004,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"881:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"885:6:21","memberName":"sender","nodeType":"MemberAccess","src":"881:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"871:21:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7008,"indexExpression":{"id":7006,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"893:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"871:30:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7009,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6998,"src":"904:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"871:39:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7011,"nodeType":"ExpressionStatement","src":"871:39:21"},{"expression":{"hexValue":"74727565","id":7012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"927:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7002,"id":7013,"nodeType":"Return","src":"920:11:21"}]},"functionSelector":"095ea7b3","id":7015,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"796:7:21","nodeType":"FunctionDefinition","parameters":{"id":6999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6996,"mutability":"mutable","name":"spender","nameLocation":"812:7:21","nodeType":"VariableDeclaration","scope":7015,"src":"804:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6995,"name":"address","nodeType":"ElementaryTypeName","src":"804:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6998,"mutability":"mutable","name":"amount","nameLocation":"829:6:21","nodeType":"VariableDeclaration","scope":7015,"src":"821:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6997,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"803:33:21"},"returnParameters":{"id":7002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7001,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7015,"src":"855:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7000,"name":"bool","nodeType":"ElementaryTypeName","src":"855:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"854:6:21"},"scope":7090,"src":"787:151:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7074,"nodeType":"Block","src":"1032:390:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7026,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1046:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7028,"indexExpression":{"id":7027,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7017,"src":"1056:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1046:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7029,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"1064:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1046:24:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7036,"nodeType":"IfStatement","src":"1042:103:21","trueBody":{"id":7035,"nodeType":"Block","src":"1072:73:21","statements":[{"expression":{"arguments":[{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":7032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1093:40:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"id":7031,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1086:6:21","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1086:48:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7034,"nodeType":"ExpressionStatement","src":"1086:48:21"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":7037,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6935,"src":"1158:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7039,"indexExpression":{"id":7038,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7017,"src":"1168:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1158:15:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7042,"indexExpression":{"expression":{"id":7040,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1174:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1178:6:21","memberName":"sender","nodeType":"MemberAccess","src":"1174:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1158:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7043,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"1188:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1158:36:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7050,"nodeType":"IfStatement","src":"1154:117:21","trueBody":{"id":7049,"nodeType":"Block","src":"1196:75:21","statements":[{"expression":{"arguments":[{"hexValue":"45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365","id":7046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1217:42:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330","typeString":"literal_string \"ERC20: transfer amount exceeds allowance\""},"value":"ERC20: transfer amount exceeds allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330","typeString":"literal_string \"ERC20: transfer amount exceeds allowance\""}],"id":7045,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1210:6:21","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":7047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1210:50:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7048,"nodeType":"ExpressionStatement","src":"1210:50:21"}]}},{"expression":{"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7051,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1289:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7053,"indexExpression":{"id":7052,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7017,"src":"1299:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1289:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":7054,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"1308:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1289:25:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7056,"nodeType":"ExpressionStatement","src":"1289:25:21"},{"expression":{"id":7061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7057,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1324:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7059,"indexExpression":{"id":7058,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"1334:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1324:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7060,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"1341:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1324:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7062,"nodeType":"ExpressionStatement","src":"1324:23:21"},{"expression":{"id":7070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7063,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6935,"src":"1357:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7067,"indexExpression":{"id":7064,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7017,"src":"1367:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1357:15:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7068,"indexExpression":{"expression":{"id":7065,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1373:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1377:6:21","memberName":"sender","nodeType":"MemberAccess","src":"1373:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1357:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":7069,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"1388:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1357:37:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7071,"nodeType":"ExpressionStatement","src":"1357:37:21"},{"expression":{"hexValue":"74727565","id":7072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1411:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7025,"id":7073,"nodeType":"Return","src":"1404:11:21"}]},"functionSelector":"23b872dd","id":7075,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"953:12:21","nodeType":"FunctionDefinition","parameters":{"id":7022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7017,"mutability":"mutable","name":"from","nameLocation":"974:4:21","nodeType":"VariableDeclaration","scope":7075,"src":"966:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7016,"name":"address","nodeType":"ElementaryTypeName","src":"966:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7019,"mutability":"mutable","name":"to","nameLocation":"988:2:21","nodeType":"VariableDeclaration","scope":7075,"src":"980:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7018,"name":"address","nodeType":"ElementaryTypeName","src":"980:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7021,"mutability":"mutable","name":"amount","nameLocation":"1000:6:21","nodeType":"VariableDeclaration","scope":7075,"src":"992:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7020,"name":"uint256","nodeType":"ElementaryTypeName","src":"992:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"965:42:21"},"returnParameters":{"id":7025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7024,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7075,"src":"1026:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7023,"name":"bool","nodeType":"ElementaryTypeName","src":"1026:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1025:6:21"},"scope":7090,"src":"944:478:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7088,"nodeType":"Block","src":"1479:40:21","statements":[{"expression":{"id":7086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7082,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1489:9:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7084,"indexExpression":{"id":7083,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7077,"src":"1499:2:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1489:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7085,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7079,"src":"1506:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1489:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7087,"nodeType":"ExpressionStatement","src":"1489:23:21"}]},"functionSelector":"40c10f19","id":7089,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"1437:4:21","nodeType":"FunctionDefinition","parameters":{"id":7080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7077,"mutability":"mutable","name":"to","nameLocation":"1450:2:21","nodeType":"VariableDeclaration","scope":7089,"src":"1442:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7076,"name":"address","nodeType":"ElementaryTypeName","src":"1442:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7079,"mutability":"mutable","name":"amount","nameLocation":"1462:6:21","nodeType":"VariableDeclaration","scope":7089,"src":"1454:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7078,"name":"uint256","nodeType":"ElementaryTypeName","src":"1454:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1441:28:21"},"returnParameters":{"id":7081,"nodeType":"ParameterList","parameters":[],"src":"1479:0:21"},"scope":7090,"src":"1428:91:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7091,"src":"104:1417:21","usedErrors":[],"usedEvents":[]}],"src":"32:1489:21"},"id":21},"contracts/mocks/MockRouter.sol":{"ast":{"absolutePath":"contracts/mocks/MockRouter.sol","exportedSymbols":{"MockRouter":[7109]},"id":7110,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7092,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:22"},{"abstract":false,"baseContracts":[],"canonicalName":"MockRouter","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":7109,"linearizedBaseContracts":[7109],"name":"MockRouter","nameLocation":"127:10:22","nodeType":"ContractDefinition","nodes":[{"body":{"id":7103,"nodeType":"Block","src":"365:145:22","statements":[]},"functionSelector":"0b51588d","id":7104,"implemented":true,"kind":"function","modifiers":[],"name":"swapAndSend","nameLocation":"223:11:22","nodeType":"FunctionDefinition","parameters":{"id":7101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7094,"mutability":"mutable","name":"fromToken","nameLocation":"252:9:22","nodeType":"VariableDeclaration","scope":7104,"src":"244:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7093,"name":"address","nodeType":"ElementaryTypeName","src":"244:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7096,"mutability":"mutable","name":"toToken","nameLocation":"279:7:22","nodeType":"VariableDeclaration","scope":7104,"src":"271:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7095,"name":"address","nodeType":"ElementaryTypeName","src":"271:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7098,"mutability":"mutable","name":"fromAmount","nameLocation":"304:10:22","nodeType":"VariableDeclaration","scope":7104,"src":"296:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7097,"name":"uint256","nodeType":"ElementaryTypeName","src":"296:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7100,"mutability":"mutable","name":"toAddress","nameLocation":"332:9:22","nodeType":"VariableDeclaration","scope":7104,"src":"324:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7099,"name":"address","nodeType":"ElementaryTypeName","src":"324:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"234:113:22"},"returnParameters":{"id":7102,"nodeType":"ParameterList","parameters":[],"src":"365:0:22"},"scope":7109,"src":"214:296:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":7107,"nodeType":"Block","src":"543:38:22","statements":[]},"id":7108,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7105,"nodeType":"ParameterList","parameters":[],"src":"523:2:22"},"returnParameters":{"id":7106,"nodeType":"ParameterList","parameters":[],"src":"543:0:22"},"scope":7109,"src":"516:65:22","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":7110,"src":"118:465:22","usedErrors":[],"usedEvents":[]}],"src":"32:552:22"},"id":22},"contracts/mocks/MockStrategy.sol":{"ast":{"absolutePath":"contracts/mocks/MockStrategy.sol","exportedSymbols":{"MockStrategy":[7125]},"id":7126,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7111,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:23"},{"abstract":false,"baseContracts":[],"canonicalName":"MockStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":7112,"nodeType":"StructuredDocumentation","src":"58:57:23","text":" @dev Simple mock strategy contract for testing"},"fullyImplemented":true,"id":7125,"linearizedBaseContracts":[7125],"name":"MockStrategy","nameLocation":"125:12:23","nodeType":"ContractDefinition","nodes":[{"body":{"id":7117,"nodeType":"Block","src":"234:47:23","statements":[]},"functionSelector":"b6b55f25","id":7118,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"196:7:23","nodeType":"FunctionDefinition","parameters":{"id":7115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7114,"mutability":"mutable","name":"amount","nameLocation":"212:6:23","nodeType":"VariableDeclaration","scope":7118,"src":"204:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7113,"name":"uint256","nodeType":"ElementaryTypeName","src":"204:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"203:16:23"},"returnParameters":{"id":7116,"nodeType":"ParameterList","parameters":[],"src":"234:0:23"},"scope":7125,"src":"187:94:23","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":7123,"nodeType":"Block","src":"339:47:23","statements":[]},"functionSelector":"2e1a7d4d","id":7124,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"300:8:23","nodeType":"FunctionDefinition","parameters":{"id":7121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7120,"mutability":"mutable","name":"amount","nameLocation":"317:6:23","nodeType":"VariableDeclaration","scope":7124,"src":"309:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7119,"name":"uint256","nodeType":"ElementaryTypeName","src":"309:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"308:16:23"},"returnParameters":{"id":7122,"nodeType":"ParameterList","parameters":[],"src":"339:0:23"},"scope":7125,"src":"291:95:23","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":7126,"src":"116:272:23","usedErrors":[],"usedEvents":[]}],"src":"32:356:23"},"id":23}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"IERC1363":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"IERC4626":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalManagedAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-4626 \\\"Tokenized Vault Standard\\\", as defined in https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if called in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC4626.sol\":\"IERC4626\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}"},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}"},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol":{"ERC4626":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC-4626 \\\"Tokenized Vault Standard\\\" as defined in https://eips.ethereum.org/EIPS/eip-4626[ERC-4626]. This extension allows the minting and burning of \\\"shares\\\" (represented using the ERC-20 inheritance) in exchange for underlying \\\"assets\\\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends the ERC-20 standard. Any additional extensions included along it would affect the \\\"shares\\\" token represented by this contract and not the \\\"assets\\\" token which is an independent contract. [CAUTION] ==== In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning with a \\\"donation\\\" to the vault that inflates the price of a share. This is variously known as a donation or inflation attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by verifying the amount received is as expected, using a wrapper that performs these checks such as https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router]. Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk. The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains. With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the underlying math can be found xref:ROOT:erc4626.adoc#inflation-attack[here]. The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets will cause the first user to exit to experience reduced losses in detriment to the last users that will experience bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the `_convertToShares` and `_convertToAssets` functions. To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide]. ==== [NOTE] ==== When overriding this contract, some elements must be considered: * When overriding the behavior of the deposit or withdraw mechanisms, it is recommended to override the internal functions. Overriding {_deposit} automatically affects both {deposit} and {mint}. Similarly, overriding {_withdraw} automatically affects both {withdraw} and {redeem}. Overall it is not recommended to override the public facing functions since that could lead to inconsistent behaviors between the {deposit} and {mint} or between {withdraw} and {redeem}, which is documented to have led to loss of funds. * Overrides to the deposit or withdraw mechanism must be reflected in the preview functions as well. * {maxWithdraw} depends on {maxRedeem}. Therefore, overriding {maxRedeem} only is enough. On the other hand, overriding {maxWithdraw} only would have no effect on {maxRedeem}, and could create an inconsistency between the two functions. * If {previewRedeem} is overridden to revert, {maxWithdraw} must be overridden as necessary to ensure it always return successfully. ====\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `owner`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `owner`.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777).\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if called in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":\"ERC4626\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0xaf981f76e8c7114161294c30b30468e2a7a19c3550023c40cee417a1c7cfec21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da2ff7222360cd0828ed409858cf7267e7809f876d53427bd1543f2635d7406a\",\"dweb:/ipfs/QmTEf8PiH1ixABQLizjen1iMEMuPeAZqiVPt9AUsdn8boB\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5\",\"dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x2e7bad5e7af061641d83d7d1c76a5c257e3a72839a215f0ed9983aa5900b5650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://774cb2501045a51b589a7b0642a0fe09cb9728956f49f7b0994adc3f5278f759\",\"dweb:/ipfs/QmZB5mD4eiFQLicfAaPU4P1BXvjGCeJQoCdVgNhR5fpvwh\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"SafeERC20FailedDecreaseAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220428002000609e1a05d9eadd3a114cd201ec3780f334ba1f1654be517ff41782164736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP DUP1 MUL STOP MOD MULMOD 0xE1 LOG0 TSTORE SWAP15 0xAD 0xD3 LOG1 EQ 0xCD KECCAK256 0x1E 0xC3 PUSH25 0xF334BA1F1654BE517FF41782164736F6C634300081A003300 ","sourceMap":"698:12615:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220428002000609e1a05d9eadd3a114cd201ec3780f334ba1f1654be517ff41782164736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP DUP1 MUL STOP MOD MULMOD 0xE1 LOG0 TSTORE SWAP15 0xAD 0xD3 LOG1 EQ 0xCD KECCAK256 0x1E 0xC3 PUSH25 0xF334BA1F1654BE517FF41782164736F6C634300081A003300 ","sourceMap":"698:12615:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/LowLevelCall.sol":{"LowLevelCall":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205679da2b544fd3f8a04ab50b966f771bdd3756f7bfa02f8b6778a2250fb37c2464736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP PUSH26 0xDA2B544FD3F8A04AB50B966F771BDD3756F7BFA02F8B6778A225 0xF 0xB3 PUSH29 0x2464736F6C634300081A00330000000000000000000000000000000000 ","sourceMap":"421:5125:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205679da2b544fd3f8a04ab50b966f771bdd3756f7bfa02f8b6778a2250fb37c2464736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP PUSH26 0xDA2B544FD3F8A04AB50B966F771BDD3756F7BFA02F8B6778A225 0xF 0xB3 PUSH29 0x2464736F6C634300081A00330000000000000000000000000000000000 ","sourceMap":"421:5125:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library of low level call functions that implement different calling strategies to deal with the return data. WARNING: Using this library requires an advanced understanding of Solidity and how the EVM works. It is recommended to use the {Address} library instead.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/LowLevelCall.sol\":\"LowLevelCall\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5\",\"dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Memory.sol":{"Memory":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220befa5497a478bec4500da022dda57f2535c9754f3d75669d065767afb857188a64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE STATICCALL SLOAD SWAP8 LOG4 PUSH25 0xBEC4500DA022DDA57F2535C9754F3D75669D065767AFB85718 DUP11 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"780:5313:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220befa5497a478bec4500da022dda57f2535c9754f3d75669d065767afb857188a64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE STATICCALL SLOAD SWAP8 LOG4 PUSH25 0xBEC4500DA022DDA57F2535C9754F3D75669D065767AFB85718 DUP11 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"780:5313:13:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Utilities to manipulate memory. Memory is a contiguous and dynamic byte array in which Solidity stores non-primitive types. This library provides functions to manipulate pointers to this dynamic array and work with slices of it. Slices provide a view into a portion of memory without copying data, enabling efficient substring operations. WARNING: When manipulating memory pointers or slices, make sure to follow the Solidity documentation guidelines for https://docs.soliditylang.org/en/v0.8.20/assembly.html#memory-safety[Memory Safety].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Memory.sol\":\"Memory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x2e7bad5e7af061641d83d7d1c76a5c257e3a72839a215f0ed9983aa5900b5650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://774cb2501045a51b589a7b0642a0fe09cb9728956f49f7b0994adc3f5278f759\",\"dweb:/ipfs/QmZB5mD4eiFQLicfAaPU4P1BXvjGCeJQoCdVgNhR5fpvwh\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Panic.sol":{"Panic":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f55ff6bf7552944e02bc2e758597beaadbcf6c3c3213e4e251fce95e8c3dd88b64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 PUSH0 0xF6 0xBF PUSH22 0x52944E02BC2E758597BEAADBCF6C3C3213E4E251FCE9 MCOPY DUP13 RETURNDATASIZE 0xD8 DUP12 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"657:1315:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f55ff6bf7552944e02bc2e758597beaadbcf6c3c3213e4e251fce95e8c3dd88b64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 PUSH0 0xF6 0xBF PUSH22 0x52944E02BC2E758597BEAADBCF6C3C3213E4E251FCE9 MCOPY DUP13 RETURNDATASIZE 0xD8 DUP12 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"657:1315:14:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Pausable.sol":{"Pausable":{"abi":[{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"paused()":"5c975abb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e33d8a8c1e25427a1d70c2ca25b71f98f4fdf183d430c2a4dde290040710b6a464736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 RETURNDATASIZE DUP11 DUP13 0x1E 0x25 TIMESTAMP PUSH27 0x1D70C2CA25B71F98F4FDF183D430C2A4DDE290040710B6A464736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"281:32382:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e33d8a8c1e25427a1d70c2ca25b71f98f4fdf183d430c2a4dde290040710b6a464736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 RETURNDATASIZE DUP11 DUP13 0x1E 0x25 TIMESTAMP PUSH27 0x1D70C2CA25B71F98F4FDF183D430C2A4DDE290040710B6A464736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"281:32382:17:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f895499850b99389076a1b06a525eddf7e7e185b87b2c43078c1d960bdcbd13f64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 SWAP6 BLOBHASH SWAP9 POP 0xB9 SWAP4 DUP10 SMOD PUSH11 0x1B06A525EDDF7E7E185B87 0xB2 0xC4 ADDRESS PUSH25 0xC1D960BDCBD13F64736F6C634300081A003300000000000000 ","sourceMap":"769:34170:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f895499850b99389076a1b06a525eddf7e7e185b87b2c43078c1d960bdcbd13f64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 SWAP6 BLOBHASH SWAP9 POP 0xB9 SWAP4 DUP10 SMOD PUSH11 0x1B06A525EDDF7E7E185B87 0xB2 0xC4 ADDRESS PUSH25 0xC1D960BDCBD13F64736F6C634300081A003300000000000000 ","sourceMap":"769:34170:18:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in a uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"A uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}"}},"contracts/BagFiZapper.sol":{"BagFiZapper":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"bytes","name":"swapData","type":"bytes"}],"name":"zapIn","outputs":[{"internalType":"uint256","name":"sharesOut","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600e575f80fd5b506109888061001c5f395ff3fe60806040526004361061001d575f3560e01c8063c53dbf7014610021575b5f80fd5b61003b6004803603810190610036919061060c565b610051565b60405161004891906106b1565b60405180910390f35b5f61007f3330878973ffffffffffffffffffffffffffffffffffffffff166103da909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b385876040518363ffffffff1660e01b81526004016100ba9291906106d9565b6020604051808303815f875af11580156100d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fa9190610735565b505f8473ffffffffffffffffffffffffffffffffffffffff1634858560405161012492919061079c565b5f6040518083038185875af1925050503d805f811461015e576040519150601f19603f3d011682016040523d82523d5f602084013e610163565b606091505b50509050806101a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019e9061080e565b60405180910390fd5b5f8873ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102159190610840565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610251919061086b565b602060405180830381865afa15801561026c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102909190610898565b90505f81116102d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cb9061090d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b38b836040518363ffffffff1660e01b815260040161030f9291906106d9565b6020604051808303815f875af115801561032b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034f9190610735565b508973ffffffffffffffffffffffffffffffffffffffff16636e553f6582336040518363ffffffff1660e01b815260040161038b92919061092b565b6020604051808303815f875af11580156103a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cb9190610898565b93505050509695505050505050565b6103e884848484600161042f565b61042957836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610420919061086b565b60405180910390fd5b50505050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f5114831661048d578383151615610481573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104d1826104a8565b9050919050565b5f6104e2826104c7565b9050919050565b6104f2816104d8565b81146104fc575f80fd5b50565b5f8135905061050d816104e9565b92915050565b5f61051d826104c7565b9050919050565b61052d81610513565b8114610537575f80fd5b50565b5f8135905061054881610524565b92915050565b5f819050919050565b6105608161054e565b811461056a575f80fd5b50565b5f8135905061057b81610557565b92915050565b61058a816104c7565b8114610594575f80fd5b50565b5f813590506105a581610581565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126105cc576105cb6105ab565b5b8235905067ffffffffffffffff8111156105e9576105e86105af565b5b602083019150836001820283011115610605576106046105b3565b5b9250929050565b5f805f805f8060a08789031215610626576106256104a0565b5b5f61063389828a016104ff565b965050602061064489828a0161053a565b955050604061065589828a0161056d565b945050606061066689828a01610597565b935050608087013567ffffffffffffffff811115610687576106866104a4565b5b61069389828a016105b7565b92509250509295509295509295565b6106ab8161054e565b82525050565b5f6020820190506106c45f8301846106a2565b92915050565b6106d3816104c7565b82525050565b5f6040820190506106ec5f8301856106ca565b6106f960208301846106a2565b9392505050565b5f8115159050919050565b61071481610700565b811461071e575f80fd5b50565b5f8151905061072f8161070b565b92915050565b5f6020828403121561074a576107496104a0565b5b5f61075784828501610721565b91505092915050565b5f81905092915050565b828183375f83830152505050565b5f6107838385610760565b935061079083858461076a565b82840190509392505050565b5f6107a8828486610778565b91508190509392505050565b5f82825260208201905092915050565b7f53776170206661696c65640000000000000000000000000000000000000000005f82015250565b5f6107f8600b836107b4565b9150610803826107c4565b602082019050919050565b5f6020820190508181035f830152610825816107ec565b9050919050565b5f8151905061083a81610581565b92915050565b5f60208284031215610855576108546104a0565b5b5f6108628482850161082c565b91505092915050565b5f60208201905061087e5f8301846106ca565b92915050565b5f8151905061089281610557565b92915050565b5f602082840312156108ad576108ac6104a0565b5b5f6108ba84828501610884565b91505092915050565b7f4e6f2061737365747320726563656976656400000000000000000000000000005f82015250565b5f6108f76012836107b4565b9150610902826108c3565b602082019050919050565b5f6020820190508181035f830152610924816108eb565b9050919050565b5f60408201905061093e5f8301856106a2565b61094b60208301846106ca565b939250505056fea2646970667358221220b8f2ab90286576d5fc15901bcf47d054ff9cd09547fc6a212ab14eb1fe448b7a64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x988 DUP1 PUSH2 0x1C PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC53DBF70 EQ PUSH2 0x21 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x3B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x36 SWAP2 SWAP1 PUSH2 0x60C JUMP JUMPDEST PUSH2 0x51 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x48 SWAP2 SWAP1 PUSH2 0x6B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH2 0x7F CALLER ADDRESS DUP8 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DA SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 DUP6 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBA SWAP3 SWAP2 SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFA SWAP2 SWAP1 PUSH2 0x735 JUMP JUMPDEST POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x124 SWAP3 SWAP2 SWAP1 PUSH2 0x79C JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x15E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x163 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19E SWAP1 PUSH2 0x80E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x215 SWAP2 SWAP1 PUSH2 0x840 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x251 SWAP2 SWAP1 PUSH2 0x86B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x290 SWAP2 SWAP1 PUSH2 0x898 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT PUSH2 0x2D4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CB SWAP1 PUSH2 0x90D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 DUP12 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30F SWAP3 SWAP2 SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x34F SWAP2 SWAP1 PUSH2 0x735 JUMP JUMPDEST POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E553F65 DUP3 CALLER PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x38B SWAP3 SWAP2 SWAP1 PUSH2 0x92B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x898 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3E8 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x42F JUMP JUMPDEST PUSH2 0x429 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x86B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 POP PUSH1 0x40 MLOAD DUP2 PUSH0 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP8 AND PUSH1 0x4 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP7 AND PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH0 PUSH1 0x64 PUSH0 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x48D JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x481 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST DUP1 PUSH1 0x40 MSTORE PUSH0 PUSH1 0x60 MSTORE POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4D1 DUP3 PUSH2 0x4A8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4E2 DUP3 PUSH2 0x4C7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4F2 DUP2 PUSH2 0x4D8 JUMP JUMPDEST DUP2 EQ PUSH2 0x4FC JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x50D DUP2 PUSH2 0x4E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x51D DUP3 PUSH2 0x4C7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x52D DUP2 PUSH2 0x513 JUMP JUMPDEST DUP2 EQ PUSH2 0x537 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x548 DUP2 PUSH2 0x524 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x560 DUP2 PUSH2 0x54E JUMP JUMPDEST DUP2 EQ PUSH2 0x56A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x57B DUP2 PUSH2 0x557 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x58A DUP2 PUSH2 0x4C7 JUMP JUMPDEST DUP2 EQ PUSH2 0x594 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5A5 DUP2 PUSH2 0x581 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5CC JUMPI PUSH2 0x5CB PUSH2 0x5AB JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5E9 JUMPI PUSH2 0x5E8 PUSH2 0x5AF JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x605 JUMPI PUSH2 0x604 PUSH2 0x5B3 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x626 JUMPI PUSH2 0x625 PUSH2 0x4A0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x633 DUP10 DUP3 DUP11 ADD PUSH2 0x4FF JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x644 DUP10 DUP3 DUP11 ADD PUSH2 0x53A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x655 DUP10 DUP3 DUP11 ADD PUSH2 0x56D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x666 DUP10 DUP3 DUP11 ADD PUSH2 0x597 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x687 JUMPI PUSH2 0x686 PUSH2 0x4A4 JUMP JUMPDEST JUMPDEST PUSH2 0x693 DUP10 DUP3 DUP11 ADD PUSH2 0x5B7 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x6AB DUP2 PUSH2 0x54E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6C4 PUSH0 DUP4 ADD DUP5 PUSH2 0x6A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6D3 DUP2 PUSH2 0x4C7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6EC PUSH0 DUP4 ADD DUP6 PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6A2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x714 DUP2 PUSH2 0x700 JUMP JUMPDEST DUP2 EQ PUSH2 0x71E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x72F DUP2 PUSH2 0x70B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x74A JUMPI PUSH2 0x749 PUSH2 0x4A0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x757 DUP5 DUP3 DUP6 ADD PUSH2 0x721 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x783 DUP4 DUP6 PUSH2 0x760 JUMP JUMPDEST SWAP4 POP PUSH2 0x790 DUP4 DUP6 DUP5 PUSH2 0x76A JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7A8 DUP3 DUP5 DUP7 PUSH2 0x778 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x53776170206661696C6564000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x7F8 PUSH1 0xB DUP4 PUSH2 0x7B4 JUMP JUMPDEST SWAP2 POP PUSH2 0x803 DUP3 PUSH2 0x7C4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x825 DUP2 PUSH2 0x7EC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x83A DUP2 PUSH2 0x581 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x855 JUMPI PUSH2 0x854 PUSH2 0x4A0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x862 DUP5 DUP3 DUP6 ADD PUSH2 0x82C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x87E PUSH0 DUP4 ADD DUP5 PUSH2 0x6CA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x892 DUP2 PUSH2 0x557 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8AD JUMPI PUSH2 0x8AC PUSH2 0x4A0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x8BA DUP5 DUP3 DUP6 ADD PUSH2 0x884 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E6F206173736574732072656365697665640000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x8F7 PUSH1 0x12 DUP4 PUSH2 0x7B4 JUMP JUMPDEST SWAP2 POP PUSH2 0x902 DUP3 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x924 DUP2 PUSH2 0x8EB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x93E PUSH0 DUP4 ADD DUP6 PUSH2 0x6A2 JUMP JUMPDEST PUSH2 0x94B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6CA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 CALLCODE 0xAB SWAP1 0x28 PUSH6 0x76D5FC15901B 0xCF SELFBALANCE 0xD0 SLOAD SELFDESTRUCT SWAP13 0xD0 SWAP6 SELFBALANCE 0xFC PUSH11 0x212AB14EB1FE448B7A6473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"420:1487:19:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_safeTransferFrom_2328":{"entryPoint":1071,"id":2328,"parameterSlots":5,"returnSlots":1},"@safeTransferFrom_1977":{"entryPoint":986,"id":1977,"parameterSlots":4,"returnSlots":0},"@zapIn_6592":{"entryPoint":81,"id":6592,"parameterSlots":6,"returnSlots":1},"abi_decode_t_address":{"entryPoint":1431,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":2092,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":1825,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":1463,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_contract$_IERC20_$1137":{"entryPoint":1338,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_IERC4626_$407":{"entryPoint":1279,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":1389,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":2180,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":2112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":1845,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC4626_$407t_contract$_IERC20_$1137t_uint256t_addresst_bytes_calldata_ptr":{"entryPoint":1548,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":2200,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":1738,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1912,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69_to_t_string_memory_ptr_fromStack":{"entryPoint":2028,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4_to_t_string_memory_ptr_fromStack":{"entryPoint":2283,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":1698,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1948,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":2155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":1753,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2062,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2317,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":1713,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed":{"entryPoint":2347,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1888,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":1972,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":1223,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":1792,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IERC20_$1137":{"entryPoint":1299,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IERC4626_$407":{"entryPoint":1240,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":1192,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":1358,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1898,"id":null,"parameterSlots":3,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":1455,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":1451,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":1459,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":1188,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":1184,"id":null,"parameterSlots":0,"returnSlots":0},"store_literal_in_memory_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69":{"entryPoint":1988,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4":{"entryPoint":2243,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":1409,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":1803,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_IERC20_$1137":{"entryPoint":1316,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_IERC4626_$407":{"entryPoint":1257,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":1367,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:10389:24","nodeType":"YulBlock","src":"0:10389:24","statements":[{"body":{"nativeSrc":"47:35:24","nodeType":"YulBlock","src":"47:35:24","statements":[{"nativeSrc":"57:19:24","nodeType":"YulAssignment","src":"57:19:24","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:24","nodeType":"YulLiteral","src":"73:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:24","nodeType":"YulIdentifier","src":"67:5:24"},"nativeSrc":"67:9:24","nodeType":"YulFunctionCall","src":"67:9:24"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:24","nodeType":"YulIdentifier","src":"57:6:24"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:24","nodeType":"YulTypedName","src":"40:6:24","type":""}],"src":"7:75:24"},{"body":{"nativeSrc":"177:28:24","nodeType":"YulBlock","src":"177:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:24","nodeType":"YulLiteral","src":"194:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:24","nodeType":"YulLiteral","src":"197:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:24","nodeType":"YulIdentifier","src":"187:6:24"},"nativeSrc":"187:12:24","nodeType":"YulFunctionCall","src":"187:12:24"},"nativeSrc":"187:12:24","nodeType":"YulExpressionStatement","src":"187:12:24"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:24","nodeType":"YulFunctionDefinition","src":"88:117:24"},{"body":{"nativeSrc":"300:28:24","nodeType":"YulBlock","src":"300:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:24","nodeType":"YulLiteral","src":"317:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:24","nodeType":"YulLiteral","src":"320:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:24","nodeType":"YulIdentifier","src":"310:6:24"},"nativeSrc":"310:12:24","nodeType":"YulFunctionCall","src":"310:12:24"},"nativeSrc":"310:12:24","nodeType":"YulExpressionStatement","src":"310:12:24"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:24","nodeType":"YulFunctionDefinition","src":"211:117:24"},{"body":{"nativeSrc":"379:81:24","nodeType":"YulBlock","src":"379:81:24","statements":[{"nativeSrc":"389:65:24","nodeType":"YulAssignment","src":"389:65:24","value":{"arguments":[{"name":"value","nativeSrc":"404:5:24","nodeType":"YulIdentifier","src":"404:5:24"},{"kind":"number","nativeSrc":"411:42:24","nodeType":"YulLiteral","src":"411:42:24","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:24","nodeType":"YulIdentifier","src":"400:3:24"},"nativeSrc":"400:54:24","nodeType":"YulFunctionCall","src":"400:54:24"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:24","nodeType":"YulIdentifier","src":"389:7:24"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:24","nodeType":"YulTypedName","src":"361:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:24","nodeType":"YulTypedName","src":"371:7:24","type":""}],"src":"334:126:24"},{"body":{"nativeSrc":"511:51:24","nodeType":"YulBlock","src":"511:51:24","statements":[{"nativeSrc":"521:35:24","nodeType":"YulAssignment","src":"521:35:24","value":{"arguments":[{"name":"value","nativeSrc":"550:5:24","nodeType":"YulIdentifier","src":"550:5:24"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:24","nodeType":"YulIdentifier","src":"532:17:24"},"nativeSrc":"532:24:24","nodeType":"YulFunctionCall","src":"532:24:24"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:24","nodeType":"YulIdentifier","src":"521:7:24"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:24","nodeType":"YulTypedName","src":"493:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:24","nodeType":"YulTypedName","src":"503:7:24","type":""}],"src":"466:96:24"},{"body":{"nativeSrc":"629:51:24","nodeType":"YulBlock","src":"629:51:24","statements":[{"nativeSrc":"639:35:24","nodeType":"YulAssignment","src":"639:35:24","value":{"arguments":[{"name":"value","nativeSrc":"668:5:24","nodeType":"YulIdentifier","src":"668:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"650:17:24","nodeType":"YulIdentifier","src":"650:17:24"},"nativeSrc":"650:24:24","nodeType":"YulFunctionCall","src":"650:24:24"},"variableNames":[{"name":"cleaned","nativeSrc":"639:7:24","nodeType":"YulIdentifier","src":"639:7:24"}]}]},"name":"cleanup_t_contract$_IERC4626_$407","nativeSrc":"568:112:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"611:5:24","nodeType":"YulTypedName","src":"611:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"621:7:24","nodeType":"YulTypedName","src":"621:7:24","type":""}],"src":"568:112:24"},{"body":{"nativeSrc":"745:95:24","nodeType":"YulBlock","src":"745:95:24","statements":[{"body":{"nativeSrc":"818:16:24","nodeType":"YulBlock","src":"818:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"827:1:24","nodeType":"YulLiteral","src":"827:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"830:1:24","nodeType":"YulLiteral","src":"830:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"820:6:24","nodeType":"YulIdentifier","src":"820:6:24"},"nativeSrc":"820:12:24","nodeType":"YulFunctionCall","src":"820:12:24"},"nativeSrc":"820:12:24","nodeType":"YulExpressionStatement","src":"820:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"768:5:24","nodeType":"YulIdentifier","src":"768:5:24"},{"arguments":[{"name":"value","nativeSrc":"809:5:24","nodeType":"YulIdentifier","src":"809:5:24"}],"functionName":{"name":"cleanup_t_contract$_IERC4626_$407","nativeSrc":"775:33:24","nodeType":"YulIdentifier","src":"775:33:24"},"nativeSrc":"775:40:24","nodeType":"YulFunctionCall","src":"775:40:24"}],"functionName":{"name":"eq","nativeSrc":"765:2:24","nodeType":"YulIdentifier","src":"765:2:24"},"nativeSrc":"765:51:24","nodeType":"YulFunctionCall","src":"765:51:24"}],"functionName":{"name":"iszero","nativeSrc":"758:6:24","nodeType":"YulIdentifier","src":"758:6:24"},"nativeSrc":"758:59:24","nodeType":"YulFunctionCall","src":"758:59:24"},"nativeSrc":"755:79:24","nodeType":"YulIf","src":"755:79:24"}]},"name":"validator_revert_t_contract$_IERC4626_$407","nativeSrc":"686:154:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"738:5:24","nodeType":"YulTypedName","src":"738:5:24","type":""}],"src":"686:154:24"},{"body":{"nativeSrc":"914:103:24","nodeType":"YulBlock","src":"914:103:24","statements":[{"nativeSrc":"924:29:24","nodeType":"YulAssignment","src":"924:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"946:6:24","nodeType":"YulIdentifier","src":"946:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"933:12:24","nodeType":"YulIdentifier","src":"933:12:24"},"nativeSrc":"933:20:24","nodeType":"YulFunctionCall","src":"933:20:24"},"variableNames":[{"name":"value","nativeSrc":"924:5:24","nodeType":"YulIdentifier","src":"924:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1005:5:24","nodeType":"YulIdentifier","src":"1005:5:24"}],"functionName":{"name":"validator_revert_t_contract$_IERC4626_$407","nativeSrc":"962:42:24","nodeType":"YulIdentifier","src":"962:42:24"},"nativeSrc":"962:49:24","nodeType":"YulFunctionCall","src":"962:49:24"},"nativeSrc":"962:49:24","nodeType":"YulExpressionStatement","src":"962:49:24"}]},"name":"abi_decode_t_contract$_IERC4626_$407","nativeSrc":"846:171:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"892:6:24","nodeType":"YulTypedName","src":"892:6:24","type":""},{"name":"end","nativeSrc":"900:3:24","nodeType":"YulTypedName","src":"900:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"908:5:24","nodeType":"YulTypedName","src":"908:5:24","type":""}],"src":"846:171:24"},{"body":{"nativeSrc":"1083:51:24","nodeType":"YulBlock","src":"1083:51:24","statements":[{"nativeSrc":"1093:35:24","nodeType":"YulAssignment","src":"1093:35:24","value":{"arguments":[{"name":"value","nativeSrc":"1122:5:24","nodeType":"YulIdentifier","src":"1122:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1104:17:24","nodeType":"YulIdentifier","src":"1104:17:24"},"nativeSrc":"1104:24:24","nodeType":"YulFunctionCall","src":"1104:24:24"},"variableNames":[{"name":"cleaned","nativeSrc":"1093:7:24","nodeType":"YulIdentifier","src":"1093:7:24"}]}]},"name":"cleanup_t_contract$_IERC20_$1137","nativeSrc":"1023:111:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1065:5:24","nodeType":"YulTypedName","src":"1065:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1075:7:24","nodeType":"YulTypedName","src":"1075:7:24","type":""}],"src":"1023:111:24"},{"body":{"nativeSrc":"1198:94:24","nodeType":"YulBlock","src":"1198:94:24","statements":[{"body":{"nativeSrc":"1270:16:24","nodeType":"YulBlock","src":"1270:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1279:1:24","nodeType":"YulLiteral","src":"1279:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1282:1:24","nodeType":"YulLiteral","src":"1282:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1272:6:24","nodeType":"YulIdentifier","src":"1272:6:24"},"nativeSrc":"1272:12:24","nodeType":"YulFunctionCall","src":"1272:12:24"},"nativeSrc":"1272:12:24","nodeType":"YulExpressionStatement","src":"1272:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1221:5:24","nodeType":"YulIdentifier","src":"1221:5:24"},{"arguments":[{"name":"value","nativeSrc":"1261:5:24","nodeType":"YulIdentifier","src":"1261:5:24"}],"functionName":{"name":"cleanup_t_contract$_IERC20_$1137","nativeSrc":"1228:32:24","nodeType":"YulIdentifier","src":"1228:32:24"},"nativeSrc":"1228:39:24","nodeType":"YulFunctionCall","src":"1228:39:24"}],"functionName":{"name":"eq","nativeSrc":"1218:2:24","nodeType":"YulIdentifier","src":"1218:2:24"},"nativeSrc":"1218:50:24","nodeType":"YulFunctionCall","src":"1218:50:24"}],"functionName":{"name":"iszero","nativeSrc":"1211:6:24","nodeType":"YulIdentifier","src":"1211:6:24"},"nativeSrc":"1211:58:24","nodeType":"YulFunctionCall","src":"1211:58:24"},"nativeSrc":"1208:78:24","nodeType":"YulIf","src":"1208:78:24"}]},"name":"validator_revert_t_contract$_IERC20_$1137","nativeSrc":"1140:152:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1191:5:24","nodeType":"YulTypedName","src":"1191:5:24","type":""}],"src":"1140:152:24"},{"body":{"nativeSrc":"1365:102:24","nodeType":"YulBlock","src":"1365:102:24","statements":[{"nativeSrc":"1375:29:24","nodeType":"YulAssignment","src":"1375:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"1397:6:24","nodeType":"YulIdentifier","src":"1397:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"1384:12:24","nodeType":"YulIdentifier","src":"1384:12:24"},"nativeSrc":"1384:20:24","nodeType":"YulFunctionCall","src":"1384:20:24"},"variableNames":[{"name":"value","nativeSrc":"1375:5:24","nodeType":"YulIdentifier","src":"1375:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1455:5:24","nodeType":"YulIdentifier","src":"1455:5:24"}],"functionName":{"name":"validator_revert_t_contract$_IERC20_$1137","nativeSrc":"1413:41:24","nodeType":"YulIdentifier","src":"1413:41:24"},"nativeSrc":"1413:48:24","nodeType":"YulFunctionCall","src":"1413:48:24"},"nativeSrc":"1413:48:24","nodeType":"YulExpressionStatement","src":"1413:48:24"}]},"name":"abi_decode_t_contract$_IERC20_$1137","nativeSrc":"1298:169:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1343:6:24","nodeType":"YulTypedName","src":"1343:6:24","type":""},{"name":"end","nativeSrc":"1351:3:24","nodeType":"YulTypedName","src":"1351:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1359:5:24","nodeType":"YulTypedName","src":"1359:5:24","type":""}],"src":"1298:169:24"},{"body":{"nativeSrc":"1518:32:24","nodeType":"YulBlock","src":"1518:32:24","statements":[{"nativeSrc":"1528:16:24","nodeType":"YulAssignment","src":"1528:16:24","value":{"name":"value","nativeSrc":"1539:5:24","nodeType":"YulIdentifier","src":"1539:5:24"},"variableNames":[{"name":"cleaned","nativeSrc":"1528:7:24","nodeType":"YulIdentifier","src":"1528:7:24"}]}]},"name":"cleanup_t_uint256","nativeSrc":"1473:77:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1500:5:24","nodeType":"YulTypedName","src":"1500:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1510:7:24","nodeType":"YulTypedName","src":"1510:7:24","type":""}],"src":"1473:77:24"},{"body":{"nativeSrc":"1599:79:24","nodeType":"YulBlock","src":"1599:79:24","statements":[{"body":{"nativeSrc":"1656:16:24","nodeType":"YulBlock","src":"1656:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1665:1:24","nodeType":"YulLiteral","src":"1665:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1668:1:24","nodeType":"YulLiteral","src":"1668:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1658:6:24","nodeType":"YulIdentifier","src":"1658:6:24"},"nativeSrc":"1658:12:24","nodeType":"YulFunctionCall","src":"1658:12:24"},"nativeSrc":"1658:12:24","nodeType":"YulExpressionStatement","src":"1658:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1622:5:24","nodeType":"YulIdentifier","src":"1622:5:24"},{"arguments":[{"name":"value","nativeSrc":"1647:5:24","nodeType":"YulIdentifier","src":"1647:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"1629:17:24","nodeType":"YulIdentifier","src":"1629:17:24"},"nativeSrc":"1629:24:24","nodeType":"YulFunctionCall","src":"1629:24:24"}],"functionName":{"name":"eq","nativeSrc":"1619:2:24","nodeType":"YulIdentifier","src":"1619:2:24"},"nativeSrc":"1619:35:24","nodeType":"YulFunctionCall","src":"1619:35:24"}],"functionName":{"name":"iszero","nativeSrc":"1612:6:24","nodeType":"YulIdentifier","src":"1612:6:24"},"nativeSrc":"1612:43:24","nodeType":"YulFunctionCall","src":"1612:43:24"},"nativeSrc":"1609:63:24","nodeType":"YulIf","src":"1609:63:24"}]},"name":"validator_revert_t_uint256","nativeSrc":"1556:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1592:5:24","nodeType":"YulTypedName","src":"1592:5:24","type":""}],"src":"1556:122:24"},{"body":{"nativeSrc":"1736:87:24","nodeType":"YulBlock","src":"1736:87:24","statements":[{"nativeSrc":"1746:29:24","nodeType":"YulAssignment","src":"1746:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"1768:6:24","nodeType":"YulIdentifier","src":"1768:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"1755:12:24","nodeType":"YulIdentifier","src":"1755:12:24"},"nativeSrc":"1755:20:24","nodeType":"YulFunctionCall","src":"1755:20:24"},"variableNames":[{"name":"value","nativeSrc":"1746:5:24","nodeType":"YulIdentifier","src":"1746:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1811:5:24","nodeType":"YulIdentifier","src":"1811:5:24"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"1784:26:24","nodeType":"YulIdentifier","src":"1784:26:24"},"nativeSrc":"1784:33:24","nodeType":"YulFunctionCall","src":"1784:33:24"},"nativeSrc":"1784:33:24","nodeType":"YulExpressionStatement","src":"1784:33:24"}]},"name":"abi_decode_t_uint256","nativeSrc":"1684:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1714:6:24","nodeType":"YulTypedName","src":"1714:6:24","type":""},{"name":"end","nativeSrc":"1722:3:24","nodeType":"YulTypedName","src":"1722:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1730:5:24","nodeType":"YulTypedName","src":"1730:5:24","type":""}],"src":"1684:139:24"},{"body":{"nativeSrc":"1872:79:24","nodeType":"YulBlock","src":"1872:79:24","statements":[{"body":{"nativeSrc":"1929:16:24","nodeType":"YulBlock","src":"1929:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1938:1:24","nodeType":"YulLiteral","src":"1938:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1941:1:24","nodeType":"YulLiteral","src":"1941:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1931:6:24","nodeType":"YulIdentifier","src":"1931:6:24"},"nativeSrc":"1931:12:24","nodeType":"YulFunctionCall","src":"1931:12:24"},"nativeSrc":"1931:12:24","nodeType":"YulExpressionStatement","src":"1931:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1895:5:24","nodeType":"YulIdentifier","src":"1895:5:24"},{"arguments":[{"name":"value","nativeSrc":"1920:5:24","nodeType":"YulIdentifier","src":"1920:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1902:17:24","nodeType":"YulIdentifier","src":"1902:17:24"},"nativeSrc":"1902:24:24","nodeType":"YulFunctionCall","src":"1902:24:24"}],"functionName":{"name":"eq","nativeSrc":"1892:2:24","nodeType":"YulIdentifier","src":"1892:2:24"},"nativeSrc":"1892:35:24","nodeType":"YulFunctionCall","src":"1892:35:24"}],"functionName":{"name":"iszero","nativeSrc":"1885:6:24","nodeType":"YulIdentifier","src":"1885:6:24"},"nativeSrc":"1885:43:24","nodeType":"YulFunctionCall","src":"1885:43:24"},"nativeSrc":"1882:63:24","nodeType":"YulIf","src":"1882:63:24"}]},"name":"validator_revert_t_address","nativeSrc":"1829:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1865:5:24","nodeType":"YulTypedName","src":"1865:5:24","type":""}],"src":"1829:122:24"},{"body":{"nativeSrc":"2009:87:24","nodeType":"YulBlock","src":"2009:87:24","statements":[{"nativeSrc":"2019:29:24","nodeType":"YulAssignment","src":"2019:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"2041:6:24","nodeType":"YulIdentifier","src":"2041:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"2028:12:24","nodeType":"YulIdentifier","src":"2028:12:24"},"nativeSrc":"2028:20:24","nodeType":"YulFunctionCall","src":"2028:20:24"},"variableNames":[{"name":"value","nativeSrc":"2019:5:24","nodeType":"YulIdentifier","src":"2019:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2084:5:24","nodeType":"YulIdentifier","src":"2084:5:24"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"2057:26:24","nodeType":"YulIdentifier","src":"2057:26:24"},"nativeSrc":"2057:33:24","nodeType":"YulFunctionCall","src":"2057:33:24"},"nativeSrc":"2057:33:24","nodeType":"YulExpressionStatement","src":"2057:33:24"}]},"name":"abi_decode_t_address","nativeSrc":"1957:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1987:6:24","nodeType":"YulTypedName","src":"1987:6:24","type":""},{"name":"end","nativeSrc":"1995:3:24","nodeType":"YulTypedName","src":"1995:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2003:5:24","nodeType":"YulTypedName","src":"2003:5:24","type":""}],"src":"1957:139:24"},{"body":{"nativeSrc":"2191:28:24","nodeType":"YulBlock","src":"2191:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2208:1:24","nodeType":"YulLiteral","src":"2208:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2211:1:24","nodeType":"YulLiteral","src":"2211:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2201:6:24","nodeType":"YulIdentifier","src":"2201:6:24"},"nativeSrc":"2201:12:24","nodeType":"YulFunctionCall","src":"2201:12:24"},"nativeSrc":"2201:12:24","nodeType":"YulExpressionStatement","src":"2201:12:24"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2102:117:24","nodeType":"YulFunctionDefinition","src":"2102:117:24"},{"body":{"nativeSrc":"2314:28:24","nodeType":"YulBlock","src":"2314:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2331:1:24","nodeType":"YulLiteral","src":"2331:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2334:1:24","nodeType":"YulLiteral","src":"2334:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2324:6:24","nodeType":"YulIdentifier","src":"2324:6:24"},"nativeSrc":"2324:12:24","nodeType":"YulFunctionCall","src":"2324:12:24"},"nativeSrc":"2324:12:24","nodeType":"YulExpressionStatement","src":"2324:12:24"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"2225:117:24","nodeType":"YulFunctionDefinition","src":"2225:117:24"},{"body":{"nativeSrc":"2437:28:24","nodeType":"YulBlock","src":"2437:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2454:1:24","nodeType":"YulLiteral","src":"2454:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2457:1:24","nodeType":"YulLiteral","src":"2457:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2447:6:24","nodeType":"YulIdentifier","src":"2447:6:24"},"nativeSrc":"2447:12:24","nodeType":"YulFunctionCall","src":"2447:12:24"},"nativeSrc":"2447:12:24","nodeType":"YulExpressionStatement","src":"2447:12:24"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"2348:117:24","nodeType":"YulFunctionDefinition","src":"2348:117:24"},{"body":{"nativeSrc":"2558:478:24","nodeType":"YulBlock","src":"2558:478:24","statements":[{"body":{"nativeSrc":"2607:83:24","nodeType":"YulBlock","src":"2607:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2609:77:24","nodeType":"YulIdentifier","src":"2609:77:24"},"nativeSrc":"2609:79:24","nodeType":"YulFunctionCall","src":"2609:79:24"},"nativeSrc":"2609:79:24","nodeType":"YulExpressionStatement","src":"2609:79:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2586:6:24","nodeType":"YulIdentifier","src":"2586:6:24"},{"kind":"number","nativeSrc":"2594:4:24","nodeType":"YulLiteral","src":"2594:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2582:3:24","nodeType":"YulIdentifier","src":"2582:3:24"},"nativeSrc":"2582:17:24","nodeType":"YulFunctionCall","src":"2582:17:24"},{"name":"end","nativeSrc":"2601:3:24","nodeType":"YulIdentifier","src":"2601:3:24"}],"functionName":{"name":"slt","nativeSrc":"2578:3:24","nodeType":"YulIdentifier","src":"2578:3:24"},"nativeSrc":"2578:27:24","nodeType":"YulFunctionCall","src":"2578:27:24"}],"functionName":{"name":"iszero","nativeSrc":"2571:6:24","nodeType":"YulIdentifier","src":"2571:6:24"},"nativeSrc":"2571:35:24","nodeType":"YulFunctionCall","src":"2571:35:24"},"nativeSrc":"2568:122:24","nodeType":"YulIf","src":"2568:122:24"},{"nativeSrc":"2699:30:24","nodeType":"YulAssignment","src":"2699:30:24","value":{"arguments":[{"name":"offset","nativeSrc":"2722:6:24","nodeType":"YulIdentifier","src":"2722:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"2709:12:24","nodeType":"YulIdentifier","src":"2709:12:24"},"nativeSrc":"2709:20:24","nodeType":"YulFunctionCall","src":"2709:20:24"},"variableNames":[{"name":"length","nativeSrc":"2699:6:24","nodeType":"YulIdentifier","src":"2699:6:24"}]},{"body":{"nativeSrc":"2772:83:24","nodeType":"YulBlock","src":"2772:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"2774:77:24","nodeType":"YulIdentifier","src":"2774:77:24"},"nativeSrc":"2774:79:24","nodeType":"YulFunctionCall","src":"2774:79:24"},"nativeSrc":"2774:79:24","nodeType":"YulExpressionStatement","src":"2774:79:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2744:6:24","nodeType":"YulIdentifier","src":"2744:6:24"},{"kind":"number","nativeSrc":"2752:18:24","nodeType":"YulLiteral","src":"2752:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2741:2:24","nodeType":"YulIdentifier","src":"2741:2:24"},"nativeSrc":"2741:30:24","nodeType":"YulFunctionCall","src":"2741:30:24"},"nativeSrc":"2738:117:24","nodeType":"YulIf","src":"2738:117:24"},{"nativeSrc":"2864:29:24","nodeType":"YulAssignment","src":"2864:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"2880:6:24","nodeType":"YulIdentifier","src":"2880:6:24"},{"kind":"number","nativeSrc":"2888:4:24","nodeType":"YulLiteral","src":"2888:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2876:3:24","nodeType":"YulIdentifier","src":"2876:3:24"},"nativeSrc":"2876:17:24","nodeType":"YulFunctionCall","src":"2876:17:24"},"variableNames":[{"name":"arrayPos","nativeSrc":"2864:8:24","nodeType":"YulIdentifier","src":"2864:8:24"}]},{"body":{"nativeSrc":"2947:83:24","nodeType":"YulBlock","src":"2947:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"2949:77:24","nodeType":"YulIdentifier","src":"2949:77:24"},"nativeSrc":"2949:79:24","nodeType":"YulFunctionCall","src":"2949:79:24"},"nativeSrc":"2949:79:24","nodeType":"YulExpressionStatement","src":"2949:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"2912:8:24","nodeType":"YulIdentifier","src":"2912:8:24"},{"arguments":[{"name":"length","nativeSrc":"2926:6:24","nodeType":"YulIdentifier","src":"2926:6:24"},{"kind":"number","nativeSrc":"2934:4:24","nodeType":"YulLiteral","src":"2934:4:24","type":"","value":"0x01"}],"functionName":{"name":"mul","nativeSrc":"2922:3:24","nodeType":"YulIdentifier","src":"2922:3:24"},"nativeSrc":"2922:17:24","nodeType":"YulFunctionCall","src":"2922:17:24"}],"functionName":{"name":"add","nativeSrc":"2908:3:24","nodeType":"YulIdentifier","src":"2908:3:24"},"nativeSrc":"2908:32:24","nodeType":"YulFunctionCall","src":"2908:32:24"},{"name":"end","nativeSrc":"2942:3:24","nodeType":"YulIdentifier","src":"2942:3:24"}],"functionName":{"name":"gt","nativeSrc":"2905:2:24","nodeType":"YulIdentifier","src":"2905:2:24"},"nativeSrc":"2905:41:24","nodeType":"YulFunctionCall","src":"2905:41:24"},"nativeSrc":"2902:128:24","nodeType":"YulIf","src":"2902:128:24"}]},"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"2484:552:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2525:6:24","nodeType":"YulTypedName","src":"2525:6:24","type":""},{"name":"end","nativeSrc":"2533:3:24","nodeType":"YulTypedName","src":"2533:3:24","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"2541:8:24","nodeType":"YulTypedName","src":"2541:8:24","type":""},{"name":"length","nativeSrc":"2551:6:24","nodeType":"YulTypedName","src":"2551:6:24","type":""}],"src":"2484:552:24"},{"body":{"nativeSrc":"3226:987:24","nodeType":"YulBlock","src":"3226:987:24","statements":[{"body":{"nativeSrc":"3273:83:24","nodeType":"YulBlock","src":"3273:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3275:77:24","nodeType":"YulIdentifier","src":"3275:77:24"},"nativeSrc":"3275:79:24","nodeType":"YulFunctionCall","src":"3275:79:24"},"nativeSrc":"3275:79:24","nodeType":"YulExpressionStatement","src":"3275:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3247:7:24","nodeType":"YulIdentifier","src":"3247:7:24"},{"name":"headStart","nativeSrc":"3256:9:24","nodeType":"YulIdentifier","src":"3256:9:24"}],"functionName":{"name":"sub","nativeSrc":"3243:3:24","nodeType":"YulIdentifier","src":"3243:3:24"},"nativeSrc":"3243:23:24","nodeType":"YulFunctionCall","src":"3243:23:24"},{"kind":"number","nativeSrc":"3268:3:24","nodeType":"YulLiteral","src":"3268:3:24","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"3239:3:24","nodeType":"YulIdentifier","src":"3239:3:24"},"nativeSrc":"3239:33:24","nodeType":"YulFunctionCall","src":"3239:33:24"},"nativeSrc":"3236:120:24","nodeType":"YulIf","src":"3236:120:24"},{"nativeSrc":"3366:133:24","nodeType":"YulBlock","src":"3366:133:24","statements":[{"nativeSrc":"3381:15:24","nodeType":"YulVariableDeclaration","src":"3381:15:24","value":{"kind":"number","nativeSrc":"3395:1:24","nodeType":"YulLiteral","src":"3395:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3385:6:24","nodeType":"YulTypedName","src":"3385:6:24","type":""}]},{"nativeSrc":"3410:79:24","nodeType":"YulAssignment","src":"3410:79:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3461:9:24","nodeType":"YulIdentifier","src":"3461:9:24"},{"name":"offset","nativeSrc":"3472:6:24","nodeType":"YulIdentifier","src":"3472:6:24"}],"functionName":{"name":"add","nativeSrc":"3457:3:24","nodeType":"YulIdentifier","src":"3457:3:24"},"nativeSrc":"3457:22:24","nodeType":"YulFunctionCall","src":"3457:22:24"},{"name":"dataEnd","nativeSrc":"3481:7:24","nodeType":"YulIdentifier","src":"3481:7:24"}],"functionName":{"name":"abi_decode_t_contract$_IERC4626_$407","nativeSrc":"3420:36:24","nodeType":"YulIdentifier","src":"3420:36:24"},"nativeSrc":"3420:69:24","nodeType":"YulFunctionCall","src":"3420:69:24"},"variableNames":[{"name":"value0","nativeSrc":"3410:6:24","nodeType":"YulIdentifier","src":"3410:6:24"}]}]},{"nativeSrc":"3509:133:24","nodeType":"YulBlock","src":"3509:133:24","statements":[{"nativeSrc":"3524:16:24","nodeType":"YulVariableDeclaration","src":"3524:16:24","value":{"kind":"number","nativeSrc":"3538:2:24","nodeType":"YulLiteral","src":"3538:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"3528:6:24","nodeType":"YulTypedName","src":"3528:6:24","type":""}]},{"nativeSrc":"3554:78:24","nodeType":"YulAssignment","src":"3554:78:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3604:9:24","nodeType":"YulIdentifier","src":"3604:9:24"},{"name":"offset","nativeSrc":"3615:6:24","nodeType":"YulIdentifier","src":"3615:6:24"}],"functionName":{"name":"add","nativeSrc":"3600:3:24","nodeType":"YulIdentifier","src":"3600:3:24"},"nativeSrc":"3600:22:24","nodeType":"YulFunctionCall","src":"3600:22:24"},{"name":"dataEnd","nativeSrc":"3624:7:24","nodeType":"YulIdentifier","src":"3624:7:24"}],"functionName":{"name":"abi_decode_t_contract$_IERC20_$1137","nativeSrc":"3564:35:24","nodeType":"YulIdentifier","src":"3564:35:24"},"nativeSrc":"3564:68:24","nodeType":"YulFunctionCall","src":"3564:68:24"},"variableNames":[{"name":"value1","nativeSrc":"3554:6:24","nodeType":"YulIdentifier","src":"3554:6:24"}]}]},{"nativeSrc":"3652:118:24","nodeType":"YulBlock","src":"3652:118:24","statements":[{"nativeSrc":"3667:16:24","nodeType":"YulVariableDeclaration","src":"3667:16:24","value":{"kind":"number","nativeSrc":"3681:2:24","nodeType":"YulLiteral","src":"3681:2:24","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"3671:6:24","nodeType":"YulTypedName","src":"3671:6:24","type":""}]},{"nativeSrc":"3697:63:24","nodeType":"YulAssignment","src":"3697:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3732:9:24","nodeType":"YulIdentifier","src":"3732:9:24"},{"name":"offset","nativeSrc":"3743:6:24","nodeType":"YulIdentifier","src":"3743:6:24"}],"functionName":{"name":"add","nativeSrc":"3728:3:24","nodeType":"YulIdentifier","src":"3728:3:24"},"nativeSrc":"3728:22:24","nodeType":"YulFunctionCall","src":"3728:22:24"},{"name":"dataEnd","nativeSrc":"3752:7:24","nodeType":"YulIdentifier","src":"3752:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"3707:20:24","nodeType":"YulIdentifier","src":"3707:20:24"},"nativeSrc":"3707:53:24","nodeType":"YulFunctionCall","src":"3707:53:24"},"variableNames":[{"name":"value2","nativeSrc":"3697:6:24","nodeType":"YulIdentifier","src":"3697:6:24"}]}]},{"nativeSrc":"3780:118:24","nodeType":"YulBlock","src":"3780:118:24","statements":[{"nativeSrc":"3795:16:24","nodeType":"YulVariableDeclaration","src":"3795:16:24","value":{"kind":"number","nativeSrc":"3809:2:24","nodeType":"YulLiteral","src":"3809:2:24","type":"","value":"96"},"variables":[{"name":"offset","nativeSrc":"3799:6:24","nodeType":"YulTypedName","src":"3799:6:24","type":""}]},{"nativeSrc":"3825:63:24","nodeType":"YulAssignment","src":"3825:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3860:9:24","nodeType":"YulIdentifier","src":"3860:9:24"},{"name":"offset","nativeSrc":"3871:6:24","nodeType":"YulIdentifier","src":"3871:6:24"}],"functionName":{"name":"add","nativeSrc":"3856:3:24","nodeType":"YulIdentifier","src":"3856:3:24"},"nativeSrc":"3856:22:24","nodeType":"YulFunctionCall","src":"3856:22:24"},{"name":"dataEnd","nativeSrc":"3880:7:24","nodeType":"YulIdentifier","src":"3880:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"3835:20:24","nodeType":"YulIdentifier","src":"3835:20:24"},"nativeSrc":"3835:53:24","nodeType":"YulFunctionCall","src":"3835:53:24"},"variableNames":[{"name":"value3","nativeSrc":"3825:6:24","nodeType":"YulIdentifier","src":"3825:6:24"}]}]},{"nativeSrc":"3908:298:24","nodeType":"YulBlock","src":"3908:298:24","statements":[{"nativeSrc":"3923:47:24","nodeType":"YulVariableDeclaration","src":"3923:47:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3954:9:24","nodeType":"YulIdentifier","src":"3954:9:24"},{"kind":"number","nativeSrc":"3965:3:24","nodeType":"YulLiteral","src":"3965:3:24","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"3950:3:24","nodeType":"YulIdentifier","src":"3950:3:24"},"nativeSrc":"3950:19:24","nodeType":"YulFunctionCall","src":"3950:19:24"}],"functionName":{"name":"calldataload","nativeSrc":"3937:12:24","nodeType":"YulIdentifier","src":"3937:12:24"},"nativeSrc":"3937:33:24","nodeType":"YulFunctionCall","src":"3937:33:24"},"variables":[{"name":"offset","nativeSrc":"3927:6:24","nodeType":"YulTypedName","src":"3927:6:24","type":""}]},{"body":{"nativeSrc":"4017:83:24","nodeType":"YulBlock","src":"4017:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"4019:77:24","nodeType":"YulIdentifier","src":"4019:77:24"},"nativeSrc":"4019:79:24","nodeType":"YulFunctionCall","src":"4019:79:24"},"nativeSrc":"4019:79:24","nodeType":"YulExpressionStatement","src":"4019:79:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3989:6:24","nodeType":"YulIdentifier","src":"3989:6:24"},{"kind":"number","nativeSrc":"3997:18:24","nodeType":"YulLiteral","src":"3997:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3986:2:24","nodeType":"YulIdentifier","src":"3986:2:24"},"nativeSrc":"3986:30:24","nodeType":"YulFunctionCall","src":"3986:30:24"},"nativeSrc":"3983:117:24","nodeType":"YulIf","src":"3983:117:24"},{"nativeSrc":"4114:82:24","nodeType":"YulAssignment","src":"4114:82:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4168:9:24","nodeType":"YulIdentifier","src":"4168:9:24"},{"name":"offset","nativeSrc":"4179:6:24","nodeType":"YulIdentifier","src":"4179:6:24"}],"functionName":{"name":"add","nativeSrc":"4164:3:24","nodeType":"YulIdentifier","src":"4164:3:24"},"nativeSrc":"4164:22:24","nodeType":"YulFunctionCall","src":"4164:22:24"},{"name":"dataEnd","nativeSrc":"4188:7:24","nodeType":"YulIdentifier","src":"4188:7:24"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"4132:31:24","nodeType":"YulIdentifier","src":"4132:31:24"},"nativeSrc":"4132:64:24","nodeType":"YulFunctionCall","src":"4132:64:24"},"variableNames":[{"name":"value4","nativeSrc":"4114:6:24","nodeType":"YulIdentifier","src":"4114:6:24"},{"name":"value5","nativeSrc":"4122:6:24","nodeType":"YulIdentifier","src":"4122:6:24"}]}]}]},"name":"abi_decode_tuple_t_contract$_IERC4626_$407t_contract$_IERC20_$1137t_uint256t_addresst_bytes_calldata_ptr","nativeSrc":"3042:1171:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3156:9:24","nodeType":"YulTypedName","src":"3156:9:24","type":""},{"name":"dataEnd","nativeSrc":"3167:7:24","nodeType":"YulTypedName","src":"3167:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3179:6:24","nodeType":"YulTypedName","src":"3179:6:24","type":""},{"name":"value1","nativeSrc":"3187:6:24","nodeType":"YulTypedName","src":"3187:6:24","type":""},{"name":"value2","nativeSrc":"3195:6:24","nodeType":"YulTypedName","src":"3195:6:24","type":""},{"name":"value3","nativeSrc":"3203:6:24","nodeType":"YulTypedName","src":"3203:6:24","type":""},{"name":"value4","nativeSrc":"3211:6:24","nodeType":"YulTypedName","src":"3211:6:24","type":""},{"name":"value5","nativeSrc":"3219:6:24","nodeType":"YulTypedName","src":"3219:6:24","type":""}],"src":"3042:1171:24"},{"body":{"nativeSrc":"4284:53:24","nodeType":"YulBlock","src":"4284:53:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4301:3:24","nodeType":"YulIdentifier","src":"4301:3:24"},{"arguments":[{"name":"value","nativeSrc":"4324:5:24","nodeType":"YulIdentifier","src":"4324:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"4306:17:24","nodeType":"YulIdentifier","src":"4306:17:24"},"nativeSrc":"4306:24:24","nodeType":"YulFunctionCall","src":"4306:24:24"}],"functionName":{"name":"mstore","nativeSrc":"4294:6:24","nodeType":"YulIdentifier","src":"4294:6:24"},"nativeSrc":"4294:37:24","nodeType":"YulFunctionCall","src":"4294:37:24"},"nativeSrc":"4294:37:24","nodeType":"YulExpressionStatement","src":"4294:37:24"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"4219:118:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4272:5:24","nodeType":"YulTypedName","src":"4272:5:24","type":""},{"name":"pos","nativeSrc":"4279:3:24","nodeType":"YulTypedName","src":"4279:3:24","type":""}],"src":"4219:118:24"},{"body":{"nativeSrc":"4441:124:24","nodeType":"YulBlock","src":"4441:124:24","statements":[{"nativeSrc":"4451:26:24","nodeType":"YulAssignment","src":"4451:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"4463:9:24","nodeType":"YulIdentifier","src":"4463:9:24"},{"kind":"number","nativeSrc":"4474:2:24","nodeType":"YulLiteral","src":"4474:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4459:3:24","nodeType":"YulIdentifier","src":"4459:3:24"},"nativeSrc":"4459:18:24","nodeType":"YulFunctionCall","src":"4459:18:24"},"variableNames":[{"name":"tail","nativeSrc":"4451:4:24","nodeType":"YulIdentifier","src":"4451:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"4531:6:24","nodeType":"YulIdentifier","src":"4531:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"4544:9:24","nodeType":"YulIdentifier","src":"4544:9:24"},{"kind":"number","nativeSrc":"4555:1:24","nodeType":"YulLiteral","src":"4555:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4540:3:24","nodeType":"YulIdentifier","src":"4540:3:24"},"nativeSrc":"4540:17:24","nodeType":"YulFunctionCall","src":"4540:17:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"4487:43:24","nodeType":"YulIdentifier","src":"4487:43:24"},"nativeSrc":"4487:71:24","nodeType":"YulFunctionCall","src":"4487:71:24"},"nativeSrc":"4487:71:24","nodeType":"YulExpressionStatement","src":"4487:71:24"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"4343:222:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4413:9:24","nodeType":"YulTypedName","src":"4413:9:24","type":""},{"name":"value0","nativeSrc":"4425:6:24","nodeType":"YulTypedName","src":"4425:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4436:4:24","nodeType":"YulTypedName","src":"4436:4:24","type":""}],"src":"4343:222:24"},{"body":{"nativeSrc":"4636:53:24","nodeType":"YulBlock","src":"4636:53:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4653:3:24","nodeType":"YulIdentifier","src":"4653:3:24"},{"arguments":[{"name":"value","nativeSrc":"4676:5:24","nodeType":"YulIdentifier","src":"4676:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"4658:17:24","nodeType":"YulIdentifier","src":"4658:17:24"},"nativeSrc":"4658:24:24","nodeType":"YulFunctionCall","src":"4658:24:24"}],"functionName":{"name":"mstore","nativeSrc":"4646:6:24","nodeType":"YulIdentifier","src":"4646:6:24"},"nativeSrc":"4646:37:24","nodeType":"YulFunctionCall","src":"4646:37:24"},"nativeSrc":"4646:37:24","nodeType":"YulExpressionStatement","src":"4646:37:24"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4571:118:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4624:5:24","nodeType":"YulTypedName","src":"4624:5:24","type":""},{"name":"pos","nativeSrc":"4631:3:24","nodeType":"YulTypedName","src":"4631:3:24","type":""}],"src":"4571:118:24"},{"body":{"nativeSrc":"4821:206:24","nodeType":"YulBlock","src":"4821:206:24","statements":[{"nativeSrc":"4831:26:24","nodeType":"YulAssignment","src":"4831:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"4843:9:24","nodeType":"YulIdentifier","src":"4843:9:24"},{"kind":"number","nativeSrc":"4854:2:24","nodeType":"YulLiteral","src":"4854:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4839:3:24","nodeType":"YulIdentifier","src":"4839:3:24"},"nativeSrc":"4839:18:24","nodeType":"YulFunctionCall","src":"4839:18:24"},"variableNames":[{"name":"tail","nativeSrc":"4831:4:24","nodeType":"YulIdentifier","src":"4831:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"4911:6:24","nodeType":"YulIdentifier","src":"4911:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"4924:9:24","nodeType":"YulIdentifier","src":"4924:9:24"},{"kind":"number","nativeSrc":"4935:1:24","nodeType":"YulLiteral","src":"4935:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4920:3:24","nodeType":"YulIdentifier","src":"4920:3:24"},"nativeSrc":"4920:17:24","nodeType":"YulFunctionCall","src":"4920:17:24"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4867:43:24","nodeType":"YulIdentifier","src":"4867:43:24"},"nativeSrc":"4867:71:24","nodeType":"YulFunctionCall","src":"4867:71:24"},"nativeSrc":"4867:71:24","nodeType":"YulExpressionStatement","src":"4867:71:24"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"4992:6:24","nodeType":"YulIdentifier","src":"4992:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"5005:9:24","nodeType":"YulIdentifier","src":"5005:9:24"},{"kind":"number","nativeSrc":"5016:2:24","nodeType":"YulLiteral","src":"5016:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5001:3:24","nodeType":"YulIdentifier","src":"5001:3:24"},"nativeSrc":"5001:18:24","nodeType":"YulFunctionCall","src":"5001:18:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"4948:43:24","nodeType":"YulIdentifier","src":"4948:43:24"},"nativeSrc":"4948:72:24","nodeType":"YulFunctionCall","src":"4948:72:24"},"nativeSrc":"4948:72:24","nodeType":"YulExpressionStatement","src":"4948:72:24"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"4695:332:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4785:9:24","nodeType":"YulTypedName","src":"4785:9:24","type":""},{"name":"value1","nativeSrc":"4797:6:24","nodeType":"YulTypedName","src":"4797:6:24","type":""},{"name":"value0","nativeSrc":"4805:6:24","nodeType":"YulTypedName","src":"4805:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4816:4:24","nodeType":"YulTypedName","src":"4816:4:24","type":""}],"src":"4695:332:24"},{"body":{"nativeSrc":"5075:48:24","nodeType":"YulBlock","src":"5075:48:24","statements":[{"nativeSrc":"5085:32:24","nodeType":"YulAssignment","src":"5085:32:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5110:5:24","nodeType":"YulIdentifier","src":"5110:5:24"}],"functionName":{"name":"iszero","nativeSrc":"5103:6:24","nodeType":"YulIdentifier","src":"5103:6:24"},"nativeSrc":"5103:13:24","nodeType":"YulFunctionCall","src":"5103:13:24"}],"functionName":{"name":"iszero","nativeSrc":"5096:6:24","nodeType":"YulIdentifier","src":"5096:6:24"},"nativeSrc":"5096:21:24","nodeType":"YulFunctionCall","src":"5096:21:24"},"variableNames":[{"name":"cleaned","nativeSrc":"5085:7:24","nodeType":"YulIdentifier","src":"5085:7:24"}]}]},"name":"cleanup_t_bool","nativeSrc":"5033:90:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5057:5:24","nodeType":"YulTypedName","src":"5057:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"5067:7:24","nodeType":"YulTypedName","src":"5067:7:24","type":""}],"src":"5033:90:24"},{"body":{"nativeSrc":"5169:76:24","nodeType":"YulBlock","src":"5169:76:24","statements":[{"body":{"nativeSrc":"5223:16:24","nodeType":"YulBlock","src":"5223:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5232:1:24","nodeType":"YulLiteral","src":"5232:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"5235:1:24","nodeType":"YulLiteral","src":"5235:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5225:6:24","nodeType":"YulIdentifier","src":"5225:6:24"},"nativeSrc":"5225:12:24","nodeType":"YulFunctionCall","src":"5225:12:24"},"nativeSrc":"5225:12:24","nodeType":"YulExpressionStatement","src":"5225:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5192:5:24","nodeType":"YulIdentifier","src":"5192:5:24"},{"arguments":[{"name":"value","nativeSrc":"5214:5:24","nodeType":"YulIdentifier","src":"5214:5:24"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"5199:14:24","nodeType":"YulIdentifier","src":"5199:14:24"},"nativeSrc":"5199:21:24","nodeType":"YulFunctionCall","src":"5199:21:24"}],"functionName":{"name":"eq","nativeSrc":"5189:2:24","nodeType":"YulIdentifier","src":"5189:2:24"},"nativeSrc":"5189:32:24","nodeType":"YulFunctionCall","src":"5189:32:24"}],"functionName":{"name":"iszero","nativeSrc":"5182:6:24","nodeType":"YulIdentifier","src":"5182:6:24"},"nativeSrc":"5182:40:24","nodeType":"YulFunctionCall","src":"5182:40:24"},"nativeSrc":"5179:60:24","nodeType":"YulIf","src":"5179:60:24"}]},"name":"validator_revert_t_bool","nativeSrc":"5129:116:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5162:5:24","nodeType":"YulTypedName","src":"5162:5:24","type":""}],"src":"5129:116:24"},{"body":{"nativeSrc":"5311:77:24","nodeType":"YulBlock","src":"5311:77:24","statements":[{"nativeSrc":"5321:22:24","nodeType":"YulAssignment","src":"5321:22:24","value":{"arguments":[{"name":"offset","nativeSrc":"5336:6:24","nodeType":"YulIdentifier","src":"5336:6:24"}],"functionName":{"name":"mload","nativeSrc":"5330:5:24","nodeType":"YulIdentifier","src":"5330:5:24"},"nativeSrc":"5330:13:24","nodeType":"YulFunctionCall","src":"5330:13:24"},"variableNames":[{"name":"value","nativeSrc":"5321:5:24","nodeType":"YulIdentifier","src":"5321:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5376:5:24","nodeType":"YulIdentifier","src":"5376:5:24"}],"functionName":{"name":"validator_revert_t_bool","nativeSrc":"5352:23:24","nodeType":"YulIdentifier","src":"5352:23:24"},"nativeSrc":"5352:30:24","nodeType":"YulFunctionCall","src":"5352:30:24"},"nativeSrc":"5352:30:24","nodeType":"YulExpressionStatement","src":"5352:30:24"}]},"name":"abi_decode_t_bool_fromMemory","nativeSrc":"5251:137:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5289:6:24","nodeType":"YulTypedName","src":"5289:6:24","type":""},{"name":"end","nativeSrc":"5297:3:24","nodeType":"YulTypedName","src":"5297:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5305:5:24","nodeType":"YulTypedName","src":"5305:5:24","type":""}],"src":"5251:137:24"},{"body":{"nativeSrc":"5468:271:24","nodeType":"YulBlock","src":"5468:271:24","statements":[{"body":{"nativeSrc":"5514:83:24","nodeType":"YulBlock","src":"5514:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"5516:77:24","nodeType":"YulIdentifier","src":"5516:77:24"},"nativeSrc":"5516:79:24","nodeType":"YulFunctionCall","src":"5516:79:24"},"nativeSrc":"5516:79:24","nodeType":"YulExpressionStatement","src":"5516:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5489:7:24","nodeType":"YulIdentifier","src":"5489:7:24"},{"name":"headStart","nativeSrc":"5498:9:24","nodeType":"YulIdentifier","src":"5498:9:24"}],"functionName":{"name":"sub","nativeSrc":"5485:3:24","nodeType":"YulIdentifier","src":"5485:3:24"},"nativeSrc":"5485:23:24","nodeType":"YulFunctionCall","src":"5485:23:24"},{"kind":"number","nativeSrc":"5510:2:24","nodeType":"YulLiteral","src":"5510:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5481:3:24","nodeType":"YulIdentifier","src":"5481:3:24"},"nativeSrc":"5481:32:24","nodeType":"YulFunctionCall","src":"5481:32:24"},"nativeSrc":"5478:119:24","nodeType":"YulIf","src":"5478:119:24"},{"nativeSrc":"5607:125:24","nodeType":"YulBlock","src":"5607:125:24","statements":[{"nativeSrc":"5622:15:24","nodeType":"YulVariableDeclaration","src":"5622:15:24","value":{"kind":"number","nativeSrc":"5636:1:24","nodeType":"YulLiteral","src":"5636:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"5626:6:24","nodeType":"YulTypedName","src":"5626:6:24","type":""}]},{"nativeSrc":"5651:71:24","nodeType":"YulAssignment","src":"5651:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5694:9:24","nodeType":"YulIdentifier","src":"5694:9:24"},{"name":"offset","nativeSrc":"5705:6:24","nodeType":"YulIdentifier","src":"5705:6:24"}],"functionName":{"name":"add","nativeSrc":"5690:3:24","nodeType":"YulIdentifier","src":"5690:3:24"},"nativeSrc":"5690:22:24","nodeType":"YulFunctionCall","src":"5690:22:24"},{"name":"dataEnd","nativeSrc":"5714:7:24","nodeType":"YulIdentifier","src":"5714:7:24"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nativeSrc":"5661:28:24","nodeType":"YulIdentifier","src":"5661:28:24"},"nativeSrc":"5661:61:24","nodeType":"YulFunctionCall","src":"5661:61:24"},"variableNames":[{"name":"value0","nativeSrc":"5651:6:24","nodeType":"YulIdentifier","src":"5651:6:24"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"5394:345:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5438:9:24","nodeType":"YulTypedName","src":"5438:9:24","type":""},{"name":"dataEnd","nativeSrc":"5449:7:24","nodeType":"YulTypedName","src":"5449:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5461:6:24","nodeType":"YulTypedName","src":"5461:6:24","type":""}],"src":"5394:345:24"},{"body":{"nativeSrc":"5858:34:24","nodeType":"YulBlock","src":"5858:34:24","statements":[{"nativeSrc":"5868:18:24","nodeType":"YulAssignment","src":"5868:18:24","value":{"name":"pos","nativeSrc":"5883:3:24","nodeType":"YulIdentifier","src":"5883:3:24"},"variableNames":[{"name":"updated_pos","nativeSrc":"5868:11:24","nodeType":"YulIdentifier","src":"5868:11:24"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"5745:147:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5830:3:24","nodeType":"YulTypedName","src":"5830:3:24","type":""},{"name":"length","nativeSrc":"5835:6:24","nodeType":"YulTypedName","src":"5835:6:24","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"5846:11:24","nodeType":"YulTypedName","src":"5846:11:24","type":""}],"src":"5745:147:24"},{"body":{"nativeSrc":"5962:84:24","nodeType":"YulBlock","src":"5962:84:24","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"5986:3:24","nodeType":"YulIdentifier","src":"5986:3:24"},{"name":"src","nativeSrc":"5991:3:24","nodeType":"YulIdentifier","src":"5991:3:24"},{"name":"length","nativeSrc":"5996:6:24","nodeType":"YulIdentifier","src":"5996:6:24"}],"functionName":{"name":"calldatacopy","nativeSrc":"5973:12:24","nodeType":"YulIdentifier","src":"5973:12:24"},"nativeSrc":"5973:30:24","nodeType":"YulFunctionCall","src":"5973:30:24"},"nativeSrc":"5973:30:24","nodeType":"YulExpressionStatement","src":"5973:30:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"6023:3:24","nodeType":"YulIdentifier","src":"6023:3:24"},{"name":"length","nativeSrc":"6028:6:24","nodeType":"YulIdentifier","src":"6028:6:24"}],"functionName":{"name":"add","nativeSrc":"6019:3:24","nodeType":"YulIdentifier","src":"6019:3:24"},"nativeSrc":"6019:16:24","nodeType":"YulFunctionCall","src":"6019:16:24"},{"kind":"number","nativeSrc":"6037:1:24","nodeType":"YulLiteral","src":"6037:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"6012:6:24","nodeType":"YulIdentifier","src":"6012:6:24"},"nativeSrc":"6012:27:24","nodeType":"YulFunctionCall","src":"6012:27:24"},"nativeSrc":"6012:27:24","nodeType":"YulExpressionStatement","src":"6012:27:24"}]},"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"5898:148:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"5944:3:24","nodeType":"YulTypedName","src":"5944:3:24","type":""},{"name":"dst","nativeSrc":"5949:3:24","nodeType":"YulTypedName","src":"5949:3:24","type":""},{"name":"length","nativeSrc":"5954:6:24","nodeType":"YulTypedName","src":"5954:6:24","type":""}],"src":"5898:148:24"},{"body":{"nativeSrc":"6192:209:24","nodeType":"YulBlock","src":"6192:209:24","statements":[{"nativeSrc":"6202:95:24","nodeType":"YulAssignment","src":"6202:95:24","value":{"arguments":[{"name":"pos","nativeSrc":"6285:3:24","nodeType":"YulIdentifier","src":"6285:3:24"},{"name":"length","nativeSrc":"6290:6:24","nodeType":"YulIdentifier","src":"6290:6:24"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6209:75:24","nodeType":"YulIdentifier","src":"6209:75:24"},"nativeSrc":"6209:88:24","nodeType":"YulFunctionCall","src":"6209:88:24"},"variableNames":[{"name":"pos","nativeSrc":"6202:3:24","nodeType":"YulIdentifier","src":"6202:3:24"}]},{"expression":{"arguments":[{"name":"start","nativeSrc":"6344:5:24","nodeType":"YulIdentifier","src":"6344:5:24"},{"name":"pos","nativeSrc":"6351:3:24","nodeType":"YulIdentifier","src":"6351:3:24"},{"name":"length","nativeSrc":"6356:6:24","nodeType":"YulIdentifier","src":"6356:6:24"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"6307:36:24","nodeType":"YulIdentifier","src":"6307:36:24"},"nativeSrc":"6307:56:24","nodeType":"YulFunctionCall","src":"6307:56:24"},"nativeSrc":"6307:56:24","nodeType":"YulExpressionStatement","src":"6307:56:24"},{"nativeSrc":"6372:23:24","nodeType":"YulAssignment","src":"6372:23:24","value":{"arguments":[{"name":"pos","nativeSrc":"6383:3:24","nodeType":"YulIdentifier","src":"6383:3:24"},{"name":"length","nativeSrc":"6388:6:24","nodeType":"YulIdentifier","src":"6388:6:24"}],"functionName":{"name":"add","nativeSrc":"6379:3:24","nodeType":"YulIdentifier","src":"6379:3:24"},"nativeSrc":"6379:16:24","nodeType":"YulFunctionCall","src":"6379:16:24"},"variableNames":[{"name":"end","nativeSrc":"6372:3:24","nodeType":"YulIdentifier","src":"6372:3:24"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6074:327:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"6165:5:24","nodeType":"YulTypedName","src":"6165:5:24","type":""},{"name":"length","nativeSrc":"6172:6:24","nodeType":"YulTypedName","src":"6172:6:24","type":""},{"name":"pos","nativeSrc":"6180:3:24","nodeType":"YulTypedName","src":"6180:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6188:3:24","nodeType":"YulTypedName","src":"6188:3:24","type":""}],"src":"6074:327:24"},{"body":{"nativeSrc":"6551:147:24","nodeType":"YulBlock","src":"6551:147:24","statements":[{"nativeSrc":"6562:110:24","nodeType":"YulAssignment","src":"6562:110:24","value":{"arguments":[{"name":"value0","nativeSrc":"6651:6:24","nodeType":"YulIdentifier","src":"6651:6:24"},{"name":"value1","nativeSrc":"6659:6:24","nodeType":"YulIdentifier","src":"6659:6:24"},{"name":"pos","nativeSrc":"6668:3:24","nodeType":"YulIdentifier","src":"6668:3:24"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6569:81:24","nodeType":"YulIdentifier","src":"6569:81:24"},"nativeSrc":"6569:103:24","nodeType":"YulFunctionCall","src":"6569:103:24"},"variableNames":[{"name":"pos","nativeSrc":"6562:3:24","nodeType":"YulIdentifier","src":"6562:3:24"}]},{"nativeSrc":"6682:10:24","nodeType":"YulAssignment","src":"6682:10:24","value":{"name":"pos","nativeSrc":"6689:3:24","nodeType":"YulIdentifier","src":"6689:3:24"},"variableNames":[{"name":"end","nativeSrc":"6682:3:24","nodeType":"YulIdentifier","src":"6682:3:24"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"6407:291:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6522:3:24","nodeType":"YulTypedName","src":"6522:3:24","type":""},{"name":"value1","nativeSrc":"6528:6:24","nodeType":"YulTypedName","src":"6528:6:24","type":""},{"name":"value0","nativeSrc":"6536:6:24","nodeType":"YulTypedName","src":"6536:6:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6547:3:24","nodeType":"YulTypedName","src":"6547:3:24","type":""}],"src":"6407:291:24"},{"body":{"nativeSrc":"6800:73:24","nodeType":"YulBlock","src":"6800:73:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6817:3:24","nodeType":"YulIdentifier","src":"6817:3:24"},{"name":"length","nativeSrc":"6822:6:24","nodeType":"YulIdentifier","src":"6822:6:24"}],"functionName":{"name":"mstore","nativeSrc":"6810:6:24","nodeType":"YulIdentifier","src":"6810:6:24"},"nativeSrc":"6810:19:24","nodeType":"YulFunctionCall","src":"6810:19:24"},"nativeSrc":"6810:19:24","nodeType":"YulExpressionStatement","src":"6810:19:24"},{"nativeSrc":"6838:29:24","nodeType":"YulAssignment","src":"6838:29:24","value":{"arguments":[{"name":"pos","nativeSrc":"6857:3:24","nodeType":"YulIdentifier","src":"6857:3:24"},{"kind":"number","nativeSrc":"6862:4:24","nodeType":"YulLiteral","src":"6862:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6853:3:24","nodeType":"YulIdentifier","src":"6853:3:24"},"nativeSrc":"6853:14:24","nodeType":"YulFunctionCall","src":"6853:14:24"},"variableNames":[{"name":"updated_pos","nativeSrc":"6838:11:24","nodeType":"YulIdentifier","src":"6838:11:24"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"6704:169:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6772:3:24","nodeType":"YulTypedName","src":"6772:3:24","type":""},{"name":"length","nativeSrc":"6777:6:24","nodeType":"YulTypedName","src":"6777:6:24","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"6788:11:24","nodeType":"YulTypedName","src":"6788:11:24","type":""}],"src":"6704:169:24"},{"body":{"nativeSrc":"6985:55:24","nodeType":"YulBlock","src":"6985:55:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7007:6:24","nodeType":"YulIdentifier","src":"7007:6:24"},{"kind":"number","nativeSrc":"7015:1:24","nodeType":"YulLiteral","src":"7015:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7003:3:24","nodeType":"YulIdentifier","src":"7003:3:24"},"nativeSrc":"7003:14:24","nodeType":"YulFunctionCall","src":"7003:14:24"},{"hexValue":"53776170206661696c6564","kind":"string","nativeSrc":"7019:13:24","nodeType":"YulLiteral","src":"7019:13:24","type":"","value":"Swap failed"}],"functionName":{"name":"mstore","nativeSrc":"6996:6:24","nodeType":"YulIdentifier","src":"6996:6:24"},"nativeSrc":"6996:37:24","nodeType":"YulFunctionCall","src":"6996:37:24"},"nativeSrc":"6996:37:24","nodeType":"YulExpressionStatement","src":"6996:37:24"}]},"name":"store_literal_in_memory_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69","nativeSrc":"6879:161:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"6977:6:24","nodeType":"YulTypedName","src":"6977:6:24","type":""}],"src":"6879:161:24"},{"body":{"nativeSrc":"7192:220:24","nodeType":"YulBlock","src":"7192:220:24","statements":[{"nativeSrc":"7202:74:24","nodeType":"YulAssignment","src":"7202:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"7268:3:24","nodeType":"YulIdentifier","src":"7268:3:24"},{"kind":"number","nativeSrc":"7273:2:24","nodeType":"YulLiteral","src":"7273:2:24","type":"","value":"11"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7209:58:24","nodeType":"YulIdentifier","src":"7209:58:24"},"nativeSrc":"7209:67:24","nodeType":"YulFunctionCall","src":"7209:67:24"},"variableNames":[{"name":"pos","nativeSrc":"7202:3:24","nodeType":"YulIdentifier","src":"7202:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"7374:3:24","nodeType":"YulIdentifier","src":"7374:3:24"}],"functionName":{"name":"store_literal_in_memory_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69","nativeSrc":"7285:88:24","nodeType":"YulIdentifier","src":"7285:88:24"},"nativeSrc":"7285:93:24","nodeType":"YulFunctionCall","src":"7285:93:24"},"nativeSrc":"7285:93:24","nodeType":"YulExpressionStatement","src":"7285:93:24"},{"nativeSrc":"7387:19:24","nodeType":"YulAssignment","src":"7387:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"7398:3:24","nodeType":"YulIdentifier","src":"7398:3:24"},{"kind":"number","nativeSrc":"7403:2:24","nodeType":"YulLiteral","src":"7403:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7394:3:24","nodeType":"YulIdentifier","src":"7394:3:24"},"nativeSrc":"7394:12:24","nodeType":"YulFunctionCall","src":"7394:12:24"},"variableNames":[{"name":"end","nativeSrc":"7387:3:24","nodeType":"YulIdentifier","src":"7387:3:24"}]}]},"name":"abi_encode_t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69_to_t_string_memory_ptr_fromStack","nativeSrc":"7046:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7180:3:24","nodeType":"YulTypedName","src":"7180:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7188:3:24","nodeType":"YulTypedName","src":"7188:3:24","type":""}],"src":"7046:366:24"},{"body":{"nativeSrc":"7589:248:24","nodeType":"YulBlock","src":"7589:248:24","statements":[{"nativeSrc":"7599:26:24","nodeType":"YulAssignment","src":"7599:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"7611:9:24","nodeType":"YulIdentifier","src":"7611:9:24"},{"kind":"number","nativeSrc":"7622:2:24","nodeType":"YulLiteral","src":"7622:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7607:3:24","nodeType":"YulIdentifier","src":"7607:3:24"},"nativeSrc":"7607:18:24","nodeType":"YulFunctionCall","src":"7607:18:24"},"variableNames":[{"name":"tail","nativeSrc":"7599:4:24","nodeType":"YulIdentifier","src":"7599:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7646:9:24","nodeType":"YulIdentifier","src":"7646:9:24"},{"kind":"number","nativeSrc":"7657:1:24","nodeType":"YulLiteral","src":"7657:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7642:3:24","nodeType":"YulIdentifier","src":"7642:3:24"},"nativeSrc":"7642:17:24","nodeType":"YulFunctionCall","src":"7642:17:24"},{"arguments":[{"name":"tail","nativeSrc":"7665:4:24","nodeType":"YulIdentifier","src":"7665:4:24"},{"name":"headStart","nativeSrc":"7671:9:24","nodeType":"YulIdentifier","src":"7671:9:24"}],"functionName":{"name":"sub","nativeSrc":"7661:3:24","nodeType":"YulIdentifier","src":"7661:3:24"},"nativeSrc":"7661:20:24","nodeType":"YulFunctionCall","src":"7661:20:24"}],"functionName":{"name":"mstore","nativeSrc":"7635:6:24","nodeType":"YulIdentifier","src":"7635:6:24"},"nativeSrc":"7635:47:24","nodeType":"YulFunctionCall","src":"7635:47:24"},"nativeSrc":"7635:47:24","nodeType":"YulExpressionStatement","src":"7635:47:24"},{"nativeSrc":"7691:139:24","nodeType":"YulAssignment","src":"7691:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"7825:4:24","nodeType":"YulIdentifier","src":"7825:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69_to_t_string_memory_ptr_fromStack","nativeSrc":"7699:124:24","nodeType":"YulIdentifier","src":"7699:124:24"},"nativeSrc":"7699:131:24","nodeType":"YulFunctionCall","src":"7699:131:24"},"variableNames":[{"name":"tail","nativeSrc":"7691:4:24","nodeType":"YulIdentifier","src":"7691:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7418:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7569:9:24","nodeType":"YulTypedName","src":"7569:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7584:4:24","nodeType":"YulTypedName","src":"7584:4:24","type":""}],"src":"7418:419:24"},{"body":{"nativeSrc":"7906:80:24","nodeType":"YulBlock","src":"7906:80:24","statements":[{"nativeSrc":"7916:22:24","nodeType":"YulAssignment","src":"7916:22:24","value":{"arguments":[{"name":"offset","nativeSrc":"7931:6:24","nodeType":"YulIdentifier","src":"7931:6:24"}],"functionName":{"name":"mload","nativeSrc":"7925:5:24","nodeType":"YulIdentifier","src":"7925:5:24"},"nativeSrc":"7925:13:24","nodeType":"YulFunctionCall","src":"7925:13:24"},"variableNames":[{"name":"value","nativeSrc":"7916:5:24","nodeType":"YulIdentifier","src":"7916:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7974:5:24","nodeType":"YulIdentifier","src":"7974:5:24"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"7947:26:24","nodeType":"YulIdentifier","src":"7947:26:24"},"nativeSrc":"7947:33:24","nodeType":"YulFunctionCall","src":"7947:33:24"},"nativeSrc":"7947:33:24","nodeType":"YulExpressionStatement","src":"7947:33:24"}]},"name":"abi_decode_t_address_fromMemory","nativeSrc":"7843:143:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"7884:6:24","nodeType":"YulTypedName","src":"7884:6:24","type":""},{"name":"end","nativeSrc":"7892:3:24","nodeType":"YulTypedName","src":"7892:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"7900:5:24","nodeType":"YulTypedName","src":"7900:5:24","type":""}],"src":"7843:143:24"},{"body":{"nativeSrc":"8069:274:24","nodeType":"YulBlock","src":"8069:274:24","statements":[{"body":{"nativeSrc":"8115:83:24","nodeType":"YulBlock","src":"8115:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"8117:77:24","nodeType":"YulIdentifier","src":"8117:77:24"},"nativeSrc":"8117:79:24","nodeType":"YulFunctionCall","src":"8117:79:24"},"nativeSrc":"8117:79:24","nodeType":"YulExpressionStatement","src":"8117:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8090:7:24","nodeType":"YulIdentifier","src":"8090:7:24"},{"name":"headStart","nativeSrc":"8099:9:24","nodeType":"YulIdentifier","src":"8099:9:24"}],"functionName":{"name":"sub","nativeSrc":"8086:3:24","nodeType":"YulIdentifier","src":"8086:3:24"},"nativeSrc":"8086:23:24","nodeType":"YulFunctionCall","src":"8086:23:24"},{"kind":"number","nativeSrc":"8111:2:24","nodeType":"YulLiteral","src":"8111:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8082:3:24","nodeType":"YulIdentifier","src":"8082:3:24"},"nativeSrc":"8082:32:24","nodeType":"YulFunctionCall","src":"8082:32:24"},"nativeSrc":"8079:119:24","nodeType":"YulIf","src":"8079:119:24"},{"nativeSrc":"8208:128:24","nodeType":"YulBlock","src":"8208:128:24","statements":[{"nativeSrc":"8223:15:24","nodeType":"YulVariableDeclaration","src":"8223:15:24","value":{"kind":"number","nativeSrc":"8237:1:24","nodeType":"YulLiteral","src":"8237:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"8227:6:24","nodeType":"YulTypedName","src":"8227:6:24","type":""}]},{"nativeSrc":"8252:74:24","nodeType":"YulAssignment","src":"8252:74:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8298:9:24","nodeType":"YulIdentifier","src":"8298:9:24"},{"name":"offset","nativeSrc":"8309:6:24","nodeType":"YulIdentifier","src":"8309:6:24"}],"functionName":{"name":"add","nativeSrc":"8294:3:24","nodeType":"YulIdentifier","src":"8294:3:24"},"nativeSrc":"8294:22:24","nodeType":"YulFunctionCall","src":"8294:22:24"},{"name":"dataEnd","nativeSrc":"8318:7:24","nodeType":"YulIdentifier","src":"8318:7:24"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"8262:31:24","nodeType":"YulIdentifier","src":"8262:31:24"},"nativeSrc":"8262:64:24","nodeType":"YulFunctionCall","src":"8262:64:24"},"variableNames":[{"name":"value0","nativeSrc":"8252:6:24","nodeType":"YulIdentifier","src":"8252:6:24"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"7992:351:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8039:9:24","nodeType":"YulTypedName","src":"8039:9:24","type":""},{"name":"dataEnd","nativeSrc":"8050:7:24","nodeType":"YulTypedName","src":"8050:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8062:6:24","nodeType":"YulTypedName","src":"8062:6:24","type":""}],"src":"7992:351:24"},{"body":{"nativeSrc":"8447:124:24","nodeType":"YulBlock","src":"8447:124:24","statements":[{"nativeSrc":"8457:26:24","nodeType":"YulAssignment","src":"8457:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"8469:9:24","nodeType":"YulIdentifier","src":"8469:9:24"},{"kind":"number","nativeSrc":"8480:2:24","nodeType":"YulLiteral","src":"8480:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8465:3:24","nodeType":"YulIdentifier","src":"8465:3:24"},"nativeSrc":"8465:18:24","nodeType":"YulFunctionCall","src":"8465:18:24"},"variableNames":[{"name":"tail","nativeSrc":"8457:4:24","nodeType":"YulIdentifier","src":"8457:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8537:6:24","nodeType":"YulIdentifier","src":"8537:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"8550:9:24","nodeType":"YulIdentifier","src":"8550:9:24"},{"kind":"number","nativeSrc":"8561:1:24","nodeType":"YulLiteral","src":"8561:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8546:3:24","nodeType":"YulIdentifier","src":"8546:3:24"},"nativeSrc":"8546:17:24","nodeType":"YulFunctionCall","src":"8546:17:24"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"8493:43:24","nodeType":"YulIdentifier","src":"8493:43:24"},"nativeSrc":"8493:71:24","nodeType":"YulFunctionCall","src":"8493:71:24"},"nativeSrc":"8493:71:24","nodeType":"YulExpressionStatement","src":"8493:71:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"8349:222:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8419:9:24","nodeType":"YulTypedName","src":"8419:9:24","type":""},{"name":"value0","nativeSrc":"8431:6:24","nodeType":"YulTypedName","src":"8431:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8442:4:24","nodeType":"YulTypedName","src":"8442:4:24","type":""}],"src":"8349:222:24"},{"body":{"nativeSrc":"8640:80:24","nodeType":"YulBlock","src":"8640:80:24","statements":[{"nativeSrc":"8650:22:24","nodeType":"YulAssignment","src":"8650:22:24","value":{"arguments":[{"name":"offset","nativeSrc":"8665:6:24","nodeType":"YulIdentifier","src":"8665:6:24"}],"functionName":{"name":"mload","nativeSrc":"8659:5:24","nodeType":"YulIdentifier","src":"8659:5:24"},"nativeSrc":"8659:13:24","nodeType":"YulFunctionCall","src":"8659:13:24"},"variableNames":[{"name":"value","nativeSrc":"8650:5:24","nodeType":"YulIdentifier","src":"8650:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8708:5:24","nodeType":"YulIdentifier","src":"8708:5:24"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"8681:26:24","nodeType":"YulIdentifier","src":"8681:26:24"},"nativeSrc":"8681:33:24","nodeType":"YulFunctionCall","src":"8681:33:24"},"nativeSrc":"8681:33:24","nodeType":"YulExpressionStatement","src":"8681:33:24"}]},"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"8577:143:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8618:6:24","nodeType":"YulTypedName","src":"8618:6:24","type":""},{"name":"end","nativeSrc":"8626:3:24","nodeType":"YulTypedName","src":"8626:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"8634:5:24","nodeType":"YulTypedName","src":"8634:5:24","type":""}],"src":"8577:143:24"},{"body":{"nativeSrc":"8803:274:24","nodeType":"YulBlock","src":"8803:274:24","statements":[{"body":{"nativeSrc":"8849:83:24","nodeType":"YulBlock","src":"8849:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"8851:77:24","nodeType":"YulIdentifier","src":"8851:77:24"},"nativeSrc":"8851:79:24","nodeType":"YulFunctionCall","src":"8851:79:24"},"nativeSrc":"8851:79:24","nodeType":"YulExpressionStatement","src":"8851:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8824:7:24","nodeType":"YulIdentifier","src":"8824:7:24"},{"name":"headStart","nativeSrc":"8833:9:24","nodeType":"YulIdentifier","src":"8833:9:24"}],"functionName":{"name":"sub","nativeSrc":"8820:3:24","nodeType":"YulIdentifier","src":"8820:3:24"},"nativeSrc":"8820:23:24","nodeType":"YulFunctionCall","src":"8820:23:24"},{"kind":"number","nativeSrc":"8845:2:24","nodeType":"YulLiteral","src":"8845:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8816:3:24","nodeType":"YulIdentifier","src":"8816:3:24"},"nativeSrc":"8816:32:24","nodeType":"YulFunctionCall","src":"8816:32:24"},"nativeSrc":"8813:119:24","nodeType":"YulIf","src":"8813:119:24"},{"nativeSrc":"8942:128:24","nodeType":"YulBlock","src":"8942:128:24","statements":[{"nativeSrc":"8957:15:24","nodeType":"YulVariableDeclaration","src":"8957:15:24","value":{"kind":"number","nativeSrc":"8971:1:24","nodeType":"YulLiteral","src":"8971:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"8961:6:24","nodeType":"YulTypedName","src":"8961:6:24","type":""}]},{"nativeSrc":"8986:74:24","nodeType":"YulAssignment","src":"8986:74:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9032:9:24","nodeType":"YulIdentifier","src":"9032:9:24"},{"name":"offset","nativeSrc":"9043:6:24","nodeType":"YulIdentifier","src":"9043:6:24"}],"functionName":{"name":"add","nativeSrc":"9028:3:24","nodeType":"YulIdentifier","src":"9028:3:24"},"nativeSrc":"9028:22:24","nodeType":"YulFunctionCall","src":"9028:22:24"},{"name":"dataEnd","nativeSrc":"9052:7:24","nodeType":"YulIdentifier","src":"9052:7:24"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"8996:31:24","nodeType":"YulIdentifier","src":"8996:31:24"},"nativeSrc":"8996:64:24","nodeType":"YulFunctionCall","src":"8996:64:24"},"variableNames":[{"name":"value0","nativeSrc":"8986:6:24","nodeType":"YulIdentifier","src":"8986:6:24"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"8726:351:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8773:9:24","nodeType":"YulTypedName","src":"8773:9:24","type":""},{"name":"dataEnd","nativeSrc":"8784:7:24","nodeType":"YulTypedName","src":"8784:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8796:6:24","nodeType":"YulTypedName","src":"8796:6:24","type":""}],"src":"8726:351:24"},{"body":{"nativeSrc":"9189:62:24","nodeType":"YulBlock","src":"9189:62:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"9211:6:24","nodeType":"YulIdentifier","src":"9211:6:24"},{"kind":"number","nativeSrc":"9219:1:24","nodeType":"YulLiteral","src":"9219:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9207:3:24","nodeType":"YulIdentifier","src":"9207:3:24"},"nativeSrc":"9207:14:24","nodeType":"YulFunctionCall","src":"9207:14:24"},{"hexValue":"4e6f20617373657473207265636569766564","kind":"string","nativeSrc":"9223:20:24","nodeType":"YulLiteral","src":"9223:20:24","type":"","value":"No assets received"}],"functionName":{"name":"mstore","nativeSrc":"9200:6:24","nodeType":"YulIdentifier","src":"9200:6:24"},"nativeSrc":"9200:44:24","nodeType":"YulFunctionCall","src":"9200:44:24"},"nativeSrc":"9200:44:24","nodeType":"YulExpressionStatement","src":"9200:44:24"}]},"name":"store_literal_in_memory_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4","nativeSrc":"9083:168:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"9181:6:24","nodeType":"YulTypedName","src":"9181:6:24","type":""}],"src":"9083:168:24"},{"body":{"nativeSrc":"9403:220:24","nodeType":"YulBlock","src":"9403:220:24","statements":[{"nativeSrc":"9413:74:24","nodeType":"YulAssignment","src":"9413:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"9479:3:24","nodeType":"YulIdentifier","src":"9479:3:24"},{"kind":"number","nativeSrc":"9484:2:24","nodeType":"YulLiteral","src":"9484:2:24","type":"","value":"18"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"9420:58:24","nodeType":"YulIdentifier","src":"9420:58:24"},"nativeSrc":"9420:67:24","nodeType":"YulFunctionCall","src":"9420:67:24"},"variableNames":[{"name":"pos","nativeSrc":"9413:3:24","nodeType":"YulIdentifier","src":"9413:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"9585:3:24","nodeType":"YulIdentifier","src":"9585:3:24"}],"functionName":{"name":"store_literal_in_memory_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4","nativeSrc":"9496:88:24","nodeType":"YulIdentifier","src":"9496:88:24"},"nativeSrc":"9496:93:24","nodeType":"YulFunctionCall","src":"9496:93:24"},"nativeSrc":"9496:93:24","nodeType":"YulExpressionStatement","src":"9496:93:24"},{"nativeSrc":"9598:19:24","nodeType":"YulAssignment","src":"9598:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"9609:3:24","nodeType":"YulIdentifier","src":"9609:3:24"},{"kind":"number","nativeSrc":"9614:2:24","nodeType":"YulLiteral","src":"9614:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9605:3:24","nodeType":"YulIdentifier","src":"9605:3:24"},"nativeSrc":"9605:12:24","nodeType":"YulFunctionCall","src":"9605:12:24"},"variableNames":[{"name":"end","nativeSrc":"9598:3:24","nodeType":"YulIdentifier","src":"9598:3:24"}]}]},"name":"abi_encode_t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4_to_t_string_memory_ptr_fromStack","nativeSrc":"9257:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"9391:3:24","nodeType":"YulTypedName","src":"9391:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9399:3:24","nodeType":"YulTypedName","src":"9399:3:24","type":""}],"src":"9257:366:24"},{"body":{"nativeSrc":"9800:248:24","nodeType":"YulBlock","src":"9800:248:24","statements":[{"nativeSrc":"9810:26:24","nodeType":"YulAssignment","src":"9810:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"9822:9:24","nodeType":"YulIdentifier","src":"9822:9:24"},{"kind":"number","nativeSrc":"9833:2:24","nodeType":"YulLiteral","src":"9833:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9818:3:24","nodeType":"YulIdentifier","src":"9818:3:24"},"nativeSrc":"9818:18:24","nodeType":"YulFunctionCall","src":"9818:18:24"},"variableNames":[{"name":"tail","nativeSrc":"9810:4:24","nodeType":"YulIdentifier","src":"9810:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9857:9:24","nodeType":"YulIdentifier","src":"9857:9:24"},{"kind":"number","nativeSrc":"9868:1:24","nodeType":"YulLiteral","src":"9868:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9853:3:24","nodeType":"YulIdentifier","src":"9853:3:24"},"nativeSrc":"9853:17:24","nodeType":"YulFunctionCall","src":"9853:17:24"},{"arguments":[{"name":"tail","nativeSrc":"9876:4:24","nodeType":"YulIdentifier","src":"9876:4:24"},{"name":"headStart","nativeSrc":"9882:9:24","nodeType":"YulIdentifier","src":"9882:9:24"}],"functionName":{"name":"sub","nativeSrc":"9872:3:24","nodeType":"YulIdentifier","src":"9872:3:24"},"nativeSrc":"9872:20:24","nodeType":"YulFunctionCall","src":"9872:20:24"}],"functionName":{"name":"mstore","nativeSrc":"9846:6:24","nodeType":"YulIdentifier","src":"9846:6:24"},"nativeSrc":"9846:47:24","nodeType":"YulFunctionCall","src":"9846:47:24"},"nativeSrc":"9846:47:24","nodeType":"YulExpressionStatement","src":"9846:47:24"},{"nativeSrc":"9902:139:24","nodeType":"YulAssignment","src":"9902:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"10036:4:24","nodeType":"YulIdentifier","src":"10036:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4_to_t_string_memory_ptr_fromStack","nativeSrc":"9910:124:24","nodeType":"YulIdentifier","src":"9910:124:24"},"nativeSrc":"9910:131:24","nodeType":"YulFunctionCall","src":"9910:131:24"},"variableNames":[{"name":"tail","nativeSrc":"9902:4:24","nodeType":"YulIdentifier","src":"9902:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9629:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9780:9:24","nodeType":"YulTypedName","src":"9780:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9795:4:24","nodeType":"YulTypedName","src":"9795:4:24","type":""}],"src":"9629:419:24"},{"body":{"nativeSrc":"10180:206:24","nodeType":"YulBlock","src":"10180:206:24","statements":[{"nativeSrc":"10190:26:24","nodeType":"YulAssignment","src":"10190:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"10202:9:24","nodeType":"YulIdentifier","src":"10202:9:24"},{"kind":"number","nativeSrc":"10213:2:24","nodeType":"YulLiteral","src":"10213:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10198:3:24","nodeType":"YulIdentifier","src":"10198:3:24"},"nativeSrc":"10198:18:24","nodeType":"YulFunctionCall","src":"10198:18:24"},"variableNames":[{"name":"tail","nativeSrc":"10190:4:24","nodeType":"YulIdentifier","src":"10190:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"10270:6:24","nodeType":"YulIdentifier","src":"10270:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"10283:9:24","nodeType":"YulIdentifier","src":"10283:9:24"},{"kind":"number","nativeSrc":"10294:1:24","nodeType":"YulLiteral","src":"10294:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10279:3:24","nodeType":"YulIdentifier","src":"10279:3:24"},"nativeSrc":"10279:17:24","nodeType":"YulFunctionCall","src":"10279:17:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"10226:43:24","nodeType":"YulIdentifier","src":"10226:43:24"},"nativeSrc":"10226:71:24","nodeType":"YulFunctionCall","src":"10226:71:24"},"nativeSrc":"10226:71:24","nodeType":"YulExpressionStatement","src":"10226:71:24"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"10351:6:24","nodeType":"YulIdentifier","src":"10351:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"10364:9:24","nodeType":"YulIdentifier","src":"10364:9:24"},{"kind":"number","nativeSrc":"10375:2:24","nodeType":"YulLiteral","src":"10375:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10360:3:24","nodeType":"YulIdentifier","src":"10360:3:24"},"nativeSrc":"10360:18:24","nodeType":"YulFunctionCall","src":"10360:18:24"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"10307:43:24","nodeType":"YulIdentifier","src":"10307:43:24"},"nativeSrc":"10307:72:24","nodeType":"YulFunctionCall","src":"10307:72:24"},"nativeSrc":"10307:72:24","nodeType":"YulExpressionStatement","src":"10307:72:24"}]},"name":"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed","nativeSrc":"10054:332:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10144:9:24","nodeType":"YulTypedName","src":"10144:9:24","type":""},{"name":"value1","nativeSrc":"10156:6:24","nodeType":"YulTypedName","src":"10156:6:24","type":""},{"name":"value0","nativeSrc":"10164:6:24","nodeType":"YulTypedName","src":"10164:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10175:4:24","nodeType":"YulTypedName","src":"10175:4:24","type":""}],"src":"10054:332:24"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_IERC4626_$407(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC4626_$407(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC4626_$407(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC4626_$407(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_IERC4626_$407(value)\n }\n\n function cleanup_t_contract$_IERC20_$1137(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC20_$1137(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC20_$1137(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC20_$1137(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_IERC20_$1137(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_contract$_IERC4626_$407t_contract$_IERC20_$1137t_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC4626_$407(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1137(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, value1, pos)\n\n end := pos\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69(memPtr) {\n\n mstore(add(memPtr, 0), \"Swap failed\")\n\n }\n\n function abi_encode_t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 11)\n store_literal_in_memory_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function store_literal_in_memory_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4(memPtr) {\n\n mstore(add(memPtr, 0), \"No assets received\")\n\n }\n\n function abi_encode_t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 18)\n store_literal_in_memory_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2c26c0a64586294742cc7da7cf0507dc315b4eb1444f850a68bc2fd001d152b4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n}\n","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061001d575f3560e01c8063c53dbf7014610021575b5f80fd5b61003b6004803603810190610036919061060c565b610051565b60405161004891906106b1565b60405180910390f35b5f61007f3330878973ffffffffffffffffffffffffffffffffffffffff166103da909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b385876040518363ffffffff1660e01b81526004016100ba9291906106d9565b6020604051808303815f875af11580156100d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fa9190610735565b505f8473ffffffffffffffffffffffffffffffffffffffff1634858560405161012492919061079c565b5f6040518083038185875af1925050503d805f811461015e576040519150601f19603f3d011682016040523d82523d5f602084013e610163565b606091505b50509050806101a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019e9061080e565b60405180910390fd5b5f8873ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102159190610840565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610251919061086b565b602060405180830381865afa15801561026c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102909190610898565b90505f81116102d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cb9061090d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b38b836040518363ffffffff1660e01b815260040161030f9291906106d9565b6020604051808303815f875af115801561032b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034f9190610735565b508973ffffffffffffffffffffffffffffffffffffffff16636e553f6582336040518363ffffffff1660e01b815260040161038b92919061092b565b6020604051808303815f875af11580156103a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cb9190610898565b93505050509695505050505050565b6103e884848484600161042f565b61042957836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610420919061086b565b60405180910390fd5b50505050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f5114831661048d578383151615610481573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104d1826104a8565b9050919050565b5f6104e2826104c7565b9050919050565b6104f2816104d8565b81146104fc575f80fd5b50565b5f8135905061050d816104e9565b92915050565b5f61051d826104c7565b9050919050565b61052d81610513565b8114610537575f80fd5b50565b5f8135905061054881610524565b92915050565b5f819050919050565b6105608161054e565b811461056a575f80fd5b50565b5f8135905061057b81610557565b92915050565b61058a816104c7565b8114610594575f80fd5b50565b5f813590506105a581610581565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126105cc576105cb6105ab565b5b8235905067ffffffffffffffff8111156105e9576105e86105af565b5b602083019150836001820283011115610605576106046105b3565b5b9250929050565b5f805f805f8060a08789031215610626576106256104a0565b5b5f61063389828a016104ff565b965050602061064489828a0161053a565b955050604061065589828a0161056d565b945050606061066689828a01610597565b935050608087013567ffffffffffffffff811115610687576106866104a4565b5b61069389828a016105b7565b92509250509295509295509295565b6106ab8161054e565b82525050565b5f6020820190506106c45f8301846106a2565b92915050565b6106d3816104c7565b82525050565b5f6040820190506106ec5f8301856106ca565b6106f960208301846106a2565b9392505050565b5f8115159050919050565b61071481610700565b811461071e575f80fd5b50565b5f8151905061072f8161070b565b92915050565b5f6020828403121561074a576107496104a0565b5b5f61075784828501610721565b91505092915050565b5f81905092915050565b828183375f83830152505050565b5f6107838385610760565b935061079083858461076a565b82840190509392505050565b5f6107a8828486610778565b91508190509392505050565b5f82825260208201905092915050565b7f53776170206661696c65640000000000000000000000000000000000000000005f82015250565b5f6107f8600b836107b4565b9150610803826107c4565b602082019050919050565b5f6020820190508181035f830152610825816107ec565b9050919050565b5f8151905061083a81610581565b92915050565b5f60208284031215610855576108546104a0565b5b5f6108628482850161082c565b91505092915050565b5f60208201905061087e5f8301846106ca565b92915050565b5f8151905061089281610557565b92915050565b5f602082840312156108ad576108ac6104a0565b5b5f6108ba84828501610884565b91505092915050565b7f4e6f2061737365747320726563656976656400000000000000000000000000005f82015250565b5f6108f76012836107b4565b9150610902826108c3565b602082019050919050565b5f6020820190508181035f830152610924816108eb565b9050919050565b5f60408201905061093e5f8301856106a2565b61094b60208301846106ca565b939250505056fea2646970667358221220b8f2ab90286576d5fc15901bcf47d054ff9cd09547fc6a212ab14eb1fe448b7a64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC53DBF70 EQ PUSH2 0x21 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x3B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x36 SWAP2 SWAP1 PUSH2 0x60C JUMP JUMPDEST PUSH2 0x51 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x48 SWAP2 SWAP1 PUSH2 0x6B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH2 0x7F CALLER ADDRESS DUP8 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DA SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 DUP6 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBA SWAP3 SWAP2 SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFA SWAP2 SWAP1 PUSH2 0x735 JUMP JUMPDEST POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x124 SWAP3 SWAP2 SWAP1 PUSH2 0x79C JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x15E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x163 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19E SWAP1 PUSH2 0x80E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x215 SWAP2 SWAP1 PUSH2 0x840 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x251 SWAP2 SWAP1 PUSH2 0x86B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x290 SWAP2 SWAP1 PUSH2 0x898 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT PUSH2 0x2D4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CB SWAP1 PUSH2 0x90D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 DUP12 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30F SWAP3 SWAP2 SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x34F SWAP2 SWAP1 PUSH2 0x735 JUMP JUMPDEST POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E553F65 DUP3 CALLER PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x38B SWAP3 SWAP2 SWAP1 PUSH2 0x92B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x898 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3E8 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x42F JUMP JUMPDEST PUSH2 0x429 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x86B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 POP PUSH1 0x40 MLOAD DUP2 PUSH0 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP8 AND PUSH1 0x4 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP7 AND PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH0 PUSH1 0x64 PUSH0 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x48D JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x481 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST DUP1 PUSH1 0x40 MSTORE PUSH0 PUSH1 0x60 MSTORE POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4D1 DUP3 PUSH2 0x4A8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4E2 DUP3 PUSH2 0x4C7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4F2 DUP2 PUSH2 0x4D8 JUMP JUMPDEST DUP2 EQ PUSH2 0x4FC JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x50D DUP2 PUSH2 0x4E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x51D DUP3 PUSH2 0x4C7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x52D DUP2 PUSH2 0x513 JUMP JUMPDEST DUP2 EQ PUSH2 0x537 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x548 DUP2 PUSH2 0x524 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x560 DUP2 PUSH2 0x54E JUMP JUMPDEST DUP2 EQ PUSH2 0x56A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x57B DUP2 PUSH2 0x557 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x58A DUP2 PUSH2 0x4C7 JUMP JUMPDEST DUP2 EQ PUSH2 0x594 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5A5 DUP2 PUSH2 0x581 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5CC JUMPI PUSH2 0x5CB PUSH2 0x5AB JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5E9 JUMPI PUSH2 0x5E8 PUSH2 0x5AF JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x605 JUMPI PUSH2 0x604 PUSH2 0x5B3 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x626 JUMPI PUSH2 0x625 PUSH2 0x4A0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x633 DUP10 DUP3 DUP11 ADD PUSH2 0x4FF JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x644 DUP10 DUP3 DUP11 ADD PUSH2 0x53A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x655 DUP10 DUP3 DUP11 ADD PUSH2 0x56D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x666 DUP10 DUP3 DUP11 ADD PUSH2 0x597 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x687 JUMPI PUSH2 0x686 PUSH2 0x4A4 JUMP JUMPDEST JUMPDEST PUSH2 0x693 DUP10 DUP3 DUP11 ADD PUSH2 0x5B7 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x6AB DUP2 PUSH2 0x54E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6C4 PUSH0 DUP4 ADD DUP5 PUSH2 0x6A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6D3 DUP2 PUSH2 0x4C7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6EC PUSH0 DUP4 ADD DUP6 PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x6F9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6A2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x714 DUP2 PUSH2 0x700 JUMP JUMPDEST DUP2 EQ PUSH2 0x71E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x72F DUP2 PUSH2 0x70B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x74A JUMPI PUSH2 0x749 PUSH2 0x4A0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x757 DUP5 DUP3 DUP6 ADD PUSH2 0x721 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x783 DUP4 DUP6 PUSH2 0x760 JUMP JUMPDEST SWAP4 POP PUSH2 0x790 DUP4 DUP6 DUP5 PUSH2 0x76A JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7A8 DUP3 DUP5 DUP7 PUSH2 0x778 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x53776170206661696C6564000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x7F8 PUSH1 0xB DUP4 PUSH2 0x7B4 JUMP JUMPDEST SWAP2 POP PUSH2 0x803 DUP3 PUSH2 0x7C4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x825 DUP2 PUSH2 0x7EC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x83A DUP2 PUSH2 0x581 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x855 JUMPI PUSH2 0x854 PUSH2 0x4A0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x862 DUP5 DUP3 DUP6 ADD PUSH2 0x82C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x87E PUSH0 DUP4 ADD DUP5 PUSH2 0x6CA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x892 DUP2 PUSH2 0x557 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8AD JUMPI PUSH2 0x8AC PUSH2 0x4A0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x8BA DUP5 DUP3 DUP6 ADD PUSH2 0x884 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E6F206173736574732072656365697665640000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x8F7 PUSH1 0x12 DUP4 PUSH2 0x7B4 JUMP JUMPDEST SWAP2 POP PUSH2 0x902 DUP3 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x924 DUP2 PUSH2 0x8EB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x93E PUSH0 DUP4 ADD DUP6 PUSH2 0x6A2 JUMP JUMPDEST PUSH2 0x94B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6CA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 CALLCODE 0xAB SWAP1 0x28 PUSH6 0x76D5FC15901B 0xCF SELFBALANCE 0xD0 SLOAD SELFDESTRUCT SWAP13 0xD0 SWAP6 SELFBALANCE 0xFC PUSH11 0x212AB14EB1FE448B7A6473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"420:1487:19:-:0;;;;;;;;;;;;;;;;;;;;;933:972;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1111:17;1195:61;1220:10;1240:4;1247:8;1195:7;:24;;;;:61;;;;;;:::i;:::-;1305:7;:15;;;1321:6;1329:8;1305:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1404:12;1422:6;:11;;1441:9;1452:8;;1422:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1403:58;;;1479:7;1471:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;1579:12;1601:5;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1579:36;;1625:21;1649:5;:15;;;1673:4;1649:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1625:54;;1713:1;1697:13;:17;1689:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;1792:5;:13;;;1814:5;1822:13;1792:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1858:5;:13;;;1872;1887:10;1858:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1846:52;;1130:775;;;933:972;;;;;;;;:::o;1662:232:10:-;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1870:5;1837:40;;;;;;;;;;;:::i;:::-;;;;;;;;1762:126;1662:232;;;;:::o;10165:1393::-;10323:12;10347:15;10365:28;;;10347:46;;10460:4;10454:11;10491:8;10485:4;10478:22;10548:1;10544:6;10540:2;10536:15;10530:4;10526:26;10520:4;10513:40;10599:1;10595:6;10591:2;10587:15;10583:2;10579:24;10573:4;10566:38;10630:5;10624:4;10617:19;10700:4;10694;10688;10682;10679:1;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11510:3;11504:4;11497:17;11540:1;11534:4;11527:15;10429:1123;;10165:1393;;;;;;;:::o;88:117:24:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:112::-;621:7;650:24;668:5;650:24;:::i;:::-;639:35;;568:112;;;:::o;686:154::-;775:40;809:5;775:40;:::i;:::-;768:5;765:51;755:79;;830:1;827;820:12;755:79;686:154;:::o;846:171::-;908:5;946:6;933:20;924:29;;962:49;1005:5;962:49;:::i;:::-;846:171;;;;:::o;1023:111::-;1075:7;1104:24;1122:5;1104:24;:::i;:::-;1093:35;;1023:111;;;:::o;1140:152::-;1228:39;1261:5;1228:39;:::i;:::-;1221:5;1218:50;1208:78;;1282:1;1279;1272:12;1208:78;1140:152;:::o;1298:169::-;1359:5;1397:6;1384:20;1375:29;;1413:48;1455:5;1413:48;:::i;:::-;1298:169;;;;:::o;1473:77::-;1510:7;1539:5;1528:16;;1473:77;;;:::o;1556:122::-;1629:24;1647:5;1629:24;:::i;:::-;1622:5;1619:35;1609:63;;1668:1;1665;1658:12;1609:63;1556:122;:::o;1684:139::-;1730:5;1768:6;1755:20;1746:29;;1784:33;1811:5;1784:33;:::i;:::-;1684:139;;;;:::o;1829:122::-;1902:24;1920:5;1902:24;:::i;:::-;1895:5;1892:35;1882:63;;1941:1;1938;1931:12;1882:63;1829:122;:::o;1957:139::-;2003:5;2041:6;2028:20;2019:29;;2057:33;2084:5;2057:33;:::i;:::-;1957:139;;;;:::o;2102:117::-;2211:1;2208;2201:12;2225:117;2334:1;2331;2324:12;2348:117;2457:1;2454;2447:12;2484:552;2541:8;2551:6;2601:3;2594:4;2586:6;2582:17;2578:27;2568:122;;2609:79;;:::i;:::-;2568:122;2722:6;2709:20;2699:30;;2752:18;2744:6;2741:30;2738:117;;;2774:79;;:::i;:::-;2738:117;2888:4;2880:6;2876:17;2864:29;;2942:3;2934:4;2926:6;2922:17;2912:8;2908:32;2905:41;2902:128;;;2949:79;;:::i;:::-;2902:128;2484:552;;;;;:::o;3042:1171::-;3179:6;3187;3195;3203;3211;3219;3268:3;3256:9;3247:7;3243:23;3239:33;3236:120;;;3275:79;;:::i;:::-;3236:120;3395:1;3420:69;3481:7;3472:6;3461:9;3457:22;3420:69;:::i;:::-;3410:79;;3366:133;3538:2;3564:68;3624:7;3615:6;3604:9;3600:22;3564:68;:::i;:::-;3554:78;;3509:133;3681:2;3707:53;3752:7;3743:6;3732:9;3728:22;3707:53;:::i;:::-;3697:63;;3652:118;3809:2;3835:53;3880:7;3871:6;3860:9;3856:22;3835:53;:::i;:::-;3825:63;;3780:118;3965:3;3954:9;3950:19;3937:33;3997:18;3989:6;3986:30;3983:117;;;4019:79;;:::i;:::-;3983:117;4132:64;4188:7;4179:6;4168:9;4164:22;4132:64;:::i;:::-;4114:82;;;;3908:298;3042:1171;;;;;;;;:::o;4219:118::-;4306:24;4324:5;4306:24;:::i;:::-;4301:3;4294:37;4219:118;;:::o;4343:222::-;4436:4;4474:2;4463:9;4459:18;4451:26;;4487:71;4555:1;4544:9;4540:17;4531:6;4487:71;:::i;:::-;4343:222;;;;:::o;4571:118::-;4658:24;4676:5;4658:24;:::i;:::-;4653:3;4646:37;4571:118;;:::o;4695:332::-;4816:4;4854:2;4843:9;4839:18;4831:26;;4867:71;4935:1;4924:9;4920:17;4911:6;4867:71;:::i;:::-;4948:72;5016:2;5005:9;5001:18;4992:6;4948:72;:::i;:::-;4695:332;;;;;:::o;5033:90::-;5067:7;5110:5;5103:13;5096:21;5085:32;;5033:90;;;:::o;5129:116::-;5199:21;5214:5;5199:21;:::i;:::-;5192:5;5189:32;5179:60;;5235:1;5232;5225:12;5179:60;5129:116;:::o;5251:137::-;5305:5;5336:6;5330:13;5321:22;;5352:30;5376:5;5352:30;:::i;:::-;5251:137;;;;:::o;5394:345::-;5461:6;5510:2;5498:9;5489:7;5485:23;5481:32;5478:119;;;5516:79;;:::i;:::-;5478:119;5636:1;5661:61;5714:7;5705:6;5694:9;5690:22;5661:61;:::i;:::-;5651:71;;5607:125;5394:345;;;;:::o;5745:147::-;5846:11;5883:3;5868:18;;5745:147;;;;:::o;5898:148::-;5996:6;5991:3;5986;5973:30;6037:1;6028:6;6023:3;6019:16;6012:27;5898:148;;;:::o;6074:327::-;6188:3;6209:88;6290:6;6285:3;6209:88;:::i;:::-;6202:95;;6307:56;6356:6;6351:3;6344:5;6307:56;:::i;:::-;6388:6;6383:3;6379:16;6372:23;;6074:327;;;;;:::o;6407:291::-;6547:3;6569:103;6668:3;6659:6;6651;6569:103;:::i;:::-;6562:110;;6689:3;6682:10;;6407:291;;;;;:::o;6704:169::-;6788:11;6822:6;6817:3;6810:19;6862:4;6857:3;6853:14;6838:29;;6704:169;;;;:::o;6879:161::-;7019:13;7015:1;7007:6;7003:14;6996:37;6879:161;:::o;7046:366::-;7188:3;7209:67;7273:2;7268:3;7209:67;:::i;:::-;7202:74;;7285:93;7374:3;7285:93;:::i;:::-;7403:2;7398:3;7394:12;7387:19;;7046:366;;;:::o;7418:419::-;7584:4;7622:2;7611:9;7607:18;7599:26;;7671:9;7665:4;7661:20;7657:1;7646:9;7642:17;7635:47;7699:131;7825:4;7699:131;:::i;:::-;7691:139;;7418:419;;;:::o;7843:143::-;7900:5;7931:6;7925:13;7916:22;;7947:33;7974:5;7947:33;:::i;:::-;7843:143;;;;:::o;7992:351::-;8062:6;8111:2;8099:9;8090:7;8086:23;8082:32;8079:119;;;8117:79;;:::i;:::-;8079:119;8237:1;8262:64;8318:7;8309:6;8298:9;8294:22;8262:64;:::i;:::-;8252:74;;8208:128;7992:351;;;;:::o;8349:222::-;8442:4;8480:2;8469:9;8465:18;8457:26;;8493:71;8561:1;8550:9;8546:17;8537:6;8493:71;:::i;:::-;8349:222;;;;:::o;8577:143::-;8634:5;8665:6;8659:13;8650:22;;8681:33;8708:5;8681:33;:::i;:::-;8577:143;;;;:::o;8726:351::-;8796:6;8845:2;8833:9;8824:7;8820:23;8816:32;8813:119;;;8851:79;;:::i;:::-;8813:119;8971:1;8996:64;9052:7;9043:6;9032:9;9028:22;8996:64;:::i;:::-;8986:74;;8942:128;8726:351;;;;:::o;9083:168::-;9223:20;9219:1;9211:6;9207:14;9200:44;9083:168;:::o;9257:366::-;9399:3;9420:67;9484:2;9479:3;9420:67;:::i;:::-;9413:74;;9496:93;9585:3;9496:93;:::i;:::-;9614:2;9609:3;9605:12;9598:19;;9257:366;;;:::o;9629:419::-;9795:4;9833:2;9822:9;9818:18;9810:26;;9882:9;9876:4;9872:20;9868:1;9857:9;9853:17;9846:47;9910:131;10036:4;9910:131;:::i;:::-;9902:139;;9629:419;;;:::o;10054:332::-;10175:4;10213:2;10202:9;10198:18;10190:26;;10226:71;10294:1;10283:9;10279:17;10270:6;10226:71;:::i;:::-;10307:72;10375:2;10364:9;10360:18;10351:6;10307:72;:::i;:::-;10054:332;;;;;:::o"},"methodIdentifiers":{"zapIn(address,address,uint256,address,bytes)":"c53dbf70"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"swapData\",\"type\":\"bytes\"}],\"name\":\"zapIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"sharesOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Facilitates 1-click zap-ins: taking any token, converting it to the Vault's asset (via 1inch/LiFi), and depositing into the ERC4626 vault.\",\"errors\":{\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"zapIn(address,address,uint256,address,bytes)\":{\"details\":\"Zap a supported token into the vault. This assumes the offchain API (like 1inch) provided the swap data to convert `tokenIn` to the Vault's `asset()`. \",\"params\":{\"amountIn\":\"The amount of `tokenIn` to deposit.\",\"router\":\"The swap router (e.g., 1inch).\",\"swapData\":\"The encoded swap transaction.\",\"tokenIn\":\"The token the user is depositing.\",\"vault\":\"The ERC4626 vault.\"}}},\"title\":\"BagFiZapper\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BagFiZapper.sol\":\"BagFiZapper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"contracts/BagFiZapper.sol\":{\"keccak256\":\"0x8927446fe9ef6df9f5f85eb7ce9e8e210f32708ac6b448e64f5cf4f8dabe9d59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f5c4aa2f5836fa414f5acb4618a052a419615c197383b5a988160e6a713eba\",\"dweb:/ipfs/QmV3jcqJsyy3qiGvej2N6ghs8QwawZhuKi4Ugbg64E1vwj\"]}},\"version\":1}"}},"contracts/SmartBagVault.sol":{"SmartBagVault":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"asset_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FundsDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"strategy","type":"address"}],"name":"StrategyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"strategy","type":"address"}],"name":"StrategyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"activeStrategies","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"strategy","type":"address"}],"name":"addStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"strategyIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deployToStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isActiveStrategy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"strategy","type":"address"}],"name":"removeStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1229":{"entryPoint":null,"id":1229,"parameterSlots":1,"returnSlots":0},"@_50":{"entryPoint":null,"id":50,"parameterSlots":1,"returnSlots":0},"@_596":{"entryPoint":null,"id":596,"parameterSlots":2,"returnSlots":0},"@_6664":{"entryPoint":null,"id":6664,"parameterSlots":3,"returnSlots":0},"@_transferOwnership_146":{"entryPoint":582,"id":146,"parameterSlots":1,"returnSlots":0},"@_tryGetAssetDecimals_1307":{"entryPoint":378,"id":1307,"parameterSlots":1,"returnSlots":2},"@getFreeMemoryPointer_2559":{"entryPoint":777,"id":2559,"parameterSlots":0,"returnSlots":1},"@returnDataSize_2519":{"entryPoint":826,"id":2519,"parameterSlots":0,"returnSlots":1},"@staticcallReturn64Bytes_2483":{"entryPoint":786,"id":2483,"parameterSlots":2,"returnSlots":3},"@unsafeSetFreeMemoryPointer_2568":{"entryPoint":819,"id":2568,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":1163,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_contract$_IERC20_$1137_fromMemory":{"entryPoint":937,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":1228,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20_$1137t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":1273,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":2141,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":2156,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":1075,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":833,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":1101,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_string_storage":{"entryPoint":1512,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":1409,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_t_string_storage":{"entryPoint":1797,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":881,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IERC20_$1137":{"entryPoint":898,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":850,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":1638,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":1763,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":1656,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1934,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":1149,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":1530,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":1464,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":1907,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":1026,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":1647,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":1879,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":1419,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":981,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":1689,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":957,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":961,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":846,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":842,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":965,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":1545,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1867,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":1739,"id":null,"parameterSlots":2,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":1557,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":1698,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_contract$_IERC20_$1137":{"entryPoint":915,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":1735,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:9693:24","nodeType":"YulBlock","src":"0:9693:24","statements":[{"body":{"nativeSrc":"47:35:24","nodeType":"YulBlock","src":"47:35:24","statements":[{"nativeSrc":"57:19:24","nodeType":"YulAssignment","src":"57:19:24","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:24","nodeType":"YulLiteral","src":"73:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:24","nodeType":"YulIdentifier","src":"67:5:24"},"nativeSrc":"67:9:24","nodeType":"YulFunctionCall","src":"67:9:24"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:24","nodeType":"YulIdentifier","src":"57:6:24"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:24","nodeType":"YulTypedName","src":"40:6:24","type":""}],"src":"7:75:24"},{"body":{"nativeSrc":"177:28:24","nodeType":"YulBlock","src":"177:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:24","nodeType":"YulLiteral","src":"194:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:24","nodeType":"YulLiteral","src":"197:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:24","nodeType":"YulIdentifier","src":"187:6:24"},"nativeSrc":"187:12:24","nodeType":"YulFunctionCall","src":"187:12:24"},"nativeSrc":"187:12:24","nodeType":"YulExpressionStatement","src":"187:12:24"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:24","nodeType":"YulFunctionDefinition","src":"88:117:24"},{"body":{"nativeSrc":"300:28:24","nodeType":"YulBlock","src":"300:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:24","nodeType":"YulLiteral","src":"317:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:24","nodeType":"YulLiteral","src":"320:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:24","nodeType":"YulIdentifier","src":"310:6:24"},"nativeSrc":"310:12:24","nodeType":"YulFunctionCall","src":"310:12:24"},"nativeSrc":"310:12:24","nodeType":"YulExpressionStatement","src":"310:12:24"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:24","nodeType":"YulFunctionDefinition","src":"211:117:24"},{"body":{"nativeSrc":"379:81:24","nodeType":"YulBlock","src":"379:81:24","statements":[{"nativeSrc":"389:65:24","nodeType":"YulAssignment","src":"389:65:24","value":{"arguments":[{"name":"value","nativeSrc":"404:5:24","nodeType":"YulIdentifier","src":"404:5:24"},{"kind":"number","nativeSrc":"411:42:24","nodeType":"YulLiteral","src":"411:42:24","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:24","nodeType":"YulIdentifier","src":"400:3:24"},"nativeSrc":"400:54:24","nodeType":"YulFunctionCall","src":"400:54:24"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:24","nodeType":"YulIdentifier","src":"389:7:24"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:24","nodeType":"YulTypedName","src":"361:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:24","nodeType":"YulTypedName","src":"371:7:24","type":""}],"src":"334:126:24"},{"body":{"nativeSrc":"511:51:24","nodeType":"YulBlock","src":"511:51:24","statements":[{"nativeSrc":"521:35:24","nodeType":"YulAssignment","src":"521:35:24","value":{"arguments":[{"name":"value","nativeSrc":"550:5:24","nodeType":"YulIdentifier","src":"550:5:24"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:24","nodeType":"YulIdentifier","src":"532:17:24"},"nativeSrc":"532:24:24","nodeType":"YulFunctionCall","src":"532:24:24"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:24","nodeType":"YulIdentifier","src":"521:7:24"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:24","nodeType":"YulTypedName","src":"493:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:24","nodeType":"YulTypedName","src":"503:7:24","type":""}],"src":"466:96:24"},{"body":{"nativeSrc":"628:51:24","nodeType":"YulBlock","src":"628:51:24","statements":[{"nativeSrc":"638:35:24","nodeType":"YulAssignment","src":"638:35:24","value":{"arguments":[{"name":"value","nativeSrc":"667:5:24","nodeType":"YulIdentifier","src":"667:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"649:17:24","nodeType":"YulIdentifier","src":"649:17:24"},"nativeSrc":"649:24:24","nodeType":"YulFunctionCall","src":"649:24:24"},"variableNames":[{"name":"cleaned","nativeSrc":"638:7:24","nodeType":"YulIdentifier","src":"638:7:24"}]}]},"name":"cleanup_t_contract$_IERC20_$1137","nativeSrc":"568:111:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"610:5:24","nodeType":"YulTypedName","src":"610:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"620:7:24","nodeType":"YulTypedName","src":"620:7:24","type":""}],"src":"568:111:24"},{"body":{"nativeSrc":"743:94:24","nodeType":"YulBlock","src":"743:94:24","statements":[{"body":{"nativeSrc":"815:16:24","nodeType":"YulBlock","src":"815:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"824:1:24","nodeType":"YulLiteral","src":"824:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"827:1:24","nodeType":"YulLiteral","src":"827:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"817:6:24","nodeType":"YulIdentifier","src":"817:6:24"},"nativeSrc":"817:12:24","nodeType":"YulFunctionCall","src":"817:12:24"},"nativeSrc":"817:12:24","nodeType":"YulExpressionStatement","src":"817:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"766:5:24","nodeType":"YulIdentifier","src":"766:5:24"},{"arguments":[{"name":"value","nativeSrc":"806:5:24","nodeType":"YulIdentifier","src":"806:5:24"}],"functionName":{"name":"cleanup_t_contract$_IERC20_$1137","nativeSrc":"773:32:24","nodeType":"YulIdentifier","src":"773:32:24"},"nativeSrc":"773:39:24","nodeType":"YulFunctionCall","src":"773:39:24"}],"functionName":{"name":"eq","nativeSrc":"763:2:24","nodeType":"YulIdentifier","src":"763:2:24"},"nativeSrc":"763:50:24","nodeType":"YulFunctionCall","src":"763:50:24"}],"functionName":{"name":"iszero","nativeSrc":"756:6:24","nodeType":"YulIdentifier","src":"756:6:24"},"nativeSrc":"756:58:24","nodeType":"YulFunctionCall","src":"756:58:24"},"nativeSrc":"753:78:24","nodeType":"YulIf","src":"753:78:24"}]},"name":"validator_revert_t_contract$_IERC20_$1137","nativeSrc":"685:152:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"736:5:24","nodeType":"YulTypedName","src":"736:5:24","type":""}],"src":"685:152:24"},{"body":{"nativeSrc":"921:95:24","nodeType":"YulBlock","src":"921:95:24","statements":[{"nativeSrc":"931:22:24","nodeType":"YulAssignment","src":"931:22:24","value":{"arguments":[{"name":"offset","nativeSrc":"946:6:24","nodeType":"YulIdentifier","src":"946:6:24"}],"functionName":{"name":"mload","nativeSrc":"940:5:24","nodeType":"YulIdentifier","src":"940:5:24"},"nativeSrc":"940:13:24","nodeType":"YulFunctionCall","src":"940:13:24"},"variableNames":[{"name":"value","nativeSrc":"931:5:24","nodeType":"YulIdentifier","src":"931:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1004:5:24","nodeType":"YulIdentifier","src":"1004:5:24"}],"functionName":{"name":"validator_revert_t_contract$_IERC20_$1137","nativeSrc":"962:41:24","nodeType":"YulIdentifier","src":"962:41:24"},"nativeSrc":"962:48:24","nodeType":"YulFunctionCall","src":"962:48:24"},"nativeSrc":"962:48:24","nodeType":"YulExpressionStatement","src":"962:48:24"}]},"name":"abi_decode_t_contract$_IERC20_$1137_fromMemory","nativeSrc":"843:173:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"899:6:24","nodeType":"YulTypedName","src":"899:6:24","type":""},{"name":"end","nativeSrc":"907:3:24","nodeType":"YulTypedName","src":"907:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"915:5:24","nodeType":"YulTypedName","src":"915:5:24","type":""}],"src":"843:173:24"},{"body":{"nativeSrc":"1111:28:24","nodeType":"YulBlock","src":"1111:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1128:1:24","nodeType":"YulLiteral","src":"1128:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1131:1:24","nodeType":"YulLiteral","src":"1131:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1121:6:24","nodeType":"YulIdentifier","src":"1121:6:24"},"nativeSrc":"1121:12:24","nodeType":"YulFunctionCall","src":"1121:12:24"},"nativeSrc":"1121:12:24","nodeType":"YulExpressionStatement","src":"1121:12:24"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"1022:117:24","nodeType":"YulFunctionDefinition","src":"1022:117:24"},{"body":{"nativeSrc":"1234:28:24","nodeType":"YulBlock","src":"1234:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1251:1:24","nodeType":"YulLiteral","src":"1251:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1254:1:24","nodeType":"YulLiteral","src":"1254:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1244:6:24","nodeType":"YulIdentifier","src":"1244:6:24"},"nativeSrc":"1244:12:24","nodeType":"YulFunctionCall","src":"1244:12:24"},"nativeSrc":"1244:12:24","nodeType":"YulExpressionStatement","src":"1244:12:24"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"1145:117:24","nodeType":"YulFunctionDefinition","src":"1145:117:24"},{"body":{"nativeSrc":"1316:54:24","nodeType":"YulBlock","src":"1316:54:24","statements":[{"nativeSrc":"1326:38:24","nodeType":"YulAssignment","src":"1326:38:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1344:5:24","nodeType":"YulIdentifier","src":"1344:5:24"},{"kind":"number","nativeSrc":"1351:2:24","nodeType":"YulLiteral","src":"1351:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1340:3:24","nodeType":"YulIdentifier","src":"1340:3:24"},"nativeSrc":"1340:14:24","nodeType":"YulFunctionCall","src":"1340:14:24"},{"arguments":[{"kind":"number","nativeSrc":"1360:2:24","nodeType":"YulLiteral","src":"1360:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1356:3:24","nodeType":"YulIdentifier","src":"1356:3:24"},"nativeSrc":"1356:7:24","nodeType":"YulFunctionCall","src":"1356:7:24"}],"functionName":{"name":"and","nativeSrc":"1336:3:24","nodeType":"YulIdentifier","src":"1336:3:24"},"nativeSrc":"1336:28:24","nodeType":"YulFunctionCall","src":"1336:28:24"},"variableNames":[{"name":"result","nativeSrc":"1326:6:24","nodeType":"YulIdentifier","src":"1326:6:24"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"1268:102:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1299:5:24","nodeType":"YulTypedName","src":"1299:5:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"1309:6:24","nodeType":"YulTypedName","src":"1309:6:24","type":""}],"src":"1268:102:24"},{"body":{"nativeSrc":"1404:152:24","nodeType":"YulBlock","src":"1404:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1421:1:24","nodeType":"YulLiteral","src":"1421:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1424:77:24","nodeType":"YulLiteral","src":"1424:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"1414:6:24","nodeType":"YulIdentifier","src":"1414:6:24"},"nativeSrc":"1414:88:24","nodeType":"YulFunctionCall","src":"1414:88:24"},"nativeSrc":"1414:88:24","nodeType":"YulExpressionStatement","src":"1414:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1518:1:24","nodeType":"YulLiteral","src":"1518:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"1521:4:24","nodeType":"YulLiteral","src":"1521:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1511:6:24","nodeType":"YulIdentifier","src":"1511:6:24"},"nativeSrc":"1511:15:24","nodeType":"YulFunctionCall","src":"1511:15:24"},"nativeSrc":"1511:15:24","nodeType":"YulExpressionStatement","src":"1511:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1542:1:24","nodeType":"YulLiteral","src":"1542:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1545:4:24","nodeType":"YulLiteral","src":"1545:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1535:6:24","nodeType":"YulIdentifier","src":"1535:6:24"},"nativeSrc":"1535:15:24","nodeType":"YulFunctionCall","src":"1535:15:24"},"nativeSrc":"1535:15:24","nodeType":"YulExpressionStatement","src":"1535:15:24"}]},"name":"panic_error_0x41","nativeSrc":"1376:180:24","nodeType":"YulFunctionDefinition","src":"1376:180:24"},{"body":{"nativeSrc":"1605:238:24","nodeType":"YulBlock","src":"1605:238:24","statements":[{"nativeSrc":"1615:58:24","nodeType":"YulVariableDeclaration","src":"1615:58:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"1637:6:24","nodeType":"YulIdentifier","src":"1637:6:24"},{"arguments":[{"name":"size","nativeSrc":"1667:4:24","nodeType":"YulIdentifier","src":"1667:4:24"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"1645:21:24","nodeType":"YulIdentifier","src":"1645:21:24"},"nativeSrc":"1645:27:24","nodeType":"YulFunctionCall","src":"1645:27:24"}],"functionName":{"name":"add","nativeSrc":"1633:3:24","nodeType":"YulIdentifier","src":"1633:3:24"},"nativeSrc":"1633:40:24","nodeType":"YulFunctionCall","src":"1633:40:24"},"variables":[{"name":"newFreePtr","nativeSrc":"1619:10:24","nodeType":"YulTypedName","src":"1619:10:24","type":""}]},{"body":{"nativeSrc":"1784:22:24","nodeType":"YulBlock","src":"1784:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1786:16:24","nodeType":"YulIdentifier","src":"1786:16:24"},"nativeSrc":"1786:18:24","nodeType":"YulFunctionCall","src":"1786:18:24"},"nativeSrc":"1786:18:24","nodeType":"YulExpressionStatement","src":"1786:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1727:10:24","nodeType":"YulIdentifier","src":"1727:10:24"},{"kind":"number","nativeSrc":"1739:18:24","nodeType":"YulLiteral","src":"1739:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1724:2:24","nodeType":"YulIdentifier","src":"1724:2:24"},"nativeSrc":"1724:34:24","nodeType":"YulFunctionCall","src":"1724:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1763:10:24","nodeType":"YulIdentifier","src":"1763:10:24"},{"name":"memPtr","nativeSrc":"1775:6:24","nodeType":"YulIdentifier","src":"1775:6:24"}],"functionName":{"name":"lt","nativeSrc":"1760:2:24","nodeType":"YulIdentifier","src":"1760:2:24"},"nativeSrc":"1760:22:24","nodeType":"YulFunctionCall","src":"1760:22:24"}],"functionName":{"name":"or","nativeSrc":"1721:2:24","nodeType":"YulIdentifier","src":"1721:2:24"},"nativeSrc":"1721:62:24","nodeType":"YulFunctionCall","src":"1721:62:24"},"nativeSrc":"1718:88:24","nodeType":"YulIf","src":"1718:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1822:2:24","nodeType":"YulLiteral","src":"1822:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1826:10:24","nodeType":"YulIdentifier","src":"1826:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1815:6:24","nodeType":"YulIdentifier","src":"1815:6:24"},"nativeSrc":"1815:22:24","nodeType":"YulFunctionCall","src":"1815:22:24"},"nativeSrc":"1815:22:24","nodeType":"YulExpressionStatement","src":"1815:22:24"}]},"name":"finalize_allocation","nativeSrc":"1562:281:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"1591:6:24","nodeType":"YulTypedName","src":"1591:6:24","type":""},{"name":"size","nativeSrc":"1599:4:24","nodeType":"YulTypedName","src":"1599:4:24","type":""}],"src":"1562:281:24"},{"body":{"nativeSrc":"1890:88:24","nodeType":"YulBlock","src":"1890:88:24","statements":[{"nativeSrc":"1900:30:24","nodeType":"YulAssignment","src":"1900:30:24","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nativeSrc":"1910:18:24","nodeType":"YulIdentifier","src":"1910:18:24"},"nativeSrc":"1910:20:24","nodeType":"YulFunctionCall","src":"1910:20:24"},"variableNames":[{"name":"memPtr","nativeSrc":"1900:6:24","nodeType":"YulIdentifier","src":"1900:6:24"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1959:6:24","nodeType":"YulIdentifier","src":"1959:6:24"},{"name":"size","nativeSrc":"1967:4:24","nodeType":"YulIdentifier","src":"1967:4:24"}],"functionName":{"name":"finalize_allocation","nativeSrc":"1939:19:24","nodeType":"YulIdentifier","src":"1939:19:24"},"nativeSrc":"1939:33:24","nodeType":"YulFunctionCall","src":"1939:33:24"},"nativeSrc":"1939:33:24","nodeType":"YulExpressionStatement","src":"1939:33:24"}]},"name":"allocate_memory","nativeSrc":"1849:129:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"1874:4:24","nodeType":"YulTypedName","src":"1874:4:24","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"1883:6:24","nodeType":"YulTypedName","src":"1883:6:24","type":""}],"src":"1849:129:24"},{"body":{"nativeSrc":"2051:241:24","nodeType":"YulBlock","src":"2051:241:24","statements":[{"body":{"nativeSrc":"2156:22:24","nodeType":"YulBlock","src":"2156:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"2158:16:24","nodeType":"YulIdentifier","src":"2158:16:24"},"nativeSrc":"2158:18:24","nodeType":"YulFunctionCall","src":"2158:18:24"},"nativeSrc":"2158:18:24","nodeType":"YulExpressionStatement","src":"2158:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2128:6:24","nodeType":"YulIdentifier","src":"2128:6:24"},{"kind":"number","nativeSrc":"2136:18:24","nodeType":"YulLiteral","src":"2136:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2125:2:24","nodeType":"YulIdentifier","src":"2125:2:24"},"nativeSrc":"2125:30:24","nodeType":"YulFunctionCall","src":"2125:30:24"},"nativeSrc":"2122:56:24","nodeType":"YulIf","src":"2122:56:24"},{"nativeSrc":"2188:37:24","nodeType":"YulAssignment","src":"2188:37:24","value":{"arguments":[{"name":"length","nativeSrc":"2218:6:24","nodeType":"YulIdentifier","src":"2218:6:24"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"2196:21:24","nodeType":"YulIdentifier","src":"2196:21:24"},"nativeSrc":"2196:29:24","nodeType":"YulFunctionCall","src":"2196:29:24"},"variableNames":[{"name":"size","nativeSrc":"2188:4:24","nodeType":"YulIdentifier","src":"2188:4:24"}]},{"nativeSrc":"2262:23:24","nodeType":"YulAssignment","src":"2262:23:24","value":{"arguments":[{"name":"size","nativeSrc":"2274:4:24","nodeType":"YulIdentifier","src":"2274:4:24"},{"kind":"number","nativeSrc":"2280:4:24","nodeType":"YulLiteral","src":"2280:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2270:3:24","nodeType":"YulIdentifier","src":"2270:3:24"},"nativeSrc":"2270:15:24","nodeType":"YulFunctionCall","src":"2270:15:24"},"variableNames":[{"name":"size","nativeSrc":"2262:4:24","nodeType":"YulIdentifier","src":"2262:4:24"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nativeSrc":"1984:308:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"2035:6:24","nodeType":"YulTypedName","src":"2035:6:24","type":""}],"returnVariables":[{"name":"size","nativeSrc":"2046:4:24","nodeType":"YulTypedName","src":"2046:4:24","type":""}],"src":"1984:308:24"},{"body":{"nativeSrc":"2360:77:24","nodeType":"YulBlock","src":"2360:77:24","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"2377:3:24","nodeType":"YulIdentifier","src":"2377:3:24"},{"name":"src","nativeSrc":"2382:3:24","nodeType":"YulIdentifier","src":"2382:3:24"},{"name":"length","nativeSrc":"2387:6:24","nodeType":"YulIdentifier","src":"2387:6:24"}],"functionName":{"name":"mcopy","nativeSrc":"2371:5:24","nodeType":"YulIdentifier","src":"2371:5:24"},"nativeSrc":"2371:23:24","nodeType":"YulFunctionCall","src":"2371:23:24"},"nativeSrc":"2371:23:24","nodeType":"YulExpressionStatement","src":"2371:23:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"2414:3:24","nodeType":"YulIdentifier","src":"2414:3:24"},{"name":"length","nativeSrc":"2419:6:24","nodeType":"YulIdentifier","src":"2419:6:24"}],"functionName":{"name":"add","nativeSrc":"2410:3:24","nodeType":"YulIdentifier","src":"2410:3:24"},"nativeSrc":"2410:16:24","nodeType":"YulFunctionCall","src":"2410:16:24"},{"kind":"number","nativeSrc":"2428:1:24","nodeType":"YulLiteral","src":"2428:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2403:6:24","nodeType":"YulIdentifier","src":"2403:6:24"},"nativeSrc":"2403:27:24","nodeType":"YulFunctionCall","src":"2403:27:24"},"nativeSrc":"2403:27:24","nodeType":"YulExpressionStatement","src":"2403:27:24"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2298:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"2342:3:24","nodeType":"YulTypedName","src":"2342:3:24","type":""},{"name":"dst","nativeSrc":"2347:3:24","nodeType":"YulTypedName","src":"2347:3:24","type":""},{"name":"length","nativeSrc":"2352:6:24","nodeType":"YulTypedName","src":"2352:6:24","type":""}],"src":"2298:139:24"},{"body":{"nativeSrc":"2538:339:24","nodeType":"YulBlock","src":"2538:339:24","statements":[{"nativeSrc":"2548:75:24","nodeType":"YulAssignment","src":"2548:75:24","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2615:6:24","nodeType":"YulIdentifier","src":"2615:6:24"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nativeSrc":"2573:41:24","nodeType":"YulIdentifier","src":"2573:41:24"},"nativeSrc":"2573:49:24","nodeType":"YulFunctionCall","src":"2573:49:24"}],"functionName":{"name":"allocate_memory","nativeSrc":"2557:15:24","nodeType":"YulIdentifier","src":"2557:15:24"},"nativeSrc":"2557:66:24","nodeType":"YulFunctionCall","src":"2557:66:24"},"variableNames":[{"name":"array","nativeSrc":"2548:5:24","nodeType":"YulIdentifier","src":"2548:5:24"}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"2639:5:24","nodeType":"YulIdentifier","src":"2639:5:24"},{"name":"length","nativeSrc":"2646:6:24","nodeType":"YulIdentifier","src":"2646:6:24"}],"functionName":{"name":"mstore","nativeSrc":"2632:6:24","nodeType":"YulIdentifier","src":"2632:6:24"},"nativeSrc":"2632:21:24","nodeType":"YulFunctionCall","src":"2632:21:24"},"nativeSrc":"2632:21:24","nodeType":"YulExpressionStatement","src":"2632:21:24"},{"nativeSrc":"2662:27:24","nodeType":"YulVariableDeclaration","src":"2662:27:24","value":{"arguments":[{"name":"array","nativeSrc":"2677:5:24","nodeType":"YulIdentifier","src":"2677:5:24"},{"kind":"number","nativeSrc":"2684:4:24","nodeType":"YulLiteral","src":"2684:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2673:3:24","nodeType":"YulIdentifier","src":"2673:3:24"},"nativeSrc":"2673:16:24","nodeType":"YulFunctionCall","src":"2673:16:24"},"variables":[{"name":"dst","nativeSrc":"2666:3:24","nodeType":"YulTypedName","src":"2666:3:24","type":""}]},{"body":{"nativeSrc":"2727:83:24","nodeType":"YulBlock","src":"2727:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"2729:77:24","nodeType":"YulIdentifier","src":"2729:77:24"},"nativeSrc":"2729:79:24","nodeType":"YulFunctionCall","src":"2729:79:24"},"nativeSrc":"2729:79:24","nodeType":"YulExpressionStatement","src":"2729:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2708:3:24","nodeType":"YulIdentifier","src":"2708:3:24"},{"name":"length","nativeSrc":"2713:6:24","nodeType":"YulIdentifier","src":"2713:6:24"}],"functionName":{"name":"add","nativeSrc":"2704:3:24","nodeType":"YulIdentifier","src":"2704:3:24"},"nativeSrc":"2704:16:24","nodeType":"YulFunctionCall","src":"2704:16:24"},{"name":"end","nativeSrc":"2722:3:24","nodeType":"YulIdentifier","src":"2722:3:24"}],"functionName":{"name":"gt","nativeSrc":"2701:2:24","nodeType":"YulIdentifier","src":"2701:2:24"},"nativeSrc":"2701:25:24","nodeType":"YulFunctionCall","src":"2701:25:24"},"nativeSrc":"2698:112:24","nodeType":"YulIf","src":"2698:112:24"},{"expression":{"arguments":[{"name":"src","nativeSrc":"2854:3:24","nodeType":"YulIdentifier","src":"2854:3:24"},{"name":"dst","nativeSrc":"2859:3:24","nodeType":"YulIdentifier","src":"2859:3:24"},{"name":"length","nativeSrc":"2864:6:24","nodeType":"YulIdentifier","src":"2864:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2819:34:24","nodeType":"YulIdentifier","src":"2819:34:24"},"nativeSrc":"2819:52:24","nodeType":"YulFunctionCall","src":"2819:52:24"},"nativeSrc":"2819:52:24","nodeType":"YulExpressionStatement","src":"2819:52:24"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nativeSrc":"2443:434:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"2511:3:24","nodeType":"YulTypedName","src":"2511:3:24","type":""},{"name":"length","nativeSrc":"2516:6:24","nodeType":"YulTypedName","src":"2516:6:24","type":""},{"name":"end","nativeSrc":"2524:3:24","nodeType":"YulTypedName","src":"2524:3:24","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2532:5:24","nodeType":"YulTypedName","src":"2532:5:24","type":""}],"src":"2443:434:24"},{"body":{"nativeSrc":"2970:282:24","nodeType":"YulBlock","src":"2970:282:24","statements":[{"body":{"nativeSrc":"3019:83:24","nodeType":"YulBlock","src":"3019:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"3021:77:24","nodeType":"YulIdentifier","src":"3021:77:24"},"nativeSrc":"3021:79:24","nodeType":"YulFunctionCall","src":"3021:79:24"},"nativeSrc":"3021:79:24","nodeType":"YulExpressionStatement","src":"3021:79:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2998:6:24","nodeType":"YulIdentifier","src":"2998:6:24"},{"kind":"number","nativeSrc":"3006:4:24","nodeType":"YulLiteral","src":"3006:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2994:3:24","nodeType":"YulIdentifier","src":"2994:3:24"},"nativeSrc":"2994:17:24","nodeType":"YulFunctionCall","src":"2994:17:24"},{"name":"end","nativeSrc":"3013:3:24","nodeType":"YulIdentifier","src":"3013:3:24"}],"functionName":{"name":"slt","nativeSrc":"2990:3:24","nodeType":"YulIdentifier","src":"2990:3:24"},"nativeSrc":"2990:27:24","nodeType":"YulFunctionCall","src":"2990:27:24"}],"functionName":{"name":"iszero","nativeSrc":"2983:6:24","nodeType":"YulIdentifier","src":"2983:6:24"},"nativeSrc":"2983:35:24","nodeType":"YulFunctionCall","src":"2983:35:24"},"nativeSrc":"2980:122:24","nodeType":"YulIf","src":"2980:122:24"},{"nativeSrc":"3111:27:24","nodeType":"YulVariableDeclaration","src":"3111:27:24","value":{"arguments":[{"name":"offset","nativeSrc":"3131:6:24","nodeType":"YulIdentifier","src":"3131:6:24"}],"functionName":{"name":"mload","nativeSrc":"3125:5:24","nodeType":"YulIdentifier","src":"3125:5:24"},"nativeSrc":"3125:13:24","nodeType":"YulFunctionCall","src":"3125:13:24"},"variables":[{"name":"length","nativeSrc":"3115:6:24","nodeType":"YulTypedName","src":"3115:6:24","type":""}]},{"nativeSrc":"3147:99:24","nodeType":"YulAssignment","src":"3147:99:24","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3219:6:24","nodeType":"YulIdentifier","src":"3219:6:24"},{"kind":"number","nativeSrc":"3227:4:24","nodeType":"YulLiteral","src":"3227:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3215:3:24","nodeType":"YulIdentifier","src":"3215:3:24"},"nativeSrc":"3215:17:24","nodeType":"YulFunctionCall","src":"3215:17:24"},{"name":"length","nativeSrc":"3234:6:24","nodeType":"YulIdentifier","src":"3234:6:24"},{"name":"end","nativeSrc":"3242:3:24","nodeType":"YulIdentifier","src":"3242:3:24"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nativeSrc":"3156:58:24","nodeType":"YulIdentifier","src":"3156:58:24"},"nativeSrc":"3156:90:24","nodeType":"YulFunctionCall","src":"3156:90:24"},"variableNames":[{"name":"array","nativeSrc":"3147:5:24","nodeType":"YulIdentifier","src":"3147:5:24"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nativeSrc":"2897:355:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2948:6:24","nodeType":"YulTypedName","src":"2948:6:24","type":""},{"name":"end","nativeSrc":"2956:3:24","nodeType":"YulTypedName","src":"2956:3:24","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2964:5:24","nodeType":"YulTypedName","src":"2964:5:24","type":""}],"src":"2897:355:24"},{"body":{"nativeSrc":"3404:893:24","nodeType":"YulBlock","src":"3404:893:24","statements":[{"body":{"nativeSrc":"3450:83:24","nodeType":"YulBlock","src":"3450:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3452:77:24","nodeType":"YulIdentifier","src":"3452:77:24"},"nativeSrc":"3452:79:24","nodeType":"YulFunctionCall","src":"3452:79:24"},"nativeSrc":"3452:79:24","nodeType":"YulExpressionStatement","src":"3452:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3425:7:24","nodeType":"YulIdentifier","src":"3425:7:24"},{"name":"headStart","nativeSrc":"3434:9:24","nodeType":"YulIdentifier","src":"3434:9:24"}],"functionName":{"name":"sub","nativeSrc":"3421:3:24","nodeType":"YulIdentifier","src":"3421:3:24"},"nativeSrc":"3421:23:24","nodeType":"YulFunctionCall","src":"3421:23:24"},{"kind":"number","nativeSrc":"3446:2:24","nodeType":"YulLiteral","src":"3446:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3417:3:24","nodeType":"YulIdentifier","src":"3417:3:24"},"nativeSrc":"3417:32:24","nodeType":"YulFunctionCall","src":"3417:32:24"},"nativeSrc":"3414:119:24","nodeType":"YulIf","src":"3414:119:24"},{"nativeSrc":"3543:143:24","nodeType":"YulBlock","src":"3543:143:24","statements":[{"nativeSrc":"3558:15:24","nodeType":"YulVariableDeclaration","src":"3558:15:24","value":{"kind":"number","nativeSrc":"3572:1:24","nodeType":"YulLiteral","src":"3572:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3562:6:24","nodeType":"YulTypedName","src":"3562:6:24","type":""}]},{"nativeSrc":"3587:89:24","nodeType":"YulAssignment","src":"3587:89:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3648:9:24","nodeType":"YulIdentifier","src":"3648:9:24"},{"name":"offset","nativeSrc":"3659:6:24","nodeType":"YulIdentifier","src":"3659:6:24"}],"functionName":{"name":"add","nativeSrc":"3644:3:24","nodeType":"YulIdentifier","src":"3644:3:24"},"nativeSrc":"3644:22:24","nodeType":"YulFunctionCall","src":"3644:22:24"},{"name":"dataEnd","nativeSrc":"3668:7:24","nodeType":"YulIdentifier","src":"3668:7:24"}],"functionName":{"name":"abi_decode_t_contract$_IERC20_$1137_fromMemory","nativeSrc":"3597:46:24","nodeType":"YulIdentifier","src":"3597:46:24"},"nativeSrc":"3597:79:24","nodeType":"YulFunctionCall","src":"3597:79:24"},"variableNames":[{"name":"value0","nativeSrc":"3587:6:24","nodeType":"YulIdentifier","src":"3587:6:24"}]}]},{"nativeSrc":"3696:292:24","nodeType":"YulBlock","src":"3696:292:24","statements":[{"nativeSrc":"3711:39:24","nodeType":"YulVariableDeclaration","src":"3711:39:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3735:9:24","nodeType":"YulIdentifier","src":"3735:9:24"},{"kind":"number","nativeSrc":"3746:2:24","nodeType":"YulLiteral","src":"3746:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3731:3:24","nodeType":"YulIdentifier","src":"3731:3:24"},"nativeSrc":"3731:18:24","nodeType":"YulFunctionCall","src":"3731:18:24"}],"functionName":{"name":"mload","nativeSrc":"3725:5:24","nodeType":"YulIdentifier","src":"3725:5:24"},"nativeSrc":"3725:25:24","nodeType":"YulFunctionCall","src":"3725:25:24"},"variables":[{"name":"offset","nativeSrc":"3715:6:24","nodeType":"YulTypedName","src":"3715:6:24","type":""}]},{"body":{"nativeSrc":"3797:83:24","nodeType":"YulBlock","src":"3797:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"3799:77:24","nodeType":"YulIdentifier","src":"3799:77:24"},"nativeSrc":"3799:79:24","nodeType":"YulFunctionCall","src":"3799:79:24"},"nativeSrc":"3799:79:24","nodeType":"YulExpressionStatement","src":"3799:79:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3769:6:24","nodeType":"YulIdentifier","src":"3769:6:24"},{"kind":"number","nativeSrc":"3777:18:24","nodeType":"YulLiteral","src":"3777:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3766:2:24","nodeType":"YulIdentifier","src":"3766:2:24"},"nativeSrc":"3766:30:24","nodeType":"YulFunctionCall","src":"3766:30:24"},"nativeSrc":"3763:117:24","nodeType":"YulIf","src":"3763:117:24"},{"nativeSrc":"3894:84:24","nodeType":"YulAssignment","src":"3894:84:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3950:9:24","nodeType":"YulIdentifier","src":"3950:9:24"},{"name":"offset","nativeSrc":"3961:6:24","nodeType":"YulIdentifier","src":"3961:6:24"}],"functionName":{"name":"add","nativeSrc":"3946:3:24","nodeType":"YulIdentifier","src":"3946:3:24"},"nativeSrc":"3946:22:24","nodeType":"YulFunctionCall","src":"3946:22:24"},{"name":"dataEnd","nativeSrc":"3970:7:24","nodeType":"YulIdentifier","src":"3970:7:24"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nativeSrc":"3904:41:24","nodeType":"YulIdentifier","src":"3904:41:24"},"nativeSrc":"3904:74:24","nodeType":"YulFunctionCall","src":"3904:74:24"},"variableNames":[{"name":"value1","nativeSrc":"3894:6:24","nodeType":"YulIdentifier","src":"3894:6:24"}]}]},{"nativeSrc":"3998:292:24","nodeType":"YulBlock","src":"3998:292:24","statements":[{"nativeSrc":"4013:39:24","nodeType":"YulVariableDeclaration","src":"4013:39:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4037:9:24","nodeType":"YulIdentifier","src":"4037:9:24"},{"kind":"number","nativeSrc":"4048:2:24","nodeType":"YulLiteral","src":"4048:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4033:3:24","nodeType":"YulIdentifier","src":"4033:3:24"},"nativeSrc":"4033:18:24","nodeType":"YulFunctionCall","src":"4033:18:24"}],"functionName":{"name":"mload","nativeSrc":"4027:5:24","nodeType":"YulIdentifier","src":"4027:5:24"},"nativeSrc":"4027:25:24","nodeType":"YulFunctionCall","src":"4027:25:24"},"variables":[{"name":"offset","nativeSrc":"4017:6:24","nodeType":"YulTypedName","src":"4017:6:24","type":""}]},{"body":{"nativeSrc":"4099:83:24","nodeType":"YulBlock","src":"4099:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"4101:77:24","nodeType":"YulIdentifier","src":"4101:77:24"},"nativeSrc":"4101:79:24","nodeType":"YulFunctionCall","src":"4101:79:24"},"nativeSrc":"4101:79:24","nodeType":"YulExpressionStatement","src":"4101:79:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4071:6:24","nodeType":"YulIdentifier","src":"4071:6:24"},{"kind":"number","nativeSrc":"4079:18:24","nodeType":"YulLiteral","src":"4079:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4068:2:24","nodeType":"YulIdentifier","src":"4068:2:24"},"nativeSrc":"4068:30:24","nodeType":"YulFunctionCall","src":"4068:30:24"},"nativeSrc":"4065:117:24","nodeType":"YulIf","src":"4065:117:24"},{"nativeSrc":"4196:84:24","nodeType":"YulAssignment","src":"4196:84:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4252:9:24","nodeType":"YulIdentifier","src":"4252:9:24"},{"name":"offset","nativeSrc":"4263:6:24","nodeType":"YulIdentifier","src":"4263:6:24"}],"functionName":{"name":"add","nativeSrc":"4248:3:24","nodeType":"YulIdentifier","src":"4248:3:24"},"nativeSrc":"4248:22:24","nodeType":"YulFunctionCall","src":"4248:22:24"},{"name":"dataEnd","nativeSrc":"4272:7:24","nodeType":"YulIdentifier","src":"4272:7:24"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nativeSrc":"4206:41:24","nodeType":"YulIdentifier","src":"4206:41:24"},"nativeSrc":"4206:74:24","nodeType":"YulFunctionCall","src":"4206:74:24"},"variableNames":[{"name":"value2","nativeSrc":"4196:6:24","nodeType":"YulIdentifier","src":"4196:6:24"}]}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$1137t_string_memory_ptrt_string_memory_ptr_fromMemory","nativeSrc":"3258:1039:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3358:9:24","nodeType":"YulTypedName","src":"3358:9:24","type":""},{"name":"dataEnd","nativeSrc":"3369:7:24","nodeType":"YulTypedName","src":"3369:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3381:6:24","nodeType":"YulTypedName","src":"3381:6:24","type":""},{"name":"value1","nativeSrc":"3389:6:24","nodeType":"YulTypedName","src":"3389:6:24","type":""},{"name":"value2","nativeSrc":"3397:6:24","nodeType":"YulTypedName","src":"3397:6:24","type":""}],"src":"3258:1039:24"},{"body":{"nativeSrc":"4362:40:24","nodeType":"YulBlock","src":"4362:40:24","statements":[{"nativeSrc":"4373:22:24","nodeType":"YulAssignment","src":"4373:22:24","value":{"arguments":[{"name":"value","nativeSrc":"4389:5:24","nodeType":"YulIdentifier","src":"4389:5:24"}],"functionName":{"name":"mload","nativeSrc":"4383:5:24","nodeType":"YulIdentifier","src":"4383:5:24"},"nativeSrc":"4383:12:24","nodeType":"YulFunctionCall","src":"4383:12:24"},"variableNames":[{"name":"length","nativeSrc":"4373:6:24","nodeType":"YulIdentifier","src":"4373:6:24"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"4303:99:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4345:5:24","nodeType":"YulTypedName","src":"4345:5:24","type":""}],"returnVariables":[{"name":"length","nativeSrc":"4355:6:24","nodeType":"YulTypedName","src":"4355:6:24","type":""}],"src":"4303:99:24"},{"body":{"nativeSrc":"4436:152:24","nodeType":"YulBlock","src":"4436:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4453:1:24","nodeType":"YulLiteral","src":"4453:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4456:77:24","nodeType":"YulLiteral","src":"4456:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"4446:6:24","nodeType":"YulIdentifier","src":"4446:6:24"},"nativeSrc":"4446:88:24","nodeType":"YulFunctionCall","src":"4446:88:24"},"nativeSrc":"4446:88:24","nodeType":"YulExpressionStatement","src":"4446:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4550:1:24","nodeType":"YulLiteral","src":"4550:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"4553:4:24","nodeType":"YulLiteral","src":"4553:4:24","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"4543:6:24","nodeType":"YulIdentifier","src":"4543:6:24"},"nativeSrc":"4543:15:24","nodeType":"YulFunctionCall","src":"4543:15:24"},"nativeSrc":"4543:15:24","nodeType":"YulExpressionStatement","src":"4543:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4574:1:24","nodeType":"YulLiteral","src":"4574:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4577:4:24","nodeType":"YulLiteral","src":"4577:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4567:6:24","nodeType":"YulIdentifier","src":"4567:6:24"},"nativeSrc":"4567:15:24","nodeType":"YulFunctionCall","src":"4567:15:24"},"nativeSrc":"4567:15:24","nodeType":"YulExpressionStatement","src":"4567:15:24"}]},"name":"panic_error_0x22","nativeSrc":"4408:180:24","nodeType":"YulFunctionDefinition","src":"4408:180:24"},{"body":{"nativeSrc":"4645:269:24","nodeType":"YulBlock","src":"4645:269:24","statements":[{"nativeSrc":"4655:22:24","nodeType":"YulAssignment","src":"4655:22:24","value":{"arguments":[{"name":"data","nativeSrc":"4669:4:24","nodeType":"YulIdentifier","src":"4669:4:24"},{"kind":"number","nativeSrc":"4675:1:24","nodeType":"YulLiteral","src":"4675:1:24","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"4665:3:24","nodeType":"YulIdentifier","src":"4665:3:24"},"nativeSrc":"4665:12:24","nodeType":"YulFunctionCall","src":"4665:12:24"},"variableNames":[{"name":"length","nativeSrc":"4655:6:24","nodeType":"YulIdentifier","src":"4655:6:24"}]},{"nativeSrc":"4686:38:24","nodeType":"YulVariableDeclaration","src":"4686:38:24","value":{"arguments":[{"name":"data","nativeSrc":"4716:4:24","nodeType":"YulIdentifier","src":"4716:4:24"},{"kind":"number","nativeSrc":"4722:1:24","nodeType":"YulLiteral","src":"4722:1:24","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"4712:3:24","nodeType":"YulIdentifier","src":"4712:3:24"},"nativeSrc":"4712:12:24","nodeType":"YulFunctionCall","src":"4712:12:24"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"4690:18:24","nodeType":"YulTypedName","src":"4690:18:24","type":""}]},{"body":{"nativeSrc":"4763:51:24","nodeType":"YulBlock","src":"4763:51:24","statements":[{"nativeSrc":"4777:27:24","nodeType":"YulAssignment","src":"4777:27:24","value":{"arguments":[{"name":"length","nativeSrc":"4791:6:24","nodeType":"YulIdentifier","src":"4791:6:24"},{"kind":"number","nativeSrc":"4799:4:24","nodeType":"YulLiteral","src":"4799:4:24","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"4787:3:24","nodeType":"YulIdentifier","src":"4787:3:24"},"nativeSrc":"4787:17:24","nodeType":"YulFunctionCall","src":"4787:17:24"},"variableNames":[{"name":"length","nativeSrc":"4777:6:24","nodeType":"YulIdentifier","src":"4777:6:24"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4743:18:24","nodeType":"YulIdentifier","src":"4743:18:24"}],"functionName":{"name":"iszero","nativeSrc":"4736:6:24","nodeType":"YulIdentifier","src":"4736:6:24"},"nativeSrc":"4736:26:24","nodeType":"YulFunctionCall","src":"4736:26:24"},"nativeSrc":"4733:81:24","nodeType":"YulIf","src":"4733:81:24"},{"body":{"nativeSrc":"4866:42:24","nodeType":"YulBlock","src":"4866:42:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nativeSrc":"4880:16:24","nodeType":"YulIdentifier","src":"4880:16:24"},"nativeSrc":"4880:18:24","nodeType":"YulFunctionCall","src":"4880:18:24"},"nativeSrc":"4880:18:24","nodeType":"YulExpressionStatement","src":"4880:18:24"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4830:18:24","nodeType":"YulIdentifier","src":"4830:18:24"},{"arguments":[{"name":"length","nativeSrc":"4853:6:24","nodeType":"YulIdentifier","src":"4853:6:24"},{"kind":"number","nativeSrc":"4861:2:24","nodeType":"YulLiteral","src":"4861:2:24","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4850:2:24","nodeType":"YulIdentifier","src":"4850:2:24"},"nativeSrc":"4850:14:24","nodeType":"YulFunctionCall","src":"4850:14:24"}],"functionName":{"name":"eq","nativeSrc":"4827:2:24","nodeType":"YulIdentifier","src":"4827:2:24"},"nativeSrc":"4827:38:24","nodeType":"YulFunctionCall","src":"4827:38:24"},"nativeSrc":"4824:84:24","nodeType":"YulIf","src":"4824:84:24"}]},"name":"extract_byte_array_length","nativeSrc":"4594:320:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4629:4:24","nodeType":"YulTypedName","src":"4629:4:24","type":""}],"returnVariables":[{"name":"length","nativeSrc":"4638:6:24","nodeType":"YulTypedName","src":"4638:6:24","type":""}],"src":"4594:320:24"},{"body":{"nativeSrc":"4974:87:24","nodeType":"YulBlock","src":"4974:87:24","statements":[{"nativeSrc":"4984:11:24","nodeType":"YulAssignment","src":"4984:11:24","value":{"name":"ptr","nativeSrc":"4992:3:24","nodeType":"YulIdentifier","src":"4992:3:24"},"variableNames":[{"name":"data","nativeSrc":"4984:4:24","nodeType":"YulIdentifier","src":"4984:4:24"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5012:1:24","nodeType":"YulLiteral","src":"5012:1:24","type":"","value":"0"},{"name":"ptr","nativeSrc":"5015:3:24","nodeType":"YulIdentifier","src":"5015:3:24"}],"functionName":{"name":"mstore","nativeSrc":"5005:6:24","nodeType":"YulIdentifier","src":"5005:6:24"},"nativeSrc":"5005:14:24","nodeType":"YulFunctionCall","src":"5005:14:24"},"nativeSrc":"5005:14:24","nodeType":"YulExpressionStatement","src":"5005:14:24"},{"nativeSrc":"5028:26:24","nodeType":"YulAssignment","src":"5028:26:24","value":{"arguments":[{"kind":"number","nativeSrc":"5046:1:24","nodeType":"YulLiteral","src":"5046:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"5049:4:24","nodeType":"YulLiteral","src":"5049:4:24","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"5036:9:24","nodeType":"YulIdentifier","src":"5036:9:24"},"nativeSrc":"5036:18:24","nodeType":"YulFunctionCall","src":"5036:18:24"},"variableNames":[{"name":"data","nativeSrc":"5028:4:24","nodeType":"YulIdentifier","src":"5028:4:24"}]}]},"name":"array_dataslot_t_string_storage","nativeSrc":"4920:141:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"4961:3:24","nodeType":"YulTypedName","src":"4961:3:24","type":""}],"returnVariables":[{"name":"data","nativeSrc":"4969:4:24","nodeType":"YulTypedName","src":"4969:4:24","type":""}],"src":"4920:141:24"},{"body":{"nativeSrc":"5111:49:24","nodeType":"YulBlock","src":"5111:49:24","statements":[{"nativeSrc":"5121:33:24","nodeType":"YulAssignment","src":"5121:33:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5139:5:24","nodeType":"YulIdentifier","src":"5139:5:24"},{"kind":"number","nativeSrc":"5146:2:24","nodeType":"YulLiteral","src":"5146:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"5135:3:24","nodeType":"YulIdentifier","src":"5135:3:24"},"nativeSrc":"5135:14:24","nodeType":"YulFunctionCall","src":"5135:14:24"},{"kind":"number","nativeSrc":"5151:2:24","nodeType":"YulLiteral","src":"5151:2:24","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"5131:3:24","nodeType":"YulIdentifier","src":"5131:3:24"},"nativeSrc":"5131:23:24","nodeType":"YulFunctionCall","src":"5131:23:24"},"variableNames":[{"name":"result","nativeSrc":"5121:6:24","nodeType":"YulIdentifier","src":"5121:6:24"}]}]},"name":"divide_by_32_ceil","nativeSrc":"5067:93:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5094:5:24","nodeType":"YulTypedName","src":"5094:5:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"5104:6:24","nodeType":"YulTypedName","src":"5104:6:24","type":""}],"src":"5067:93:24"},{"body":{"nativeSrc":"5219:54:24","nodeType":"YulBlock","src":"5219:54:24","statements":[{"nativeSrc":"5229:37:24","nodeType":"YulAssignment","src":"5229:37:24","value":{"arguments":[{"name":"bits","nativeSrc":"5254:4:24","nodeType":"YulIdentifier","src":"5254:4:24"},{"name":"value","nativeSrc":"5260:5:24","nodeType":"YulIdentifier","src":"5260:5:24"}],"functionName":{"name":"shl","nativeSrc":"5250:3:24","nodeType":"YulIdentifier","src":"5250:3:24"},"nativeSrc":"5250:16:24","nodeType":"YulFunctionCall","src":"5250:16:24"},"variableNames":[{"name":"newValue","nativeSrc":"5229:8:24","nodeType":"YulIdentifier","src":"5229:8:24"}]}]},"name":"shift_left_dynamic","nativeSrc":"5166:107:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nativeSrc":"5194:4:24","nodeType":"YulTypedName","src":"5194:4:24","type":""},{"name":"value","nativeSrc":"5200:5:24","nodeType":"YulTypedName","src":"5200:5:24","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"5210:8:24","nodeType":"YulTypedName","src":"5210:8:24","type":""}],"src":"5166:107:24"},{"body":{"nativeSrc":"5355:317:24","nodeType":"YulBlock","src":"5355:317:24","statements":[{"nativeSrc":"5365:35:24","nodeType":"YulVariableDeclaration","src":"5365:35:24","value":{"arguments":[{"name":"shiftBytes","nativeSrc":"5386:10:24","nodeType":"YulIdentifier","src":"5386:10:24"},{"kind":"number","nativeSrc":"5398:1:24","nodeType":"YulLiteral","src":"5398:1:24","type":"","value":"8"}],"functionName":{"name":"mul","nativeSrc":"5382:3:24","nodeType":"YulIdentifier","src":"5382:3:24"},"nativeSrc":"5382:18:24","nodeType":"YulFunctionCall","src":"5382:18:24"},"variables":[{"name":"shiftBits","nativeSrc":"5369:9:24","nodeType":"YulTypedName","src":"5369:9:24","type":""}]},{"nativeSrc":"5409:109:24","nodeType":"YulVariableDeclaration","src":"5409:109:24","value":{"arguments":[{"name":"shiftBits","nativeSrc":"5440:9:24","nodeType":"YulIdentifier","src":"5440:9:24"},{"kind":"number","nativeSrc":"5451:66:24","nodeType":"YulLiteral","src":"5451:66:24","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"5421:18:24","nodeType":"YulIdentifier","src":"5421:18:24"},"nativeSrc":"5421:97:24","nodeType":"YulFunctionCall","src":"5421:97:24"},"variables":[{"name":"mask","nativeSrc":"5413:4:24","nodeType":"YulTypedName","src":"5413:4:24","type":""}]},{"nativeSrc":"5527:51:24","nodeType":"YulAssignment","src":"5527:51:24","value":{"arguments":[{"name":"shiftBits","nativeSrc":"5558:9:24","nodeType":"YulIdentifier","src":"5558:9:24"},{"name":"toInsert","nativeSrc":"5569:8:24","nodeType":"YulIdentifier","src":"5569:8:24"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"5539:18:24","nodeType":"YulIdentifier","src":"5539:18:24"},"nativeSrc":"5539:39:24","nodeType":"YulFunctionCall","src":"5539:39:24"},"variableNames":[{"name":"toInsert","nativeSrc":"5527:8:24","nodeType":"YulIdentifier","src":"5527:8:24"}]},{"nativeSrc":"5587:30:24","nodeType":"YulAssignment","src":"5587:30:24","value":{"arguments":[{"name":"value","nativeSrc":"5600:5:24","nodeType":"YulIdentifier","src":"5600:5:24"},{"arguments":[{"name":"mask","nativeSrc":"5611:4:24","nodeType":"YulIdentifier","src":"5611:4:24"}],"functionName":{"name":"not","nativeSrc":"5607:3:24","nodeType":"YulIdentifier","src":"5607:3:24"},"nativeSrc":"5607:9:24","nodeType":"YulFunctionCall","src":"5607:9:24"}],"functionName":{"name":"and","nativeSrc":"5596:3:24","nodeType":"YulIdentifier","src":"5596:3:24"},"nativeSrc":"5596:21:24","nodeType":"YulFunctionCall","src":"5596:21:24"},"variableNames":[{"name":"value","nativeSrc":"5587:5:24","nodeType":"YulIdentifier","src":"5587:5:24"}]},{"nativeSrc":"5626:40:24","nodeType":"YulAssignment","src":"5626:40:24","value":{"arguments":[{"name":"value","nativeSrc":"5639:5:24","nodeType":"YulIdentifier","src":"5639:5:24"},{"arguments":[{"name":"toInsert","nativeSrc":"5650:8:24","nodeType":"YulIdentifier","src":"5650:8:24"},{"name":"mask","nativeSrc":"5660:4:24","nodeType":"YulIdentifier","src":"5660:4:24"}],"functionName":{"name":"and","nativeSrc":"5646:3:24","nodeType":"YulIdentifier","src":"5646:3:24"},"nativeSrc":"5646:19:24","nodeType":"YulFunctionCall","src":"5646:19:24"}],"functionName":{"name":"or","nativeSrc":"5636:2:24","nodeType":"YulIdentifier","src":"5636:2:24"},"nativeSrc":"5636:30:24","nodeType":"YulFunctionCall","src":"5636:30:24"},"variableNames":[{"name":"result","nativeSrc":"5626:6:24","nodeType":"YulIdentifier","src":"5626:6:24"}]}]},"name":"update_byte_slice_dynamic32","nativeSrc":"5279:393:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5316:5:24","nodeType":"YulTypedName","src":"5316:5:24","type":""},{"name":"shiftBytes","nativeSrc":"5323:10:24","nodeType":"YulTypedName","src":"5323:10:24","type":""},{"name":"toInsert","nativeSrc":"5335:8:24","nodeType":"YulTypedName","src":"5335:8:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"5348:6:24","nodeType":"YulTypedName","src":"5348:6:24","type":""}],"src":"5279:393:24"},{"body":{"nativeSrc":"5723:32:24","nodeType":"YulBlock","src":"5723:32:24","statements":[{"nativeSrc":"5733:16:24","nodeType":"YulAssignment","src":"5733:16:24","value":{"name":"value","nativeSrc":"5744:5:24","nodeType":"YulIdentifier","src":"5744:5:24"},"variableNames":[{"name":"cleaned","nativeSrc":"5733:7:24","nodeType":"YulIdentifier","src":"5733:7:24"}]}]},"name":"cleanup_t_uint256","nativeSrc":"5678:77:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5705:5:24","nodeType":"YulTypedName","src":"5705:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"5715:7:24","nodeType":"YulTypedName","src":"5715:7:24","type":""}],"src":"5678:77:24"},{"body":{"nativeSrc":"5793:28:24","nodeType":"YulBlock","src":"5793:28:24","statements":[{"nativeSrc":"5803:12:24","nodeType":"YulAssignment","src":"5803:12:24","value":{"name":"value","nativeSrc":"5810:5:24","nodeType":"YulIdentifier","src":"5810:5:24"},"variableNames":[{"name":"ret","nativeSrc":"5803:3:24","nodeType":"YulIdentifier","src":"5803:3:24"}]}]},"name":"identity","nativeSrc":"5761:60:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5779:5:24","nodeType":"YulTypedName","src":"5779:5:24","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"5789:3:24","nodeType":"YulTypedName","src":"5789:3:24","type":""}],"src":"5761:60:24"},{"body":{"nativeSrc":"5887:82:24","nodeType":"YulBlock","src":"5887:82:24","statements":[{"nativeSrc":"5897:66:24","nodeType":"YulAssignment","src":"5897:66:24","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5955:5:24","nodeType":"YulIdentifier","src":"5955:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"5937:17:24","nodeType":"YulIdentifier","src":"5937:17:24"},"nativeSrc":"5937:24:24","nodeType":"YulFunctionCall","src":"5937:24:24"}],"functionName":{"name":"identity","nativeSrc":"5928:8:24","nodeType":"YulIdentifier","src":"5928:8:24"},"nativeSrc":"5928:34:24","nodeType":"YulFunctionCall","src":"5928:34:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"5910:17:24","nodeType":"YulIdentifier","src":"5910:17:24"},"nativeSrc":"5910:53:24","nodeType":"YulFunctionCall","src":"5910:53:24"},"variableNames":[{"name":"converted","nativeSrc":"5897:9:24","nodeType":"YulIdentifier","src":"5897:9:24"}]}]},"name":"convert_t_uint256_to_t_uint256","nativeSrc":"5827:142:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5867:5:24","nodeType":"YulTypedName","src":"5867:5:24","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"5877:9:24","nodeType":"YulTypedName","src":"5877:9:24","type":""}],"src":"5827:142:24"},{"body":{"nativeSrc":"6022:28:24","nodeType":"YulBlock","src":"6022:28:24","statements":[{"nativeSrc":"6032:12:24","nodeType":"YulAssignment","src":"6032:12:24","value":{"name":"value","nativeSrc":"6039:5:24","nodeType":"YulIdentifier","src":"6039:5:24"},"variableNames":[{"name":"ret","nativeSrc":"6032:3:24","nodeType":"YulIdentifier","src":"6032:3:24"}]}]},"name":"prepare_store_t_uint256","nativeSrc":"5975:75:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6008:5:24","nodeType":"YulTypedName","src":"6008:5:24","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"6018:3:24","nodeType":"YulTypedName","src":"6018:3:24","type":""}],"src":"5975:75:24"},{"body":{"nativeSrc":"6132:193:24","nodeType":"YulBlock","src":"6132:193:24","statements":[{"nativeSrc":"6142:63:24","nodeType":"YulVariableDeclaration","src":"6142:63:24","value":{"arguments":[{"name":"value_0","nativeSrc":"6197:7:24","nodeType":"YulIdentifier","src":"6197:7:24"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nativeSrc":"6166:30:24","nodeType":"YulIdentifier","src":"6166:30:24"},"nativeSrc":"6166:39:24","nodeType":"YulFunctionCall","src":"6166:39:24"},"variables":[{"name":"convertedValue_0","nativeSrc":"6146:16:24","nodeType":"YulTypedName","src":"6146:16:24","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6221:4:24","nodeType":"YulIdentifier","src":"6221:4:24"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"6261:4:24","nodeType":"YulIdentifier","src":"6261:4:24"}],"functionName":{"name":"sload","nativeSrc":"6255:5:24","nodeType":"YulIdentifier","src":"6255:5:24"},"nativeSrc":"6255:11:24","nodeType":"YulFunctionCall","src":"6255:11:24"},{"name":"offset","nativeSrc":"6268:6:24","nodeType":"YulIdentifier","src":"6268:6:24"},{"arguments":[{"name":"convertedValue_0","nativeSrc":"6300:16:24","nodeType":"YulIdentifier","src":"6300:16:24"}],"functionName":{"name":"prepare_store_t_uint256","nativeSrc":"6276:23:24","nodeType":"YulIdentifier","src":"6276:23:24"},"nativeSrc":"6276:41:24","nodeType":"YulFunctionCall","src":"6276:41:24"}],"functionName":{"name":"update_byte_slice_dynamic32","nativeSrc":"6227:27:24","nodeType":"YulIdentifier","src":"6227:27:24"},"nativeSrc":"6227:91:24","nodeType":"YulFunctionCall","src":"6227:91:24"}],"functionName":{"name":"sstore","nativeSrc":"6214:6:24","nodeType":"YulIdentifier","src":"6214:6:24"},"nativeSrc":"6214:105:24","nodeType":"YulFunctionCall","src":"6214:105:24"},"nativeSrc":"6214:105:24","nodeType":"YulExpressionStatement","src":"6214:105:24"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nativeSrc":"6056:269:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"6109:4:24","nodeType":"YulTypedName","src":"6109:4:24","type":""},{"name":"offset","nativeSrc":"6115:6:24","nodeType":"YulTypedName","src":"6115:6:24","type":""},{"name":"value_0","nativeSrc":"6123:7:24","nodeType":"YulTypedName","src":"6123:7:24","type":""}],"src":"6056:269:24"},{"body":{"nativeSrc":"6380:24:24","nodeType":"YulBlock","src":"6380:24:24","statements":[{"nativeSrc":"6390:8:24","nodeType":"YulAssignment","src":"6390:8:24","value":{"kind":"number","nativeSrc":"6397:1:24","nodeType":"YulLiteral","src":"6397:1:24","type":"","value":"0"},"variableNames":[{"name":"ret","nativeSrc":"6390:3:24","nodeType":"YulIdentifier","src":"6390:3:24"}]}]},"name":"zero_value_for_split_t_uint256","nativeSrc":"6331:73:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nativeSrc":"6376:3:24","nodeType":"YulTypedName","src":"6376:3:24","type":""}],"src":"6331:73:24"},{"body":{"nativeSrc":"6463:136:24","nodeType":"YulBlock","src":"6463:136:24","statements":[{"nativeSrc":"6473:46:24","nodeType":"YulVariableDeclaration","src":"6473:46:24","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nativeSrc":"6487:30:24","nodeType":"YulIdentifier","src":"6487:30:24"},"nativeSrc":"6487:32:24","nodeType":"YulFunctionCall","src":"6487:32:24"},"variables":[{"name":"zero_0","nativeSrc":"6477:6:24","nodeType":"YulTypedName","src":"6477:6:24","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6572:4:24","nodeType":"YulIdentifier","src":"6572:4:24"},{"name":"offset","nativeSrc":"6578:6:24","nodeType":"YulIdentifier","src":"6578:6:24"},{"name":"zero_0","nativeSrc":"6586:6:24","nodeType":"YulIdentifier","src":"6586:6:24"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nativeSrc":"6528:43:24","nodeType":"YulIdentifier","src":"6528:43:24"},"nativeSrc":"6528:65:24","nodeType":"YulFunctionCall","src":"6528:65:24"},"nativeSrc":"6528:65:24","nodeType":"YulExpressionStatement","src":"6528:65:24"}]},"name":"storage_set_to_zero_t_uint256","nativeSrc":"6410:189:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"6449:4:24","nodeType":"YulTypedName","src":"6449:4:24","type":""},{"name":"offset","nativeSrc":"6455:6:24","nodeType":"YulTypedName","src":"6455:6:24","type":""}],"src":"6410:189:24"},{"body":{"nativeSrc":"6655:136:24","nodeType":"YulBlock","src":"6655:136:24","statements":[{"body":{"nativeSrc":"6722:63:24","nodeType":"YulBlock","src":"6722:63:24","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"6766:5:24","nodeType":"YulIdentifier","src":"6766:5:24"},{"kind":"number","nativeSrc":"6773:1:24","nodeType":"YulLiteral","src":"6773:1:24","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nativeSrc":"6736:29:24","nodeType":"YulIdentifier","src":"6736:29:24"},"nativeSrc":"6736:39:24","nodeType":"YulFunctionCall","src":"6736:39:24"},"nativeSrc":"6736:39:24","nodeType":"YulExpressionStatement","src":"6736:39:24"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"6675:5:24","nodeType":"YulIdentifier","src":"6675:5:24"},{"name":"end","nativeSrc":"6682:3:24","nodeType":"YulIdentifier","src":"6682:3:24"}],"functionName":{"name":"lt","nativeSrc":"6672:2:24","nodeType":"YulIdentifier","src":"6672:2:24"},"nativeSrc":"6672:14:24","nodeType":"YulFunctionCall","src":"6672:14:24"},"nativeSrc":"6665:120:24","nodeType":"YulForLoop","post":{"nativeSrc":"6687:26:24","nodeType":"YulBlock","src":"6687:26:24","statements":[{"nativeSrc":"6689:22:24","nodeType":"YulAssignment","src":"6689:22:24","value":{"arguments":[{"name":"start","nativeSrc":"6702:5:24","nodeType":"YulIdentifier","src":"6702:5:24"},{"kind":"number","nativeSrc":"6709:1:24","nodeType":"YulLiteral","src":"6709:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6698:3:24","nodeType":"YulIdentifier","src":"6698:3:24"},"nativeSrc":"6698:13:24","nodeType":"YulFunctionCall","src":"6698:13:24"},"variableNames":[{"name":"start","nativeSrc":"6689:5:24","nodeType":"YulIdentifier","src":"6689:5:24"}]}]},"pre":{"nativeSrc":"6669:2:24","nodeType":"YulBlock","src":"6669:2:24","statements":[]},"src":"6665:120:24"}]},"name":"clear_storage_range_t_bytes1","nativeSrc":"6605:186:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"6643:5:24","nodeType":"YulTypedName","src":"6643:5:24","type":""},{"name":"end","nativeSrc":"6650:3:24","nodeType":"YulTypedName","src":"6650:3:24","type":""}],"src":"6605:186:24"},{"body":{"nativeSrc":"6876:464:24","nodeType":"YulBlock","src":"6876:464:24","statements":[{"body":{"nativeSrc":"6902:431:24","nodeType":"YulBlock","src":"6902:431:24","statements":[{"nativeSrc":"6916:54:24","nodeType":"YulVariableDeclaration","src":"6916:54:24","value":{"arguments":[{"name":"array","nativeSrc":"6964:5:24","nodeType":"YulIdentifier","src":"6964:5:24"}],"functionName":{"name":"array_dataslot_t_string_storage","nativeSrc":"6932:31:24","nodeType":"YulIdentifier","src":"6932:31:24"},"nativeSrc":"6932:38:24","nodeType":"YulFunctionCall","src":"6932:38:24"},"variables":[{"name":"dataArea","nativeSrc":"6920:8:24","nodeType":"YulTypedName","src":"6920:8:24","type":""}]},{"nativeSrc":"6983:63:24","nodeType":"YulVariableDeclaration","src":"6983:63:24","value":{"arguments":[{"name":"dataArea","nativeSrc":"7006:8:24","nodeType":"YulIdentifier","src":"7006:8:24"},{"arguments":[{"name":"startIndex","nativeSrc":"7034:10:24","nodeType":"YulIdentifier","src":"7034:10:24"}],"functionName":{"name":"divide_by_32_ceil","nativeSrc":"7016:17:24","nodeType":"YulIdentifier","src":"7016:17:24"},"nativeSrc":"7016:29:24","nodeType":"YulFunctionCall","src":"7016:29:24"}],"functionName":{"name":"add","nativeSrc":"7002:3:24","nodeType":"YulIdentifier","src":"7002:3:24"},"nativeSrc":"7002:44:24","nodeType":"YulFunctionCall","src":"7002:44:24"},"variables":[{"name":"deleteStart","nativeSrc":"6987:11:24","nodeType":"YulTypedName","src":"6987:11:24","type":""}]},{"body":{"nativeSrc":"7203:27:24","nodeType":"YulBlock","src":"7203:27:24","statements":[{"nativeSrc":"7205:23:24","nodeType":"YulAssignment","src":"7205:23:24","value":{"name":"dataArea","nativeSrc":"7220:8:24","nodeType":"YulIdentifier","src":"7220:8:24"},"variableNames":[{"name":"deleteStart","nativeSrc":"7205:11:24","nodeType":"YulIdentifier","src":"7205:11:24"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"7187:10:24","nodeType":"YulIdentifier","src":"7187:10:24"},{"kind":"number","nativeSrc":"7199:2:24","nodeType":"YulLiteral","src":"7199:2:24","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"7184:2:24","nodeType":"YulIdentifier","src":"7184:2:24"},"nativeSrc":"7184:18:24","nodeType":"YulFunctionCall","src":"7184:18:24"},"nativeSrc":"7181:49:24","nodeType":"YulIf","src":"7181:49:24"},{"expression":{"arguments":[{"name":"deleteStart","nativeSrc":"7272:11:24","nodeType":"YulIdentifier","src":"7272:11:24"},{"arguments":[{"name":"dataArea","nativeSrc":"7289:8:24","nodeType":"YulIdentifier","src":"7289:8:24"},{"arguments":[{"name":"len","nativeSrc":"7317:3:24","nodeType":"YulIdentifier","src":"7317:3:24"}],"functionName":{"name":"divide_by_32_ceil","nativeSrc":"7299:17:24","nodeType":"YulIdentifier","src":"7299:17:24"},"nativeSrc":"7299:22:24","nodeType":"YulFunctionCall","src":"7299:22:24"}],"functionName":{"name":"add","nativeSrc":"7285:3:24","nodeType":"YulIdentifier","src":"7285:3:24"},"nativeSrc":"7285:37:24","nodeType":"YulFunctionCall","src":"7285:37:24"}],"functionName":{"name":"clear_storage_range_t_bytes1","nativeSrc":"7243:28:24","nodeType":"YulIdentifier","src":"7243:28:24"},"nativeSrc":"7243:80:24","nodeType":"YulFunctionCall","src":"7243:80:24"},"nativeSrc":"7243:80:24","nodeType":"YulExpressionStatement","src":"7243:80:24"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"6893:3:24","nodeType":"YulIdentifier","src":"6893:3:24"},{"kind":"number","nativeSrc":"6898:2:24","nodeType":"YulLiteral","src":"6898:2:24","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"6890:2:24","nodeType":"YulIdentifier","src":"6890:2:24"},"nativeSrc":"6890:11:24","nodeType":"YulFunctionCall","src":"6890:11:24"},"nativeSrc":"6887:446:24","nodeType":"YulIf","src":"6887:446:24"}]},"name":"clean_up_bytearray_end_slots_t_string_storage","nativeSrc":"6797:543:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"6852:5:24","nodeType":"YulTypedName","src":"6852:5:24","type":""},{"name":"len","nativeSrc":"6859:3:24","nodeType":"YulTypedName","src":"6859:3:24","type":""},{"name":"startIndex","nativeSrc":"6864:10:24","nodeType":"YulTypedName","src":"6864:10:24","type":""}],"src":"6797:543:24"},{"body":{"nativeSrc":"7409:54:24","nodeType":"YulBlock","src":"7409:54:24","statements":[{"nativeSrc":"7419:37:24","nodeType":"YulAssignment","src":"7419:37:24","value":{"arguments":[{"name":"bits","nativeSrc":"7444:4:24","nodeType":"YulIdentifier","src":"7444:4:24"},{"name":"value","nativeSrc":"7450:5:24","nodeType":"YulIdentifier","src":"7450:5:24"}],"functionName":{"name":"shr","nativeSrc":"7440:3:24","nodeType":"YulIdentifier","src":"7440:3:24"},"nativeSrc":"7440:16:24","nodeType":"YulFunctionCall","src":"7440:16:24"},"variableNames":[{"name":"newValue","nativeSrc":"7419:8:24","nodeType":"YulIdentifier","src":"7419:8:24"}]}]},"name":"shift_right_unsigned_dynamic","nativeSrc":"7346:117:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nativeSrc":"7384:4:24","nodeType":"YulTypedName","src":"7384:4:24","type":""},{"name":"value","nativeSrc":"7390:5:24","nodeType":"YulTypedName","src":"7390:5:24","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"7400:8:24","nodeType":"YulTypedName","src":"7400:8:24","type":""}],"src":"7346:117:24"},{"body":{"nativeSrc":"7520:118:24","nodeType":"YulBlock","src":"7520:118:24","statements":[{"nativeSrc":"7530:68:24","nodeType":"YulVariableDeclaration","src":"7530:68:24","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7579:1:24","nodeType":"YulLiteral","src":"7579:1:24","type":"","value":"8"},{"name":"bytes","nativeSrc":"7582:5:24","nodeType":"YulIdentifier","src":"7582:5:24"}],"functionName":{"name":"mul","nativeSrc":"7575:3:24","nodeType":"YulIdentifier","src":"7575:3:24"},"nativeSrc":"7575:13:24","nodeType":"YulFunctionCall","src":"7575:13:24"},{"arguments":[{"kind":"number","nativeSrc":"7594:1:24","nodeType":"YulLiteral","src":"7594:1:24","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7590:3:24","nodeType":"YulIdentifier","src":"7590:3:24"},"nativeSrc":"7590:6:24","nodeType":"YulFunctionCall","src":"7590:6:24"}],"functionName":{"name":"shift_right_unsigned_dynamic","nativeSrc":"7546:28:24","nodeType":"YulIdentifier","src":"7546:28:24"},"nativeSrc":"7546:51:24","nodeType":"YulFunctionCall","src":"7546:51:24"}],"functionName":{"name":"not","nativeSrc":"7542:3:24","nodeType":"YulIdentifier","src":"7542:3:24"},"nativeSrc":"7542:56:24","nodeType":"YulFunctionCall","src":"7542:56:24"},"variables":[{"name":"mask","nativeSrc":"7534:4:24","nodeType":"YulTypedName","src":"7534:4:24","type":""}]},{"nativeSrc":"7607:25:24","nodeType":"YulAssignment","src":"7607:25:24","value":{"arguments":[{"name":"data","nativeSrc":"7621:4:24","nodeType":"YulIdentifier","src":"7621:4:24"},{"name":"mask","nativeSrc":"7627:4:24","nodeType":"YulIdentifier","src":"7627:4:24"}],"functionName":{"name":"and","nativeSrc":"7617:3:24","nodeType":"YulIdentifier","src":"7617:3:24"},"nativeSrc":"7617:15:24","nodeType":"YulFunctionCall","src":"7617:15:24"},"variableNames":[{"name":"result","nativeSrc":"7607:6:24","nodeType":"YulIdentifier","src":"7607:6:24"}]}]},"name":"mask_bytes_dynamic","nativeSrc":"7469:169:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"7497:4:24","nodeType":"YulTypedName","src":"7497:4:24","type":""},{"name":"bytes","nativeSrc":"7503:5:24","nodeType":"YulTypedName","src":"7503:5:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"7513:6:24","nodeType":"YulTypedName","src":"7513:6:24","type":""}],"src":"7469:169:24"},{"body":{"nativeSrc":"7724:214:24","nodeType":"YulBlock","src":"7724:214:24","statements":[{"nativeSrc":"7857:37:24","nodeType":"YulAssignment","src":"7857:37:24","value":{"arguments":[{"name":"data","nativeSrc":"7884:4:24","nodeType":"YulIdentifier","src":"7884:4:24"},{"name":"len","nativeSrc":"7890:3:24","nodeType":"YulIdentifier","src":"7890:3:24"}],"functionName":{"name":"mask_bytes_dynamic","nativeSrc":"7865:18:24","nodeType":"YulIdentifier","src":"7865:18:24"},"nativeSrc":"7865:29:24","nodeType":"YulFunctionCall","src":"7865:29:24"},"variableNames":[{"name":"data","nativeSrc":"7857:4:24","nodeType":"YulIdentifier","src":"7857:4:24"}]},{"nativeSrc":"7903:29:24","nodeType":"YulAssignment","src":"7903:29:24","value":{"arguments":[{"name":"data","nativeSrc":"7914:4:24","nodeType":"YulIdentifier","src":"7914:4:24"},{"arguments":[{"kind":"number","nativeSrc":"7924:1:24","nodeType":"YulLiteral","src":"7924:1:24","type":"","value":"2"},{"name":"len","nativeSrc":"7927:3:24","nodeType":"YulIdentifier","src":"7927:3:24"}],"functionName":{"name":"mul","nativeSrc":"7920:3:24","nodeType":"YulIdentifier","src":"7920:3:24"},"nativeSrc":"7920:11:24","nodeType":"YulFunctionCall","src":"7920:11:24"}],"functionName":{"name":"or","nativeSrc":"7911:2:24","nodeType":"YulIdentifier","src":"7911:2:24"},"nativeSrc":"7911:21:24","nodeType":"YulFunctionCall","src":"7911:21:24"},"variableNames":[{"name":"used","nativeSrc":"7903:4:24","nodeType":"YulIdentifier","src":"7903:4:24"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"7643:295:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"7705:4:24","nodeType":"YulTypedName","src":"7705:4:24","type":""},{"name":"len","nativeSrc":"7711:3:24","nodeType":"YulTypedName","src":"7711:3:24","type":""}],"returnVariables":[{"name":"used","nativeSrc":"7719:4:24","nodeType":"YulTypedName","src":"7719:4:24","type":""}],"src":"7643:295:24"},{"body":{"nativeSrc":"8035:1303:24","nodeType":"YulBlock","src":"8035:1303:24","statements":[{"nativeSrc":"8046:51:24","nodeType":"YulVariableDeclaration","src":"8046:51:24","value":{"arguments":[{"name":"src","nativeSrc":"8093:3:24","nodeType":"YulIdentifier","src":"8093:3:24"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"8060:32:24","nodeType":"YulIdentifier","src":"8060:32:24"},"nativeSrc":"8060:37:24","nodeType":"YulFunctionCall","src":"8060:37:24"},"variables":[{"name":"newLen","nativeSrc":"8050:6:24","nodeType":"YulTypedName","src":"8050:6:24","type":""}]},{"body":{"nativeSrc":"8182:22:24","nodeType":"YulBlock","src":"8182:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"8184:16:24","nodeType":"YulIdentifier","src":"8184:16:24"},"nativeSrc":"8184:18:24","nodeType":"YulFunctionCall","src":"8184:18:24"},"nativeSrc":"8184:18:24","nodeType":"YulExpressionStatement","src":"8184:18:24"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"8154:6:24","nodeType":"YulIdentifier","src":"8154:6:24"},{"kind":"number","nativeSrc":"8162:18:24","nodeType":"YulLiteral","src":"8162:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8151:2:24","nodeType":"YulIdentifier","src":"8151:2:24"},"nativeSrc":"8151:30:24","nodeType":"YulFunctionCall","src":"8151:30:24"},"nativeSrc":"8148:56:24","nodeType":"YulIf","src":"8148:56:24"},{"nativeSrc":"8214:52:24","nodeType":"YulVariableDeclaration","src":"8214:52:24","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"8260:4:24","nodeType":"YulIdentifier","src":"8260:4:24"}],"functionName":{"name":"sload","nativeSrc":"8254:5:24","nodeType":"YulIdentifier","src":"8254:5:24"},"nativeSrc":"8254:11:24","nodeType":"YulFunctionCall","src":"8254:11:24"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"8228:25:24","nodeType":"YulIdentifier","src":"8228:25:24"},"nativeSrc":"8228:38:24","nodeType":"YulFunctionCall","src":"8228:38:24"},"variables":[{"name":"oldLen","nativeSrc":"8218:6:24","nodeType":"YulTypedName","src":"8218:6:24","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"8359:4:24","nodeType":"YulIdentifier","src":"8359:4:24"},{"name":"oldLen","nativeSrc":"8365:6:24","nodeType":"YulIdentifier","src":"8365:6:24"},{"name":"newLen","nativeSrc":"8373:6:24","nodeType":"YulIdentifier","src":"8373:6:24"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_string_storage","nativeSrc":"8313:45:24","nodeType":"YulIdentifier","src":"8313:45:24"},"nativeSrc":"8313:67:24","nodeType":"YulFunctionCall","src":"8313:67:24"},"nativeSrc":"8313:67:24","nodeType":"YulExpressionStatement","src":"8313:67:24"},{"nativeSrc":"8390:18:24","nodeType":"YulVariableDeclaration","src":"8390:18:24","value":{"kind":"number","nativeSrc":"8407:1:24","nodeType":"YulLiteral","src":"8407:1:24","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"8394:9:24","nodeType":"YulTypedName","src":"8394:9:24","type":""}]},{"nativeSrc":"8418:17:24","nodeType":"YulAssignment","src":"8418:17:24","value":{"kind":"number","nativeSrc":"8431:4:24","nodeType":"YulLiteral","src":"8431:4:24","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"8418:9:24","nodeType":"YulIdentifier","src":"8418:9:24"}]},{"cases":[{"body":{"nativeSrc":"8482:611:24","nodeType":"YulBlock","src":"8482:611:24","statements":[{"nativeSrc":"8496:37:24","nodeType":"YulVariableDeclaration","src":"8496:37:24","value":{"arguments":[{"name":"newLen","nativeSrc":"8515:6:24","nodeType":"YulIdentifier","src":"8515:6:24"},{"arguments":[{"kind":"number","nativeSrc":"8527:4:24","nodeType":"YulLiteral","src":"8527:4:24","type":"","value":"0x1f"}],"functionName":{"name":"not","nativeSrc":"8523:3:24","nodeType":"YulIdentifier","src":"8523:3:24"},"nativeSrc":"8523:9:24","nodeType":"YulFunctionCall","src":"8523:9:24"}],"functionName":{"name":"and","nativeSrc":"8511:3:24","nodeType":"YulIdentifier","src":"8511:3:24"},"nativeSrc":"8511:22:24","nodeType":"YulFunctionCall","src":"8511:22:24"},"variables":[{"name":"loopEnd","nativeSrc":"8500:7:24","nodeType":"YulTypedName","src":"8500:7:24","type":""}]},{"nativeSrc":"8547:51:24","nodeType":"YulVariableDeclaration","src":"8547:51:24","value":{"arguments":[{"name":"slot","nativeSrc":"8593:4:24","nodeType":"YulIdentifier","src":"8593:4:24"}],"functionName":{"name":"array_dataslot_t_string_storage","nativeSrc":"8561:31:24","nodeType":"YulIdentifier","src":"8561:31:24"},"nativeSrc":"8561:37:24","nodeType":"YulFunctionCall","src":"8561:37:24"},"variables":[{"name":"dstPtr","nativeSrc":"8551:6:24","nodeType":"YulTypedName","src":"8551:6:24","type":""}]},{"nativeSrc":"8611:10:24","nodeType":"YulVariableDeclaration","src":"8611:10:24","value":{"kind":"number","nativeSrc":"8620:1:24","nodeType":"YulLiteral","src":"8620:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"8615:1:24","nodeType":"YulTypedName","src":"8615:1:24","type":""}]},{"body":{"nativeSrc":"8679:163:24","nodeType":"YulBlock","src":"8679:163:24","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"8704:6:24","nodeType":"YulIdentifier","src":"8704:6:24"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"8722:3:24","nodeType":"YulIdentifier","src":"8722:3:24"},{"name":"srcOffset","nativeSrc":"8727:9:24","nodeType":"YulIdentifier","src":"8727:9:24"}],"functionName":{"name":"add","nativeSrc":"8718:3:24","nodeType":"YulIdentifier","src":"8718:3:24"},"nativeSrc":"8718:19:24","nodeType":"YulFunctionCall","src":"8718:19:24"}],"functionName":{"name":"mload","nativeSrc":"8712:5:24","nodeType":"YulIdentifier","src":"8712:5:24"},"nativeSrc":"8712:26:24","nodeType":"YulFunctionCall","src":"8712:26:24"}],"functionName":{"name":"sstore","nativeSrc":"8697:6:24","nodeType":"YulIdentifier","src":"8697:6:24"},"nativeSrc":"8697:42:24","nodeType":"YulFunctionCall","src":"8697:42:24"},"nativeSrc":"8697:42:24","nodeType":"YulExpressionStatement","src":"8697:42:24"},{"nativeSrc":"8756:24:24","nodeType":"YulAssignment","src":"8756:24:24","value":{"arguments":[{"name":"dstPtr","nativeSrc":"8770:6:24","nodeType":"YulIdentifier","src":"8770:6:24"},{"kind":"number","nativeSrc":"8778:1:24","nodeType":"YulLiteral","src":"8778:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8766:3:24","nodeType":"YulIdentifier","src":"8766:3:24"},"nativeSrc":"8766:14:24","nodeType":"YulFunctionCall","src":"8766:14:24"},"variableNames":[{"name":"dstPtr","nativeSrc":"8756:6:24","nodeType":"YulIdentifier","src":"8756:6:24"}]},{"nativeSrc":"8797:31:24","nodeType":"YulAssignment","src":"8797:31:24","value":{"arguments":[{"name":"srcOffset","nativeSrc":"8814:9:24","nodeType":"YulIdentifier","src":"8814:9:24"},{"kind":"number","nativeSrc":"8825:2:24","nodeType":"YulLiteral","src":"8825:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8810:3:24","nodeType":"YulIdentifier","src":"8810:3:24"},"nativeSrc":"8810:18:24","nodeType":"YulFunctionCall","src":"8810:18:24"},"variableNames":[{"name":"srcOffset","nativeSrc":"8797:9:24","nodeType":"YulIdentifier","src":"8797:9:24"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"8645:1:24","nodeType":"YulIdentifier","src":"8645:1:24"},{"name":"loopEnd","nativeSrc":"8648:7:24","nodeType":"YulIdentifier","src":"8648:7:24"}],"functionName":{"name":"lt","nativeSrc":"8642:2:24","nodeType":"YulIdentifier","src":"8642:2:24"},"nativeSrc":"8642:14:24","nodeType":"YulFunctionCall","src":"8642:14:24"},"nativeSrc":"8634:208:24","nodeType":"YulForLoop","post":{"nativeSrc":"8657:21:24","nodeType":"YulBlock","src":"8657:21:24","statements":[{"nativeSrc":"8659:17:24","nodeType":"YulAssignment","src":"8659:17:24","value":{"arguments":[{"name":"i","nativeSrc":"8668:1:24","nodeType":"YulIdentifier","src":"8668:1:24"},{"kind":"number","nativeSrc":"8671:4:24","nodeType":"YulLiteral","src":"8671:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8664:3:24","nodeType":"YulIdentifier","src":"8664:3:24"},"nativeSrc":"8664:12:24","nodeType":"YulFunctionCall","src":"8664:12:24"},"variableNames":[{"name":"i","nativeSrc":"8659:1:24","nodeType":"YulIdentifier","src":"8659:1:24"}]}]},"pre":{"nativeSrc":"8638:3:24","nodeType":"YulBlock","src":"8638:3:24","statements":[]},"src":"8634:208:24"},{"body":{"nativeSrc":"8878:156:24","nodeType":"YulBlock","src":"8878:156:24","statements":[{"nativeSrc":"8896:43:24","nodeType":"YulVariableDeclaration","src":"8896:43:24","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"8923:3:24","nodeType":"YulIdentifier","src":"8923:3:24"},{"name":"srcOffset","nativeSrc":"8928:9:24","nodeType":"YulIdentifier","src":"8928:9:24"}],"functionName":{"name":"add","nativeSrc":"8919:3:24","nodeType":"YulIdentifier","src":"8919:3:24"},"nativeSrc":"8919:19:24","nodeType":"YulFunctionCall","src":"8919:19:24"}],"functionName":{"name":"mload","nativeSrc":"8913:5:24","nodeType":"YulIdentifier","src":"8913:5:24"},"nativeSrc":"8913:26:24","nodeType":"YulFunctionCall","src":"8913:26:24"},"variables":[{"name":"lastValue","nativeSrc":"8900:9:24","nodeType":"YulTypedName","src":"8900:9:24","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"8963:6:24","nodeType":"YulIdentifier","src":"8963:6:24"},{"arguments":[{"name":"lastValue","nativeSrc":"8990:9:24","nodeType":"YulIdentifier","src":"8990:9:24"},{"arguments":[{"name":"newLen","nativeSrc":"9005:6:24","nodeType":"YulIdentifier","src":"9005:6:24"},{"kind":"number","nativeSrc":"9013:4:24","nodeType":"YulLiteral","src":"9013:4:24","type":"","value":"0x1f"}],"functionName":{"name":"and","nativeSrc":"9001:3:24","nodeType":"YulIdentifier","src":"9001:3:24"},"nativeSrc":"9001:17:24","nodeType":"YulFunctionCall","src":"9001:17:24"}],"functionName":{"name":"mask_bytes_dynamic","nativeSrc":"8971:18:24","nodeType":"YulIdentifier","src":"8971:18:24"},"nativeSrc":"8971:48:24","nodeType":"YulFunctionCall","src":"8971:48:24"}],"functionName":{"name":"sstore","nativeSrc":"8956:6:24","nodeType":"YulIdentifier","src":"8956:6:24"},"nativeSrc":"8956:64:24","nodeType":"YulFunctionCall","src":"8956:64:24"},"nativeSrc":"8956:64:24","nodeType":"YulExpressionStatement","src":"8956:64:24"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"8861:7:24","nodeType":"YulIdentifier","src":"8861:7:24"},{"name":"newLen","nativeSrc":"8870:6:24","nodeType":"YulIdentifier","src":"8870:6:24"}],"functionName":{"name":"lt","nativeSrc":"8858:2:24","nodeType":"YulIdentifier","src":"8858:2:24"},"nativeSrc":"8858:19:24","nodeType":"YulFunctionCall","src":"8858:19:24"},"nativeSrc":"8855:179:24","nodeType":"YulIf","src":"8855:179:24"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"9054:4:24","nodeType":"YulIdentifier","src":"9054:4:24"},{"arguments":[{"arguments":[{"name":"newLen","nativeSrc":"9068:6:24","nodeType":"YulIdentifier","src":"9068:6:24"},{"kind":"number","nativeSrc":"9076:1:24","nodeType":"YulLiteral","src":"9076:1:24","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"9064:3:24","nodeType":"YulIdentifier","src":"9064:3:24"},"nativeSrc":"9064:14:24","nodeType":"YulFunctionCall","src":"9064:14:24"},{"kind":"number","nativeSrc":"9080:1:24","nodeType":"YulLiteral","src":"9080:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9060:3:24","nodeType":"YulIdentifier","src":"9060:3:24"},"nativeSrc":"9060:22:24","nodeType":"YulFunctionCall","src":"9060:22:24"}],"functionName":{"name":"sstore","nativeSrc":"9047:6:24","nodeType":"YulIdentifier","src":"9047:6:24"},"nativeSrc":"9047:36:24","nodeType":"YulFunctionCall","src":"9047:36:24"},"nativeSrc":"9047:36:24","nodeType":"YulExpressionStatement","src":"9047:36:24"}]},"nativeSrc":"8475:618:24","nodeType":"YulCase","src":"8475:618:24","value":{"kind":"number","nativeSrc":"8480:1:24","nodeType":"YulLiteral","src":"8480:1:24","type":"","value":"1"}},{"body":{"nativeSrc":"9110:222:24","nodeType":"YulBlock","src":"9110:222:24","statements":[{"nativeSrc":"9124:14:24","nodeType":"YulVariableDeclaration","src":"9124:14:24","value":{"kind":"number","nativeSrc":"9137:1:24","nodeType":"YulLiteral","src":"9137:1:24","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"9128:5:24","nodeType":"YulTypedName","src":"9128:5:24","type":""}]},{"body":{"nativeSrc":"9161:67:24","nodeType":"YulBlock","src":"9161:67:24","statements":[{"nativeSrc":"9179:35:24","nodeType":"YulAssignment","src":"9179:35:24","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"9198:3:24","nodeType":"YulIdentifier","src":"9198:3:24"},{"name":"srcOffset","nativeSrc":"9203:9:24","nodeType":"YulIdentifier","src":"9203:9:24"}],"functionName":{"name":"add","nativeSrc":"9194:3:24","nodeType":"YulIdentifier","src":"9194:3:24"},"nativeSrc":"9194:19:24","nodeType":"YulFunctionCall","src":"9194:19:24"}],"functionName":{"name":"mload","nativeSrc":"9188:5:24","nodeType":"YulIdentifier","src":"9188:5:24"},"nativeSrc":"9188:26:24","nodeType":"YulFunctionCall","src":"9188:26:24"},"variableNames":[{"name":"value","nativeSrc":"9179:5:24","nodeType":"YulIdentifier","src":"9179:5:24"}]}]},"condition":{"name":"newLen","nativeSrc":"9154:6:24","nodeType":"YulIdentifier","src":"9154:6:24"},"nativeSrc":"9151:77:24","nodeType":"YulIf","src":"9151:77:24"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"9248:4:24","nodeType":"YulIdentifier","src":"9248:4:24"},{"arguments":[{"name":"value","nativeSrc":"9307:5:24","nodeType":"YulIdentifier","src":"9307:5:24"},{"name":"newLen","nativeSrc":"9314:6:24","nodeType":"YulIdentifier","src":"9314:6:24"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"9254:52:24","nodeType":"YulIdentifier","src":"9254:52:24"},"nativeSrc":"9254:67:24","nodeType":"YulFunctionCall","src":"9254:67:24"}],"functionName":{"name":"sstore","nativeSrc":"9241:6:24","nodeType":"YulIdentifier","src":"9241:6:24"},"nativeSrc":"9241:81:24","nodeType":"YulFunctionCall","src":"9241:81:24"},"nativeSrc":"9241:81:24","nodeType":"YulExpressionStatement","src":"9241:81:24"}]},"nativeSrc":"9102:230:24","nodeType":"YulCase","src":"9102:230:24","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"8455:6:24","nodeType":"YulIdentifier","src":"8455:6:24"},{"kind":"number","nativeSrc":"8463:2:24","nodeType":"YulLiteral","src":"8463:2:24","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"8452:2:24","nodeType":"YulIdentifier","src":"8452:2:24"},"nativeSrc":"8452:14:24","nodeType":"YulFunctionCall","src":"8452:14:24"},"nativeSrc":"8445:887:24","nodeType":"YulSwitch","src":"8445:887:24"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"7943:1395:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"8024:4:24","nodeType":"YulTypedName","src":"8024:4:24","type":""},{"name":"src","nativeSrc":"8030:3:24","nodeType":"YulTypedName","src":"8030:3:24","type":""}],"src":"7943:1395:24"},{"body":{"nativeSrc":"9409:53:24","nodeType":"YulBlock","src":"9409:53:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9426:3:24","nodeType":"YulIdentifier","src":"9426:3:24"},{"arguments":[{"name":"value","nativeSrc":"9449:5:24","nodeType":"YulIdentifier","src":"9449:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"9431:17:24","nodeType":"YulIdentifier","src":"9431:17:24"},"nativeSrc":"9431:24:24","nodeType":"YulFunctionCall","src":"9431:24:24"}],"functionName":{"name":"mstore","nativeSrc":"9419:6:24","nodeType":"YulIdentifier","src":"9419:6:24"},"nativeSrc":"9419:37:24","nodeType":"YulFunctionCall","src":"9419:37:24"},"nativeSrc":"9419:37:24","nodeType":"YulExpressionStatement","src":"9419:37:24"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"9344:118:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9397:5:24","nodeType":"YulTypedName","src":"9397:5:24","type":""},{"name":"pos","nativeSrc":"9404:3:24","nodeType":"YulTypedName","src":"9404:3:24","type":""}],"src":"9344:118:24"},{"body":{"nativeSrc":"9566:124:24","nodeType":"YulBlock","src":"9566:124:24","statements":[{"nativeSrc":"9576:26:24","nodeType":"YulAssignment","src":"9576:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"9588:9:24","nodeType":"YulIdentifier","src":"9588:9:24"},{"kind":"number","nativeSrc":"9599:2:24","nodeType":"YulLiteral","src":"9599:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9584:3:24","nodeType":"YulIdentifier","src":"9584:3:24"},"nativeSrc":"9584:18:24","nodeType":"YulFunctionCall","src":"9584:18:24"},"variableNames":[{"name":"tail","nativeSrc":"9576:4:24","nodeType":"YulIdentifier","src":"9576:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"9656:6:24","nodeType":"YulIdentifier","src":"9656:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"9669:9:24","nodeType":"YulIdentifier","src":"9669:9:24"},{"kind":"number","nativeSrc":"9680:1:24","nodeType":"YulLiteral","src":"9680:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9665:3:24","nodeType":"YulIdentifier","src":"9665:3:24"},"nativeSrc":"9665:17:24","nodeType":"YulFunctionCall","src":"9665:17:24"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"9612:43:24","nodeType":"YulIdentifier","src":"9612:43:24"},"nativeSrc":"9612:71:24","nodeType":"YulFunctionCall","src":"9612:71:24"},"nativeSrc":"9612:71:24","nodeType":"YulExpressionStatement","src":"9612:71:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"9468:222:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9538:9:24","nodeType":"YulTypedName","src":"9538:9:24","type":""},{"name":"value0","nativeSrc":"9550:6:24","nodeType":"YulTypedName","src":"9550:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9561:4:24","nodeType":"YulTypedName","src":"9561:4:24","type":""}],"src":"9468:222:24"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_IERC20_$1137(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC20_$1137(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC20_$1137(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC20_$1137_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_IERC20_$1137(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n mcopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1137t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1137_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":24,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60e060405234801561000f575f80fd5b506040516136f83803806136f8833981810160405281019061003191906104f9565b338383838160039081610044919061078e565b508060049081610054919061078e565b5050505f806100688361017a60201b60201c565b915091508161007857601261007a565b805b60ff1660a08160ff16815250508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361012e575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610125919061086c565b60405180910390fd5b61013d8161024660201b60201c565b508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050610885565b5f805f61018b61030960201b60201c565b90505f806101e98660405160240160405160208183030381529060405263313ce56760e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061031260201b60201c565b50915091506101fd8361033360201b60201c565b8180156102185750602061021561033a60201b60201c565b10155b8015610229575060ff8016815f1c11155b610234575f8061023a565b6001815f1c5b94509450505050915091565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f805f60405f855160208701885afa92505f51915060205190509250925092565b8060405250565b5f3d905090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61037b82610352565b9050919050565b5f61038c82610371565b9050919050565b61039c81610382565b81146103a6575f80fd5b50565b5f815190506103b781610393565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61040b826103c5565b810181811067ffffffffffffffff8211171561042a576104296103d5565b5b80604052505050565b5f61043c610341565b90506104488282610402565b919050565b5f67ffffffffffffffff821115610467576104666103d5565b5b610470826103c5565b9050602081019050919050565b8281835e5f83830152505050565b5f61049d6104988461044d565b610433565b9050828152602081018484840111156104b9576104b86103c1565b5b6104c484828561047d565b509392505050565b5f82601f8301126104e0576104df6103bd565b5b81516104f084826020860161048b565b91505092915050565b5f805f606084860312156105105761050f61034a565b5b5f61051d868287016103a9565b935050602084015167ffffffffffffffff81111561053e5761053d61034e565b5b61054a868287016104cc565b925050604084015167ffffffffffffffff81111561056b5761056a61034e565b5b610577868287016104cc565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806105cf57607f821691505b6020821081036105e2576105e161058b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610609565b61064e8683610609565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61069261068d61068884610666565b61066f565b610666565b9050919050565b5f819050919050565b6106ab83610678565b6106bf6106b782610699565b848454610615565b825550505050565b5f90565b6106d36106c7565b6106de8184846106a2565b505050565b5b81811015610701576106f65f826106cb565b6001810190506106e4565b5050565b601f82111561074657610717816105e8565b610720846105fa565b8101602085101561072f578190505b61074361073b856105fa565b8301826106e3565b50505b505050565b5f82821c905092915050565b5f6107665f198460080261074b565b1980831691505092915050565b5f61077e8383610757565b9150826002028217905092915050565b61079782610581565b67ffffffffffffffff8111156107b0576107af6103d5565b5b6107ba82546105b8565b6107c5828285610705565b5f60209050601f8311600181146107f6575f84156107e4578287015190505b6107ee8582610773565b865550610855565b601f198416610804866105e8565b5f5b8281101561082b57848901518255600182019150602085019450602081019050610806565b868310156108485784890151610844601f891682610757565b8355505b6001600288020188555050505b505050505050565b61086681610371565b82525050565b5f60208201905061087f5f83018461085d565b92915050565b60805160a05160c051612e496108af5f395f61098501525f610f7301525f610fa40152612e495ff3fe608060405234801561000f575f80fd5b506004361061021a575f3560e01c8063715018a611610123578063ba087652116100ab578063d25815031161007a578063d2581503146106b0578063d905777e146106e0578063dd62ed3e14610710578063ef8b30f714610740578063f2fde38b146107705761021a565b8063ba087652146105f0578063c63d75b614610620578063c6e6f59214610650578063ce96cb77146106805761021a565b806395d89b41116100f257806395d89b4114610512578063a9059cbb14610530578063b20b242914610560578063b3d7f6b914610590578063b460af94146105c05761021a565b8063715018a6146104b05780638456cb59146104ba5780638da5cb5b146104c457806394bf804d146104e25761021a565b806323b872dd116101a6578063402d267d11610175578063402d267d146103d25780634cdad506146104025780635c975abb146104325780636e553f651461045057806370a08231146104805761021a565b806323b872dd1461035c578063313ce5671461038c57806338d52e0f146103aa5780633f4ba83a146103c85761021a565b80630a28a477116101ed5780630a28a477146102ba5780630c474691146102ea578063175188e81461030657806318160ddd14610322578063223e5479146103405761021a565b806301e1d1141461021e57806306fdde031461023c57806307a2d13a1461025a578063095ea7b31461028a575b5f80fd5b61022661078c565b604051610233919061241b565b60405180910390f35b610244610811565b60405161025191906124a4565b60405180910390f35b610274600480360381019061026f91906124f2565b6108a1565b604051610281919061241b565b60405180910390f35b6102a4600480360381019061029f9190612577565b6108b3565b6040516102b191906125cf565b60405180910390f35b6102d460048036038101906102cf91906124f2565b6108d5565b6040516102e1919061241b565b60405180910390f35b61030460048036038101906102ff91906125e8565b6108e8565b005b610320600480360381019061031b9190612626565b610a1c565b005b61032a610d2e565b604051610337919061241b565b60405180910390f35b61035a60048036038101906103559190612626565b610d37565b005b61037660048036038101906103719190612651565b610f3a565b60405161038391906125cf565b60405180910390f35b610394610f68565b6040516103a191906126bc565b60405180910390f35b6103b2610fa1565b6040516103bf91906126e4565b60405180910390f35b6103d0610fc8565b005b6103ec60048036038101906103e79190612626565b610fda565b6040516103f9919061241b565b60405180910390f35b61041c600480360381019061041791906124f2565b611003565b604051610429919061241b565b60405180910390f35b61043a611015565b60405161044791906125cf565b60405180910390f35b61046a600480360381019061046591906126fd565b61102b565b604051610477919061241b565b60405180910390f35b61049a60048036038101906104959190612626565b6110ab565b6040516104a7919061241b565b60405180910390f35b6104b86110f0565b005b6104c2611103565b005b6104cc611115565b6040516104d991906126e4565b60405180910390f35b6104fc60048036038101906104f791906126fd565b61113d565b604051610509919061241b565b60405180910390f35b61051a6111bd565b60405161052791906124a4565b60405180910390f35b61054a60048036038101906105459190612577565b61124d565b60405161055791906125cf565b60405180910390f35b61057a600480360381019061057591906124f2565b61126f565b60405161058791906126e4565b60405180910390f35b6105aa60048036038101906105a591906124f2565b6112aa565b6040516105b7919061241b565b60405180910390f35b6105da60048036038101906105d5919061273b565b6112bd565b6040516105e7919061241b565b60405180910390f35b61060a6004803603810190610605919061273b565b61133f565b604051610617919061241b565b60405180910390f35b61063a60048036038101906106359190612626565b6113c1565b604051610647919061241b565b60405180910390f35b61066a600480360381019061066591906124f2565b6113ea565b604051610677919061241b565b60405180910390f35b61069a60048036038101906106959190612626565b6113fc565b6040516106a7919061241b565b60405180910390f35b6106ca60048036038101906106c59190612626565b611415565b6040516106d791906125cf565b60405180910390f35b6106fa60048036038101906106f59190612626565b611432565b604051610707919061241b565b60405180910390f35b61072a6004803603810190610725919061278b565b611443565b604051610737919061241b565b60405180910390f35b61075a600480360381019061075591906124f2565b6114c5565b604051610767919061241b565b60405180910390f35b61078a60048036038101906107859190612626565b6114d7565b005b5f610795610fa1565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107cd91906126e4565b602060405180830381865afa1580156107e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080c91906127dd565b905090565b60606003805461082090612835565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90612835565b80156108975780601f1061086e57610100808354040283529160200191610897565b820191905f5260205f20905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b5f6108ac825f61155b565b9050919050565b5f806108bd6115b3565b90506108ca8185856115ba565b600191505092915050565b5f6108e18260016115cc565b9050919050565b6108f0611624565b6108f86116ab565b600680549050821061093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610936906128af565b60405180910390fd5b5f60068381548110610954576109536128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109c981837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116ec9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f04c429193504ad3c2cf06e0f2297127fd05e32601d5555ce5fd7eae9b77e4d1a83604051610a0f919061241b565b60405180910390a2505050565b610a24611624565b610a2c6116ab565b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612944565b60405180910390fd5b5f805f5b600680549050811015610b4d578373ffffffffffffffffffffffffffffffffffffffff1660068281548110610af157610af06128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b405780925060019150610b4d565b8080600101915050610ab9565b5080610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906129d2565b60405180910390fd5b6001600680549050610ba09190612a1d565b821015610c4e5760066001600680549050610bbb9190612a1d565b81548110610bcc57610bcb6128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068381548110610c0857610c076128cd565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6006805480610c6057610c5f612a50565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea460405160405180910390a2505050565b5f600254905090565b610d3f611624565b610d476116ab565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90612ac7565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690612b2f565b60405180910390fd5b600681908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f160405160405180910390a250565b5f80610f446115b3565b9050610f5185828561173f565b610f5c8585856117d2565b60019150509392505050565b5f610f716118c2565b7f0000000000000000000000000000000000000000000000000000000000000000610f9c9190612b4d565b905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b610fd0611624565b610fd86118c6565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f61100e825f61155b565b9050919050565b5f600560149054906101000a900460ff16905090565b5f8061103683610fda565b905080841115611081578284826040517f79012fb200000000000000000000000000000000000000000000000000000000815260040161107893929190612b81565b60405180910390fd5b5f61108b856114c5565b90506110a06110986115b3565b858784611928565b809250505092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110f8611624565b6111015f611942565b565b61110b611624565b611113611a05565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80611148836113c1565b905080841115611193578284826040517f284ff66700000000000000000000000000000000000000000000000000000000815260040161118a93929190612b81565b60405180910390fd5b5f61119d856112aa565b90506111b26111aa6115b3565b858388611928565b809250505092915050565b6060600480546111cc90612835565b80601f01602080910402602001604051908101604052809291908181526020018280546111f890612835565b80156112435780601f1061121a57610100808354040283529160200191611243565b820191905f5260205f20905b81548152906001019060200180831161122657829003601f168201915b5050505050905090565b5f806112576115b3565b90506112648185856117d2565b600191505092915050565b6006818154811061127e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6112b682600161155b565b9050919050565b5f806112c8836113fc565b905080851115611313578285826040517ffe9cceec00000000000000000000000000000000000000000000000000000000815260040161130a93929190612b81565b60405180910390fd5b5f61131d866108d5565b905061133361132a6115b3565b86868985611a68565b80925050509392505050565b5f8061134a83611432565b905080851115611395578285826040517fb94abeec00000000000000000000000000000000000000000000000000000000815260040161138c93929190612b81565b60405180910390fd5b5f61139f86611003565b90506113b56113ac6115b3565b8686848a611a68565b80925050509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f6113f5825f6115cc565b9050919050565b5f61140e61140983611432565b611003565b9050919050565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f61143c826110ab565b9050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6114d0825f6115cc565b9050919050565b6114df611624565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361154f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161154691906126e4565b60405180910390fd5b61155881611942565b50565b5f6115ab600161156961078c565b6115739190612bb6565b61157b6118c2565b600a6115879190612d18565b61158f610d2e565b6115999190612bb6565b8486611a84909392919063ffffffff16565b905092915050565b5f33905090565b6115c78383836001611ad1565b505050565b5f61161c6115d86118c2565b600a6115e49190612d18565b6115ec610d2e565b6115f69190612bb6565b600161160061078c565b61160a9190612bb6565b8486611a84909392919063ffffffff16565b905092915050565b61162c6115b3565b73ffffffffffffffffffffffffffffffffffffffff1661164a611115565b73ffffffffffffffffffffffffffffffffffffffff16146116a95761166d6115b3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116a091906126e4565b60405180910390fd5b565b6116b3611015565b156116ea576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6116f98383836001611ca0565b61173a57826040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161173191906126e4565b60405180910390fd5b505050565b5f61174a8484611443565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156117cc57818110156117bd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016117b493929190612b81565b60405180910390fd5b6117cb84848484035f611ad1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611842575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161183991906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b2575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016118a991906126e4565b60405180910390fd5b6118bd838383611d02565b505050565b5f90565b6118ce611f1b565b5f600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6119116115b3565b60405161191e91906126e4565b60405180910390a1565b6119306116ab565b61193c84848484611f5b565b50505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611a0d6116ab565b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a516115b3565b604051611a5e91906126e4565b60405180910390a1565b611a706116ab565b611a7d8585858585611fdc565b5050505050565b5f611ab2611a91836120b4565b8015611aad57505f8480611aa857611aa7612d62565b5b868809115b6120e1565b611abd8686866120ec565b611ac79190612bb6565b9050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b41575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611b3891906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bb1575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611ba891906126e4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c9a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c91919061241b565b60405180910390a35b50505050565b5f8063a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f808b5af1925060015f51148316611cf4578383151615611ce8573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d52578060025f828254611d469190612bb6565b92505081905550611e20565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ddb578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611dd293929190612b81565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e67578060025f8282540392505081905550611eb1565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f0e919061241b565b60405180910390a3505050565b611f23611015565b611f59576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611f6584836121cb565b611f6f83826121e2565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051611fce929190612d8f565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461201b5761201a83868361173f565b5b6120258382612261565b61202f84836122e0565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db85856040516120a5929190612d8f565b60405180910390a45050505050565b5f600160028360038111156120cc576120cb612db6565b5b6120d69190612de3565b60ff16149050919050565b5f8115159050919050565b5f805f6120f986866122f6565b915091505f820361211e5783818161211457612113612d62565b5b04925050506121c4565b81841161213d5761213c6121375f861460126011612313565b61232c565b5b5f8486880990508181118303925080820391505f855f038616905080860495508083049250600181825f0304019050808402831792505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808402955050505050505b9392505050565b6121de6121d6610fa1565b83308461233d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612252575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161224991906126e4565b60405180910390fd5b61225d5f8383611d02565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d1575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122c891906126e4565b60405180910390fd5b6122dc825f83611d02565b5050565b6122f26122eb610fa1565b83836116ec565b5050565b5f805f198385098385029150818110828203039250509250929050565b5f61231d846120e1565b82841802821890509392505050565b634e487b715f52806020526024601cfd5b61234b848484846001612392565b61238c57836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161238391906126e4565b60405180910390fd5b50505050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f511483166123f05783831516156123e4573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f819050919050565b61241581612403565b82525050565b5f60208201905061242e5f83018461240c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247682612434565b612480818561243e565b935061249081856020860161244e565b6124998161245c565b840191505092915050565b5f6020820190508181035f8301526124bc818461246c565b905092915050565b5f80fd5b6124d181612403565b81146124db575f80fd5b50565b5f813590506124ec816124c8565b92915050565b5f60208284031215612507576125066124c4565b5b5f612514848285016124de565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125468261251d565b9050919050565b6125568161253c565b8114612560575f80fd5b50565b5f813590506125718161254d565b92915050565b5f806040838503121561258d5761258c6124c4565b5b5f61259a85828601612563565b92505060206125ab858286016124de565b9150509250929050565b5f8115159050919050565b6125c9816125b5565b82525050565b5f6020820190506125e25f8301846125c0565b92915050565b5f80604083850312156125fe576125fd6124c4565b5b5f61260b858286016124de565b925050602061261c858286016124de565b9150509250929050565b5f6020828403121561263b5761263a6124c4565b5b5f61264884828501612563565b91505092915050565b5f805f60608486031215612668576126676124c4565b5b5f61267586828701612563565b935050602061268686828701612563565b9250506040612697868287016124de565b9150509250925092565b5f60ff82169050919050565b6126b6816126a1565b82525050565b5f6020820190506126cf5f8301846126ad565b92915050565b6126de8161253c565b82525050565b5f6020820190506126f75f8301846126d5565b92915050565b5f8060408385031215612713576127126124c4565b5b5f612720858286016124de565b925050602061273185828601612563565b9150509250929050565b5f805f60608486031215612752576127516124c4565b5b5f61275f868287016124de565b935050602061277086828701612563565b925050604061278186828701612563565b9150509250925092565b5f80604083850312156127a1576127a06124c4565b5b5f6127ae85828601612563565b92505060206127bf85828601612563565b9150509250929050565b5f815190506127d7816124c8565b92915050565b5f602082840312156127f2576127f16124c4565b5b5f6127ff848285016127c9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061284c57607f821691505b60208210810361285f5761285e612808565b5b50919050565b7f496e76616c696420737472617465677920696e646578000000000000000000005f82015250565b5f61289960168361243e565b91506128a482612865565b602082019050919050565b5f6020820190508181035f8301526128c68161288d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5374726174656779206973206e6f7420616374697665000000000000000000005f82015250565b5f61292e60168361243e565b9150612939826128fa565b602082019050919050565b5f6020820190508181035f83015261295b81612922565b9050919050565b7f5374726174656779206e6f7420666f756e6420696e20616374697665207374725f8201527f6174656769657300000000000000000000000000000000000000000000000000602082015250565b5f6129bc60278361243e565b91506129c782612962565b604082019050919050565b5f6020820190508181035f8301526129e9816129b0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a2782612403565b9150612a3283612403565b9250828203905081811115612a4a57612a496129f0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f53747261746567792063616e6e6f74206265207a65726f2061646472657373005f82015250565b5f612ab1601f8361243e565b9150612abc82612a7d565b602082019050919050565b5f6020820190508181035f830152612ade81612aa5565b9050919050565b7f537472617465677920616c7265616479206163746976650000000000000000005f82015250565b5f612b1960178361243e565b9150612b2482612ae5565b602082019050919050565b5f6020820190508181035f830152612b4681612b0d565b9050919050565b5f612b57826126a1565b9150612b62836126a1565b9250828201905060ff811115612b7b57612b7a6129f0565b5b92915050565b5f606082019050612b945f8301866126d5565b612ba1602083018561240c565b612bae604083018461240c565b949350505050565b5f612bc082612403565b9150612bcb83612403565b9250828201905080821115612be357612be26129f0565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612c3e57808604811115612c1a57612c196129f0565b5b6001851615612c295780820291505b8081029050612c3785612be9565b9450612bfe565b94509492505050565b5f82612c565760019050612d11565b81612c63575f9050612d11565b8160018114612c795760028114612c8357612cb2565b6001915050612d11565b60ff841115612c9557612c946129f0565b5b8360020a915084821115612cac57612cab6129f0565b5b50612d11565b5060208310610133831016604e8410600b8410161715612ce75782820a905083811115612ce257612ce16129f0565b5b612d11565b612cf48484846001612bf5565b92509050818404811115612d0b57612d0a6129f0565b5b81810290505b9392505050565b5f612d2282612403565b9150612d2d836126a1565b9250612d5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c47565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f604082019050612da25f83018561240c565b612daf602083018461240c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f612ded826126a1565b9150612df8836126a1565b925082612e0857612e07612d62565b5b82820690509291505056fea2646970667358221220fa3bd3c51766bd22cbd04b38725598e4a5231c1d3036a24f4c2cd1f4cead250664736f6c634300081a0033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x36F8 CODESIZE SUB DUP1 PUSH2 0x36F8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x31 SWAP2 SWAP1 PUSH2 0x4F9 JUMP JUMPDEST CALLER DUP4 DUP4 DUP4 DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH2 0x44 SWAP2 SWAP1 PUSH2 0x78E JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH2 0x54 SWAP2 SWAP1 PUSH2 0x78E JUMP JUMPDEST POP POP POP PUSH0 DUP1 PUSH2 0x68 DUP4 PUSH2 0x17A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x78 JUMPI PUSH1 0x12 PUSH2 0x7A JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0xFF AND PUSH1 0xA0 DUP2 PUSH1 0xFF AND DUP2 MSTORE POP POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12E JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x86C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x13D DUP2 PUSH2 0x246 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP POP PUSH2 0x885 JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH2 0x18B PUSH2 0x309 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP PUSH0 DUP1 PUSH2 0x1E9 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH4 0x313CE567 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x312 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FD DUP4 PUSH2 0x333 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x218 JUMPI POP PUSH1 0x20 PUSH2 0x215 PUSH2 0x33A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x229 JUMPI POP PUSH1 0xFF DUP1 AND DUP2 PUSH0 SHR GT ISZERO JUMPDEST PUSH2 0x234 JUMPI PUSH0 DUP1 PUSH2 0x23A JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH0 SHR JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x40 PUSH0 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 GAS STATICCALL SWAP3 POP PUSH0 MLOAD SWAP2 POP PUSH1 0x20 MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 PUSH1 0x40 MSTORE POP JUMP JUMPDEST PUSH0 RETURNDATASIZE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x37B DUP3 PUSH2 0x352 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x38C DUP3 PUSH2 0x371 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x39C DUP2 PUSH2 0x382 JUMP JUMPDEST DUP2 EQ PUSH2 0x3A6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x3B7 DUP2 PUSH2 0x393 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x40B DUP3 PUSH2 0x3C5 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x42A JUMPI PUSH2 0x429 PUSH2 0x3D5 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x43C PUSH2 0x341 JUMP JUMPDEST SWAP1 POP PUSH2 0x448 DUP3 DUP3 PUSH2 0x402 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x467 JUMPI PUSH2 0x466 PUSH2 0x3D5 JUMP JUMPDEST JUMPDEST PUSH2 0x470 DUP3 PUSH2 0x3C5 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x49D PUSH2 0x498 DUP5 PUSH2 0x44D JUMP JUMPDEST PUSH2 0x433 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4B9 JUMPI PUSH2 0x4B8 PUSH2 0x3C1 JUMP JUMPDEST JUMPDEST PUSH2 0x4C4 DUP5 DUP3 DUP6 PUSH2 0x47D JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4E0 JUMPI PUSH2 0x4DF PUSH2 0x3BD JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x4F0 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x48B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x510 JUMPI PUSH2 0x50F PUSH2 0x34A JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x51D DUP7 DUP3 DUP8 ADD PUSH2 0x3A9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53E JUMPI PUSH2 0x53D PUSH2 0x34E JUMP JUMPDEST JUMPDEST PUSH2 0x54A DUP7 DUP3 DUP8 ADD PUSH2 0x4CC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x56B JUMPI PUSH2 0x56A PUSH2 0x34E JUMP JUMPDEST JUMPDEST PUSH2 0x577 DUP7 DUP3 DUP8 ADD PUSH2 0x4CC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x5CF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x5E2 JUMPI PUSH2 0x5E1 PUSH2 0x58B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH2 0x644 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x609 JUMP JUMPDEST PUSH2 0x64E DUP7 DUP4 PUSH2 0x609 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x692 PUSH2 0x68D PUSH2 0x688 DUP5 PUSH2 0x666 JUMP JUMPDEST PUSH2 0x66F JUMP JUMPDEST PUSH2 0x666 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6AB DUP4 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x6BF PUSH2 0x6B7 DUP3 PUSH2 0x699 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x615 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x6D3 PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x6DE DUP2 DUP5 DUP5 PUSH2 0x6A2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x701 JUMPI PUSH2 0x6F6 PUSH0 DUP3 PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x6E4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x746 JUMPI PUSH2 0x717 DUP2 PUSH2 0x5E8 JUMP JUMPDEST PUSH2 0x720 DUP5 PUSH2 0x5FA JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x72F JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x743 PUSH2 0x73B DUP6 PUSH2 0x5FA JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x6E3 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x766 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x74B JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x77E DUP4 DUP4 PUSH2 0x757 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x797 DUP3 PUSH2 0x581 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B0 JUMPI PUSH2 0x7AF PUSH2 0x3D5 JUMP JUMPDEST JUMPDEST PUSH2 0x7BA DUP3 SLOAD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x7C5 DUP3 DUP3 DUP6 PUSH2 0x705 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x7F6 JUMPI PUSH0 DUP5 ISZERO PUSH2 0x7E4 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x7EE DUP6 DUP3 PUSH2 0x773 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x855 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x804 DUP7 PUSH2 0x5E8 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x82B JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x806 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x848 JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x844 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x757 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x866 DUP2 PUSH2 0x371 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x87F PUSH0 DUP4 ADD DUP5 PUSH2 0x85D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x2E49 PUSH2 0x8AF PUSH0 CODECOPY PUSH0 PUSH2 0x985 ADD MSTORE PUSH0 PUSH2 0xF73 ADD MSTORE PUSH0 PUSH2 0xFA4 ADD MSTORE PUSH2 0x2E49 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x123 JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xD2581503 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD2581503 EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x6E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x710 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x740 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x770 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x620 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x680 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0xB20B2429 EQ PUSH2 0x560 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x5C0 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x4E2 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x402D267D GT PUSH2 0x175 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x432 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x480 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x3C8 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x1ED JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xC474691 EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x175188E8 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x223E5479 EQ PUSH2 0x340 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x28A JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x226 PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x233 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x244 PUSH2 0x811 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x251 SWAP2 SWAP1 PUSH2 0x24A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x26F SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x8A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x29F SWAP2 SWAP1 PUSH2 0x2577 JUMP JUMPDEST PUSH2 0x8B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B1 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2CF SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x8D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E1 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x304 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2FF SWAP2 SWAP1 PUSH2 0x25E8 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x320 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31B SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0xA1C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x32A PUSH2 0xD2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x337 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x355 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x376 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x371 SWAP2 SWAP1 PUSH2 0x2651 JUMP JUMPDEST PUSH2 0xF3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x383 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x394 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A1 SWAP2 SWAP1 PUSH2 0x26BC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B2 PUSH2 0xFA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3BF SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D0 PUSH2 0xFC8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3EC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3E7 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0xFDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x1003 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x429 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x447 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x46A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x465 SWAP2 SWAP1 PUSH2 0x26FD JUMP JUMPDEST PUSH2 0x102B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x477 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x495 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A7 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4B8 PUSH2 0x10F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4C2 PUSH2 0x1103 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4CC PUSH2 0x1115 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4D9 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4FC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4F7 SWAP2 SWAP1 PUSH2 0x26FD JUMP JUMPDEST PUSH2 0x113D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x51A PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x527 SWAP2 SWAP1 PUSH2 0x24A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x545 SWAP2 SWAP1 PUSH2 0x2577 JUMP JUMPDEST PUSH2 0x124D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x557 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x57A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x575 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x587 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5AA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5A5 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x12AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B7 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5DA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5D5 SWAP2 SWAP1 PUSH2 0x273B JUMP JUMPDEST PUSH2 0x12BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5E7 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x60A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x605 SWAP2 SWAP1 PUSH2 0x273B JUMP JUMPDEST PUSH2 0x133F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x617 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x63A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x635 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x13C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x647 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x66A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x665 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x677 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x69A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x695 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x13FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6A7 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6C5 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6FA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6F5 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x1432 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x707 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x72A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x725 SWAP2 SWAP1 PUSH2 0x278B JUMP JUMPDEST PUSH2 0x1443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x737 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x75A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x755 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x767 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x78A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x785 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x14D7 JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH2 0x795 PUSH2 0xFA1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x80C SWAP2 SWAP1 PUSH2 0x27DD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x820 SWAP1 PUSH2 0x2835 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x84C SWAP1 PUSH2 0x2835 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x897 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x86E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x897 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x87A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x8AC DUP3 PUSH0 PUSH2 0x155B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x8BD PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x8CA DUP2 DUP6 DUP6 PUSH2 0x15BA JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8E1 DUP3 PUSH1 0x1 PUSH2 0x15CC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8F0 PUSH2 0x1624 JUMP JUMPDEST PUSH2 0x8F8 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 POP DUP3 LT PUSH2 0x93F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x936 SWAP1 PUSH2 0x28AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x6 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x954 JUMPI PUSH2 0x953 PUSH2 0x28CD JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x9C9 DUP2 DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16EC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4C429193504AD3C2CF06E0F2297127FD05E32601D5555CE5FD7EAE9B77E4D1A DUP4 PUSH1 0x40 MLOAD PUSH2 0xA0F SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0xA24 PUSH2 0x1624 JUMP JUMPDEST PUSH2 0xA2C PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x7 PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAB5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAAC SWAP1 PUSH2 0x2944 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0xB4D JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xAF1 JUMPI PUSH2 0xAF0 PUSH2 0x28CD JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB40 JUMPI DUP1 SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0xB4D JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xAB9 JUMP JUMPDEST POP DUP1 PUSH2 0xB8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB85 SWAP1 PUSH2 0x29D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 DUP1 SLOAD SWAP1 POP PUSH2 0xBA0 SWAP2 SWAP1 PUSH2 0x2A1D JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xC4E JUMPI PUSH1 0x6 PUSH1 0x1 PUSH1 0x6 DUP1 SLOAD SWAP1 POP PUSH2 0xBBB SWAP2 SWAP1 PUSH2 0x2A1D JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0xBCC JUMPI PUSH2 0xBCB PUSH2 0x28CD JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x6 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xC08 JUMPI PUSH2 0xC07 PUSH2 0x28CD JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x6 DUP1 SLOAD DUP1 PUSH2 0xC60 JUMPI PUSH2 0xC5F PUSH2 0x2A50 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE PUSH0 PUSH1 0x7 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9A1DB4B80C32706328728508C941A6B954F31EB5AFFD32F236C1FD405F8FEA4 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xD3F PUSH2 0x1624 JUMP JUMPDEST PUSH2 0xD47 PUSH2 0x16AB JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xDB5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDAC SWAP1 PUSH2 0x2AC7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE3F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE36 SWAP1 PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x7 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3F008FD510EAE7A9E7BEE13513D7B83BEF8003D488B5A3D0B0DA4DE71D6846F1 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0xF44 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0xF51 DUP6 DUP3 DUP6 PUSH2 0x173F JUMP JUMPDEST PUSH2 0xF5C DUP6 DUP6 DUP6 PUSH2 0x17D2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xF71 PUSH2 0x18C2 JUMP JUMPDEST PUSH32 0x0 PUSH2 0xF9C SWAP2 SWAP1 PUSH2 0x2B4D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFD0 PUSH2 0x1624 JUMP JUMPDEST PUSH2 0xFD8 PUSH2 0x18C6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x100E DUP3 PUSH0 PUSH2 0x155B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1036 DUP4 PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1081 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH32 0x79012FB200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1078 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x108B DUP6 PUSH2 0x14C5 JUMP JUMPDEST SWAP1 POP PUSH2 0x10A0 PUSH2 0x1098 PUSH2 0x15B3 JUMP JUMPDEST DUP6 DUP8 DUP5 PUSH2 0x1928 JUMP JUMPDEST DUP1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x10F8 PUSH2 0x1624 JUMP JUMPDEST PUSH2 0x1101 PUSH0 PUSH2 0x1942 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x110B PUSH2 0x1624 JUMP JUMPDEST PUSH2 0x1113 PUSH2 0x1A05 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1148 DUP4 PUSH2 0x13C1 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1193 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH32 0x284FF66700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x118A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x119D DUP6 PUSH2 0x12AA JUMP JUMPDEST SWAP1 POP PUSH2 0x11B2 PUSH2 0x11AA PUSH2 0x15B3 JUMP JUMPDEST DUP6 DUP4 DUP9 PUSH2 0x1928 JUMP JUMPDEST DUP1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x11CC SWAP1 PUSH2 0x2835 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x11F8 SWAP1 PUSH2 0x2835 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1243 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x121A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1243 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1226 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1257 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1264 DUP2 DUP6 DUP6 PUSH2 0x17D2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x127E JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH0 PUSH2 0x12B6 DUP3 PUSH1 0x1 PUSH2 0x155B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12C8 DUP4 PUSH2 0x13FC JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1313 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH32 0xFE9CCEEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x130A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x131D DUP7 PUSH2 0x8D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1333 PUSH2 0x132A PUSH2 0x15B3 JUMP JUMPDEST DUP7 DUP7 DUP10 DUP6 PUSH2 0x1A68 JUMP JUMPDEST DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x134A DUP4 PUSH2 0x1432 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1395 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH32 0xB94ABEEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x138C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x139F DUP7 PUSH2 0x1003 JUMP JUMPDEST SWAP1 POP PUSH2 0x13B5 PUSH2 0x13AC PUSH2 0x15B3 JUMP JUMPDEST DUP7 DUP7 DUP5 DUP11 PUSH2 0x1A68 JUMP JUMPDEST DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x13F5 DUP3 PUSH0 PUSH2 0x15CC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x140E PUSH2 0x1409 DUP4 PUSH2 0x1432 JUMP JUMPDEST PUSH2 0x1003 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH0 PUSH2 0x143C DUP3 PUSH2 0x10AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x14D0 DUP3 PUSH0 PUSH2 0x15CC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14DF PUSH2 0x1624 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x154F JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1546 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1558 DUP2 PUSH2 0x1942 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x15AB PUSH1 0x1 PUSH2 0x1569 PUSH2 0x78C JUMP JUMPDEST PUSH2 0x1573 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST PUSH2 0x157B PUSH2 0x18C2 JUMP JUMPDEST PUSH1 0xA PUSH2 0x1587 SWAP2 SWAP1 PUSH2 0x2D18 JUMP JUMPDEST PUSH2 0x158F PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x1599 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST DUP5 DUP7 PUSH2 0x1A84 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x15C7 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AD1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x161C PUSH2 0x15D8 PUSH2 0x18C2 JUMP JUMPDEST PUSH1 0xA PUSH2 0x15E4 SWAP2 SWAP1 PUSH2 0x2D18 JUMP JUMPDEST PUSH2 0x15EC PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x15F6 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1600 PUSH2 0x78C JUMP JUMPDEST PUSH2 0x160A SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST DUP5 DUP7 PUSH2 0x1A84 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x162C PUSH2 0x15B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x164A PUSH2 0x1115 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x16A9 JUMPI PUSH2 0x166D PUSH2 0x15B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16A0 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x16B3 PUSH2 0x1015 JUMP JUMPDEST ISZERO PUSH2 0x16EA JUMPI PUSH1 0x40 MLOAD PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x16F9 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1CA0 JUMP JUMPDEST PUSH2 0x173A JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1731 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x174A DUP5 DUP5 PUSH2 0x1443 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x17CC JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x17BD JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17B4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17CB DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1AD1 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1842 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1839 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x18B2 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18A9 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18BD DUP4 DUP4 DUP4 PUSH2 0x1D02 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x18CE PUSH2 0x1F1B JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x1911 PUSH2 0x15B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x191E SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1930 PUSH2 0x16AB JUMP JUMPDEST PUSH2 0x193C DUP5 DUP5 DUP5 DUP5 PUSH2 0x1F5B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x1A0D PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1A51 PUSH2 0x15B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5E SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1A70 PUSH2 0x16AB JUMP JUMPDEST PUSH2 0x1A7D DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1FDC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1AB2 PUSH2 0x1A91 DUP4 PUSH2 0x20B4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1AAD JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x1AA8 JUMPI PUSH2 0x1AA7 PUSH2 0x2D62 JUMP JUMPDEST JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST PUSH2 0x20E1 JUMP JUMPDEST PUSH2 0x1ABD DUP7 DUP7 DUP7 PUSH2 0x20EC JUMP JUMPDEST PUSH2 0x1AC7 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B41 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B38 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1BB1 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BA8 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1C9A JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1C91 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 POP PUSH1 0x40 MLOAD DUP2 PUSH0 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP7 AND PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE PUSH1 0x20 PUSH0 PUSH1 0x44 PUSH0 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x1CF4 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x1CE8 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1D52 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1D46 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1E20 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x1DDB JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DD2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1E67 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1EB1 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x1F0E SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x1F23 PUSH2 0x1015 JUMP JUMPDEST PUSH2 0x1F59 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x1F65 DUP5 DUP4 PUSH2 0x21CB JUMP JUMPDEST PUSH2 0x1F6F DUP4 DUP3 PUSH2 0x21E2 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1FCE SWAP3 SWAP2 SWAP1 PUSH2 0x2D8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x201B JUMPI PUSH2 0x201A DUP4 DUP7 DUP4 PUSH2 0x173F JUMP JUMPDEST JUMPDEST PUSH2 0x2025 DUP4 DUP3 PUSH2 0x2261 JUMP JUMPDEST PUSH2 0x202F DUP5 DUP4 PUSH2 0x22E0 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x20A5 SWAP3 SWAP2 SWAP1 PUSH2 0x2D8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x20CC JUMPI PUSH2 0x20CB PUSH2 0x2DB6 JUMP JUMPDEST JUMPDEST PUSH2 0x20D6 SWAP2 SWAP1 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0xFF AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH2 0x20F9 DUP7 DUP7 PUSH2 0x22F6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 DUP3 SUB PUSH2 0x211E JUMPI DUP4 DUP2 DUP2 PUSH2 0x2114 JUMPI PUSH2 0x2113 PUSH2 0x2D62 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x21C4 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x213D JUMPI PUSH2 0x213C PUSH2 0x2137 PUSH0 DUP7 EQ PUSH1 0x12 PUSH1 0x11 PUSH2 0x2313 JUMP JUMPDEST PUSH2 0x232C JUMP JUMPDEST JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD SWAP1 POP DUP2 DUP2 GT DUP4 SUB SWAP3 POP DUP1 DUP3 SUB SWAP2 POP PUSH0 DUP6 PUSH0 SUB DUP7 AND SWAP1 POP DUP1 DUP7 DIV SWAP6 POP DUP1 DUP4 DIV SWAP3 POP PUSH1 0x1 DUP2 DUP3 PUSH0 SUB DIV ADD SWAP1 POP DUP1 DUP5 MUL DUP4 OR SWAP3 POP PUSH0 PUSH1 0x2 DUP8 PUSH1 0x3 MUL XOR SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP5 MUL SWAP6 POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x21DE PUSH2 0x21D6 PUSH2 0xFA1 JUMP JUMPDEST DUP4 ADDRESS DUP5 PUSH2 0x233D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2252 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2249 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x225D PUSH0 DUP4 DUP4 PUSH2 0x1D02 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22D1 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22C8 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22DC DUP3 PUSH0 DUP4 PUSH2 0x1D02 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x22F2 PUSH2 0x22EB PUSH2 0xFA1 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x16EC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD DUP4 DUP6 MUL SWAP2 POP DUP2 DUP2 LT DUP3 DUP3 SUB SUB SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x231D DUP5 PUSH2 0x20E1 JUMP JUMPDEST DUP3 DUP5 XOR MUL DUP3 XOR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x234B DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2392 JUMP JUMPDEST PUSH2 0x238C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2383 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 POP PUSH1 0x40 MLOAD DUP2 PUSH0 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP8 AND PUSH1 0x4 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP7 AND PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH0 PUSH1 0x64 PUSH0 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x23F0 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x23E4 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST DUP1 PUSH1 0x40 MSTORE PUSH0 PUSH1 0x60 MSTORE POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2415 DUP2 PUSH2 0x2403 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x242E PUSH0 DUP4 ADD DUP5 PUSH2 0x240C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2476 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x2480 DUP2 DUP6 PUSH2 0x243E JUMP JUMPDEST SWAP4 POP PUSH2 0x2490 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x244E JUMP JUMPDEST PUSH2 0x2499 DUP2 PUSH2 0x245C JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x24BC DUP2 DUP5 PUSH2 0x246C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x24D1 DUP2 PUSH2 0x2403 JUMP JUMPDEST DUP2 EQ PUSH2 0x24DB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x24EC DUP2 PUSH2 0x24C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2507 JUMPI PUSH2 0x2506 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2514 DUP5 DUP3 DUP6 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2546 DUP3 PUSH2 0x251D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2556 DUP2 PUSH2 0x253C JUMP JUMPDEST DUP2 EQ PUSH2 0x2560 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2571 DUP2 PUSH2 0x254D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x258D JUMPI PUSH2 0x258C PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x259A DUP6 DUP3 DUP7 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x25AB DUP6 DUP3 DUP7 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x25C9 DUP2 PUSH2 0x25B5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25E2 PUSH0 DUP4 ADD DUP5 PUSH2 0x25C0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25FE JUMPI PUSH2 0x25FD PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x260B DUP6 DUP3 DUP7 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x261C DUP6 DUP3 DUP7 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x263B JUMPI PUSH2 0x263A PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2648 DUP5 DUP3 DUP6 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2668 JUMPI PUSH2 0x2667 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2675 DUP7 DUP3 DUP8 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2686 DUP7 DUP3 DUP8 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2697 DUP7 DUP3 DUP8 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26B6 DUP2 PUSH2 0x26A1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x26CF PUSH0 DUP4 ADD DUP5 PUSH2 0x26AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x26DE DUP2 PUSH2 0x253C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x26F7 PUSH0 DUP4 ADD DUP5 PUSH2 0x26D5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2713 JUMPI PUSH2 0x2712 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2720 DUP6 DUP3 DUP7 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2731 DUP6 DUP3 DUP7 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2752 JUMPI PUSH2 0x2751 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x275F DUP7 DUP3 DUP8 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2770 DUP7 DUP3 DUP8 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2781 DUP7 DUP3 DUP8 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27A1 JUMPI PUSH2 0x27A0 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x27AE DUP6 DUP3 DUP7 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x27BF DUP6 DUP3 DUP7 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x27D7 DUP2 PUSH2 0x24C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27F2 JUMPI PUSH2 0x27F1 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x27FF DUP5 DUP3 DUP6 ADD PUSH2 0x27C9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x284C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x285F JUMPI PUSH2 0x285E PUSH2 0x2808 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420737472617465677920696E64657800000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2899 PUSH1 0x16 DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x28A4 DUP3 PUSH2 0x2865 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x28C6 DUP2 PUSH2 0x288D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x5374726174656779206973206E6F742061637469766500000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x292E PUSH1 0x16 DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x2939 DUP3 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x295B DUP2 PUSH2 0x2922 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5374726174656779206E6F7420666F756E6420696E2061637469766520737472 PUSH0 DUP3 ADD MSTORE PUSH32 0x6174656769657300000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x29BC PUSH1 0x27 DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x29C7 DUP3 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x29E9 DUP2 PUSH2 0x29B0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2A27 DUP3 PUSH2 0x2403 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A32 DUP4 PUSH2 0x2403 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x2A4A JUMPI PUSH2 0x2A49 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x53747261746567792063616E6E6F74206265207A65726F206164647265737300 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2AB1 PUSH1 0x1F DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x2ABC DUP3 PUSH2 0x2A7D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2ADE DUP2 PUSH2 0x2AA5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472617465677920616C726561647920616374697665000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2B19 PUSH1 0x17 DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x2B24 DUP3 PUSH2 0x2AE5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2B46 DUP2 PUSH2 0x2B0D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2B57 DUP3 PUSH2 0x26A1 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B62 DUP4 PUSH2 0x26A1 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x2B7B JUMPI PUSH2 0x2B7A PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2B94 PUSH0 DUP4 ADD DUP7 PUSH2 0x26D5 JUMP JUMPDEST PUSH2 0x2BA1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x240C JUMP JUMPDEST PUSH2 0x2BAE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x240C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2BC0 DUP3 PUSH2 0x2403 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BCB DUP4 PUSH2 0x2403 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2BE3 JUMPI PUSH2 0x2BE2 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 DUP3 SWAP2 POP DUP4 SWAP1 POP JUMPDEST PUSH1 0x1 DUP6 GT ISZERO PUSH2 0x2C3E JUMPI DUP1 DUP7 DIV DUP2 GT ISZERO PUSH2 0x2C1A JUMPI PUSH2 0x2C19 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x2C29 JUMPI DUP1 DUP3 MUL SWAP2 POP JUMPDEST DUP1 DUP2 MUL SWAP1 POP PUSH2 0x2C37 DUP6 PUSH2 0x2BE9 JUMP JUMPDEST SWAP5 POP PUSH2 0x2BFE JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2C56 JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x2D11 JUMP JUMPDEST DUP2 PUSH2 0x2C63 JUMPI PUSH0 SWAP1 POP PUSH2 0x2D11 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2C79 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x2C83 JUMPI PUSH2 0x2CB2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x2D11 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x2C95 JUMPI PUSH2 0x2C94 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x2 EXP SWAP2 POP DUP5 DUP3 GT ISZERO PUSH2 0x2CAC JUMPI PUSH2 0x2CAB PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST POP PUSH2 0x2D11 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x2CE7 JUMPI DUP3 DUP3 EXP SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0x2CE2 JUMPI PUSH2 0x2CE1 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST PUSH2 0x2D11 JUMP JUMPDEST PUSH2 0x2CF4 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2BF5 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 DUP5 DIV DUP2 GT ISZERO PUSH2 0x2D0B JUMPI PUSH2 0x2D0A PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST DUP2 DUP2 MUL SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2D22 DUP3 PUSH2 0x2403 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D2D DUP4 PUSH2 0x26A1 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP5 PUSH2 0x2C47 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2DA2 PUSH0 DUP4 ADD DUP6 PUSH2 0x240C JUMP JUMPDEST PUSH2 0x2DAF PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x240C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2DED DUP3 PUSH2 0x26A1 JUMP JUMPDEST SWAP2 POP PUSH2 0x2DF8 DUP4 PUSH2 0x26A1 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x2E08 JUMPI PUSH2 0x2E07 PUSH2 0x2D62 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL EXTCODESIZE 0xD3 0xC5 OR PUSH7 0xBD22CBD04B3872 SSTORE SWAP9 0xE4 0xA5 0x23 SHR SAR ADDRESS CALLDATASIZE LOG2 0x4F 0x4C 0x2C 0xD1 DELEGATECALL 0xCE 0xAD 0x25 MOD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"493:4019:20:-:0;;;1093:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1237:10;1181:6;1204:5;1211:7;1656:5:6;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;5558:12:8;5572:19;5595:28;5616:6;5595:20;;;:28;;:::i;:::-;5557:66;;;;5655:7;:28;;5681:2;5655:28;;;5665:13;5655:28;5633:50;;;;;;;;;;5702:6;5693:15;;;;;;;;;;5547:168;;5520:195;1297:1:0;1273:26;;:12;:26;;;1269:95;;1350:1;1322:31;;;;;;;;;;;:::i;:::-;;;;;;;;1269:95;1373:32;1392:12;1373:18;;;:32;;:::i;:::-;1225:187;1272:6:20::3;1263:15;;;;;;;;::::0;::::3;1093:192:::0;;;493:4019;;5858:613:8;5925:7;5934:19;5965:18;5986:29;:27;;;:29;;:::i;:::-;5965:50;;6026:12;6040:24;6070:132;6128:6;6149:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6070:36;;;:132;;:::i;:::-;6025:177;;;;;6212:38;6246:3;6212:33;;;:38;;:::i;:::-;6281:7;:46;;;;;6325:2;6292:29;:27;;;:29;;:::i;:::-;:35;;6281:46;:94;;;;;6360:15;6331:44;;6339:16;6331:25;;:44;;6281:94;6280:184;;6455:5;6462:1;6280:184;;;6396:4;6416:16;6408:25;;6280:184;6261:203;;;;;;;5858:613;;;:::o;2912:187:0:-;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;895:151:13:-;950:11;1025:4;1019:11;1012:18;;895:151;:::o;2929:374:12:-;3042:12;3056:15;3073;3212:4;3206;3199;3193:11;3186:4;3180;3176:15;3168:6;3161:5;3150:67;3139:78;;3247:4;3241:11;3230:22;;3282:4;3276:11;3265:22;;2929:374;;;;;:::o;1458:145:13:-;1583:3;1577:4;1570:17;1458:145;:::o;4505:152:12:-;4554:12;4625:16;4617:24;;4505:152;:::o;7:75:24:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:111::-;620:7;649:24;667:5;649:24;:::i;:::-;638:35;;568:111;;;:::o;685:152::-;773:39;806:5;773:39;:::i;:::-;766:5;763:50;753:78;;827:1;824;817:12;753:78;685:152;:::o;843:173::-;915:5;946:6;940:13;931:22;;962:48;1004:5;962:48;:::i;:::-;843:173;;;;:::o;1022:117::-;1131:1;1128;1121:12;1145:117;1254:1;1251;1244:12;1268:102;1309:6;1360:2;1356:7;1351:2;1344:5;1340:14;1336:28;1326:38;;1268:102;;;:::o;1376:180::-;1424:77;1421:1;1414:88;1521:4;1518:1;1511:15;1545:4;1542:1;1535:15;1562:281;1645:27;1667:4;1645:27;:::i;:::-;1637:6;1633:40;1775:6;1763:10;1760:22;1739:18;1727:10;1724:34;1721:62;1718:88;;;1786:18;;:::i;:::-;1718:88;1826:10;1822:2;1815:22;1605:238;1562:281;;:::o;1849:129::-;1883:6;1910:20;;:::i;:::-;1900:30;;1939:33;1967:4;1959:6;1939:33;:::i;:::-;1849:129;;;:::o;1984:308::-;2046:4;2136:18;2128:6;2125:30;2122:56;;;2158:18;;:::i;:::-;2122:56;2196:29;2218:6;2196:29;:::i;:::-;2188:37;;2280:4;2274;2270:15;2262:23;;1984:308;;;:::o;2298:139::-;2387:6;2382:3;2377;2371:23;2428:1;2419:6;2414:3;2410:16;2403:27;2298:139;;;:::o;2443:434::-;2532:5;2557:66;2573:49;2615:6;2573:49;:::i;:::-;2557:66;:::i;:::-;2548:75;;2646:6;2639:5;2632:21;2684:4;2677:5;2673:16;2722:3;2713:6;2708:3;2704:16;2701:25;2698:112;;;2729:79;;:::i;:::-;2698:112;2819:52;2864:6;2859:3;2854;2819:52;:::i;:::-;2538:339;2443:434;;;;;:::o;2897:355::-;2964:5;3013:3;3006:4;2998:6;2994:17;2990:27;2980:122;;3021:79;;:::i;:::-;2980:122;3131:6;3125:13;3156:90;3242:3;3234:6;3227:4;3219:6;3215:17;3156:90;:::i;:::-;3147:99;;2970:282;2897:355;;;;:::o;3258:1039::-;3381:6;3389;3397;3446:2;3434:9;3425:7;3421:23;3417:32;3414:119;;;3452:79;;:::i;:::-;3414:119;3572:1;3597:79;3668:7;3659:6;3648:9;3644:22;3597:79;:::i;:::-;3587:89;;3543:143;3746:2;3735:9;3731:18;3725:25;3777:18;3769:6;3766:30;3763:117;;;3799:79;;:::i;:::-;3763:117;3904:74;3970:7;3961:6;3950:9;3946:22;3904:74;:::i;:::-;3894:84;;3696:292;4048:2;4037:9;4033:18;4027:25;4079:18;4071:6;4068:30;4065:117;;;4101:79;;:::i;:::-;4065:117;4206:74;4272:7;4263:6;4252:9;4248:22;4206:74;:::i;:::-;4196:84;;3998:292;3258:1039;;;;;:::o;4303:99::-;4355:6;4389:5;4383:12;4373:22;;4303:99;;;:::o;4408:180::-;4456:77;4453:1;4446:88;4553:4;4550:1;4543:15;4577:4;4574:1;4567:15;4594:320;4638:6;4675:1;4669:4;4665:12;4655:22;;4722:1;4716:4;4712:12;4743:18;4733:81;;4799:4;4791:6;4787:17;4777:27;;4733:81;4861:2;4853:6;4850:14;4830:18;4827:38;4824:84;;4880:18;;:::i;:::-;4824:84;4645:269;4594:320;;;:::o;4920:141::-;4969:4;4992:3;4984:11;;5015:3;5012:1;5005:14;5049:4;5046:1;5036:18;5028:26;;4920:141;;;:::o;5067:93::-;5104:6;5151:2;5146;5139:5;5135:14;5131:23;5121:33;;5067:93;;;:::o;5166:107::-;5210:8;5260:5;5254:4;5250:16;5229:37;;5166:107;;;;:::o;5279:393::-;5348:6;5398:1;5386:10;5382:18;5421:97;5451:66;5440:9;5421:97;:::i;:::-;5539:39;5569:8;5558:9;5539:39;:::i;:::-;5527:51;;5611:4;5607:9;5600:5;5596:21;5587:30;;5660:4;5650:8;5646:19;5639:5;5636:30;5626:40;;5355:317;;5279:393;;;;;:::o;5678:77::-;5715:7;5744:5;5733:16;;5678:77;;;:::o;5761:60::-;5789:3;5810:5;5803:12;;5761:60;;;:::o;5827:142::-;5877:9;5910:53;5928:34;5937:24;5955:5;5937:24;:::i;:::-;5928:34;:::i;:::-;5910:53;:::i;:::-;5897:66;;5827:142;;;:::o;5975:75::-;6018:3;6039:5;6032:12;;5975:75;;;:::o;6056:269::-;6166:39;6197:7;6166:39;:::i;:::-;6227:91;6276:41;6300:16;6276:41;:::i;:::-;6268:6;6261:4;6255:11;6227:91;:::i;:::-;6221:4;6214:105;6132:193;6056:269;;;:::o;6331:73::-;6376:3;6331:73;:::o;6410:189::-;6487:32;;:::i;:::-;6528:65;6586:6;6578;6572:4;6528:65;:::i;:::-;6463:136;6410:189;;:::o;6605:186::-;6665:120;6682:3;6675:5;6672:14;6665:120;;;6736:39;6773:1;6766:5;6736:39;:::i;:::-;6709:1;6702:5;6698:13;6689:22;;6665:120;;;6605:186;;:::o;6797:543::-;6898:2;6893:3;6890:11;6887:446;;;6932:38;6964:5;6932:38;:::i;:::-;7016:29;7034:10;7016:29;:::i;:::-;7006:8;7002:44;7199:2;7187:10;7184:18;7181:49;;;7220:8;7205:23;;7181:49;7243:80;7299:22;7317:3;7299:22;:::i;:::-;7289:8;7285:37;7272:11;7243:80;:::i;:::-;6902:431;;6887:446;6797:543;;;:::o;7346:117::-;7400:8;7450:5;7444:4;7440:16;7419:37;;7346:117;;;;:::o;7469:169::-;7513:6;7546:51;7594:1;7590:6;7582:5;7579:1;7575:13;7546:51;:::i;:::-;7542:56;7627:4;7621;7617:15;7607:25;;7520:118;7469:169;;;;:::o;7643:295::-;7719:4;7865:29;7890:3;7884:4;7865:29;:::i;:::-;7857:37;;7927:3;7924:1;7920:11;7914:4;7911:21;7903:29;;7643:295;;;;:::o;7943:1395::-;8060:37;8093:3;8060:37;:::i;:::-;8162:18;8154:6;8151:30;8148:56;;;8184:18;;:::i;:::-;8148:56;8228:38;8260:4;8254:11;8228:38;:::i;:::-;8313:67;8373:6;8365;8359:4;8313:67;:::i;:::-;8407:1;8431:4;8418:17;;8463:2;8455:6;8452:14;8480:1;8475:618;;;;9137:1;9154:6;9151:77;;;9203:9;9198:3;9194:19;9188:26;9179:35;;9151:77;9254:67;9314:6;9307:5;9254:67;:::i;:::-;9248:4;9241:81;9110:222;8445:887;;8475:618;8527:4;8523:9;8515:6;8511:22;8561:37;8593:4;8561:37;:::i;:::-;8620:1;8634:208;8648:7;8645:1;8642:14;8634:208;;;8727:9;8722:3;8718:19;8712:26;8704:6;8697:42;8778:1;8770:6;8766:14;8756:24;;8825:2;8814:9;8810:18;8797:31;;8671:4;8668:1;8664:12;8659:17;;8634:208;;;8870:6;8861:7;8858:19;8855:179;;;8928:9;8923:3;8919:19;8913:26;8971:48;9013:4;9005:6;9001:17;8990:9;8971:48;:::i;:::-;8963:6;8956:64;8878:156;8855:179;9080:1;9076;9068:6;9064:14;9060:22;9054:4;9047:36;8482:611;;;8445:887;;8035:1303;;;7943:1395;;:::o;9344:118::-;9431:24;9449:5;9431:24;:::i;:::-;9426:3;9419:37;9344:118;;:::o;9468:222::-;9561:4;9599:2;9588:9;9584:18;9576:26;;9612:71;9680:1;9669:9;9665:17;9656:6;9612:71;:::i;:::-;9468:222;;;;:::o;493:4019:20:-;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_approve_1010":{"entryPoint":6865,"id":1010,"parameterSlots":4,"returnSlots":0},"@_approve_950":{"entryPoint":5562,"id":950,"parameterSlots":3,"returnSlots":0},"@_burn_932":{"entryPoint":8801,"id":932,"parameterSlots":2,"returnSlots":0},"@_checkOwner_84":{"entryPoint":5668,"id":84,"parameterSlots":0,"returnSlots":0},"@_convertToAssets_1744":{"entryPoint":5467,"id":1744,"parameterSlots":2,"returnSlots":1},"@_convertToShares_1716":{"entryPoint":5580,"id":1716,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_1870":{"entryPoint":6338,"id":1870,"parameterSlots":0,"returnSlots":1},"@_deposit_1774":{"entryPoint":8027,"id":1774,"parameterSlots":4,"returnSlots":0},"@_deposit_6887":{"entryPoint":6440,"id":6887,"parameterSlots":4,"returnSlots":0},"@_mint_899":{"entryPoint":8674,"id":899,"parameterSlots":2,"returnSlots":0},"@_msgSender_2364":{"entryPoint":5555,"id":2364,"parameterSlots":0,"returnSlots":1},"@_pause_3033":{"entryPoint":6661,"id":3033,"parameterSlots":0,"returnSlots":0},"@_requireNotPaused_3004":{"entryPoint":5803,"id":3004,"parameterSlots":0,"returnSlots":0},"@_requirePaused_3017":{"entryPoint":7963,"id":3017,"parameterSlots":0,"returnSlots":0},"@_safeTransferFrom_2328":{"entryPoint":9106,"id":2328,"parameterSlots":5,"returnSlots":1},"@_safeTransfer_2303":{"entryPoint":7328,"id":2303,"parameterSlots":4,"returnSlots":1},"@_spendAllowance_1058":{"entryPoint":5951,"id":1058,"parameterSlots":3,"returnSlots":0},"@_transferIn_1842":{"entryPoint":8651,"id":1842,"parameterSlots":2,"returnSlots":0},"@_transferOut_1862":{"entryPoint":8928,"id":1862,"parameterSlots":2,"returnSlots":0},"@_transferOwnership_146":{"entryPoint":6466,"id":146,"parameterSlots":1,"returnSlots":0},"@_transfer_789":{"entryPoint":6098,"id":789,"parameterSlots":3,"returnSlots":0},"@_unpause_3049":{"entryPoint":6342,"id":3049,"parameterSlots":0,"returnSlots":0},"@_update_866":{"entryPoint":7426,"id":866,"parameterSlots":3,"returnSlots":0},"@_withdraw_1818":{"entryPoint":8156,"id":1818,"parameterSlots":5,"returnSlots":0},"@_withdraw_6915":{"entryPoint":6760,"id":6915,"parameterSlots":5,"returnSlots":0},"@activeStrategies_6616":{"entryPoint":4719,"id":6616,"parameterSlots":0,"returnSlots":0},"@addStrategy_6709":{"entryPoint":3383,"id":6709,"parameterSlots":1,"returnSlots":0},"@allowance_686":{"entryPoint":5187,"id":686,"parameterSlots":2,"returnSlots":1},"@approve_710":{"entryPoint":2227,"id":710,"parameterSlots":2,"returnSlots":1},"@asset_1334":{"entryPoint":4001,"id":1334,"parameterSlots":0,"returnSlots":1},"@balanceOf_645":{"entryPoint":4267,"id":645,"parameterSlots":1,"returnSlots":1},"@convertToAssets_1384":{"entryPoint":2209,"id":1384,"parameterSlots":1,"returnSlots":1},"@convertToShares_1368":{"entryPoint":5098,"id":1368,"parameterSlots":1,"returnSlots":1},"@decimals_1322":{"entryPoint":3944,"id":1322,"parameterSlots":0,"returnSlots":1},"@deployToStrategy_6842":{"entryPoint":2280,"id":6842,"parameterSlots":2,"returnSlots":0},"@deposit_1550":{"entryPoint":4139,"id":1550,"parameterSlots":2,"returnSlots":1},"@isActiveStrategy_6620":{"entryPoint":5141,"id":6620,"parameterSlots":0,"returnSlots":0},"@maxDeposit_1399":{"entryPoint":4058,"id":1399,"parameterSlots":1,"returnSlots":1},"@maxMint_1414":{"entryPoint":5057,"id":1414,"parameterSlots":1,"returnSlots":1},"@maxRedeem_1442":{"entryPoint":5170,"id":1442,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_1429":{"entryPoint":5116,"id":1429,"parameterSlots":1,"returnSlots":1},"@mint_1594":{"entryPoint":4413,"id":1594,"parameterSlots":2,"returnSlots":1},"@mul512_3102":{"entryPoint":8950,"id":3102,"parameterSlots":2,"returnSlots":2},"@mulDiv_3590":{"entryPoint":8428,"id":3590,"parameterSlots":3,"returnSlots":1},"@mulDiv_3627":{"entryPoint":6788,"id":3627,"parameterSlots":4,"returnSlots":1},"@name_605":{"entryPoint":2065,"id":605,"parameterSlots":0,"returnSlots":1},"@owner_67":{"entryPoint":4373,"id":67,"parameterSlots":0,"returnSlots":1},"@panic_2941":{"entryPoint":9004,"id":2941,"parameterSlots":1,"returnSlots":0},"@pause_6852":{"entryPoint":4355,"id":6852,"parameterSlots":0,"returnSlots":0},"@paused_2992":{"entryPoint":4117,"id":2992,"parameterSlots":0,"returnSlots":1},"@previewDeposit_1458":{"entryPoint":5317,"id":1458,"parameterSlots":1,"returnSlots":1},"@previewMint_1474":{"entryPoint":4778,"id":1474,"parameterSlots":1,"returnSlots":1},"@previewRedeem_1506":{"entryPoint":4099,"id":1506,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_1490":{"entryPoint":2261,"id":1490,"parameterSlots":1,"returnSlots":1},"@redeem_1688":{"entryPoint":4927,"id":1688,"parameterSlots":3,"returnSlots":1},"@removeStrategy_6803":{"entryPoint":2588,"id":6803,"parameterSlots":1,"returnSlots":0},"@renounceOwnership_98":{"entryPoint":4336,"id":98,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_1977":{"entryPoint":9021,"id":1977,"parameterSlots":4,"returnSlots":0},"@safeTransfer_1946":{"entryPoint":5868,"id":1946,"parameterSlots":3,"returnSlots":0},"@symbol_614":{"entryPoint":4541,"id":614,"parameterSlots":0,"returnSlots":1},"@ternary_3351":{"entryPoint":8979,"id":3351,"parameterSlots":3,"returnSlots":1},"@toUint_6483":{"entryPoint":8417,"id":6483,"parameterSlots":1,"returnSlots":1},"@totalAssets_1352":{"entryPoint":1932,"id":1352,"parameterSlots":0,"returnSlots":1},"@totalSupply_632":{"entryPoint":3374,"id":632,"parameterSlots":0,"returnSlots":1},"@transferFrom_742":{"entryPoint":3898,"id":742,"parameterSlots":3,"returnSlots":1},"@transferOwnership_126":{"entryPoint":5335,"id":126,"parameterSlots":1,"returnSlots":0},"@transfer_669":{"entryPoint":4685,"id":669,"parameterSlots":2,"returnSlots":1},"@unpause_6862":{"entryPoint":4040,"id":6862,"parameterSlots":0,"returnSlots":0},"@unsignedRoundsUp_4697":{"entryPoint":8372,"id":4697,"parameterSlots":1,"returnSlots":1},"@withdraw_1641":{"entryPoint":4797,"id":1641,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":9571,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":9438,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":10185,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":9766,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":10123,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":9809,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":9591,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":9458,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":10205,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":9981,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":10043,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":9704,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":9941,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":9664,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":9324,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b_to_t_string_memory_ptr_fromStack":{"entryPoint":10381,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2_to_t_string_memory_ptr_fromStack":{"entryPoint":10917,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa_to_t_string_memory_ptr_fromStack":{"entryPoint":11021,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a_to_t_string_memory_ptr_fromStack":{"entryPoint":10530,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273_to_t_string_memory_ptr_fromStack":{"entryPoint":10672,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":9228,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":9901,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":9956,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":11137,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":9679,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9380,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10415,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10951,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11055,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10564,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10706,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":9243,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":11663,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":9916,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":9268,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":9278,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":11190,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":11085,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":11253,"id":null,"parameterSlots":4,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":11544,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":11335,"id":null,"parameterSlots":3,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":10781,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":9532,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":9653,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":9501,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":9219,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":9889,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":9294,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":10293,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":11747,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":10736,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":11618,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":11702,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":10248,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":10832,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":10445,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":9412,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":9308,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_1_unsigned":{"entryPoint":11241,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b":{"entryPoint":10341,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2":{"entryPoint":10877,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa":{"entryPoint":10981,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a":{"entryPoint":10490,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273":{"entryPoint":10594,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":9549,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":9416,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:18598:24","nodeType":"YulBlock","src":"0:18598:24","statements":[{"body":{"nativeSrc":"52:32:24","nodeType":"YulBlock","src":"52:32:24","statements":[{"nativeSrc":"62:16:24","nodeType":"YulAssignment","src":"62:16:24","value":{"name":"value","nativeSrc":"73:5:24","nodeType":"YulIdentifier","src":"73:5:24"},"variableNames":[{"name":"cleaned","nativeSrc":"62:7:24","nodeType":"YulIdentifier","src":"62:7:24"}]}]},"name":"cleanup_t_uint256","nativeSrc":"7:77:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"34:5:24","nodeType":"YulTypedName","src":"34:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"44:7:24","nodeType":"YulTypedName","src":"44:7:24","type":""}],"src":"7:77:24"},{"body":{"nativeSrc":"155:53:24","nodeType":"YulBlock","src":"155:53:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"172:3:24","nodeType":"YulIdentifier","src":"172:3:24"},{"arguments":[{"name":"value","nativeSrc":"195:5:24","nodeType":"YulIdentifier","src":"195:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"177:17:24","nodeType":"YulIdentifier","src":"177:17:24"},"nativeSrc":"177:24:24","nodeType":"YulFunctionCall","src":"177:24:24"}],"functionName":{"name":"mstore","nativeSrc":"165:6:24","nodeType":"YulIdentifier","src":"165:6:24"},"nativeSrc":"165:37:24","nodeType":"YulFunctionCall","src":"165:37:24"},"nativeSrc":"165:37:24","nodeType":"YulExpressionStatement","src":"165:37:24"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"90:118:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"143:5:24","nodeType":"YulTypedName","src":"143:5:24","type":""},{"name":"pos","nativeSrc":"150:3:24","nodeType":"YulTypedName","src":"150:3:24","type":""}],"src":"90:118:24"},{"body":{"nativeSrc":"312:124:24","nodeType":"YulBlock","src":"312:124:24","statements":[{"nativeSrc":"322:26:24","nodeType":"YulAssignment","src":"322:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"334:9:24","nodeType":"YulIdentifier","src":"334:9:24"},{"kind":"number","nativeSrc":"345:2:24","nodeType":"YulLiteral","src":"345:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"330:3:24","nodeType":"YulIdentifier","src":"330:3:24"},"nativeSrc":"330:18:24","nodeType":"YulFunctionCall","src":"330:18:24"},"variableNames":[{"name":"tail","nativeSrc":"322:4:24","nodeType":"YulIdentifier","src":"322:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"402:6:24","nodeType":"YulIdentifier","src":"402:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"415:9:24","nodeType":"YulIdentifier","src":"415:9:24"},{"kind":"number","nativeSrc":"426:1:24","nodeType":"YulLiteral","src":"426:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"411:3:24","nodeType":"YulIdentifier","src":"411:3:24"},"nativeSrc":"411:17:24","nodeType":"YulFunctionCall","src":"411:17:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"358:43:24","nodeType":"YulIdentifier","src":"358:43:24"},"nativeSrc":"358:71:24","nodeType":"YulFunctionCall","src":"358:71:24"},"nativeSrc":"358:71:24","nodeType":"YulExpressionStatement","src":"358:71:24"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"214:222:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"284:9:24","nodeType":"YulTypedName","src":"284:9:24","type":""},{"name":"value0","nativeSrc":"296:6:24","nodeType":"YulTypedName","src":"296:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"307:4:24","nodeType":"YulTypedName","src":"307:4:24","type":""}],"src":"214:222:24"},{"body":{"nativeSrc":"501:40:24","nodeType":"YulBlock","src":"501:40:24","statements":[{"nativeSrc":"512:22:24","nodeType":"YulAssignment","src":"512:22:24","value":{"arguments":[{"name":"value","nativeSrc":"528:5:24","nodeType":"YulIdentifier","src":"528:5:24"}],"functionName":{"name":"mload","nativeSrc":"522:5:24","nodeType":"YulIdentifier","src":"522:5:24"},"nativeSrc":"522:12:24","nodeType":"YulFunctionCall","src":"522:12:24"},"variableNames":[{"name":"length","nativeSrc":"512:6:24","nodeType":"YulIdentifier","src":"512:6:24"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"442:99:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"484:5:24","nodeType":"YulTypedName","src":"484:5:24","type":""}],"returnVariables":[{"name":"length","nativeSrc":"494:6:24","nodeType":"YulTypedName","src":"494:6:24","type":""}],"src":"442:99:24"},{"body":{"nativeSrc":"643:73:24","nodeType":"YulBlock","src":"643:73:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"660:3:24","nodeType":"YulIdentifier","src":"660:3:24"},{"name":"length","nativeSrc":"665:6:24","nodeType":"YulIdentifier","src":"665:6:24"}],"functionName":{"name":"mstore","nativeSrc":"653:6:24","nodeType":"YulIdentifier","src":"653:6:24"},"nativeSrc":"653:19:24","nodeType":"YulFunctionCall","src":"653:19:24"},"nativeSrc":"653:19:24","nodeType":"YulExpressionStatement","src":"653:19:24"},{"nativeSrc":"681:29:24","nodeType":"YulAssignment","src":"681:29:24","value":{"arguments":[{"name":"pos","nativeSrc":"700:3:24","nodeType":"YulIdentifier","src":"700:3:24"},{"kind":"number","nativeSrc":"705:4:24","nodeType":"YulLiteral","src":"705:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"696:3:24","nodeType":"YulIdentifier","src":"696:3:24"},"nativeSrc":"696:14:24","nodeType":"YulFunctionCall","src":"696:14:24"},"variableNames":[{"name":"updated_pos","nativeSrc":"681:11:24","nodeType":"YulIdentifier","src":"681:11:24"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"547:169:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"615:3:24","nodeType":"YulTypedName","src":"615:3:24","type":""},{"name":"length","nativeSrc":"620:6:24","nodeType":"YulTypedName","src":"620:6:24","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"631:11:24","nodeType":"YulTypedName","src":"631:11:24","type":""}],"src":"547:169:24"},{"body":{"nativeSrc":"784:77:24","nodeType":"YulBlock","src":"784:77:24","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"801:3:24","nodeType":"YulIdentifier","src":"801:3:24"},{"name":"src","nativeSrc":"806:3:24","nodeType":"YulIdentifier","src":"806:3:24"},{"name":"length","nativeSrc":"811:6:24","nodeType":"YulIdentifier","src":"811:6:24"}],"functionName":{"name":"mcopy","nativeSrc":"795:5:24","nodeType":"YulIdentifier","src":"795:5:24"},"nativeSrc":"795:23:24","nodeType":"YulFunctionCall","src":"795:23:24"},"nativeSrc":"795:23:24","nodeType":"YulExpressionStatement","src":"795:23:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"838:3:24","nodeType":"YulIdentifier","src":"838:3:24"},{"name":"length","nativeSrc":"843:6:24","nodeType":"YulIdentifier","src":"843:6:24"}],"functionName":{"name":"add","nativeSrc":"834:3:24","nodeType":"YulIdentifier","src":"834:3:24"},"nativeSrc":"834:16:24","nodeType":"YulFunctionCall","src":"834:16:24"},{"kind":"number","nativeSrc":"852:1:24","nodeType":"YulLiteral","src":"852:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"827:6:24","nodeType":"YulIdentifier","src":"827:6:24"},"nativeSrc":"827:27:24","nodeType":"YulFunctionCall","src":"827:27:24"},"nativeSrc":"827:27:24","nodeType":"YulExpressionStatement","src":"827:27:24"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"722:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"766:3:24","nodeType":"YulTypedName","src":"766:3:24","type":""},{"name":"dst","nativeSrc":"771:3:24","nodeType":"YulTypedName","src":"771:3:24","type":""},{"name":"length","nativeSrc":"776:6:24","nodeType":"YulTypedName","src":"776:6:24","type":""}],"src":"722:139:24"},{"body":{"nativeSrc":"915:54:24","nodeType":"YulBlock","src":"915:54:24","statements":[{"nativeSrc":"925:38:24","nodeType":"YulAssignment","src":"925:38:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"943:5:24","nodeType":"YulIdentifier","src":"943:5:24"},{"kind":"number","nativeSrc":"950:2:24","nodeType":"YulLiteral","src":"950:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"939:3:24","nodeType":"YulIdentifier","src":"939:3:24"},"nativeSrc":"939:14:24","nodeType":"YulFunctionCall","src":"939:14:24"},{"arguments":[{"kind":"number","nativeSrc":"959:2:24","nodeType":"YulLiteral","src":"959:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"955:3:24","nodeType":"YulIdentifier","src":"955:3:24"},"nativeSrc":"955:7:24","nodeType":"YulFunctionCall","src":"955:7:24"}],"functionName":{"name":"and","nativeSrc":"935:3:24","nodeType":"YulIdentifier","src":"935:3:24"},"nativeSrc":"935:28:24","nodeType":"YulFunctionCall","src":"935:28:24"},"variableNames":[{"name":"result","nativeSrc":"925:6:24","nodeType":"YulIdentifier","src":"925:6:24"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"867:102:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"898:5:24","nodeType":"YulTypedName","src":"898:5:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"908:6:24","nodeType":"YulTypedName","src":"908:6:24","type":""}],"src":"867:102:24"},{"body":{"nativeSrc":"1067:285:24","nodeType":"YulBlock","src":"1067:285:24","statements":[{"nativeSrc":"1077:53:24","nodeType":"YulVariableDeclaration","src":"1077:53:24","value":{"arguments":[{"name":"value","nativeSrc":"1124:5:24","nodeType":"YulIdentifier","src":"1124:5:24"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"1091:32:24","nodeType":"YulIdentifier","src":"1091:32:24"},"nativeSrc":"1091:39:24","nodeType":"YulFunctionCall","src":"1091:39:24"},"variables":[{"name":"length","nativeSrc":"1081:6:24","nodeType":"YulTypedName","src":"1081:6:24","type":""}]},{"nativeSrc":"1139:78:24","nodeType":"YulAssignment","src":"1139:78:24","value":{"arguments":[{"name":"pos","nativeSrc":"1205:3:24","nodeType":"YulIdentifier","src":"1205:3:24"},{"name":"length","nativeSrc":"1210:6:24","nodeType":"YulIdentifier","src":"1210:6:24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1146:58:24","nodeType":"YulIdentifier","src":"1146:58:24"},"nativeSrc":"1146:71:24","nodeType":"YulFunctionCall","src":"1146:71:24"},"variableNames":[{"name":"pos","nativeSrc":"1139:3:24","nodeType":"YulIdentifier","src":"1139:3:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1265:5:24","nodeType":"YulIdentifier","src":"1265:5:24"},{"kind":"number","nativeSrc":"1272:4:24","nodeType":"YulLiteral","src":"1272:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1261:3:24","nodeType":"YulIdentifier","src":"1261:3:24"},"nativeSrc":"1261:16:24","nodeType":"YulFunctionCall","src":"1261:16:24"},{"name":"pos","nativeSrc":"1279:3:24","nodeType":"YulIdentifier","src":"1279:3:24"},{"name":"length","nativeSrc":"1284:6:24","nodeType":"YulIdentifier","src":"1284:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"1226:34:24","nodeType":"YulIdentifier","src":"1226:34:24"},"nativeSrc":"1226:65:24","nodeType":"YulFunctionCall","src":"1226:65:24"},"nativeSrc":"1226:65:24","nodeType":"YulExpressionStatement","src":"1226:65:24"},{"nativeSrc":"1300:46:24","nodeType":"YulAssignment","src":"1300:46:24","value":{"arguments":[{"name":"pos","nativeSrc":"1311:3:24","nodeType":"YulIdentifier","src":"1311:3:24"},{"arguments":[{"name":"length","nativeSrc":"1338:6:24","nodeType":"YulIdentifier","src":"1338:6:24"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"1316:21:24","nodeType":"YulIdentifier","src":"1316:21:24"},"nativeSrc":"1316:29:24","nodeType":"YulFunctionCall","src":"1316:29:24"}],"functionName":{"name":"add","nativeSrc":"1307:3:24","nodeType":"YulIdentifier","src":"1307:3:24"},"nativeSrc":"1307:39:24","nodeType":"YulFunctionCall","src":"1307:39:24"},"variableNames":[{"name":"end","nativeSrc":"1300:3:24","nodeType":"YulIdentifier","src":"1300:3:24"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"975:377:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1048:5:24","nodeType":"YulTypedName","src":"1048:5:24","type":""},{"name":"pos","nativeSrc":"1055:3:24","nodeType":"YulTypedName","src":"1055:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1063:3:24","nodeType":"YulTypedName","src":"1063:3:24","type":""}],"src":"975:377:24"},{"body":{"nativeSrc":"1476:195:24","nodeType":"YulBlock","src":"1476:195:24","statements":[{"nativeSrc":"1486:26:24","nodeType":"YulAssignment","src":"1486:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1498:9:24","nodeType":"YulIdentifier","src":"1498:9:24"},{"kind":"number","nativeSrc":"1509:2:24","nodeType":"YulLiteral","src":"1509:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1494:3:24","nodeType":"YulIdentifier","src":"1494:3:24"},"nativeSrc":"1494:18:24","nodeType":"YulFunctionCall","src":"1494:18:24"},"variableNames":[{"name":"tail","nativeSrc":"1486:4:24","nodeType":"YulIdentifier","src":"1486:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1533:9:24","nodeType":"YulIdentifier","src":"1533:9:24"},{"kind":"number","nativeSrc":"1544:1:24","nodeType":"YulLiteral","src":"1544:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1529:3:24","nodeType":"YulIdentifier","src":"1529:3:24"},"nativeSrc":"1529:17:24","nodeType":"YulFunctionCall","src":"1529:17:24"},{"arguments":[{"name":"tail","nativeSrc":"1552:4:24","nodeType":"YulIdentifier","src":"1552:4:24"},{"name":"headStart","nativeSrc":"1558:9:24","nodeType":"YulIdentifier","src":"1558:9:24"}],"functionName":{"name":"sub","nativeSrc":"1548:3:24","nodeType":"YulIdentifier","src":"1548:3:24"},"nativeSrc":"1548:20:24","nodeType":"YulFunctionCall","src":"1548:20:24"}],"functionName":{"name":"mstore","nativeSrc":"1522:6:24","nodeType":"YulIdentifier","src":"1522:6:24"},"nativeSrc":"1522:47:24","nodeType":"YulFunctionCall","src":"1522:47:24"},"nativeSrc":"1522:47:24","nodeType":"YulExpressionStatement","src":"1522:47:24"},{"nativeSrc":"1578:86:24","nodeType":"YulAssignment","src":"1578:86:24","value":{"arguments":[{"name":"value0","nativeSrc":"1650:6:24","nodeType":"YulIdentifier","src":"1650:6:24"},{"name":"tail","nativeSrc":"1659:4:24","nodeType":"YulIdentifier","src":"1659:4:24"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"1586:63:24","nodeType":"YulIdentifier","src":"1586:63:24"},"nativeSrc":"1586:78:24","nodeType":"YulFunctionCall","src":"1586:78:24"},"variableNames":[{"name":"tail","nativeSrc":"1578:4:24","nodeType":"YulIdentifier","src":"1578:4:24"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1358:313:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1448:9:24","nodeType":"YulTypedName","src":"1448:9:24","type":""},{"name":"value0","nativeSrc":"1460:6:24","nodeType":"YulTypedName","src":"1460:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1471:4:24","nodeType":"YulTypedName","src":"1471:4:24","type":""}],"src":"1358:313:24"},{"body":{"nativeSrc":"1717:35:24","nodeType":"YulBlock","src":"1717:35:24","statements":[{"nativeSrc":"1727:19:24","nodeType":"YulAssignment","src":"1727:19:24","value":{"arguments":[{"kind":"number","nativeSrc":"1743:2:24","nodeType":"YulLiteral","src":"1743:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1737:5:24","nodeType":"YulIdentifier","src":"1737:5:24"},"nativeSrc":"1737:9:24","nodeType":"YulFunctionCall","src":"1737:9:24"},"variableNames":[{"name":"memPtr","nativeSrc":"1727:6:24","nodeType":"YulIdentifier","src":"1727:6:24"}]}]},"name":"allocate_unbounded","nativeSrc":"1677:75:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"1710:6:24","nodeType":"YulTypedName","src":"1710:6:24","type":""}],"src":"1677:75:24"},{"body":{"nativeSrc":"1847:28:24","nodeType":"YulBlock","src":"1847:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1864:1:24","nodeType":"YulLiteral","src":"1864:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1867:1:24","nodeType":"YulLiteral","src":"1867:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1857:6:24","nodeType":"YulIdentifier","src":"1857:6:24"},"nativeSrc":"1857:12:24","nodeType":"YulFunctionCall","src":"1857:12:24"},"nativeSrc":"1857:12:24","nodeType":"YulExpressionStatement","src":"1857:12:24"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"1758:117:24","nodeType":"YulFunctionDefinition","src":"1758:117:24"},{"body":{"nativeSrc":"1970:28:24","nodeType":"YulBlock","src":"1970:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1987:1:24","nodeType":"YulLiteral","src":"1987:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1990:1:24","nodeType":"YulLiteral","src":"1990:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1980:6:24","nodeType":"YulIdentifier","src":"1980:6:24"},"nativeSrc":"1980:12:24","nodeType":"YulFunctionCall","src":"1980:12:24"},"nativeSrc":"1980:12:24","nodeType":"YulExpressionStatement","src":"1980:12:24"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"1881:117:24","nodeType":"YulFunctionDefinition","src":"1881:117:24"},{"body":{"nativeSrc":"2047:79:24","nodeType":"YulBlock","src":"2047:79:24","statements":[{"body":{"nativeSrc":"2104:16:24","nodeType":"YulBlock","src":"2104:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2113:1:24","nodeType":"YulLiteral","src":"2113:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2116:1:24","nodeType":"YulLiteral","src":"2116:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2106:6:24","nodeType":"YulIdentifier","src":"2106:6:24"},"nativeSrc":"2106:12:24","nodeType":"YulFunctionCall","src":"2106:12:24"},"nativeSrc":"2106:12:24","nodeType":"YulExpressionStatement","src":"2106:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2070:5:24","nodeType":"YulIdentifier","src":"2070:5:24"},{"arguments":[{"name":"value","nativeSrc":"2095:5:24","nodeType":"YulIdentifier","src":"2095:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"2077:17:24","nodeType":"YulIdentifier","src":"2077:17:24"},"nativeSrc":"2077:24:24","nodeType":"YulFunctionCall","src":"2077:24:24"}],"functionName":{"name":"eq","nativeSrc":"2067:2:24","nodeType":"YulIdentifier","src":"2067:2:24"},"nativeSrc":"2067:35:24","nodeType":"YulFunctionCall","src":"2067:35:24"}],"functionName":{"name":"iszero","nativeSrc":"2060:6:24","nodeType":"YulIdentifier","src":"2060:6:24"},"nativeSrc":"2060:43:24","nodeType":"YulFunctionCall","src":"2060:43:24"},"nativeSrc":"2057:63:24","nodeType":"YulIf","src":"2057:63:24"}]},"name":"validator_revert_t_uint256","nativeSrc":"2004:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2040:5:24","nodeType":"YulTypedName","src":"2040:5:24","type":""}],"src":"2004:122:24"},{"body":{"nativeSrc":"2184:87:24","nodeType":"YulBlock","src":"2184:87:24","statements":[{"nativeSrc":"2194:29:24","nodeType":"YulAssignment","src":"2194:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"2216:6:24","nodeType":"YulIdentifier","src":"2216:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"2203:12:24","nodeType":"YulIdentifier","src":"2203:12:24"},"nativeSrc":"2203:20:24","nodeType":"YulFunctionCall","src":"2203:20:24"},"variableNames":[{"name":"value","nativeSrc":"2194:5:24","nodeType":"YulIdentifier","src":"2194:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2259:5:24","nodeType":"YulIdentifier","src":"2259:5:24"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"2232:26:24","nodeType":"YulIdentifier","src":"2232:26:24"},"nativeSrc":"2232:33:24","nodeType":"YulFunctionCall","src":"2232:33:24"},"nativeSrc":"2232:33:24","nodeType":"YulExpressionStatement","src":"2232:33:24"}]},"name":"abi_decode_t_uint256","nativeSrc":"2132:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2162:6:24","nodeType":"YulTypedName","src":"2162:6:24","type":""},{"name":"end","nativeSrc":"2170:3:24","nodeType":"YulTypedName","src":"2170:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2178:5:24","nodeType":"YulTypedName","src":"2178:5:24","type":""}],"src":"2132:139:24"},{"body":{"nativeSrc":"2343:263:24","nodeType":"YulBlock","src":"2343:263:24","statements":[{"body":{"nativeSrc":"2389:83:24","nodeType":"YulBlock","src":"2389:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"2391:77:24","nodeType":"YulIdentifier","src":"2391:77:24"},"nativeSrc":"2391:79:24","nodeType":"YulFunctionCall","src":"2391:79:24"},"nativeSrc":"2391:79:24","nodeType":"YulExpressionStatement","src":"2391:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2364:7:24","nodeType":"YulIdentifier","src":"2364:7:24"},{"name":"headStart","nativeSrc":"2373:9:24","nodeType":"YulIdentifier","src":"2373:9:24"}],"functionName":{"name":"sub","nativeSrc":"2360:3:24","nodeType":"YulIdentifier","src":"2360:3:24"},"nativeSrc":"2360:23:24","nodeType":"YulFunctionCall","src":"2360:23:24"},{"kind":"number","nativeSrc":"2385:2:24","nodeType":"YulLiteral","src":"2385:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2356:3:24","nodeType":"YulIdentifier","src":"2356:3:24"},"nativeSrc":"2356:32:24","nodeType":"YulFunctionCall","src":"2356:32:24"},"nativeSrc":"2353:119:24","nodeType":"YulIf","src":"2353:119:24"},{"nativeSrc":"2482:117:24","nodeType":"YulBlock","src":"2482:117:24","statements":[{"nativeSrc":"2497:15:24","nodeType":"YulVariableDeclaration","src":"2497:15:24","value":{"kind":"number","nativeSrc":"2511:1:24","nodeType":"YulLiteral","src":"2511:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2501:6:24","nodeType":"YulTypedName","src":"2501:6:24","type":""}]},{"nativeSrc":"2526:63:24","nodeType":"YulAssignment","src":"2526:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2561:9:24","nodeType":"YulIdentifier","src":"2561:9:24"},{"name":"offset","nativeSrc":"2572:6:24","nodeType":"YulIdentifier","src":"2572:6:24"}],"functionName":{"name":"add","nativeSrc":"2557:3:24","nodeType":"YulIdentifier","src":"2557:3:24"},"nativeSrc":"2557:22:24","nodeType":"YulFunctionCall","src":"2557:22:24"},{"name":"dataEnd","nativeSrc":"2581:7:24","nodeType":"YulIdentifier","src":"2581:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"2536:20:24","nodeType":"YulIdentifier","src":"2536:20:24"},"nativeSrc":"2536:53:24","nodeType":"YulFunctionCall","src":"2536:53:24"},"variableNames":[{"name":"value0","nativeSrc":"2526:6:24","nodeType":"YulIdentifier","src":"2526:6:24"}]}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2277:329:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2313:9:24","nodeType":"YulTypedName","src":"2313:9:24","type":""},{"name":"dataEnd","nativeSrc":"2324:7:24","nodeType":"YulTypedName","src":"2324:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2336:6:24","nodeType":"YulTypedName","src":"2336:6:24","type":""}],"src":"2277:329:24"},{"body":{"nativeSrc":"2657:81:24","nodeType":"YulBlock","src":"2657:81:24","statements":[{"nativeSrc":"2667:65:24","nodeType":"YulAssignment","src":"2667:65:24","value":{"arguments":[{"name":"value","nativeSrc":"2682:5:24","nodeType":"YulIdentifier","src":"2682:5:24"},{"kind":"number","nativeSrc":"2689:42:24","nodeType":"YulLiteral","src":"2689:42:24","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"2678:3:24","nodeType":"YulIdentifier","src":"2678:3:24"},"nativeSrc":"2678:54:24","nodeType":"YulFunctionCall","src":"2678:54:24"},"variableNames":[{"name":"cleaned","nativeSrc":"2667:7:24","nodeType":"YulIdentifier","src":"2667:7:24"}]}]},"name":"cleanup_t_uint160","nativeSrc":"2612:126:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2639:5:24","nodeType":"YulTypedName","src":"2639:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"2649:7:24","nodeType":"YulTypedName","src":"2649:7:24","type":""}],"src":"2612:126:24"},{"body":{"nativeSrc":"2789:51:24","nodeType":"YulBlock","src":"2789:51:24","statements":[{"nativeSrc":"2799:35:24","nodeType":"YulAssignment","src":"2799:35:24","value":{"arguments":[{"name":"value","nativeSrc":"2828:5:24","nodeType":"YulIdentifier","src":"2828:5:24"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"2810:17:24","nodeType":"YulIdentifier","src":"2810:17:24"},"nativeSrc":"2810:24:24","nodeType":"YulFunctionCall","src":"2810:24:24"},"variableNames":[{"name":"cleaned","nativeSrc":"2799:7:24","nodeType":"YulIdentifier","src":"2799:7:24"}]}]},"name":"cleanup_t_address","nativeSrc":"2744:96:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2771:5:24","nodeType":"YulTypedName","src":"2771:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"2781:7:24","nodeType":"YulTypedName","src":"2781:7:24","type":""}],"src":"2744:96:24"},{"body":{"nativeSrc":"2889:79:24","nodeType":"YulBlock","src":"2889:79:24","statements":[{"body":{"nativeSrc":"2946:16:24","nodeType":"YulBlock","src":"2946:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2955:1:24","nodeType":"YulLiteral","src":"2955:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2958:1:24","nodeType":"YulLiteral","src":"2958:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2948:6:24","nodeType":"YulIdentifier","src":"2948:6:24"},"nativeSrc":"2948:12:24","nodeType":"YulFunctionCall","src":"2948:12:24"},"nativeSrc":"2948:12:24","nodeType":"YulExpressionStatement","src":"2948:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2912:5:24","nodeType":"YulIdentifier","src":"2912:5:24"},{"arguments":[{"name":"value","nativeSrc":"2937:5:24","nodeType":"YulIdentifier","src":"2937:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"2919:17:24","nodeType":"YulIdentifier","src":"2919:17:24"},"nativeSrc":"2919:24:24","nodeType":"YulFunctionCall","src":"2919:24:24"}],"functionName":{"name":"eq","nativeSrc":"2909:2:24","nodeType":"YulIdentifier","src":"2909:2:24"},"nativeSrc":"2909:35:24","nodeType":"YulFunctionCall","src":"2909:35:24"}],"functionName":{"name":"iszero","nativeSrc":"2902:6:24","nodeType":"YulIdentifier","src":"2902:6:24"},"nativeSrc":"2902:43:24","nodeType":"YulFunctionCall","src":"2902:43:24"},"nativeSrc":"2899:63:24","nodeType":"YulIf","src":"2899:63:24"}]},"name":"validator_revert_t_address","nativeSrc":"2846:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2882:5:24","nodeType":"YulTypedName","src":"2882:5:24","type":""}],"src":"2846:122:24"},{"body":{"nativeSrc":"3026:87:24","nodeType":"YulBlock","src":"3026:87:24","statements":[{"nativeSrc":"3036:29:24","nodeType":"YulAssignment","src":"3036:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"3058:6:24","nodeType":"YulIdentifier","src":"3058:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"3045:12:24","nodeType":"YulIdentifier","src":"3045:12:24"},"nativeSrc":"3045:20:24","nodeType":"YulFunctionCall","src":"3045:20:24"},"variableNames":[{"name":"value","nativeSrc":"3036:5:24","nodeType":"YulIdentifier","src":"3036:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3101:5:24","nodeType":"YulIdentifier","src":"3101:5:24"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"3074:26:24","nodeType":"YulIdentifier","src":"3074:26:24"},"nativeSrc":"3074:33:24","nodeType":"YulFunctionCall","src":"3074:33:24"},"nativeSrc":"3074:33:24","nodeType":"YulExpressionStatement","src":"3074:33:24"}]},"name":"abi_decode_t_address","nativeSrc":"2974:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3004:6:24","nodeType":"YulTypedName","src":"3004:6:24","type":""},{"name":"end","nativeSrc":"3012:3:24","nodeType":"YulTypedName","src":"3012:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"3020:5:24","nodeType":"YulTypedName","src":"3020:5:24","type":""}],"src":"2974:139:24"},{"body":{"nativeSrc":"3202:391:24","nodeType":"YulBlock","src":"3202:391:24","statements":[{"body":{"nativeSrc":"3248:83:24","nodeType":"YulBlock","src":"3248:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3250:77:24","nodeType":"YulIdentifier","src":"3250:77:24"},"nativeSrc":"3250:79:24","nodeType":"YulFunctionCall","src":"3250:79:24"},"nativeSrc":"3250:79:24","nodeType":"YulExpressionStatement","src":"3250:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3223:7:24","nodeType":"YulIdentifier","src":"3223:7:24"},{"name":"headStart","nativeSrc":"3232:9:24","nodeType":"YulIdentifier","src":"3232:9:24"}],"functionName":{"name":"sub","nativeSrc":"3219:3:24","nodeType":"YulIdentifier","src":"3219:3:24"},"nativeSrc":"3219:23:24","nodeType":"YulFunctionCall","src":"3219:23:24"},{"kind":"number","nativeSrc":"3244:2:24","nodeType":"YulLiteral","src":"3244:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3215:3:24","nodeType":"YulIdentifier","src":"3215:3:24"},"nativeSrc":"3215:32:24","nodeType":"YulFunctionCall","src":"3215:32:24"},"nativeSrc":"3212:119:24","nodeType":"YulIf","src":"3212:119:24"},{"nativeSrc":"3341:117:24","nodeType":"YulBlock","src":"3341:117:24","statements":[{"nativeSrc":"3356:15:24","nodeType":"YulVariableDeclaration","src":"3356:15:24","value":{"kind":"number","nativeSrc":"3370:1:24","nodeType":"YulLiteral","src":"3370:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3360:6:24","nodeType":"YulTypedName","src":"3360:6:24","type":""}]},{"nativeSrc":"3385:63:24","nodeType":"YulAssignment","src":"3385:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3420:9:24","nodeType":"YulIdentifier","src":"3420:9:24"},{"name":"offset","nativeSrc":"3431:6:24","nodeType":"YulIdentifier","src":"3431:6:24"}],"functionName":{"name":"add","nativeSrc":"3416:3:24","nodeType":"YulIdentifier","src":"3416:3:24"},"nativeSrc":"3416:22:24","nodeType":"YulFunctionCall","src":"3416:22:24"},{"name":"dataEnd","nativeSrc":"3440:7:24","nodeType":"YulIdentifier","src":"3440:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"3395:20:24","nodeType":"YulIdentifier","src":"3395:20:24"},"nativeSrc":"3395:53:24","nodeType":"YulFunctionCall","src":"3395:53:24"},"variableNames":[{"name":"value0","nativeSrc":"3385:6:24","nodeType":"YulIdentifier","src":"3385:6:24"}]}]},{"nativeSrc":"3468:118:24","nodeType":"YulBlock","src":"3468:118:24","statements":[{"nativeSrc":"3483:16:24","nodeType":"YulVariableDeclaration","src":"3483:16:24","value":{"kind":"number","nativeSrc":"3497:2:24","nodeType":"YulLiteral","src":"3497:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"3487:6:24","nodeType":"YulTypedName","src":"3487:6:24","type":""}]},{"nativeSrc":"3513:63:24","nodeType":"YulAssignment","src":"3513:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3548:9:24","nodeType":"YulIdentifier","src":"3548:9:24"},{"name":"offset","nativeSrc":"3559:6:24","nodeType":"YulIdentifier","src":"3559:6:24"}],"functionName":{"name":"add","nativeSrc":"3544:3:24","nodeType":"YulIdentifier","src":"3544:3:24"},"nativeSrc":"3544:22:24","nodeType":"YulFunctionCall","src":"3544:22:24"},{"name":"dataEnd","nativeSrc":"3568:7:24","nodeType":"YulIdentifier","src":"3568:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"3523:20:24","nodeType":"YulIdentifier","src":"3523:20:24"},"nativeSrc":"3523:53:24","nodeType":"YulFunctionCall","src":"3523:53:24"},"variableNames":[{"name":"value1","nativeSrc":"3513:6:24","nodeType":"YulIdentifier","src":"3513:6:24"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"3119:474:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3164:9:24","nodeType":"YulTypedName","src":"3164:9:24","type":""},{"name":"dataEnd","nativeSrc":"3175:7:24","nodeType":"YulTypedName","src":"3175:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3187:6:24","nodeType":"YulTypedName","src":"3187:6:24","type":""},{"name":"value1","nativeSrc":"3195:6:24","nodeType":"YulTypedName","src":"3195:6:24","type":""}],"src":"3119:474:24"},{"body":{"nativeSrc":"3641:48:24","nodeType":"YulBlock","src":"3641:48:24","statements":[{"nativeSrc":"3651:32:24","nodeType":"YulAssignment","src":"3651:32:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3676:5:24","nodeType":"YulIdentifier","src":"3676:5:24"}],"functionName":{"name":"iszero","nativeSrc":"3669:6:24","nodeType":"YulIdentifier","src":"3669:6:24"},"nativeSrc":"3669:13:24","nodeType":"YulFunctionCall","src":"3669:13:24"}],"functionName":{"name":"iszero","nativeSrc":"3662:6:24","nodeType":"YulIdentifier","src":"3662:6:24"},"nativeSrc":"3662:21:24","nodeType":"YulFunctionCall","src":"3662:21:24"},"variableNames":[{"name":"cleaned","nativeSrc":"3651:7:24","nodeType":"YulIdentifier","src":"3651:7:24"}]}]},"name":"cleanup_t_bool","nativeSrc":"3599:90:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3623:5:24","nodeType":"YulTypedName","src":"3623:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"3633:7:24","nodeType":"YulTypedName","src":"3633:7:24","type":""}],"src":"3599:90:24"},{"body":{"nativeSrc":"3754:50:24","nodeType":"YulBlock","src":"3754:50:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3771:3:24","nodeType":"YulIdentifier","src":"3771:3:24"},{"arguments":[{"name":"value","nativeSrc":"3791:5:24","nodeType":"YulIdentifier","src":"3791:5:24"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"3776:14:24","nodeType":"YulIdentifier","src":"3776:14:24"},"nativeSrc":"3776:21:24","nodeType":"YulFunctionCall","src":"3776:21:24"}],"functionName":{"name":"mstore","nativeSrc":"3764:6:24","nodeType":"YulIdentifier","src":"3764:6:24"},"nativeSrc":"3764:34:24","nodeType":"YulFunctionCall","src":"3764:34:24"},"nativeSrc":"3764:34:24","nodeType":"YulExpressionStatement","src":"3764:34:24"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"3695:109:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3742:5:24","nodeType":"YulTypedName","src":"3742:5:24","type":""},{"name":"pos","nativeSrc":"3749:3:24","nodeType":"YulTypedName","src":"3749:3:24","type":""}],"src":"3695:109:24"},{"body":{"nativeSrc":"3902:118:24","nodeType":"YulBlock","src":"3902:118:24","statements":[{"nativeSrc":"3912:26:24","nodeType":"YulAssignment","src":"3912:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"3924:9:24","nodeType":"YulIdentifier","src":"3924:9:24"},{"kind":"number","nativeSrc":"3935:2:24","nodeType":"YulLiteral","src":"3935:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3920:3:24","nodeType":"YulIdentifier","src":"3920:3:24"},"nativeSrc":"3920:18:24","nodeType":"YulFunctionCall","src":"3920:18:24"},"variableNames":[{"name":"tail","nativeSrc":"3912:4:24","nodeType":"YulIdentifier","src":"3912:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"3986:6:24","nodeType":"YulIdentifier","src":"3986:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"3999:9:24","nodeType":"YulIdentifier","src":"3999:9:24"},{"kind":"number","nativeSrc":"4010:1:24","nodeType":"YulLiteral","src":"4010:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3995:3:24","nodeType":"YulIdentifier","src":"3995:3:24"},"nativeSrc":"3995:17:24","nodeType":"YulFunctionCall","src":"3995:17:24"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"3948:37:24","nodeType":"YulIdentifier","src":"3948:37:24"},"nativeSrc":"3948:65:24","nodeType":"YulFunctionCall","src":"3948:65:24"},"nativeSrc":"3948:65:24","nodeType":"YulExpressionStatement","src":"3948:65:24"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"3810:210:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3874:9:24","nodeType":"YulTypedName","src":"3874:9:24","type":""},{"name":"value0","nativeSrc":"3886:6:24","nodeType":"YulTypedName","src":"3886:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3897:4:24","nodeType":"YulTypedName","src":"3897:4:24","type":""}],"src":"3810:210:24"},{"body":{"nativeSrc":"4109:391:24","nodeType":"YulBlock","src":"4109:391:24","statements":[{"body":{"nativeSrc":"4155:83:24","nodeType":"YulBlock","src":"4155:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"4157:77:24","nodeType":"YulIdentifier","src":"4157:77:24"},"nativeSrc":"4157:79:24","nodeType":"YulFunctionCall","src":"4157:79:24"},"nativeSrc":"4157:79:24","nodeType":"YulExpressionStatement","src":"4157:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4130:7:24","nodeType":"YulIdentifier","src":"4130:7:24"},{"name":"headStart","nativeSrc":"4139:9:24","nodeType":"YulIdentifier","src":"4139:9:24"}],"functionName":{"name":"sub","nativeSrc":"4126:3:24","nodeType":"YulIdentifier","src":"4126:3:24"},"nativeSrc":"4126:23:24","nodeType":"YulFunctionCall","src":"4126:23:24"},{"kind":"number","nativeSrc":"4151:2:24","nodeType":"YulLiteral","src":"4151:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4122:3:24","nodeType":"YulIdentifier","src":"4122:3:24"},"nativeSrc":"4122:32:24","nodeType":"YulFunctionCall","src":"4122:32:24"},"nativeSrc":"4119:119:24","nodeType":"YulIf","src":"4119:119:24"},{"nativeSrc":"4248:117:24","nodeType":"YulBlock","src":"4248:117:24","statements":[{"nativeSrc":"4263:15:24","nodeType":"YulVariableDeclaration","src":"4263:15:24","value":{"kind":"number","nativeSrc":"4277:1:24","nodeType":"YulLiteral","src":"4277:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"4267:6:24","nodeType":"YulTypedName","src":"4267:6:24","type":""}]},{"nativeSrc":"4292:63:24","nodeType":"YulAssignment","src":"4292:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4327:9:24","nodeType":"YulIdentifier","src":"4327:9:24"},{"name":"offset","nativeSrc":"4338:6:24","nodeType":"YulIdentifier","src":"4338:6:24"}],"functionName":{"name":"add","nativeSrc":"4323:3:24","nodeType":"YulIdentifier","src":"4323:3:24"},"nativeSrc":"4323:22:24","nodeType":"YulFunctionCall","src":"4323:22:24"},{"name":"dataEnd","nativeSrc":"4347:7:24","nodeType":"YulIdentifier","src":"4347:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"4302:20:24","nodeType":"YulIdentifier","src":"4302:20:24"},"nativeSrc":"4302:53:24","nodeType":"YulFunctionCall","src":"4302:53:24"},"variableNames":[{"name":"value0","nativeSrc":"4292:6:24","nodeType":"YulIdentifier","src":"4292:6:24"}]}]},{"nativeSrc":"4375:118:24","nodeType":"YulBlock","src":"4375:118:24","statements":[{"nativeSrc":"4390:16:24","nodeType":"YulVariableDeclaration","src":"4390:16:24","value":{"kind":"number","nativeSrc":"4404:2:24","nodeType":"YulLiteral","src":"4404:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"4394:6:24","nodeType":"YulTypedName","src":"4394:6:24","type":""}]},{"nativeSrc":"4420:63:24","nodeType":"YulAssignment","src":"4420:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4455:9:24","nodeType":"YulIdentifier","src":"4455:9:24"},{"name":"offset","nativeSrc":"4466:6:24","nodeType":"YulIdentifier","src":"4466:6:24"}],"functionName":{"name":"add","nativeSrc":"4451:3:24","nodeType":"YulIdentifier","src":"4451:3:24"},"nativeSrc":"4451:22:24","nodeType":"YulFunctionCall","src":"4451:22:24"},{"name":"dataEnd","nativeSrc":"4475:7:24","nodeType":"YulIdentifier","src":"4475:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"4430:20:24","nodeType":"YulIdentifier","src":"4430:20:24"},"nativeSrc":"4430:53:24","nodeType":"YulFunctionCall","src":"4430:53:24"},"variableNames":[{"name":"value1","nativeSrc":"4420:6:24","nodeType":"YulIdentifier","src":"4420:6:24"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nativeSrc":"4026:474:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4071:9:24","nodeType":"YulTypedName","src":"4071:9:24","type":""},{"name":"dataEnd","nativeSrc":"4082:7:24","nodeType":"YulTypedName","src":"4082:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4094:6:24","nodeType":"YulTypedName","src":"4094:6:24","type":""},{"name":"value1","nativeSrc":"4102:6:24","nodeType":"YulTypedName","src":"4102:6:24","type":""}],"src":"4026:474:24"},{"body":{"nativeSrc":"4572:263:24","nodeType":"YulBlock","src":"4572:263:24","statements":[{"body":{"nativeSrc":"4618:83:24","nodeType":"YulBlock","src":"4618:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"4620:77:24","nodeType":"YulIdentifier","src":"4620:77:24"},"nativeSrc":"4620:79:24","nodeType":"YulFunctionCall","src":"4620:79:24"},"nativeSrc":"4620:79:24","nodeType":"YulExpressionStatement","src":"4620:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4593:7:24","nodeType":"YulIdentifier","src":"4593:7:24"},{"name":"headStart","nativeSrc":"4602:9:24","nodeType":"YulIdentifier","src":"4602:9:24"}],"functionName":{"name":"sub","nativeSrc":"4589:3:24","nodeType":"YulIdentifier","src":"4589:3:24"},"nativeSrc":"4589:23:24","nodeType":"YulFunctionCall","src":"4589:23:24"},{"kind":"number","nativeSrc":"4614:2:24","nodeType":"YulLiteral","src":"4614:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4585:3:24","nodeType":"YulIdentifier","src":"4585:3:24"},"nativeSrc":"4585:32:24","nodeType":"YulFunctionCall","src":"4585:32:24"},"nativeSrc":"4582:119:24","nodeType":"YulIf","src":"4582:119:24"},{"nativeSrc":"4711:117:24","nodeType":"YulBlock","src":"4711:117:24","statements":[{"nativeSrc":"4726:15:24","nodeType":"YulVariableDeclaration","src":"4726:15:24","value":{"kind":"number","nativeSrc":"4740:1:24","nodeType":"YulLiteral","src":"4740:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"4730:6:24","nodeType":"YulTypedName","src":"4730:6:24","type":""}]},{"nativeSrc":"4755:63:24","nodeType":"YulAssignment","src":"4755:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4790:9:24","nodeType":"YulIdentifier","src":"4790:9:24"},{"name":"offset","nativeSrc":"4801:6:24","nodeType":"YulIdentifier","src":"4801:6:24"}],"functionName":{"name":"add","nativeSrc":"4786:3:24","nodeType":"YulIdentifier","src":"4786:3:24"},"nativeSrc":"4786:22:24","nodeType":"YulFunctionCall","src":"4786:22:24"},{"name":"dataEnd","nativeSrc":"4810:7:24","nodeType":"YulIdentifier","src":"4810:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"4765:20:24","nodeType":"YulIdentifier","src":"4765:20:24"},"nativeSrc":"4765:53:24","nodeType":"YulFunctionCall","src":"4765:53:24"},"variableNames":[{"name":"value0","nativeSrc":"4755:6:24","nodeType":"YulIdentifier","src":"4755:6:24"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4506:329:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4542:9:24","nodeType":"YulTypedName","src":"4542:9:24","type":""},{"name":"dataEnd","nativeSrc":"4553:7:24","nodeType":"YulTypedName","src":"4553:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4565:6:24","nodeType":"YulTypedName","src":"4565:6:24","type":""}],"src":"4506:329:24"},{"body":{"nativeSrc":"4941:519:24","nodeType":"YulBlock","src":"4941:519:24","statements":[{"body":{"nativeSrc":"4987:83:24","nodeType":"YulBlock","src":"4987:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"4989:77:24","nodeType":"YulIdentifier","src":"4989:77:24"},"nativeSrc":"4989:79:24","nodeType":"YulFunctionCall","src":"4989:79:24"},"nativeSrc":"4989:79:24","nodeType":"YulExpressionStatement","src":"4989:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4962:7:24","nodeType":"YulIdentifier","src":"4962:7:24"},{"name":"headStart","nativeSrc":"4971:9:24","nodeType":"YulIdentifier","src":"4971:9:24"}],"functionName":{"name":"sub","nativeSrc":"4958:3:24","nodeType":"YulIdentifier","src":"4958:3:24"},"nativeSrc":"4958:23:24","nodeType":"YulFunctionCall","src":"4958:23:24"},{"kind":"number","nativeSrc":"4983:2:24","nodeType":"YulLiteral","src":"4983:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"4954:3:24","nodeType":"YulIdentifier","src":"4954:3:24"},"nativeSrc":"4954:32:24","nodeType":"YulFunctionCall","src":"4954:32:24"},"nativeSrc":"4951:119:24","nodeType":"YulIf","src":"4951:119:24"},{"nativeSrc":"5080:117:24","nodeType":"YulBlock","src":"5080:117:24","statements":[{"nativeSrc":"5095:15:24","nodeType":"YulVariableDeclaration","src":"5095:15:24","value":{"kind":"number","nativeSrc":"5109:1:24","nodeType":"YulLiteral","src":"5109:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"5099:6:24","nodeType":"YulTypedName","src":"5099:6:24","type":""}]},{"nativeSrc":"5124:63:24","nodeType":"YulAssignment","src":"5124:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5159:9:24","nodeType":"YulIdentifier","src":"5159:9:24"},{"name":"offset","nativeSrc":"5170:6:24","nodeType":"YulIdentifier","src":"5170:6:24"}],"functionName":{"name":"add","nativeSrc":"5155:3:24","nodeType":"YulIdentifier","src":"5155:3:24"},"nativeSrc":"5155:22:24","nodeType":"YulFunctionCall","src":"5155:22:24"},{"name":"dataEnd","nativeSrc":"5179:7:24","nodeType":"YulIdentifier","src":"5179:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"5134:20:24","nodeType":"YulIdentifier","src":"5134:20:24"},"nativeSrc":"5134:53:24","nodeType":"YulFunctionCall","src":"5134:53:24"},"variableNames":[{"name":"value0","nativeSrc":"5124:6:24","nodeType":"YulIdentifier","src":"5124:6:24"}]}]},{"nativeSrc":"5207:118:24","nodeType":"YulBlock","src":"5207:118:24","statements":[{"nativeSrc":"5222:16:24","nodeType":"YulVariableDeclaration","src":"5222:16:24","value":{"kind":"number","nativeSrc":"5236:2:24","nodeType":"YulLiteral","src":"5236:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"5226:6:24","nodeType":"YulTypedName","src":"5226:6:24","type":""}]},{"nativeSrc":"5252:63:24","nodeType":"YulAssignment","src":"5252:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5287:9:24","nodeType":"YulIdentifier","src":"5287:9:24"},{"name":"offset","nativeSrc":"5298:6:24","nodeType":"YulIdentifier","src":"5298:6:24"}],"functionName":{"name":"add","nativeSrc":"5283:3:24","nodeType":"YulIdentifier","src":"5283:3:24"},"nativeSrc":"5283:22:24","nodeType":"YulFunctionCall","src":"5283:22:24"},{"name":"dataEnd","nativeSrc":"5307:7:24","nodeType":"YulIdentifier","src":"5307:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"5262:20:24","nodeType":"YulIdentifier","src":"5262:20:24"},"nativeSrc":"5262:53:24","nodeType":"YulFunctionCall","src":"5262:53:24"},"variableNames":[{"name":"value1","nativeSrc":"5252:6:24","nodeType":"YulIdentifier","src":"5252:6:24"}]}]},{"nativeSrc":"5335:118:24","nodeType":"YulBlock","src":"5335:118:24","statements":[{"nativeSrc":"5350:16:24","nodeType":"YulVariableDeclaration","src":"5350:16:24","value":{"kind":"number","nativeSrc":"5364:2:24","nodeType":"YulLiteral","src":"5364:2:24","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"5354:6:24","nodeType":"YulTypedName","src":"5354:6:24","type":""}]},{"nativeSrc":"5380:63:24","nodeType":"YulAssignment","src":"5380:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5415:9:24","nodeType":"YulIdentifier","src":"5415:9:24"},{"name":"offset","nativeSrc":"5426:6:24","nodeType":"YulIdentifier","src":"5426:6:24"}],"functionName":{"name":"add","nativeSrc":"5411:3:24","nodeType":"YulIdentifier","src":"5411:3:24"},"nativeSrc":"5411:22:24","nodeType":"YulFunctionCall","src":"5411:22:24"},{"name":"dataEnd","nativeSrc":"5435:7:24","nodeType":"YulIdentifier","src":"5435:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"5390:20:24","nodeType":"YulIdentifier","src":"5390:20:24"},"nativeSrc":"5390:53:24","nodeType":"YulFunctionCall","src":"5390:53:24"},"variableNames":[{"name":"value2","nativeSrc":"5380:6:24","nodeType":"YulIdentifier","src":"5380:6:24"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"4841:619:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4895:9:24","nodeType":"YulTypedName","src":"4895:9:24","type":""},{"name":"dataEnd","nativeSrc":"4906:7:24","nodeType":"YulTypedName","src":"4906:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4918:6:24","nodeType":"YulTypedName","src":"4918:6:24","type":""},{"name":"value1","nativeSrc":"4926:6:24","nodeType":"YulTypedName","src":"4926:6:24","type":""},{"name":"value2","nativeSrc":"4934:6:24","nodeType":"YulTypedName","src":"4934:6:24","type":""}],"src":"4841:619:24"},{"body":{"nativeSrc":"5509:43:24","nodeType":"YulBlock","src":"5509:43:24","statements":[{"nativeSrc":"5519:27:24","nodeType":"YulAssignment","src":"5519:27:24","value":{"arguments":[{"name":"value","nativeSrc":"5534:5:24","nodeType":"YulIdentifier","src":"5534:5:24"},{"kind":"number","nativeSrc":"5541:4:24","nodeType":"YulLiteral","src":"5541:4:24","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5530:3:24","nodeType":"YulIdentifier","src":"5530:3:24"},"nativeSrc":"5530:16:24","nodeType":"YulFunctionCall","src":"5530:16:24"},"variableNames":[{"name":"cleaned","nativeSrc":"5519:7:24","nodeType":"YulIdentifier","src":"5519:7:24"}]}]},"name":"cleanup_t_uint8","nativeSrc":"5466:86:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5491:5:24","nodeType":"YulTypedName","src":"5491:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"5501:7:24","nodeType":"YulTypedName","src":"5501:7:24","type":""}],"src":"5466:86:24"},{"body":{"nativeSrc":"5619:51:24","nodeType":"YulBlock","src":"5619:51:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"5636:3:24","nodeType":"YulIdentifier","src":"5636:3:24"},{"arguments":[{"name":"value","nativeSrc":"5657:5:24","nodeType":"YulIdentifier","src":"5657:5:24"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"5641:15:24","nodeType":"YulIdentifier","src":"5641:15:24"},"nativeSrc":"5641:22:24","nodeType":"YulFunctionCall","src":"5641:22:24"}],"functionName":{"name":"mstore","nativeSrc":"5629:6:24","nodeType":"YulIdentifier","src":"5629:6:24"},"nativeSrc":"5629:35:24","nodeType":"YulFunctionCall","src":"5629:35:24"},"nativeSrc":"5629:35:24","nodeType":"YulExpressionStatement","src":"5629:35:24"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nativeSrc":"5558:112:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5607:5:24","nodeType":"YulTypedName","src":"5607:5:24","type":""},{"name":"pos","nativeSrc":"5614:3:24","nodeType":"YulTypedName","src":"5614:3:24","type":""}],"src":"5558:112:24"},{"body":{"nativeSrc":"5770:120:24","nodeType":"YulBlock","src":"5770:120:24","statements":[{"nativeSrc":"5780:26:24","nodeType":"YulAssignment","src":"5780:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"5792:9:24","nodeType":"YulIdentifier","src":"5792:9:24"},{"kind":"number","nativeSrc":"5803:2:24","nodeType":"YulLiteral","src":"5803:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5788:3:24","nodeType":"YulIdentifier","src":"5788:3:24"},"nativeSrc":"5788:18:24","nodeType":"YulFunctionCall","src":"5788:18:24"},"variableNames":[{"name":"tail","nativeSrc":"5780:4:24","nodeType":"YulIdentifier","src":"5780:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"5856:6:24","nodeType":"YulIdentifier","src":"5856:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"5869:9:24","nodeType":"YulIdentifier","src":"5869:9:24"},{"kind":"number","nativeSrc":"5880:1:24","nodeType":"YulLiteral","src":"5880:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5865:3:24","nodeType":"YulIdentifier","src":"5865:3:24"},"nativeSrc":"5865:17:24","nodeType":"YulFunctionCall","src":"5865:17:24"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nativeSrc":"5816:39:24","nodeType":"YulIdentifier","src":"5816:39:24"},"nativeSrc":"5816:67:24","nodeType":"YulFunctionCall","src":"5816:67:24"},"nativeSrc":"5816:67:24","nodeType":"YulExpressionStatement","src":"5816:67:24"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"5676:214:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5742:9:24","nodeType":"YulTypedName","src":"5742:9:24","type":""},{"name":"value0","nativeSrc":"5754:6:24","nodeType":"YulTypedName","src":"5754:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5765:4:24","nodeType":"YulTypedName","src":"5765:4:24","type":""}],"src":"5676:214:24"},{"body":{"nativeSrc":"5961:53:24","nodeType":"YulBlock","src":"5961:53:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"5978:3:24","nodeType":"YulIdentifier","src":"5978:3:24"},{"arguments":[{"name":"value","nativeSrc":"6001:5:24","nodeType":"YulIdentifier","src":"6001:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"5983:17:24","nodeType":"YulIdentifier","src":"5983:17:24"},"nativeSrc":"5983:24:24","nodeType":"YulFunctionCall","src":"5983:24:24"}],"functionName":{"name":"mstore","nativeSrc":"5971:6:24","nodeType":"YulIdentifier","src":"5971:6:24"},"nativeSrc":"5971:37:24","nodeType":"YulFunctionCall","src":"5971:37:24"},"nativeSrc":"5971:37:24","nodeType":"YulExpressionStatement","src":"5971:37:24"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"5896:118:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5949:5:24","nodeType":"YulTypedName","src":"5949:5:24","type":""},{"name":"pos","nativeSrc":"5956:3:24","nodeType":"YulTypedName","src":"5956:3:24","type":""}],"src":"5896:118:24"},{"body":{"nativeSrc":"6118:124:24","nodeType":"YulBlock","src":"6118:124:24","statements":[{"nativeSrc":"6128:26:24","nodeType":"YulAssignment","src":"6128:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"6140:9:24","nodeType":"YulIdentifier","src":"6140:9:24"},{"kind":"number","nativeSrc":"6151:2:24","nodeType":"YulLiteral","src":"6151:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6136:3:24","nodeType":"YulIdentifier","src":"6136:3:24"},"nativeSrc":"6136:18:24","nodeType":"YulFunctionCall","src":"6136:18:24"},"variableNames":[{"name":"tail","nativeSrc":"6128:4:24","nodeType":"YulIdentifier","src":"6128:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"6208:6:24","nodeType":"YulIdentifier","src":"6208:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"6221:9:24","nodeType":"YulIdentifier","src":"6221:9:24"},{"kind":"number","nativeSrc":"6232:1:24","nodeType":"YulLiteral","src":"6232:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6217:3:24","nodeType":"YulIdentifier","src":"6217:3:24"},"nativeSrc":"6217:17:24","nodeType":"YulFunctionCall","src":"6217:17:24"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"6164:43:24","nodeType":"YulIdentifier","src":"6164:43:24"},"nativeSrc":"6164:71:24","nodeType":"YulFunctionCall","src":"6164:71:24"},"nativeSrc":"6164:71:24","nodeType":"YulExpressionStatement","src":"6164:71:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"6020:222:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6090:9:24","nodeType":"YulTypedName","src":"6090:9:24","type":""},{"name":"value0","nativeSrc":"6102:6:24","nodeType":"YulTypedName","src":"6102:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6113:4:24","nodeType":"YulTypedName","src":"6113:4:24","type":""}],"src":"6020:222:24"},{"body":{"nativeSrc":"6331:391:24","nodeType":"YulBlock","src":"6331:391:24","statements":[{"body":{"nativeSrc":"6377:83:24","nodeType":"YulBlock","src":"6377:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"6379:77:24","nodeType":"YulIdentifier","src":"6379:77:24"},"nativeSrc":"6379:79:24","nodeType":"YulFunctionCall","src":"6379:79:24"},"nativeSrc":"6379:79:24","nodeType":"YulExpressionStatement","src":"6379:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6352:7:24","nodeType":"YulIdentifier","src":"6352:7:24"},{"name":"headStart","nativeSrc":"6361:9:24","nodeType":"YulIdentifier","src":"6361:9:24"}],"functionName":{"name":"sub","nativeSrc":"6348:3:24","nodeType":"YulIdentifier","src":"6348:3:24"},"nativeSrc":"6348:23:24","nodeType":"YulFunctionCall","src":"6348:23:24"},{"kind":"number","nativeSrc":"6373:2:24","nodeType":"YulLiteral","src":"6373:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6344:3:24","nodeType":"YulIdentifier","src":"6344:3:24"},"nativeSrc":"6344:32:24","nodeType":"YulFunctionCall","src":"6344:32:24"},"nativeSrc":"6341:119:24","nodeType":"YulIf","src":"6341:119:24"},{"nativeSrc":"6470:117:24","nodeType":"YulBlock","src":"6470:117:24","statements":[{"nativeSrc":"6485:15:24","nodeType":"YulVariableDeclaration","src":"6485:15:24","value":{"kind":"number","nativeSrc":"6499:1:24","nodeType":"YulLiteral","src":"6499:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"6489:6:24","nodeType":"YulTypedName","src":"6489:6:24","type":""}]},{"nativeSrc":"6514:63:24","nodeType":"YulAssignment","src":"6514:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6549:9:24","nodeType":"YulIdentifier","src":"6549:9:24"},{"name":"offset","nativeSrc":"6560:6:24","nodeType":"YulIdentifier","src":"6560:6:24"}],"functionName":{"name":"add","nativeSrc":"6545:3:24","nodeType":"YulIdentifier","src":"6545:3:24"},"nativeSrc":"6545:22:24","nodeType":"YulFunctionCall","src":"6545:22:24"},{"name":"dataEnd","nativeSrc":"6569:7:24","nodeType":"YulIdentifier","src":"6569:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"6524:20:24","nodeType":"YulIdentifier","src":"6524:20:24"},"nativeSrc":"6524:53:24","nodeType":"YulFunctionCall","src":"6524:53:24"},"variableNames":[{"name":"value0","nativeSrc":"6514:6:24","nodeType":"YulIdentifier","src":"6514:6:24"}]}]},{"nativeSrc":"6597:118:24","nodeType":"YulBlock","src":"6597:118:24","statements":[{"nativeSrc":"6612:16:24","nodeType":"YulVariableDeclaration","src":"6612:16:24","value":{"kind":"number","nativeSrc":"6626:2:24","nodeType":"YulLiteral","src":"6626:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"6616:6:24","nodeType":"YulTypedName","src":"6616:6:24","type":""}]},{"nativeSrc":"6642:63:24","nodeType":"YulAssignment","src":"6642:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6677:9:24","nodeType":"YulIdentifier","src":"6677:9:24"},{"name":"offset","nativeSrc":"6688:6:24","nodeType":"YulIdentifier","src":"6688:6:24"}],"functionName":{"name":"add","nativeSrc":"6673:3:24","nodeType":"YulIdentifier","src":"6673:3:24"},"nativeSrc":"6673:22:24","nodeType":"YulFunctionCall","src":"6673:22:24"},{"name":"dataEnd","nativeSrc":"6697:7:24","nodeType":"YulIdentifier","src":"6697:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"6652:20:24","nodeType":"YulIdentifier","src":"6652:20:24"},"nativeSrc":"6652:53:24","nodeType":"YulFunctionCall","src":"6652:53:24"},"variableNames":[{"name":"value1","nativeSrc":"6642:6:24","nodeType":"YulIdentifier","src":"6642:6:24"}]}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"6248:474:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6293:9:24","nodeType":"YulTypedName","src":"6293:9:24","type":""},{"name":"dataEnd","nativeSrc":"6304:7:24","nodeType":"YulTypedName","src":"6304:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6316:6:24","nodeType":"YulTypedName","src":"6316:6:24","type":""},{"name":"value1","nativeSrc":"6324:6:24","nodeType":"YulTypedName","src":"6324:6:24","type":""}],"src":"6248:474:24"},{"body":{"nativeSrc":"6828:519:24","nodeType":"YulBlock","src":"6828:519:24","statements":[{"body":{"nativeSrc":"6874:83:24","nodeType":"YulBlock","src":"6874:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"6876:77:24","nodeType":"YulIdentifier","src":"6876:77:24"},"nativeSrc":"6876:79:24","nodeType":"YulFunctionCall","src":"6876:79:24"},"nativeSrc":"6876:79:24","nodeType":"YulExpressionStatement","src":"6876:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6849:7:24","nodeType":"YulIdentifier","src":"6849:7:24"},{"name":"headStart","nativeSrc":"6858:9:24","nodeType":"YulIdentifier","src":"6858:9:24"}],"functionName":{"name":"sub","nativeSrc":"6845:3:24","nodeType":"YulIdentifier","src":"6845:3:24"},"nativeSrc":"6845:23:24","nodeType":"YulFunctionCall","src":"6845:23:24"},{"kind":"number","nativeSrc":"6870:2:24","nodeType":"YulLiteral","src":"6870:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6841:3:24","nodeType":"YulIdentifier","src":"6841:3:24"},"nativeSrc":"6841:32:24","nodeType":"YulFunctionCall","src":"6841:32:24"},"nativeSrc":"6838:119:24","nodeType":"YulIf","src":"6838:119:24"},{"nativeSrc":"6967:117:24","nodeType":"YulBlock","src":"6967:117:24","statements":[{"nativeSrc":"6982:15:24","nodeType":"YulVariableDeclaration","src":"6982:15:24","value":{"kind":"number","nativeSrc":"6996:1:24","nodeType":"YulLiteral","src":"6996:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"6986:6:24","nodeType":"YulTypedName","src":"6986:6:24","type":""}]},{"nativeSrc":"7011:63:24","nodeType":"YulAssignment","src":"7011:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7046:9:24","nodeType":"YulIdentifier","src":"7046:9:24"},{"name":"offset","nativeSrc":"7057:6:24","nodeType":"YulIdentifier","src":"7057:6:24"}],"functionName":{"name":"add","nativeSrc":"7042:3:24","nodeType":"YulIdentifier","src":"7042:3:24"},"nativeSrc":"7042:22:24","nodeType":"YulFunctionCall","src":"7042:22:24"},{"name":"dataEnd","nativeSrc":"7066:7:24","nodeType":"YulIdentifier","src":"7066:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"7021:20:24","nodeType":"YulIdentifier","src":"7021:20:24"},"nativeSrc":"7021:53:24","nodeType":"YulFunctionCall","src":"7021:53:24"},"variableNames":[{"name":"value0","nativeSrc":"7011:6:24","nodeType":"YulIdentifier","src":"7011:6:24"}]}]},{"nativeSrc":"7094:118:24","nodeType":"YulBlock","src":"7094:118:24","statements":[{"nativeSrc":"7109:16:24","nodeType":"YulVariableDeclaration","src":"7109:16:24","value":{"kind":"number","nativeSrc":"7123:2:24","nodeType":"YulLiteral","src":"7123:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"7113:6:24","nodeType":"YulTypedName","src":"7113:6:24","type":""}]},{"nativeSrc":"7139:63:24","nodeType":"YulAssignment","src":"7139:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7174:9:24","nodeType":"YulIdentifier","src":"7174:9:24"},{"name":"offset","nativeSrc":"7185:6:24","nodeType":"YulIdentifier","src":"7185:6:24"}],"functionName":{"name":"add","nativeSrc":"7170:3:24","nodeType":"YulIdentifier","src":"7170:3:24"},"nativeSrc":"7170:22:24","nodeType":"YulFunctionCall","src":"7170:22:24"},{"name":"dataEnd","nativeSrc":"7194:7:24","nodeType":"YulIdentifier","src":"7194:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"7149:20:24","nodeType":"YulIdentifier","src":"7149:20:24"},"nativeSrc":"7149:53:24","nodeType":"YulFunctionCall","src":"7149:53:24"},"variableNames":[{"name":"value1","nativeSrc":"7139:6:24","nodeType":"YulIdentifier","src":"7139:6:24"}]}]},{"nativeSrc":"7222:118:24","nodeType":"YulBlock","src":"7222:118:24","statements":[{"nativeSrc":"7237:16:24","nodeType":"YulVariableDeclaration","src":"7237:16:24","value":{"kind":"number","nativeSrc":"7251:2:24","nodeType":"YulLiteral","src":"7251:2:24","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"7241:6:24","nodeType":"YulTypedName","src":"7241:6:24","type":""}]},{"nativeSrc":"7267:63:24","nodeType":"YulAssignment","src":"7267:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7302:9:24","nodeType":"YulIdentifier","src":"7302:9:24"},{"name":"offset","nativeSrc":"7313:6:24","nodeType":"YulIdentifier","src":"7313:6:24"}],"functionName":{"name":"add","nativeSrc":"7298:3:24","nodeType":"YulIdentifier","src":"7298:3:24"},"nativeSrc":"7298:22:24","nodeType":"YulFunctionCall","src":"7298:22:24"},{"name":"dataEnd","nativeSrc":"7322:7:24","nodeType":"YulIdentifier","src":"7322:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"7277:20:24","nodeType":"YulIdentifier","src":"7277:20:24"},"nativeSrc":"7277:53:24","nodeType":"YulFunctionCall","src":"7277:53:24"},"variableNames":[{"name":"value2","nativeSrc":"7267:6:24","nodeType":"YulIdentifier","src":"7267:6:24"}]}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"6728:619:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6782:9:24","nodeType":"YulTypedName","src":"6782:9:24","type":""},{"name":"dataEnd","nativeSrc":"6793:7:24","nodeType":"YulTypedName","src":"6793:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6805:6:24","nodeType":"YulTypedName","src":"6805:6:24","type":""},{"name":"value1","nativeSrc":"6813:6:24","nodeType":"YulTypedName","src":"6813:6:24","type":""},{"name":"value2","nativeSrc":"6821:6:24","nodeType":"YulTypedName","src":"6821:6:24","type":""}],"src":"6728:619:24"},{"body":{"nativeSrc":"7436:391:24","nodeType":"YulBlock","src":"7436:391:24","statements":[{"body":{"nativeSrc":"7482:83:24","nodeType":"YulBlock","src":"7482:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"7484:77:24","nodeType":"YulIdentifier","src":"7484:77:24"},"nativeSrc":"7484:79:24","nodeType":"YulFunctionCall","src":"7484:79:24"},"nativeSrc":"7484:79:24","nodeType":"YulExpressionStatement","src":"7484:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7457:7:24","nodeType":"YulIdentifier","src":"7457:7:24"},{"name":"headStart","nativeSrc":"7466:9:24","nodeType":"YulIdentifier","src":"7466:9:24"}],"functionName":{"name":"sub","nativeSrc":"7453:3:24","nodeType":"YulIdentifier","src":"7453:3:24"},"nativeSrc":"7453:23:24","nodeType":"YulFunctionCall","src":"7453:23:24"},{"kind":"number","nativeSrc":"7478:2:24","nodeType":"YulLiteral","src":"7478:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7449:3:24","nodeType":"YulIdentifier","src":"7449:3:24"},"nativeSrc":"7449:32:24","nodeType":"YulFunctionCall","src":"7449:32:24"},"nativeSrc":"7446:119:24","nodeType":"YulIf","src":"7446:119:24"},{"nativeSrc":"7575:117:24","nodeType":"YulBlock","src":"7575:117:24","statements":[{"nativeSrc":"7590:15:24","nodeType":"YulVariableDeclaration","src":"7590:15:24","value":{"kind":"number","nativeSrc":"7604:1:24","nodeType":"YulLiteral","src":"7604:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"7594:6:24","nodeType":"YulTypedName","src":"7594:6:24","type":""}]},{"nativeSrc":"7619:63:24","nodeType":"YulAssignment","src":"7619:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7654:9:24","nodeType":"YulIdentifier","src":"7654:9:24"},{"name":"offset","nativeSrc":"7665:6:24","nodeType":"YulIdentifier","src":"7665:6:24"}],"functionName":{"name":"add","nativeSrc":"7650:3:24","nodeType":"YulIdentifier","src":"7650:3:24"},"nativeSrc":"7650:22:24","nodeType":"YulFunctionCall","src":"7650:22:24"},{"name":"dataEnd","nativeSrc":"7674:7:24","nodeType":"YulIdentifier","src":"7674:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"7629:20:24","nodeType":"YulIdentifier","src":"7629:20:24"},"nativeSrc":"7629:53:24","nodeType":"YulFunctionCall","src":"7629:53:24"},"variableNames":[{"name":"value0","nativeSrc":"7619:6:24","nodeType":"YulIdentifier","src":"7619:6:24"}]}]},{"nativeSrc":"7702:118:24","nodeType":"YulBlock","src":"7702:118:24","statements":[{"nativeSrc":"7717:16:24","nodeType":"YulVariableDeclaration","src":"7717:16:24","value":{"kind":"number","nativeSrc":"7731:2:24","nodeType":"YulLiteral","src":"7731:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"7721:6:24","nodeType":"YulTypedName","src":"7721:6:24","type":""}]},{"nativeSrc":"7747:63:24","nodeType":"YulAssignment","src":"7747:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7782:9:24","nodeType":"YulIdentifier","src":"7782:9:24"},{"name":"offset","nativeSrc":"7793:6:24","nodeType":"YulIdentifier","src":"7793:6:24"}],"functionName":{"name":"add","nativeSrc":"7778:3:24","nodeType":"YulIdentifier","src":"7778:3:24"},"nativeSrc":"7778:22:24","nodeType":"YulFunctionCall","src":"7778:22:24"},{"name":"dataEnd","nativeSrc":"7802:7:24","nodeType":"YulIdentifier","src":"7802:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"7757:20:24","nodeType":"YulIdentifier","src":"7757:20:24"},"nativeSrc":"7757:53:24","nodeType":"YulFunctionCall","src":"7757:53:24"},"variableNames":[{"name":"value1","nativeSrc":"7747:6:24","nodeType":"YulIdentifier","src":"7747:6:24"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"7353:474:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7398:9:24","nodeType":"YulTypedName","src":"7398:9:24","type":""},{"name":"dataEnd","nativeSrc":"7409:7:24","nodeType":"YulTypedName","src":"7409:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7421:6:24","nodeType":"YulTypedName","src":"7421:6:24","type":""},{"name":"value1","nativeSrc":"7429:6:24","nodeType":"YulTypedName","src":"7429:6:24","type":""}],"src":"7353:474:24"},{"body":{"nativeSrc":"7896:80:24","nodeType":"YulBlock","src":"7896:80:24","statements":[{"nativeSrc":"7906:22:24","nodeType":"YulAssignment","src":"7906:22:24","value":{"arguments":[{"name":"offset","nativeSrc":"7921:6:24","nodeType":"YulIdentifier","src":"7921:6:24"}],"functionName":{"name":"mload","nativeSrc":"7915:5:24","nodeType":"YulIdentifier","src":"7915:5:24"},"nativeSrc":"7915:13:24","nodeType":"YulFunctionCall","src":"7915:13:24"},"variableNames":[{"name":"value","nativeSrc":"7906:5:24","nodeType":"YulIdentifier","src":"7906:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7964:5:24","nodeType":"YulIdentifier","src":"7964:5:24"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"7937:26:24","nodeType":"YulIdentifier","src":"7937:26:24"},"nativeSrc":"7937:33:24","nodeType":"YulFunctionCall","src":"7937:33:24"},"nativeSrc":"7937:33:24","nodeType":"YulExpressionStatement","src":"7937:33:24"}]},"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"7833:143:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"7874:6:24","nodeType":"YulTypedName","src":"7874:6:24","type":""},{"name":"end","nativeSrc":"7882:3:24","nodeType":"YulTypedName","src":"7882:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"7890:5:24","nodeType":"YulTypedName","src":"7890:5:24","type":""}],"src":"7833:143:24"},{"body":{"nativeSrc":"8059:274:24","nodeType":"YulBlock","src":"8059:274:24","statements":[{"body":{"nativeSrc":"8105:83:24","nodeType":"YulBlock","src":"8105:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"8107:77:24","nodeType":"YulIdentifier","src":"8107:77:24"},"nativeSrc":"8107:79:24","nodeType":"YulFunctionCall","src":"8107:79:24"},"nativeSrc":"8107:79:24","nodeType":"YulExpressionStatement","src":"8107:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8080:7:24","nodeType":"YulIdentifier","src":"8080:7:24"},{"name":"headStart","nativeSrc":"8089:9:24","nodeType":"YulIdentifier","src":"8089:9:24"}],"functionName":{"name":"sub","nativeSrc":"8076:3:24","nodeType":"YulIdentifier","src":"8076:3:24"},"nativeSrc":"8076:23:24","nodeType":"YulFunctionCall","src":"8076:23:24"},{"kind":"number","nativeSrc":"8101:2:24","nodeType":"YulLiteral","src":"8101:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8072:3:24","nodeType":"YulIdentifier","src":"8072:3:24"},"nativeSrc":"8072:32:24","nodeType":"YulFunctionCall","src":"8072:32:24"},"nativeSrc":"8069:119:24","nodeType":"YulIf","src":"8069:119:24"},{"nativeSrc":"8198:128:24","nodeType":"YulBlock","src":"8198:128:24","statements":[{"nativeSrc":"8213:15:24","nodeType":"YulVariableDeclaration","src":"8213:15:24","value":{"kind":"number","nativeSrc":"8227:1:24","nodeType":"YulLiteral","src":"8227:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"8217:6:24","nodeType":"YulTypedName","src":"8217:6:24","type":""}]},{"nativeSrc":"8242:74:24","nodeType":"YulAssignment","src":"8242:74:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8288:9:24","nodeType":"YulIdentifier","src":"8288:9:24"},{"name":"offset","nativeSrc":"8299:6:24","nodeType":"YulIdentifier","src":"8299:6:24"}],"functionName":{"name":"add","nativeSrc":"8284:3:24","nodeType":"YulIdentifier","src":"8284:3:24"},"nativeSrc":"8284:22:24","nodeType":"YulFunctionCall","src":"8284:22:24"},{"name":"dataEnd","nativeSrc":"8308:7:24","nodeType":"YulIdentifier","src":"8308:7:24"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"8252:31:24","nodeType":"YulIdentifier","src":"8252:31:24"},"nativeSrc":"8252:64:24","nodeType":"YulFunctionCall","src":"8252:64:24"},"variableNames":[{"name":"value0","nativeSrc":"8242:6:24","nodeType":"YulIdentifier","src":"8242:6:24"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"7982:351:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8029:9:24","nodeType":"YulTypedName","src":"8029:9:24","type":""},{"name":"dataEnd","nativeSrc":"8040:7:24","nodeType":"YulTypedName","src":"8040:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8052:6:24","nodeType":"YulTypedName","src":"8052:6:24","type":""}],"src":"7982:351:24"},{"body":{"nativeSrc":"8367:152:24","nodeType":"YulBlock","src":"8367:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8384:1:24","nodeType":"YulLiteral","src":"8384:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"8387:77:24","nodeType":"YulLiteral","src":"8387:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"8377:6:24","nodeType":"YulIdentifier","src":"8377:6:24"},"nativeSrc":"8377:88:24","nodeType":"YulFunctionCall","src":"8377:88:24"},"nativeSrc":"8377:88:24","nodeType":"YulExpressionStatement","src":"8377:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8481:1:24","nodeType":"YulLiteral","src":"8481:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"8484:4:24","nodeType":"YulLiteral","src":"8484:4:24","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8474:6:24","nodeType":"YulIdentifier","src":"8474:6:24"},"nativeSrc":"8474:15:24","nodeType":"YulFunctionCall","src":"8474:15:24"},"nativeSrc":"8474:15:24","nodeType":"YulExpressionStatement","src":"8474:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8505:1:24","nodeType":"YulLiteral","src":"8505:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"8508:4:24","nodeType":"YulLiteral","src":"8508:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8498:6:24","nodeType":"YulIdentifier","src":"8498:6:24"},"nativeSrc":"8498:15:24","nodeType":"YulFunctionCall","src":"8498:15:24"},"nativeSrc":"8498:15:24","nodeType":"YulExpressionStatement","src":"8498:15:24"}]},"name":"panic_error_0x22","nativeSrc":"8339:180:24","nodeType":"YulFunctionDefinition","src":"8339:180:24"},{"body":{"nativeSrc":"8576:269:24","nodeType":"YulBlock","src":"8576:269:24","statements":[{"nativeSrc":"8586:22:24","nodeType":"YulAssignment","src":"8586:22:24","value":{"arguments":[{"name":"data","nativeSrc":"8600:4:24","nodeType":"YulIdentifier","src":"8600:4:24"},{"kind":"number","nativeSrc":"8606:1:24","nodeType":"YulLiteral","src":"8606:1:24","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"8596:3:24","nodeType":"YulIdentifier","src":"8596:3:24"},"nativeSrc":"8596:12:24","nodeType":"YulFunctionCall","src":"8596:12:24"},"variableNames":[{"name":"length","nativeSrc":"8586:6:24","nodeType":"YulIdentifier","src":"8586:6:24"}]},{"nativeSrc":"8617:38:24","nodeType":"YulVariableDeclaration","src":"8617:38:24","value":{"arguments":[{"name":"data","nativeSrc":"8647:4:24","nodeType":"YulIdentifier","src":"8647:4:24"},{"kind":"number","nativeSrc":"8653:1:24","nodeType":"YulLiteral","src":"8653:1:24","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8643:3:24","nodeType":"YulIdentifier","src":"8643:3:24"},"nativeSrc":"8643:12:24","nodeType":"YulFunctionCall","src":"8643:12:24"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8621:18:24","nodeType":"YulTypedName","src":"8621:18:24","type":""}]},{"body":{"nativeSrc":"8694:51:24","nodeType":"YulBlock","src":"8694:51:24","statements":[{"nativeSrc":"8708:27:24","nodeType":"YulAssignment","src":"8708:27:24","value":{"arguments":[{"name":"length","nativeSrc":"8722:6:24","nodeType":"YulIdentifier","src":"8722:6:24"},{"kind":"number","nativeSrc":"8730:4:24","nodeType":"YulLiteral","src":"8730:4:24","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8718:3:24","nodeType":"YulIdentifier","src":"8718:3:24"},"nativeSrc":"8718:17:24","nodeType":"YulFunctionCall","src":"8718:17:24"},"variableNames":[{"name":"length","nativeSrc":"8708:6:24","nodeType":"YulIdentifier","src":"8708:6:24"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8674:18:24","nodeType":"YulIdentifier","src":"8674:18:24"}],"functionName":{"name":"iszero","nativeSrc":"8667:6:24","nodeType":"YulIdentifier","src":"8667:6:24"},"nativeSrc":"8667:26:24","nodeType":"YulFunctionCall","src":"8667:26:24"},"nativeSrc":"8664:81:24","nodeType":"YulIf","src":"8664:81:24"},{"body":{"nativeSrc":"8797:42:24","nodeType":"YulBlock","src":"8797:42:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nativeSrc":"8811:16:24","nodeType":"YulIdentifier","src":"8811:16:24"},"nativeSrc":"8811:18:24","nodeType":"YulFunctionCall","src":"8811:18:24"},"nativeSrc":"8811:18:24","nodeType":"YulExpressionStatement","src":"8811:18:24"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8761:18:24","nodeType":"YulIdentifier","src":"8761:18:24"},{"arguments":[{"name":"length","nativeSrc":"8784:6:24","nodeType":"YulIdentifier","src":"8784:6:24"},{"kind":"number","nativeSrc":"8792:2:24","nodeType":"YulLiteral","src":"8792:2:24","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8781:2:24","nodeType":"YulIdentifier","src":"8781:2:24"},"nativeSrc":"8781:14:24","nodeType":"YulFunctionCall","src":"8781:14:24"}],"functionName":{"name":"eq","nativeSrc":"8758:2:24","nodeType":"YulIdentifier","src":"8758:2:24"},"nativeSrc":"8758:38:24","nodeType":"YulFunctionCall","src":"8758:38:24"},"nativeSrc":"8755:84:24","nodeType":"YulIf","src":"8755:84:24"}]},"name":"extract_byte_array_length","nativeSrc":"8525:320:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8560:4:24","nodeType":"YulTypedName","src":"8560:4:24","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8569:6:24","nodeType":"YulTypedName","src":"8569:6:24","type":""}],"src":"8525:320:24"},{"body":{"nativeSrc":"8957:66:24","nodeType":"YulBlock","src":"8957:66:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"8979:6:24","nodeType":"YulIdentifier","src":"8979:6:24"},{"kind":"number","nativeSrc":"8987:1:24","nodeType":"YulLiteral","src":"8987:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8975:3:24","nodeType":"YulIdentifier","src":"8975:3:24"},"nativeSrc":"8975:14:24","nodeType":"YulFunctionCall","src":"8975:14:24"},{"hexValue":"496e76616c696420737472617465677920696e646578","kind":"string","nativeSrc":"8991:24:24","nodeType":"YulLiteral","src":"8991:24:24","type":"","value":"Invalid strategy index"}],"functionName":{"name":"mstore","nativeSrc":"8968:6:24","nodeType":"YulIdentifier","src":"8968:6:24"},"nativeSrc":"8968:48:24","nodeType":"YulFunctionCall","src":"8968:48:24"},"nativeSrc":"8968:48:24","nodeType":"YulExpressionStatement","src":"8968:48:24"}]},"name":"store_literal_in_memory_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b","nativeSrc":"8851:172:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"8949:6:24","nodeType":"YulTypedName","src":"8949:6:24","type":""}],"src":"8851:172:24"},{"body":{"nativeSrc":"9175:220:24","nodeType":"YulBlock","src":"9175:220:24","statements":[{"nativeSrc":"9185:74:24","nodeType":"YulAssignment","src":"9185:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"9251:3:24","nodeType":"YulIdentifier","src":"9251:3:24"},{"kind":"number","nativeSrc":"9256:2:24","nodeType":"YulLiteral","src":"9256:2:24","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"9192:58:24","nodeType":"YulIdentifier","src":"9192:58:24"},"nativeSrc":"9192:67:24","nodeType":"YulFunctionCall","src":"9192:67:24"},"variableNames":[{"name":"pos","nativeSrc":"9185:3:24","nodeType":"YulIdentifier","src":"9185:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"9357:3:24","nodeType":"YulIdentifier","src":"9357:3:24"}],"functionName":{"name":"store_literal_in_memory_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b","nativeSrc":"9268:88:24","nodeType":"YulIdentifier","src":"9268:88:24"},"nativeSrc":"9268:93:24","nodeType":"YulFunctionCall","src":"9268:93:24"},"nativeSrc":"9268:93:24","nodeType":"YulExpressionStatement","src":"9268:93:24"},{"nativeSrc":"9370:19:24","nodeType":"YulAssignment","src":"9370:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"9381:3:24","nodeType":"YulIdentifier","src":"9381:3:24"},{"kind":"number","nativeSrc":"9386:2:24","nodeType":"YulLiteral","src":"9386:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9377:3:24","nodeType":"YulIdentifier","src":"9377:3:24"},"nativeSrc":"9377:12:24","nodeType":"YulFunctionCall","src":"9377:12:24"},"variableNames":[{"name":"end","nativeSrc":"9370:3:24","nodeType":"YulIdentifier","src":"9370:3:24"}]}]},"name":"abi_encode_t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b_to_t_string_memory_ptr_fromStack","nativeSrc":"9029:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"9163:3:24","nodeType":"YulTypedName","src":"9163:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9171:3:24","nodeType":"YulTypedName","src":"9171:3:24","type":""}],"src":"9029:366:24"},{"body":{"nativeSrc":"9572:248:24","nodeType":"YulBlock","src":"9572:248:24","statements":[{"nativeSrc":"9582:26:24","nodeType":"YulAssignment","src":"9582:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"9594:9:24","nodeType":"YulIdentifier","src":"9594:9:24"},{"kind":"number","nativeSrc":"9605:2:24","nodeType":"YulLiteral","src":"9605:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9590:3:24","nodeType":"YulIdentifier","src":"9590:3:24"},"nativeSrc":"9590:18:24","nodeType":"YulFunctionCall","src":"9590:18:24"},"variableNames":[{"name":"tail","nativeSrc":"9582:4:24","nodeType":"YulIdentifier","src":"9582:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9629:9:24","nodeType":"YulIdentifier","src":"9629:9:24"},{"kind":"number","nativeSrc":"9640:1:24","nodeType":"YulLiteral","src":"9640:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9625:3:24","nodeType":"YulIdentifier","src":"9625:3:24"},"nativeSrc":"9625:17:24","nodeType":"YulFunctionCall","src":"9625:17:24"},{"arguments":[{"name":"tail","nativeSrc":"9648:4:24","nodeType":"YulIdentifier","src":"9648:4:24"},{"name":"headStart","nativeSrc":"9654:9:24","nodeType":"YulIdentifier","src":"9654:9:24"}],"functionName":{"name":"sub","nativeSrc":"9644:3:24","nodeType":"YulIdentifier","src":"9644:3:24"},"nativeSrc":"9644:20:24","nodeType":"YulFunctionCall","src":"9644:20:24"}],"functionName":{"name":"mstore","nativeSrc":"9618:6:24","nodeType":"YulIdentifier","src":"9618:6:24"},"nativeSrc":"9618:47:24","nodeType":"YulFunctionCall","src":"9618:47:24"},"nativeSrc":"9618:47:24","nodeType":"YulExpressionStatement","src":"9618:47:24"},{"nativeSrc":"9674:139:24","nodeType":"YulAssignment","src":"9674:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"9808:4:24","nodeType":"YulIdentifier","src":"9808:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b_to_t_string_memory_ptr_fromStack","nativeSrc":"9682:124:24","nodeType":"YulIdentifier","src":"9682:124:24"},"nativeSrc":"9682:131:24","nodeType":"YulFunctionCall","src":"9682:131:24"},"variableNames":[{"name":"tail","nativeSrc":"9674:4:24","nodeType":"YulIdentifier","src":"9674:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9401:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9552:9:24","nodeType":"YulTypedName","src":"9552:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9567:4:24","nodeType":"YulTypedName","src":"9567:4:24","type":""}],"src":"9401:419:24"},{"body":{"nativeSrc":"9854:152:24","nodeType":"YulBlock","src":"9854:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9871:1:24","nodeType":"YulLiteral","src":"9871:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"9874:77:24","nodeType":"YulLiteral","src":"9874:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"9864:6:24","nodeType":"YulIdentifier","src":"9864:6:24"},"nativeSrc":"9864:88:24","nodeType":"YulFunctionCall","src":"9864:88:24"},"nativeSrc":"9864:88:24","nodeType":"YulExpressionStatement","src":"9864:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9968:1:24","nodeType":"YulLiteral","src":"9968:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"9971:4:24","nodeType":"YulLiteral","src":"9971:4:24","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"9961:6:24","nodeType":"YulIdentifier","src":"9961:6:24"},"nativeSrc":"9961:15:24","nodeType":"YulFunctionCall","src":"9961:15:24"},"nativeSrc":"9961:15:24","nodeType":"YulExpressionStatement","src":"9961:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9992:1:24","nodeType":"YulLiteral","src":"9992:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"9995:4:24","nodeType":"YulLiteral","src":"9995:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9985:6:24","nodeType":"YulIdentifier","src":"9985:6:24"},"nativeSrc":"9985:15:24","nodeType":"YulFunctionCall","src":"9985:15:24"},"nativeSrc":"9985:15:24","nodeType":"YulExpressionStatement","src":"9985:15:24"}]},"name":"panic_error_0x32","nativeSrc":"9826:180:24","nodeType":"YulFunctionDefinition","src":"9826:180:24"},{"body":{"nativeSrc":"10118:66:24","nodeType":"YulBlock","src":"10118:66:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"10140:6:24","nodeType":"YulIdentifier","src":"10140:6:24"},{"kind":"number","nativeSrc":"10148:1:24","nodeType":"YulLiteral","src":"10148:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10136:3:24","nodeType":"YulIdentifier","src":"10136:3:24"},"nativeSrc":"10136:14:24","nodeType":"YulFunctionCall","src":"10136:14:24"},{"hexValue":"5374726174656779206973206e6f7420616374697665","kind":"string","nativeSrc":"10152:24:24","nodeType":"YulLiteral","src":"10152:24:24","type":"","value":"Strategy is not active"}],"functionName":{"name":"mstore","nativeSrc":"10129:6:24","nodeType":"YulIdentifier","src":"10129:6:24"},"nativeSrc":"10129:48:24","nodeType":"YulFunctionCall","src":"10129:48:24"},"nativeSrc":"10129:48:24","nodeType":"YulExpressionStatement","src":"10129:48:24"}]},"name":"store_literal_in_memory_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a","nativeSrc":"10012:172:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"10110:6:24","nodeType":"YulTypedName","src":"10110:6:24","type":""}],"src":"10012:172:24"},{"body":{"nativeSrc":"10336:220:24","nodeType":"YulBlock","src":"10336:220:24","statements":[{"nativeSrc":"10346:74:24","nodeType":"YulAssignment","src":"10346:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"10412:3:24","nodeType":"YulIdentifier","src":"10412:3:24"},{"kind":"number","nativeSrc":"10417:2:24","nodeType":"YulLiteral","src":"10417:2:24","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"10353:58:24","nodeType":"YulIdentifier","src":"10353:58:24"},"nativeSrc":"10353:67:24","nodeType":"YulFunctionCall","src":"10353:67:24"},"variableNames":[{"name":"pos","nativeSrc":"10346:3:24","nodeType":"YulIdentifier","src":"10346:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"10518:3:24","nodeType":"YulIdentifier","src":"10518:3:24"}],"functionName":{"name":"store_literal_in_memory_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a","nativeSrc":"10429:88:24","nodeType":"YulIdentifier","src":"10429:88:24"},"nativeSrc":"10429:93:24","nodeType":"YulFunctionCall","src":"10429:93:24"},"nativeSrc":"10429:93:24","nodeType":"YulExpressionStatement","src":"10429:93:24"},{"nativeSrc":"10531:19:24","nodeType":"YulAssignment","src":"10531:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"10542:3:24","nodeType":"YulIdentifier","src":"10542:3:24"},{"kind":"number","nativeSrc":"10547:2:24","nodeType":"YulLiteral","src":"10547:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10538:3:24","nodeType":"YulIdentifier","src":"10538:3:24"},"nativeSrc":"10538:12:24","nodeType":"YulFunctionCall","src":"10538:12:24"},"variableNames":[{"name":"end","nativeSrc":"10531:3:24","nodeType":"YulIdentifier","src":"10531:3:24"}]}]},"name":"abi_encode_t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a_to_t_string_memory_ptr_fromStack","nativeSrc":"10190:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"10324:3:24","nodeType":"YulTypedName","src":"10324:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"10332:3:24","nodeType":"YulTypedName","src":"10332:3:24","type":""}],"src":"10190:366:24"},{"body":{"nativeSrc":"10733:248:24","nodeType":"YulBlock","src":"10733:248:24","statements":[{"nativeSrc":"10743:26:24","nodeType":"YulAssignment","src":"10743:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"10755:9:24","nodeType":"YulIdentifier","src":"10755:9:24"},{"kind":"number","nativeSrc":"10766:2:24","nodeType":"YulLiteral","src":"10766:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10751:3:24","nodeType":"YulIdentifier","src":"10751:3:24"},"nativeSrc":"10751:18:24","nodeType":"YulFunctionCall","src":"10751:18:24"},"variableNames":[{"name":"tail","nativeSrc":"10743:4:24","nodeType":"YulIdentifier","src":"10743:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10790:9:24","nodeType":"YulIdentifier","src":"10790:9:24"},{"kind":"number","nativeSrc":"10801:1:24","nodeType":"YulLiteral","src":"10801:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10786:3:24","nodeType":"YulIdentifier","src":"10786:3:24"},"nativeSrc":"10786:17:24","nodeType":"YulFunctionCall","src":"10786:17:24"},{"arguments":[{"name":"tail","nativeSrc":"10809:4:24","nodeType":"YulIdentifier","src":"10809:4:24"},{"name":"headStart","nativeSrc":"10815:9:24","nodeType":"YulIdentifier","src":"10815:9:24"}],"functionName":{"name":"sub","nativeSrc":"10805:3:24","nodeType":"YulIdentifier","src":"10805:3:24"},"nativeSrc":"10805:20:24","nodeType":"YulFunctionCall","src":"10805:20:24"}],"functionName":{"name":"mstore","nativeSrc":"10779:6:24","nodeType":"YulIdentifier","src":"10779:6:24"},"nativeSrc":"10779:47:24","nodeType":"YulFunctionCall","src":"10779:47:24"},"nativeSrc":"10779:47:24","nodeType":"YulExpressionStatement","src":"10779:47:24"},{"nativeSrc":"10835:139:24","nodeType":"YulAssignment","src":"10835:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"10969:4:24","nodeType":"YulIdentifier","src":"10969:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a_to_t_string_memory_ptr_fromStack","nativeSrc":"10843:124:24","nodeType":"YulIdentifier","src":"10843:124:24"},"nativeSrc":"10843:131:24","nodeType":"YulFunctionCall","src":"10843:131:24"},"variableNames":[{"name":"tail","nativeSrc":"10835:4:24","nodeType":"YulIdentifier","src":"10835:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"10562:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10713:9:24","nodeType":"YulTypedName","src":"10713:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10728:4:24","nodeType":"YulTypedName","src":"10728:4:24","type":""}],"src":"10562:419:24"},{"body":{"nativeSrc":"11093:120:24","nodeType":"YulBlock","src":"11093:120:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"11115:6:24","nodeType":"YulIdentifier","src":"11115:6:24"},{"kind":"number","nativeSrc":"11123:1:24","nodeType":"YulLiteral","src":"11123:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"11111:3:24","nodeType":"YulIdentifier","src":"11111:3:24"},"nativeSrc":"11111:14:24","nodeType":"YulFunctionCall","src":"11111:14:24"},{"hexValue":"5374726174656779206e6f7420666f756e6420696e2061637469766520737472","kind":"string","nativeSrc":"11127:34:24","nodeType":"YulLiteral","src":"11127:34:24","type":"","value":"Strategy not found in active str"}],"functionName":{"name":"mstore","nativeSrc":"11104:6:24","nodeType":"YulIdentifier","src":"11104:6:24"},"nativeSrc":"11104:58:24","nodeType":"YulFunctionCall","src":"11104:58:24"},"nativeSrc":"11104:58:24","nodeType":"YulExpressionStatement","src":"11104:58:24"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"11183:6:24","nodeType":"YulIdentifier","src":"11183:6:24"},{"kind":"number","nativeSrc":"11191:2:24","nodeType":"YulLiteral","src":"11191:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11179:3:24","nodeType":"YulIdentifier","src":"11179:3:24"},"nativeSrc":"11179:15:24","nodeType":"YulFunctionCall","src":"11179:15:24"},{"hexValue":"61746567696573","kind":"string","nativeSrc":"11196:9:24","nodeType":"YulLiteral","src":"11196:9:24","type":"","value":"ategies"}],"functionName":{"name":"mstore","nativeSrc":"11172:6:24","nodeType":"YulIdentifier","src":"11172:6:24"},"nativeSrc":"11172:34:24","nodeType":"YulFunctionCall","src":"11172:34:24"},"nativeSrc":"11172:34:24","nodeType":"YulExpressionStatement","src":"11172:34:24"}]},"name":"store_literal_in_memory_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273","nativeSrc":"10987:226:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"11085:6:24","nodeType":"YulTypedName","src":"11085:6:24","type":""}],"src":"10987:226:24"},{"body":{"nativeSrc":"11365:220:24","nodeType":"YulBlock","src":"11365:220:24","statements":[{"nativeSrc":"11375:74:24","nodeType":"YulAssignment","src":"11375:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"11441:3:24","nodeType":"YulIdentifier","src":"11441:3:24"},{"kind":"number","nativeSrc":"11446:2:24","nodeType":"YulLiteral","src":"11446:2:24","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"11382:58:24","nodeType":"YulIdentifier","src":"11382:58:24"},"nativeSrc":"11382:67:24","nodeType":"YulFunctionCall","src":"11382:67:24"},"variableNames":[{"name":"pos","nativeSrc":"11375:3:24","nodeType":"YulIdentifier","src":"11375:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"11547:3:24","nodeType":"YulIdentifier","src":"11547:3:24"}],"functionName":{"name":"store_literal_in_memory_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273","nativeSrc":"11458:88:24","nodeType":"YulIdentifier","src":"11458:88:24"},"nativeSrc":"11458:93:24","nodeType":"YulFunctionCall","src":"11458:93:24"},"nativeSrc":"11458:93:24","nodeType":"YulExpressionStatement","src":"11458:93:24"},{"nativeSrc":"11560:19:24","nodeType":"YulAssignment","src":"11560:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"11571:3:24","nodeType":"YulIdentifier","src":"11571:3:24"},{"kind":"number","nativeSrc":"11576:2:24","nodeType":"YulLiteral","src":"11576:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11567:3:24","nodeType":"YulIdentifier","src":"11567:3:24"},"nativeSrc":"11567:12:24","nodeType":"YulFunctionCall","src":"11567:12:24"},"variableNames":[{"name":"end","nativeSrc":"11560:3:24","nodeType":"YulIdentifier","src":"11560:3:24"}]}]},"name":"abi_encode_t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273_to_t_string_memory_ptr_fromStack","nativeSrc":"11219:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"11353:3:24","nodeType":"YulTypedName","src":"11353:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"11361:3:24","nodeType":"YulTypedName","src":"11361:3:24","type":""}],"src":"11219:366:24"},{"body":{"nativeSrc":"11762:248:24","nodeType":"YulBlock","src":"11762:248:24","statements":[{"nativeSrc":"11772:26:24","nodeType":"YulAssignment","src":"11772:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"11784:9:24","nodeType":"YulIdentifier","src":"11784:9:24"},{"kind":"number","nativeSrc":"11795:2:24","nodeType":"YulLiteral","src":"11795:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11780:3:24","nodeType":"YulIdentifier","src":"11780:3:24"},"nativeSrc":"11780:18:24","nodeType":"YulFunctionCall","src":"11780:18:24"},"variableNames":[{"name":"tail","nativeSrc":"11772:4:24","nodeType":"YulIdentifier","src":"11772:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11819:9:24","nodeType":"YulIdentifier","src":"11819:9:24"},{"kind":"number","nativeSrc":"11830:1:24","nodeType":"YulLiteral","src":"11830:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"11815:3:24","nodeType":"YulIdentifier","src":"11815:3:24"},"nativeSrc":"11815:17:24","nodeType":"YulFunctionCall","src":"11815:17:24"},{"arguments":[{"name":"tail","nativeSrc":"11838:4:24","nodeType":"YulIdentifier","src":"11838:4:24"},{"name":"headStart","nativeSrc":"11844:9:24","nodeType":"YulIdentifier","src":"11844:9:24"}],"functionName":{"name":"sub","nativeSrc":"11834:3:24","nodeType":"YulIdentifier","src":"11834:3:24"},"nativeSrc":"11834:20:24","nodeType":"YulFunctionCall","src":"11834:20:24"}],"functionName":{"name":"mstore","nativeSrc":"11808:6:24","nodeType":"YulIdentifier","src":"11808:6:24"},"nativeSrc":"11808:47:24","nodeType":"YulFunctionCall","src":"11808:47:24"},"nativeSrc":"11808:47:24","nodeType":"YulExpressionStatement","src":"11808:47:24"},{"nativeSrc":"11864:139:24","nodeType":"YulAssignment","src":"11864:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"11998:4:24","nodeType":"YulIdentifier","src":"11998:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273_to_t_string_memory_ptr_fromStack","nativeSrc":"11872:124:24","nodeType":"YulIdentifier","src":"11872:124:24"},"nativeSrc":"11872:131:24","nodeType":"YulFunctionCall","src":"11872:131:24"},"variableNames":[{"name":"tail","nativeSrc":"11864:4:24","nodeType":"YulIdentifier","src":"11864:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"11591:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11742:9:24","nodeType":"YulTypedName","src":"11742:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11757:4:24","nodeType":"YulTypedName","src":"11757:4:24","type":""}],"src":"11591:419:24"},{"body":{"nativeSrc":"12044:152:24","nodeType":"YulBlock","src":"12044:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12061:1:24","nodeType":"YulLiteral","src":"12061:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"12064:77:24","nodeType":"YulLiteral","src":"12064:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"12054:6:24","nodeType":"YulIdentifier","src":"12054:6:24"},"nativeSrc":"12054:88:24","nodeType":"YulFunctionCall","src":"12054:88:24"},"nativeSrc":"12054:88:24","nodeType":"YulExpressionStatement","src":"12054:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12158:1:24","nodeType":"YulLiteral","src":"12158:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"12161:4:24","nodeType":"YulLiteral","src":"12161:4:24","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"12151:6:24","nodeType":"YulIdentifier","src":"12151:6:24"},"nativeSrc":"12151:15:24","nodeType":"YulFunctionCall","src":"12151:15:24"},"nativeSrc":"12151:15:24","nodeType":"YulExpressionStatement","src":"12151:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12182:1:24","nodeType":"YulLiteral","src":"12182:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"12185:4:24","nodeType":"YulLiteral","src":"12185:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"12175:6:24","nodeType":"YulIdentifier","src":"12175:6:24"},"nativeSrc":"12175:15:24","nodeType":"YulFunctionCall","src":"12175:15:24"},"nativeSrc":"12175:15:24","nodeType":"YulExpressionStatement","src":"12175:15:24"}]},"name":"panic_error_0x11","nativeSrc":"12016:180:24","nodeType":"YulFunctionDefinition","src":"12016:180:24"},{"body":{"nativeSrc":"12247:149:24","nodeType":"YulBlock","src":"12247:149:24","statements":[{"nativeSrc":"12257:25:24","nodeType":"YulAssignment","src":"12257:25:24","value":{"arguments":[{"name":"x","nativeSrc":"12280:1:24","nodeType":"YulIdentifier","src":"12280:1:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"12262:17:24","nodeType":"YulIdentifier","src":"12262:17:24"},"nativeSrc":"12262:20:24","nodeType":"YulFunctionCall","src":"12262:20:24"},"variableNames":[{"name":"x","nativeSrc":"12257:1:24","nodeType":"YulIdentifier","src":"12257:1:24"}]},{"nativeSrc":"12291:25:24","nodeType":"YulAssignment","src":"12291:25:24","value":{"arguments":[{"name":"y","nativeSrc":"12314:1:24","nodeType":"YulIdentifier","src":"12314:1:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"12296:17:24","nodeType":"YulIdentifier","src":"12296:17:24"},"nativeSrc":"12296:20:24","nodeType":"YulFunctionCall","src":"12296:20:24"},"variableNames":[{"name":"y","nativeSrc":"12291:1:24","nodeType":"YulIdentifier","src":"12291:1:24"}]},{"nativeSrc":"12325:17:24","nodeType":"YulAssignment","src":"12325:17:24","value":{"arguments":[{"name":"x","nativeSrc":"12337:1:24","nodeType":"YulIdentifier","src":"12337:1:24"},{"name":"y","nativeSrc":"12340:1:24","nodeType":"YulIdentifier","src":"12340:1:24"}],"functionName":{"name":"sub","nativeSrc":"12333:3:24","nodeType":"YulIdentifier","src":"12333:3:24"},"nativeSrc":"12333:9:24","nodeType":"YulFunctionCall","src":"12333:9:24"},"variableNames":[{"name":"diff","nativeSrc":"12325:4:24","nodeType":"YulIdentifier","src":"12325:4:24"}]},{"body":{"nativeSrc":"12367:22:24","nodeType":"YulBlock","src":"12367:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12369:16:24","nodeType":"YulIdentifier","src":"12369:16:24"},"nativeSrc":"12369:18:24","nodeType":"YulFunctionCall","src":"12369:18:24"},"nativeSrc":"12369:18:24","nodeType":"YulExpressionStatement","src":"12369:18:24"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"12358:4:24","nodeType":"YulIdentifier","src":"12358:4:24"},{"name":"x","nativeSrc":"12364:1:24","nodeType":"YulIdentifier","src":"12364:1:24"}],"functionName":{"name":"gt","nativeSrc":"12355:2:24","nodeType":"YulIdentifier","src":"12355:2:24"},"nativeSrc":"12355:11:24","nodeType":"YulFunctionCall","src":"12355:11:24"},"nativeSrc":"12352:37:24","nodeType":"YulIf","src":"12352:37:24"}]},"name":"checked_sub_t_uint256","nativeSrc":"12202:194:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"12233:1:24","nodeType":"YulTypedName","src":"12233:1:24","type":""},{"name":"y","nativeSrc":"12236:1:24","nodeType":"YulTypedName","src":"12236:1:24","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"12242:4:24","nodeType":"YulTypedName","src":"12242:4:24","type":""}],"src":"12202:194:24"},{"body":{"nativeSrc":"12430:152:24","nodeType":"YulBlock","src":"12430:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12447:1:24","nodeType":"YulLiteral","src":"12447:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"12450:77:24","nodeType":"YulLiteral","src":"12450:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"12440:6:24","nodeType":"YulIdentifier","src":"12440:6:24"},"nativeSrc":"12440:88:24","nodeType":"YulFunctionCall","src":"12440:88:24"},"nativeSrc":"12440:88:24","nodeType":"YulExpressionStatement","src":"12440:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12544:1:24","nodeType":"YulLiteral","src":"12544:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"12547:4:24","nodeType":"YulLiteral","src":"12547:4:24","type":"","value":"0x31"}],"functionName":{"name":"mstore","nativeSrc":"12537:6:24","nodeType":"YulIdentifier","src":"12537:6:24"},"nativeSrc":"12537:15:24","nodeType":"YulFunctionCall","src":"12537:15:24"},"nativeSrc":"12537:15:24","nodeType":"YulExpressionStatement","src":"12537:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12568:1:24","nodeType":"YulLiteral","src":"12568:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"12571:4:24","nodeType":"YulLiteral","src":"12571:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"12561:6:24","nodeType":"YulIdentifier","src":"12561:6:24"},"nativeSrc":"12561:15:24","nodeType":"YulFunctionCall","src":"12561:15:24"},"nativeSrc":"12561:15:24","nodeType":"YulExpressionStatement","src":"12561:15:24"}]},"name":"panic_error_0x31","nativeSrc":"12402:180:24","nodeType":"YulFunctionDefinition","src":"12402:180:24"},{"body":{"nativeSrc":"12694:75:24","nodeType":"YulBlock","src":"12694:75:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"12716:6:24","nodeType":"YulIdentifier","src":"12716:6:24"},{"kind":"number","nativeSrc":"12724:1:24","nodeType":"YulLiteral","src":"12724:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"12712:3:24","nodeType":"YulIdentifier","src":"12712:3:24"},"nativeSrc":"12712:14:24","nodeType":"YulFunctionCall","src":"12712:14:24"},{"hexValue":"53747261746567792063616e6e6f74206265207a65726f2061646472657373","kind":"string","nativeSrc":"12728:33:24","nodeType":"YulLiteral","src":"12728:33:24","type":"","value":"Strategy cannot be zero address"}],"functionName":{"name":"mstore","nativeSrc":"12705:6:24","nodeType":"YulIdentifier","src":"12705:6:24"},"nativeSrc":"12705:57:24","nodeType":"YulFunctionCall","src":"12705:57:24"},"nativeSrc":"12705:57:24","nodeType":"YulExpressionStatement","src":"12705:57:24"}]},"name":"store_literal_in_memory_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2","nativeSrc":"12588:181:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"12686:6:24","nodeType":"YulTypedName","src":"12686:6:24","type":""}],"src":"12588:181:24"},{"body":{"nativeSrc":"12921:220:24","nodeType":"YulBlock","src":"12921:220:24","statements":[{"nativeSrc":"12931:74:24","nodeType":"YulAssignment","src":"12931:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"12997:3:24","nodeType":"YulIdentifier","src":"12997:3:24"},{"kind":"number","nativeSrc":"13002:2:24","nodeType":"YulLiteral","src":"13002:2:24","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"12938:58:24","nodeType":"YulIdentifier","src":"12938:58:24"},"nativeSrc":"12938:67:24","nodeType":"YulFunctionCall","src":"12938:67:24"},"variableNames":[{"name":"pos","nativeSrc":"12931:3:24","nodeType":"YulIdentifier","src":"12931:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"13103:3:24","nodeType":"YulIdentifier","src":"13103:3:24"}],"functionName":{"name":"store_literal_in_memory_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2","nativeSrc":"13014:88:24","nodeType":"YulIdentifier","src":"13014:88:24"},"nativeSrc":"13014:93:24","nodeType":"YulFunctionCall","src":"13014:93:24"},"nativeSrc":"13014:93:24","nodeType":"YulExpressionStatement","src":"13014:93:24"},{"nativeSrc":"13116:19:24","nodeType":"YulAssignment","src":"13116:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"13127:3:24","nodeType":"YulIdentifier","src":"13127:3:24"},{"kind":"number","nativeSrc":"13132:2:24","nodeType":"YulLiteral","src":"13132:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13123:3:24","nodeType":"YulIdentifier","src":"13123:3:24"},"nativeSrc":"13123:12:24","nodeType":"YulFunctionCall","src":"13123:12:24"},"variableNames":[{"name":"end","nativeSrc":"13116:3:24","nodeType":"YulIdentifier","src":"13116:3:24"}]}]},"name":"abi_encode_t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2_to_t_string_memory_ptr_fromStack","nativeSrc":"12775:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12909:3:24","nodeType":"YulTypedName","src":"12909:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12917:3:24","nodeType":"YulTypedName","src":"12917:3:24","type":""}],"src":"12775:366:24"},{"body":{"nativeSrc":"13318:248:24","nodeType":"YulBlock","src":"13318:248:24","statements":[{"nativeSrc":"13328:26:24","nodeType":"YulAssignment","src":"13328:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"13340:9:24","nodeType":"YulIdentifier","src":"13340:9:24"},{"kind":"number","nativeSrc":"13351:2:24","nodeType":"YulLiteral","src":"13351:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13336:3:24","nodeType":"YulIdentifier","src":"13336:3:24"},"nativeSrc":"13336:18:24","nodeType":"YulFunctionCall","src":"13336:18:24"},"variableNames":[{"name":"tail","nativeSrc":"13328:4:24","nodeType":"YulIdentifier","src":"13328:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13375:9:24","nodeType":"YulIdentifier","src":"13375:9:24"},{"kind":"number","nativeSrc":"13386:1:24","nodeType":"YulLiteral","src":"13386:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"13371:3:24","nodeType":"YulIdentifier","src":"13371:3:24"},"nativeSrc":"13371:17:24","nodeType":"YulFunctionCall","src":"13371:17:24"},{"arguments":[{"name":"tail","nativeSrc":"13394:4:24","nodeType":"YulIdentifier","src":"13394:4:24"},{"name":"headStart","nativeSrc":"13400:9:24","nodeType":"YulIdentifier","src":"13400:9:24"}],"functionName":{"name":"sub","nativeSrc":"13390:3:24","nodeType":"YulIdentifier","src":"13390:3:24"},"nativeSrc":"13390:20:24","nodeType":"YulFunctionCall","src":"13390:20:24"}],"functionName":{"name":"mstore","nativeSrc":"13364:6:24","nodeType":"YulIdentifier","src":"13364:6:24"},"nativeSrc":"13364:47:24","nodeType":"YulFunctionCall","src":"13364:47:24"},"nativeSrc":"13364:47:24","nodeType":"YulExpressionStatement","src":"13364:47:24"},{"nativeSrc":"13420:139:24","nodeType":"YulAssignment","src":"13420:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"13554:4:24","nodeType":"YulIdentifier","src":"13554:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2_to_t_string_memory_ptr_fromStack","nativeSrc":"13428:124:24","nodeType":"YulIdentifier","src":"13428:124:24"},"nativeSrc":"13428:131:24","nodeType":"YulFunctionCall","src":"13428:131:24"},"variableNames":[{"name":"tail","nativeSrc":"13420:4:24","nodeType":"YulIdentifier","src":"13420:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"13147:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13298:9:24","nodeType":"YulTypedName","src":"13298:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13313:4:24","nodeType":"YulTypedName","src":"13313:4:24","type":""}],"src":"13147:419:24"},{"body":{"nativeSrc":"13678:67:24","nodeType":"YulBlock","src":"13678:67:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"13700:6:24","nodeType":"YulIdentifier","src":"13700:6:24"},{"kind":"number","nativeSrc":"13708:1:24","nodeType":"YulLiteral","src":"13708:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"13696:3:24","nodeType":"YulIdentifier","src":"13696:3:24"},"nativeSrc":"13696:14:24","nodeType":"YulFunctionCall","src":"13696:14:24"},{"hexValue":"537472617465677920616c726561647920616374697665","kind":"string","nativeSrc":"13712:25:24","nodeType":"YulLiteral","src":"13712:25:24","type":"","value":"Strategy already active"}],"functionName":{"name":"mstore","nativeSrc":"13689:6:24","nodeType":"YulIdentifier","src":"13689:6:24"},"nativeSrc":"13689:49:24","nodeType":"YulFunctionCall","src":"13689:49:24"},"nativeSrc":"13689:49:24","nodeType":"YulExpressionStatement","src":"13689:49:24"}]},"name":"store_literal_in_memory_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa","nativeSrc":"13572:173:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"13670:6:24","nodeType":"YulTypedName","src":"13670:6:24","type":""}],"src":"13572:173:24"},{"body":{"nativeSrc":"13897:220:24","nodeType":"YulBlock","src":"13897:220:24","statements":[{"nativeSrc":"13907:74:24","nodeType":"YulAssignment","src":"13907:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"13973:3:24","nodeType":"YulIdentifier","src":"13973:3:24"},{"kind":"number","nativeSrc":"13978:2:24","nodeType":"YulLiteral","src":"13978:2:24","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"13914:58:24","nodeType":"YulIdentifier","src":"13914:58:24"},"nativeSrc":"13914:67:24","nodeType":"YulFunctionCall","src":"13914:67:24"},"variableNames":[{"name":"pos","nativeSrc":"13907:3:24","nodeType":"YulIdentifier","src":"13907:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"14079:3:24","nodeType":"YulIdentifier","src":"14079:3:24"}],"functionName":{"name":"store_literal_in_memory_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa","nativeSrc":"13990:88:24","nodeType":"YulIdentifier","src":"13990:88:24"},"nativeSrc":"13990:93:24","nodeType":"YulFunctionCall","src":"13990:93:24"},"nativeSrc":"13990:93:24","nodeType":"YulExpressionStatement","src":"13990:93:24"},{"nativeSrc":"14092:19:24","nodeType":"YulAssignment","src":"14092:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"14103:3:24","nodeType":"YulIdentifier","src":"14103:3:24"},{"kind":"number","nativeSrc":"14108:2:24","nodeType":"YulLiteral","src":"14108:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14099:3:24","nodeType":"YulIdentifier","src":"14099:3:24"},"nativeSrc":"14099:12:24","nodeType":"YulFunctionCall","src":"14099:12:24"},"variableNames":[{"name":"end","nativeSrc":"14092:3:24","nodeType":"YulIdentifier","src":"14092:3:24"}]}]},"name":"abi_encode_t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa_to_t_string_memory_ptr_fromStack","nativeSrc":"13751:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"13885:3:24","nodeType":"YulTypedName","src":"13885:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"13893:3:24","nodeType":"YulTypedName","src":"13893:3:24","type":""}],"src":"13751:366:24"},{"body":{"nativeSrc":"14294:248:24","nodeType":"YulBlock","src":"14294:248:24","statements":[{"nativeSrc":"14304:26:24","nodeType":"YulAssignment","src":"14304:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"14316:9:24","nodeType":"YulIdentifier","src":"14316:9:24"},{"kind":"number","nativeSrc":"14327:2:24","nodeType":"YulLiteral","src":"14327:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14312:3:24","nodeType":"YulIdentifier","src":"14312:3:24"},"nativeSrc":"14312:18:24","nodeType":"YulFunctionCall","src":"14312:18:24"},"variableNames":[{"name":"tail","nativeSrc":"14304:4:24","nodeType":"YulIdentifier","src":"14304:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14351:9:24","nodeType":"YulIdentifier","src":"14351:9:24"},{"kind":"number","nativeSrc":"14362:1:24","nodeType":"YulLiteral","src":"14362:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"14347:3:24","nodeType":"YulIdentifier","src":"14347:3:24"},"nativeSrc":"14347:17:24","nodeType":"YulFunctionCall","src":"14347:17:24"},{"arguments":[{"name":"tail","nativeSrc":"14370:4:24","nodeType":"YulIdentifier","src":"14370:4:24"},{"name":"headStart","nativeSrc":"14376:9:24","nodeType":"YulIdentifier","src":"14376:9:24"}],"functionName":{"name":"sub","nativeSrc":"14366:3:24","nodeType":"YulIdentifier","src":"14366:3:24"},"nativeSrc":"14366:20:24","nodeType":"YulFunctionCall","src":"14366:20:24"}],"functionName":{"name":"mstore","nativeSrc":"14340:6:24","nodeType":"YulIdentifier","src":"14340:6:24"},"nativeSrc":"14340:47:24","nodeType":"YulFunctionCall","src":"14340:47:24"},"nativeSrc":"14340:47:24","nodeType":"YulExpressionStatement","src":"14340:47:24"},{"nativeSrc":"14396:139:24","nodeType":"YulAssignment","src":"14396:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"14530:4:24","nodeType":"YulIdentifier","src":"14530:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa_to_t_string_memory_ptr_fromStack","nativeSrc":"14404:124:24","nodeType":"YulIdentifier","src":"14404:124:24"},"nativeSrc":"14404:131:24","nodeType":"YulFunctionCall","src":"14404:131:24"},"variableNames":[{"name":"tail","nativeSrc":"14396:4:24","nodeType":"YulIdentifier","src":"14396:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"14123:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14274:9:24","nodeType":"YulTypedName","src":"14274:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14289:4:24","nodeType":"YulTypedName","src":"14289:4:24","type":""}],"src":"14123:419:24"},{"body":{"nativeSrc":"14590:146:24","nodeType":"YulBlock","src":"14590:146:24","statements":[{"nativeSrc":"14600:23:24","nodeType":"YulAssignment","src":"14600:23:24","value":{"arguments":[{"name":"x","nativeSrc":"14621:1:24","nodeType":"YulIdentifier","src":"14621:1:24"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"14605:15:24","nodeType":"YulIdentifier","src":"14605:15:24"},"nativeSrc":"14605:18:24","nodeType":"YulFunctionCall","src":"14605:18:24"},"variableNames":[{"name":"x","nativeSrc":"14600:1:24","nodeType":"YulIdentifier","src":"14600:1:24"}]},{"nativeSrc":"14632:23:24","nodeType":"YulAssignment","src":"14632:23:24","value":{"arguments":[{"name":"y","nativeSrc":"14653:1:24","nodeType":"YulIdentifier","src":"14653:1:24"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"14637:15:24","nodeType":"YulIdentifier","src":"14637:15:24"},"nativeSrc":"14637:18:24","nodeType":"YulFunctionCall","src":"14637:18:24"},"variableNames":[{"name":"y","nativeSrc":"14632:1:24","nodeType":"YulIdentifier","src":"14632:1:24"}]},{"nativeSrc":"14664:16:24","nodeType":"YulAssignment","src":"14664:16:24","value":{"arguments":[{"name":"x","nativeSrc":"14675:1:24","nodeType":"YulIdentifier","src":"14675:1:24"},{"name":"y","nativeSrc":"14678:1:24","nodeType":"YulIdentifier","src":"14678:1:24"}],"functionName":{"name":"add","nativeSrc":"14671:3:24","nodeType":"YulIdentifier","src":"14671:3:24"},"nativeSrc":"14671:9:24","nodeType":"YulFunctionCall","src":"14671:9:24"},"variableNames":[{"name":"sum","nativeSrc":"14664:3:24","nodeType":"YulIdentifier","src":"14664:3:24"}]},{"body":{"nativeSrc":"14707:22:24","nodeType":"YulBlock","src":"14707:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14709:16:24","nodeType":"YulIdentifier","src":"14709:16:24"},"nativeSrc":"14709:18:24","nodeType":"YulFunctionCall","src":"14709:18:24"},"nativeSrc":"14709:18:24","nodeType":"YulExpressionStatement","src":"14709:18:24"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"14696:3:24","nodeType":"YulIdentifier","src":"14696:3:24"},{"kind":"number","nativeSrc":"14701:4:24","nodeType":"YulLiteral","src":"14701:4:24","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"14693:2:24","nodeType":"YulIdentifier","src":"14693:2:24"},"nativeSrc":"14693:13:24","nodeType":"YulFunctionCall","src":"14693:13:24"},"nativeSrc":"14690:39:24","nodeType":"YulIf","src":"14690:39:24"}]},"name":"checked_add_t_uint8","nativeSrc":"14548:188:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"14577:1:24","nodeType":"YulTypedName","src":"14577:1:24","type":""},{"name":"y","nativeSrc":"14580:1:24","nodeType":"YulTypedName","src":"14580:1:24","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"14586:3:24","nodeType":"YulTypedName","src":"14586:3:24","type":""}],"src":"14548:188:24"},{"body":{"nativeSrc":"14896:288:24","nodeType":"YulBlock","src":"14896:288:24","statements":[{"nativeSrc":"14906:26:24","nodeType":"YulAssignment","src":"14906:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"14918:9:24","nodeType":"YulIdentifier","src":"14918:9:24"},{"kind":"number","nativeSrc":"14929:2:24","nodeType":"YulLiteral","src":"14929:2:24","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14914:3:24","nodeType":"YulIdentifier","src":"14914:3:24"},"nativeSrc":"14914:18:24","nodeType":"YulFunctionCall","src":"14914:18:24"},"variableNames":[{"name":"tail","nativeSrc":"14906:4:24","nodeType":"YulIdentifier","src":"14906:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"14986:6:24","nodeType":"YulIdentifier","src":"14986:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"14999:9:24","nodeType":"YulIdentifier","src":"14999:9:24"},{"kind":"number","nativeSrc":"15010:1:24","nodeType":"YulLiteral","src":"15010:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"14995:3:24","nodeType":"YulIdentifier","src":"14995:3:24"},"nativeSrc":"14995:17:24","nodeType":"YulFunctionCall","src":"14995:17:24"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"14942:43:24","nodeType":"YulIdentifier","src":"14942:43:24"},"nativeSrc":"14942:71:24","nodeType":"YulFunctionCall","src":"14942:71:24"},"nativeSrc":"14942:71:24","nodeType":"YulExpressionStatement","src":"14942:71:24"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"15067:6:24","nodeType":"YulIdentifier","src":"15067:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"15080:9:24","nodeType":"YulIdentifier","src":"15080:9:24"},{"kind":"number","nativeSrc":"15091:2:24","nodeType":"YulLiteral","src":"15091:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15076:3:24","nodeType":"YulIdentifier","src":"15076:3:24"},"nativeSrc":"15076:18:24","nodeType":"YulFunctionCall","src":"15076:18:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"15023:43:24","nodeType":"YulIdentifier","src":"15023:43:24"},"nativeSrc":"15023:72:24","nodeType":"YulFunctionCall","src":"15023:72:24"},"nativeSrc":"15023:72:24","nodeType":"YulExpressionStatement","src":"15023:72:24"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"15149:6:24","nodeType":"YulIdentifier","src":"15149:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"15162:9:24","nodeType":"YulIdentifier","src":"15162:9:24"},{"kind":"number","nativeSrc":"15173:2:24","nodeType":"YulLiteral","src":"15173:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15158:3:24","nodeType":"YulIdentifier","src":"15158:3:24"},"nativeSrc":"15158:18:24","nodeType":"YulFunctionCall","src":"15158:18:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"15105:43:24","nodeType":"YulIdentifier","src":"15105:43:24"},"nativeSrc":"15105:72:24","nodeType":"YulFunctionCall","src":"15105:72:24"},"nativeSrc":"15105:72:24","nodeType":"YulExpressionStatement","src":"15105:72:24"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"14742:442:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14852:9:24","nodeType":"YulTypedName","src":"14852:9:24","type":""},{"name":"value2","nativeSrc":"14864:6:24","nodeType":"YulTypedName","src":"14864:6:24","type":""},{"name":"value1","nativeSrc":"14872:6:24","nodeType":"YulTypedName","src":"14872:6:24","type":""},{"name":"value0","nativeSrc":"14880:6:24","nodeType":"YulTypedName","src":"14880:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14891:4:24","nodeType":"YulTypedName","src":"14891:4:24","type":""}],"src":"14742:442:24"},{"body":{"nativeSrc":"15234:147:24","nodeType":"YulBlock","src":"15234:147:24","statements":[{"nativeSrc":"15244:25:24","nodeType":"YulAssignment","src":"15244:25:24","value":{"arguments":[{"name":"x","nativeSrc":"15267:1:24","nodeType":"YulIdentifier","src":"15267:1:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"15249:17:24","nodeType":"YulIdentifier","src":"15249:17:24"},"nativeSrc":"15249:20:24","nodeType":"YulFunctionCall","src":"15249:20:24"},"variableNames":[{"name":"x","nativeSrc":"15244:1:24","nodeType":"YulIdentifier","src":"15244:1:24"}]},{"nativeSrc":"15278:25:24","nodeType":"YulAssignment","src":"15278:25:24","value":{"arguments":[{"name":"y","nativeSrc":"15301:1:24","nodeType":"YulIdentifier","src":"15301:1:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"15283:17:24","nodeType":"YulIdentifier","src":"15283:17:24"},"nativeSrc":"15283:20:24","nodeType":"YulFunctionCall","src":"15283:20:24"},"variableNames":[{"name":"y","nativeSrc":"15278:1:24","nodeType":"YulIdentifier","src":"15278:1:24"}]},{"nativeSrc":"15312:16:24","nodeType":"YulAssignment","src":"15312:16:24","value":{"arguments":[{"name":"x","nativeSrc":"15323:1:24","nodeType":"YulIdentifier","src":"15323:1:24"},{"name":"y","nativeSrc":"15326:1:24","nodeType":"YulIdentifier","src":"15326:1:24"}],"functionName":{"name":"add","nativeSrc":"15319:3:24","nodeType":"YulIdentifier","src":"15319:3:24"},"nativeSrc":"15319:9:24","nodeType":"YulFunctionCall","src":"15319:9:24"},"variableNames":[{"name":"sum","nativeSrc":"15312:3:24","nodeType":"YulIdentifier","src":"15312:3:24"}]},{"body":{"nativeSrc":"15352:22:24","nodeType":"YulBlock","src":"15352:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15354:16:24","nodeType":"YulIdentifier","src":"15354:16:24"},"nativeSrc":"15354:18:24","nodeType":"YulFunctionCall","src":"15354:18:24"},"nativeSrc":"15354:18:24","nodeType":"YulExpressionStatement","src":"15354:18:24"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"15344:1:24","nodeType":"YulIdentifier","src":"15344:1:24"},{"name":"sum","nativeSrc":"15347:3:24","nodeType":"YulIdentifier","src":"15347:3:24"}],"functionName":{"name":"gt","nativeSrc":"15341:2:24","nodeType":"YulIdentifier","src":"15341:2:24"},"nativeSrc":"15341:10:24","nodeType":"YulFunctionCall","src":"15341:10:24"},"nativeSrc":"15338:36:24","nodeType":"YulIf","src":"15338:36:24"}]},"name":"checked_add_t_uint256","nativeSrc":"15190:191:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15221:1:24","nodeType":"YulTypedName","src":"15221:1:24","type":""},{"name":"y","nativeSrc":"15224:1:24","nodeType":"YulTypedName","src":"15224:1:24","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"15230:3:24","nodeType":"YulTypedName","src":"15230:3:24","type":""}],"src":"15190:191:24"},{"body":{"nativeSrc":"15438:51:24","nodeType":"YulBlock","src":"15438:51:24","statements":[{"nativeSrc":"15448:34:24","nodeType":"YulAssignment","src":"15448:34:24","value":{"arguments":[{"kind":"number","nativeSrc":"15473:1:24","nodeType":"YulLiteral","src":"15473:1:24","type":"","value":"1"},{"name":"value","nativeSrc":"15476:5:24","nodeType":"YulIdentifier","src":"15476:5:24"}],"functionName":{"name":"shr","nativeSrc":"15469:3:24","nodeType":"YulIdentifier","src":"15469:3:24"},"nativeSrc":"15469:13:24","nodeType":"YulFunctionCall","src":"15469:13:24"},"variableNames":[{"name":"newValue","nativeSrc":"15448:8:24","nodeType":"YulIdentifier","src":"15448:8:24"}]}]},"name":"shift_right_1_unsigned","nativeSrc":"15387:102:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15419:5:24","nodeType":"YulTypedName","src":"15419:5:24","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"15429:8:24","nodeType":"YulTypedName","src":"15429:8:24","type":""}],"src":"15387:102:24"},{"body":{"nativeSrc":"15568:775:24","nodeType":"YulBlock","src":"15568:775:24","statements":[{"nativeSrc":"15578:15:24","nodeType":"YulAssignment","src":"15578:15:24","value":{"name":"_power","nativeSrc":"15587:6:24","nodeType":"YulIdentifier","src":"15587:6:24"},"variableNames":[{"name":"power","nativeSrc":"15578:5:24","nodeType":"YulIdentifier","src":"15578:5:24"}]},{"nativeSrc":"15602:14:24","nodeType":"YulAssignment","src":"15602:14:24","value":{"name":"_base","nativeSrc":"15611:5:24","nodeType":"YulIdentifier","src":"15611:5:24"},"variableNames":[{"name":"base","nativeSrc":"15602:4:24","nodeType":"YulIdentifier","src":"15602:4:24"}]},{"body":{"nativeSrc":"15660:677:24","nodeType":"YulBlock","src":"15660:677:24","statements":[{"body":{"nativeSrc":"15748:22:24","nodeType":"YulBlock","src":"15748:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15750:16:24","nodeType":"YulIdentifier","src":"15750:16:24"},"nativeSrc":"15750:18:24","nodeType":"YulFunctionCall","src":"15750:18:24"},"nativeSrc":"15750:18:24","nodeType":"YulExpressionStatement","src":"15750:18:24"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"15726:4:24","nodeType":"YulIdentifier","src":"15726:4:24"},{"arguments":[{"name":"max","nativeSrc":"15736:3:24","nodeType":"YulIdentifier","src":"15736:3:24"},{"name":"base","nativeSrc":"15741:4:24","nodeType":"YulIdentifier","src":"15741:4:24"}],"functionName":{"name":"div","nativeSrc":"15732:3:24","nodeType":"YulIdentifier","src":"15732:3:24"},"nativeSrc":"15732:14:24","nodeType":"YulFunctionCall","src":"15732:14:24"}],"functionName":{"name":"gt","nativeSrc":"15723:2:24","nodeType":"YulIdentifier","src":"15723:2:24"},"nativeSrc":"15723:24:24","nodeType":"YulFunctionCall","src":"15723:24:24"},"nativeSrc":"15720:50:24","nodeType":"YulIf","src":"15720:50:24"},{"body":{"nativeSrc":"15815:419:24","nodeType":"YulBlock","src":"15815:419:24","statements":[{"nativeSrc":"16195:25:24","nodeType":"YulAssignment","src":"16195:25:24","value":{"arguments":[{"name":"power","nativeSrc":"16208:5:24","nodeType":"YulIdentifier","src":"16208:5:24"},{"name":"base","nativeSrc":"16215:4:24","nodeType":"YulIdentifier","src":"16215:4:24"}],"functionName":{"name":"mul","nativeSrc":"16204:3:24","nodeType":"YulIdentifier","src":"16204:3:24"},"nativeSrc":"16204:16:24","nodeType":"YulFunctionCall","src":"16204:16:24"},"variableNames":[{"name":"power","nativeSrc":"16195:5:24","nodeType":"YulIdentifier","src":"16195:5:24"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"15790:8:24","nodeType":"YulIdentifier","src":"15790:8:24"},{"kind":"number","nativeSrc":"15800:1:24","nodeType":"YulLiteral","src":"15800:1:24","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"15786:3:24","nodeType":"YulIdentifier","src":"15786:3:24"},"nativeSrc":"15786:16:24","nodeType":"YulFunctionCall","src":"15786:16:24"},"nativeSrc":"15783:451:24","nodeType":"YulIf","src":"15783:451:24"},{"nativeSrc":"16247:23:24","nodeType":"YulAssignment","src":"16247:23:24","value":{"arguments":[{"name":"base","nativeSrc":"16259:4:24","nodeType":"YulIdentifier","src":"16259:4:24"},{"name":"base","nativeSrc":"16265:4:24","nodeType":"YulIdentifier","src":"16265:4:24"}],"functionName":{"name":"mul","nativeSrc":"16255:3:24","nodeType":"YulIdentifier","src":"16255:3:24"},"nativeSrc":"16255:15:24","nodeType":"YulFunctionCall","src":"16255:15:24"},"variableNames":[{"name":"base","nativeSrc":"16247:4:24","nodeType":"YulIdentifier","src":"16247:4:24"}]},{"nativeSrc":"16283:44:24","nodeType":"YulAssignment","src":"16283:44:24","value":{"arguments":[{"name":"exponent","nativeSrc":"16318:8:24","nodeType":"YulIdentifier","src":"16318:8:24"}],"functionName":{"name":"shift_right_1_unsigned","nativeSrc":"16295:22:24","nodeType":"YulIdentifier","src":"16295:22:24"},"nativeSrc":"16295:32:24","nodeType":"YulFunctionCall","src":"16295:32:24"},"variableNames":[{"name":"exponent","nativeSrc":"16283:8:24","nodeType":"YulIdentifier","src":"16283:8:24"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"15636:8:24","nodeType":"YulIdentifier","src":"15636:8:24"},{"kind":"number","nativeSrc":"15646:1:24","nodeType":"YulLiteral","src":"15646:1:24","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"15633:2:24","nodeType":"YulIdentifier","src":"15633:2:24"},"nativeSrc":"15633:15:24","nodeType":"YulFunctionCall","src":"15633:15:24"},"nativeSrc":"15625:712:24","nodeType":"YulForLoop","post":{"nativeSrc":"15649:2:24","nodeType":"YulBlock","src":"15649:2:24","statements":[]},"pre":{"nativeSrc":"15629:3:24","nodeType":"YulBlock","src":"15629:3:24","statements":[]},"src":"15625:712:24"}]},"name":"checked_exp_helper","nativeSrc":"15495:848:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"_power","nativeSrc":"15523:6:24","nodeType":"YulTypedName","src":"15523:6:24","type":""},{"name":"_base","nativeSrc":"15531:5:24","nodeType":"YulTypedName","src":"15531:5:24","type":""},{"name":"exponent","nativeSrc":"15538:8:24","nodeType":"YulTypedName","src":"15538:8:24","type":""},{"name":"max","nativeSrc":"15548:3:24","nodeType":"YulTypedName","src":"15548:3:24","type":""}],"returnVariables":[{"name":"power","nativeSrc":"15556:5:24","nodeType":"YulTypedName","src":"15556:5:24","type":""},{"name":"base","nativeSrc":"15563:4:24","nodeType":"YulTypedName","src":"15563:4:24","type":""}],"src":"15495:848:24"},{"body":{"nativeSrc":"16409:1013:24","nodeType":"YulBlock","src":"16409:1013:24","statements":[{"body":{"nativeSrc":"16604:20:24","nodeType":"YulBlock","src":"16604:20:24","statements":[{"nativeSrc":"16606:10:24","nodeType":"YulAssignment","src":"16606:10:24","value":{"kind":"number","nativeSrc":"16615:1:24","nodeType":"YulLiteral","src":"16615:1:24","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"16606:5:24","nodeType":"YulIdentifier","src":"16606:5:24"}]},{"nativeSrc":"16617:5:24","nodeType":"YulLeave","src":"16617:5:24"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"16594:8:24","nodeType":"YulIdentifier","src":"16594:8:24"}],"functionName":{"name":"iszero","nativeSrc":"16587:6:24","nodeType":"YulIdentifier","src":"16587:6:24"},"nativeSrc":"16587:16:24","nodeType":"YulFunctionCall","src":"16587:16:24"},"nativeSrc":"16584:40:24","nodeType":"YulIf","src":"16584:40:24"},{"body":{"nativeSrc":"16649:20:24","nodeType":"YulBlock","src":"16649:20:24","statements":[{"nativeSrc":"16651:10:24","nodeType":"YulAssignment","src":"16651:10:24","value":{"kind":"number","nativeSrc":"16660:1:24","nodeType":"YulLiteral","src":"16660:1:24","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"16651:5:24","nodeType":"YulIdentifier","src":"16651:5:24"}]},{"nativeSrc":"16662:5:24","nodeType":"YulLeave","src":"16662:5:24"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"16643:4:24","nodeType":"YulIdentifier","src":"16643:4:24"}],"functionName":{"name":"iszero","nativeSrc":"16636:6:24","nodeType":"YulIdentifier","src":"16636:6:24"},"nativeSrc":"16636:12:24","nodeType":"YulFunctionCall","src":"16636:12:24"},"nativeSrc":"16633:36:24","nodeType":"YulIf","src":"16633:36:24"},{"cases":[{"body":{"nativeSrc":"16779:20:24","nodeType":"YulBlock","src":"16779:20:24","statements":[{"nativeSrc":"16781:10:24","nodeType":"YulAssignment","src":"16781:10:24","value":{"kind":"number","nativeSrc":"16790:1:24","nodeType":"YulLiteral","src":"16790:1:24","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"16781:5:24","nodeType":"YulIdentifier","src":"16781:5:24"}]},{"nativeSrc":"16792:5:24","nodeType":"YulLeave","src":"16792:5:24"}]},"nativeSrc":"16772:27:24","nodeType":"YulCase","src":"16772:27:24","value":{"kind":"number","nativeSrc":"16777:1:24","nodeType":"YulLiteral","src":"16777:1:24","type":"","value":"1"}},{"body":{"nativeSrc":"16823:176:24","nodeType":"YulBlock","src":"16823:176:24","statements":[{"body":{"nativeSrc":"16858:22:24","nodeType":"YulBlock","src":"16858:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16860:16:24","nodeType":"YulIdentifier","src":"16860:16:24"},"nativeSrc":"16860:18:24","nodeType":"YulFunctionCall","src":"16860:18:24"},"nativeSrc":"16860:18:24","nodeType":"YulExpressionStatement","src":"16860:18:24"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"16843:8:24","nodeType":"YulIdentifier","src":"16843:8:24"},{"kind":"number","nativeSrc":"16853:3:24","nodeType":"YulLiteral","src":"16853:3:24","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"16840:2:24","nodeType":"YulIdentifier","src":"16840:2:24"},"nativeSrc":"16840:17:24","nodeType":"YulFunctionCall","src":"16840:17:24"},"nativeSrc":"16837:43:24","nodeType":"YulIf","src":"16837:43:24"},{"nativeSrc":"16893:25:24","nodeType":"YulAssignment","src":"16893:25:24","value":{"arguments":[{"kind":"number","nativeSrc":"16906:1:24","nodeType":"YulLiteral","src":"16906:1:24","type":"","value":"2"},{"name":"exponent","nativeSrc":"16909:8:24","nodeType":"YulIdentifier","src":"16909:8:24"}],"functionName":{"name":"exp","nativeSrc":"16902:3:24","nodeType":"YulIdentifier","src":"16902:3:24"},"nativeSrc":"16902:16:24","nodeType":"YulFunctionCall","src":"16902:16:24"},"variableNames":[{"name":"power","nativeSrc":"16893:5:24","nodeType":"YulIdentifier","src":"16893:5:24"}]},{"body":{"nativeSrc":"16949:22:24","nodeType":"YulBlock","src":"16949:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16951:16:24","nodeType":"YulIdentifier","src":"16951:16:24"},"nativeSrc":"16951:18:24","nodeType":"YulFunctionCall","src":"16951:18:24"},"nativeSrc":"16951:18:24","nodeType":"YulExpressionStatement","src":"16951:18:24"}]},"condition":{"arguments":[{"name":"power","nativeSrc":"16937:5:24","nodeType":"YulIdentifier","src":"16937:5:24"},{"name":"max","nativeSrc":"16944:3:24","nodeType":"YulIdentifier","src":"16944:3:24"}],"functionName":{"name":"gt","nativeSrc":"16934:2:24","nodeType":"YulIdentifier","src":"16934:2:24"},"nativeSrc":"16934:14:24","nodeType":"YulFunctionCall","src":"16934:14:24"},"nativeSrc":"16931:40:24","nodeType":"YulIf","src":"16931:40:24"},{"nativeSrc":"16984:5:24","nodeType":"YulLeave","src":"16984:5:24"}]},"nativeSrc":"16808:191:24","nodeType":"YulCase","src":"16808:191:24","value":{"kind":"number","nativeSrc":"16813:1:24","nodeType":"YulLiteral","src":"16813:1:24","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"16729:4:24","nodeType":"YulIdentifier","src":"16729:4:24"},"nativeSrc":"16722:277:24","nodeType":"YulSwitch","src":"16722:277:24"},{"body":{"nativeSrc":"17131:123:24","nodeType":"YulBlock","src":"17131:123:24","statements":[{"nativeSrc":"17145:28:24","nodeType":"YulAssignment","src":"17145:28:24","value":{"arguments":[{"name":"base","nativeSrc":"17158:4:24","nodeType":"YulIdentifier","src":"17158:4:24"},{"name":"exponent","nativeSrc":"17164:8:24","nodeType":"YulIdentifier","src":"17164:8:24"}],"functionName":{"name":"exp","nativeSrc":"17154:3:24","nodeType":"YulIdentifier","src":"17154:3:24"},"nativeSrc":"17154:19:24","nodeType":"YulFunctionCall","src":"17154:19:24"},"variableNames":[{"name":"power","nativeSrc":"17145:5:24","nodeType":"YulIdentifier","src":"17145:5:24"}]},{"body":{"nativeSrc":"17204:22:24","nodeType":"YulBlock","src":"17204:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17206:16:24","nodeType":"YulIdentifier","src":"17206:16:24"},"nativeSrc":"17206:18:24","nodeType":"YulFunctionCall","src":"17206:18:24"},"nativeSrc":"17206:18:24","nodeType":"YulExpressionStatement","src":"17206:18:24"}]},"condition":{"arguments":[{"name":"power","nativeSrc":"17192:5:24","nodeType":"YulIdentifier","src":"17192:5:24"},{"name":"max","nativeSrc":"17199:3:24","nodeType":"YulIdentifier","src":"17199:3:24"}],"functionName":{"name":"gt","nativeSrc":"17189:2:24","nodeType":"YulIdentifier","src":"17189:2:24"},"nativeSrc":"17189:14:24","nodeType":"YulFunctionCall","src":"17189:14:24"},"nativeSrc":"17186:40:24","nodeType":"YulIf","src":"17186:40:24"},{"nativeSrc":"17239:5:24","nodeType":"YulLeave","src":"17239:5:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"17034:4:24","nodeType":"YulIdentifier","src":"17034:4:24"},{"kind":"number","nativeSrc":"17040:2:24","nodeType":"YulLiteral","src":"17040:2:24","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"17031:2:24","nodeType":"YulIdentifier","src":"17031:2:24"},"nativeSrc":"17031:12:24","nodeType":"YulFunctionCall","src":"17031:12:24"},{"arguments":[{"name":"exponent","nativeSrc":"17048:8:24","nodeType":"YulIdentifier","src":"17048:8:24"},{"kind":"number","nativeSrc":"17058:2:24","nodeType":"YulLiteral","src":"17058:2:24","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"17045:2:24","nodeType":"YulIdentifier","src":"17045:2:24"},"nativeSrc":"17045:16:24","nodeType":"YulFunctionCall","src":"17045:16:24"}],"functionName":{"name":"and","nativeSrc":"17027:3:24","nodeType":"YulIdentifier","src":"17027:3:24"},"nativeSrc":"17027:35:24","nodeType":"YulFunctionCall","src":"17027:35:24"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"17083:4:24","nodeType":"YulIdentifier","src":"17083:4:24"},{"kind":"number","nativeSrc":"17089:3:24","nodeType":"YulLiteral","src":"17089:3:24","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"17080:2:24","nodeType":"YulIdentifier","src":"17080:2:24"},"nativeSrc":"17080:13:24","nodeType":"YulFunctionCall","src":"17080:13:24"},{"arguments":[{"name":"exponent","nativeSrc":"17098:8:24","nodeType":"YulIdentifier","src":"17098:8:24"},{"kind":"number","nativeSrc":"17108:2:24","nodeType":"YulLiteral","src":"17108:2:24","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"17095:2:24","nodeType":"YulIdentifier","src":"17095:2:24"},"nativeSrc":"17095:16:24","nodeType":"YulFunctionCall","src":"17095:16:24"}],"functionName":{"name":"and","nativeSrc":"17076:3:24","nodeType":"YulIdentifier","src":"17076:3:24"},"nativeSrc":"17076:36:24","nodeType":"YulFunctionCall","src":"17076:36:24"}],"functionName":{"name":"or","nativeSrc":"17011:2:24","nodeType":"YulIdentifier","src":"17011:2:24"},"nativeSrc":"17011:111:24","nodeType":"YulFunctionCall","src":"17011:111:24"},"nativeSrc":"17008:246:24","nodeType":"YulIf","src":"17008:246:24"},{"nativeSrc":"17264:57:24","nodeType":"YulAssignment","src":"17264:57:24","value":{"arguments":[{"kind":"number","nativeSrc":"17298:1:24","nodeType":"YulLiteral","src":"17298:1:24","type":"","value":"1"},{"name":"base","nativeSrc":"17301:4:24","nodeType":"YulIdentifier","src":"17301:4:24"},{"name":"exponent","nativeSrc":"17307:8:24","nodeType":"YulIdentifier","src":"17307:8:24"},{"name":"max","nativeSrc":"17317:3:24","nodeType":"YulIdentifier","src":"17317:3:24"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"17279:18:24","nodeType":"YulIdentifier","src":"17279:18:24"},"nativeSrc":"17279:42:24","nodeType":"YulFunctionCall","src":"17279:42:24"},"variableNames":[{"name":"power","nativeSrc":"17264:5:24","nodeType":"YulIdentifier","src":"17264:5:24"},{"name":"base","nativeSrc":"17271:4:24","nodeType":"YulIdentifier","src":"17271:4:24"}]},{"body":{"nativeSrc":"17360:22:24","nodeType":"YulBlock","src":"17360:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17362:16:24","nodeType":"YulIdentifier","src":"17362:16:24"},"nativeSrc":"17362:18:24","nodeType":"YulFunctionCall","src":"17362:18:24"},"nativeSrc":"17362:18:24","nodeType":"YulExpressionStatement","src":"17362:18:24"}]},"condition":{"arguments":[{"name":"power","nativeSrc":"17337:5:24","nodeType":"YulIdentifier","src":"17337:5:24"},{"arguments":[{"name":"max","nativeSrc":"17348:3:24","nodeType":"YulIdentifier","src":"17348:3:24"},{"name":"base","nativeSrc":"17353:4:24","nodeType":"YulIdentifier","src":"17353:4:24"}],"functionName":{"name":"div","nativeSrc":"17344:3:24","nodeType":"YulIdentifier","src":"17344:3:24"},"nativeSrc":"17344:14:24","nodeType":"YulFunctionCall","src":"17344:14:24"}],"functionName":{"name":"gt","nativeSrc":"17334:2:24","nodeType":"YulIdentifier","src":"17334:2:24"},"nativeSrc":"17334:25:24","nodeType":"YulFunctionCall","src":"17334:25:24"},"nativeSrc":"17331:51:24","nodeType":"YulIf","src":"17331:51:24"},{"nativeSrc":"17391:25:24","nodeType":"YulAssignment","src":"17391:25:24","value":{"arguments":[{"name":"power","nativeSrc":"17404:5:24","nodeType":"YulIdentifier","src":"17404:5:24"},{"name":"base","nativeSrc":"17411:4:24","nodeType":"YulIdentifier","src":"17411:4:24"}],"functionName":{"name":"mul","nativeSrc":"17400:3:24","nodeType":"YulIdentifier","src":"17400:3:24"},"nativeSrc":"17400:16:24","nodeType":"YulFunctionCall","src":"17400:16:24"},"variableNames":[{"name":"power","nativeSrc":"17391:5:24","nodeType":"YulIdentifier","src":"17391:5:24"}]}]},"name":"checked_exp_unsigned","nativeSrc":"16349:1073:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"16379:4:24","nodeType":"YulTypedName","src":"16379:4:24","type":""},{"name":"exponent","nativeSrc":"16385:8:24","nodeType":"YulTypedName","src":"16385:8:24","type":""},{"name":"max","nativeSrc":"16395:3:24","nodeType":"YulTypedName","src":"16395:3:24","type":""}],"returnVariables":[{"name":"power","nativeSrc":"16403:5:24","nodeType":"YulTypedName","src":"16403:5:24","type":""}],"src":"16349:1073:24"},{"body":{"nativeSrc":"17492:217:24","nodeType":"YulBlock","src":"17492:217:24","statements":[{"nativeSrc":"17502:31:24","nodeType":"YulAssignment","src":"17502:31:24","value":{"arguments":[{"name":"base","nativeSrc":"17528:4:24","nodeType":"YulIdentifier","src":"17528:4:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"17510:17:24","nodeType":"YulIdentifier","src":"17510:17:24"},"nativeSrc":"17510:23:24","nodeType":"YulFunctionCall","src":"17510:23:24"},"variableNames":[{"name":"base","nativeSrc":"17502:4:24","nodeType":"YulIdentifier","src":"17502:4:24"}]},{"nativeSrc":"17542:37:24","nodeType":"YulAssignment","src":"17542:37:24","value":{"arguments":[{"name":"exponent","nativeSrc":"17570:8:24","nodeType":"YulIdentifier","src":"17570:8:24"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"17554:15:24","nodeType":"YulIdentifier","src":"17554:15:24"},"nativeSrc":"17554:25:24","nodeType":"YulFunctionCall","src":"17554:25:24"},"variableNames":[{"name":"exponent","nativeSrc":"17542:8:24","nodeType":"YulIdentifier","src":"17542:8:24"}]},{"nativeSrc":"17589:113:24","nodeType":"YulAssignment","src":"17589:113:24","value":{"arguments":[{"name":"base","nativeSrc":"17619:4:24","nodeType":"YulIdentifier","src":"17619:4:24"},{"name":"exponent","nativeSrc":"17625:8:24","nodeType":"YulIdentifier","src":"17625:8:24"},{"kind":"number","nativeSrc":"17635:66:24","nodeType":"YulLiteral","src":"17635:66:24","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"17598:20:24","nodeType":"YulIdentifier","src":"17598:20:24"},"nativeSrc":"17598:104:24","nodeType":"YulFunctionCall","src":"17598:104:24"},"variableNames":[{"name":"power","nativeSrc":"17589:5:24","nodeType":"YulIdentifier","src":"17589:5:24"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"17428:281:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"17467:4:24","nodeType":"YulTypedName","src":"17467:4:24","type":""},{"name":"exponent","nativeSrc":"17473:8:24","nodeType":"YulTypedName","src":"17473:8:24","type":""}],"returnVariables":[{"name":"power","nativeSrc":"17486:5:24","nodeType":"YulTypedName","src":"17486:5:24","type":""}],"src":"17428:281:24"},{"body":{"nativeSrc":"17743:152:24","nodeType":"YulBlock","src":"17743:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17760:1:24","nodeType":"YulLiteral","src":"17760:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"17763:77:24","nodeType":"YulLiteral","src":"17763:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"17753:6:24","nodeType":"YulIdentifier","src":"17753:6:24"},"nativeSrc":"17753:88:24","nodeType":"YulFunctionCall","src":"17753:88:24"},"nativeSrc":"17753:88:24","nodeType":"YulExpressionStatement","src":"17753:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17857:1:24","nodeType":"YulLiteral","src":"17857:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"17860:4:24","nodeType":"YulLiteral","src":"17860:4:24","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"17850:6:24","nodeType":"YulIdentifier","src":"17850:6:24"},"nativeSrc":"17850:15:24","nodeType":"YulFunctionCall","src":"17850:15:24"},"nativeSrc":"17850:15:24","nodeType":"YulExpressionStatement","src":"17850:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17881:1:24","nodeType":"YulLiteral","src":"17881:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"17884:4:24","nodeType":"YulLiteral","src":"17884:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"17874:6:24","nodeType":"YulIdentifier","src":"17874:6:24"},"nativeSrc":"17874:15:24","nodeType":"YulFunctionCall","src":"17874:15:24"},"nativeSrc":"17874:15:24","nodeType":"YulExpressionStatement","src":"17874:15:24"}]},"name":"panic_error_0x12","nativeSrc":"17715:180:24","nodeType":"YulFunctionDefinition","src":"17715:180:24"},{"body":{"nativeSrc":"18027:206:24","nodeType":"YulBlock","src":"18027:206:24","statements":[{"nativeSrc":"18037:26:24","nodeType":"YulAssignment","src":"18037:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"18049:9:24","nodeType":"YulIdentifier","src":"18049:9:24"},{"kind":"number","nativeSrc":"18060:2:24","nodeType":"YulLiteral","src":"18060:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18045:3:24","nodeType":"YulIdentifier","src":"18045:3:24"},"nativeSrc":"18045:18:24","nodeType":"YulFunctionCall","src":"18045:18:24"},"variableNames":[{"name":"tail","nativeSrc":"18037:4:24","nodeType":"YulIdentifier","src":"18037:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"18117:6:24","nodeType":"YulIdentifier","src":"18117:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"18130:9:24","nodeType":"YulIdentifier","src":"18130:9:24"},{"kind":"number","nativeSrc":"18141:1:24","nodeType":"YulLiteral","src":"18141:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"18126:3:24","nodeType":"YulIdentifier","src":"18126:3:24"},"nativeSrc":"18126:17:24","nodeType":"YulFunctionCall","src":"18126:17:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"18073:43:24","nodeType":"YulIdentifier","src":"18073:43:24"},"nativeSrc":"18073:71:24","nodeType":"YulFunctionCall","src":"18073:71:24"},"nativeSrc":"18073:71:24","nodeType":"YulExpressionStatement","src":"18073:71:24"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"18198:6:24","nodeType":"YulIdentifier","src":"18198:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"18211:9:24","nodeType":"YulIdentifier","src":"18211:9:24"},{"kind":"number","nativeSrc":"18222:2:24","nodeType":"YulLiteral","src":"18222:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18207:3:24","nodeType":"YulIdentifier","src":"18207:3:24"},"nativeSrc":"18207:18:24","nodeType":"YulFunctionCall","src":"18207:18:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"18154:43:24","nodeType":"YulIdentifier","src":"18154:43:24"},"nativeSrc":"18154:72:24","nodeType":"YulFunctionCall","src":"18154:72:24"},"nativeSrc":"18154:72:24","nodeType":"YulExpressionStatement","src":"18154:72:24"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"17901:332:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17991:9:24","nodeType":"YulTypedName","src":"17991:9:24","type":""},{"name":"value1","nativeSrc":"18003:6:24","nodeType":"YulTypedName","src":"18003:6:24","type":""},{"name":"value0","nativeSrc":"18011:6:24","nodeType":"YulTypedName","src":"18011:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18022:4:24","nodeType":"YulTypedName","src":"18022:4:24","type":""}],"src":"17901:332:24"},{"body":{"nativeSrc":"18267:152:24","nodeType":"YulBlock","src":"18267:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18284:1:24","nodeType":"YulLiteral","src":"18284:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"18287:77:24","nodeType":"YulLiteral","src":"18287:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"18277:6:24","nodeType":"YulIdentifier","src":"18277:6:24"},"nativeSrc":"18277:88:24","nodeType":"YulFunctionCall","src":"18277:88:24"},"nativeSrc":"18277:88:24","nodeType":"YulExpressionStatement","src":"18277:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18381:1:24","nodeType":"YulLiteral","src":"18381:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"18384:4:24","nodeType":"YulLiteral","src":"18384:4:24","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"18374:6:24","nodeType":"YulIdentifier","src":"18374:6:24"},"nativeSrc":"18374:15:24","nodeType":"YulFunctionCall","src":"18374:15:24"},"nativeSrc":"18374:15:24","nodeType":"YulExpressionStatement","src":"18374:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18405:1:24","nodeType":"YulLiteral","src":"18405:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"18408:4:24","nodeType":"YulLiteral","src":"18408:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"18398:6:24","nodeType":"YulIdentifier","src":"18398:6:24"},"nativeSrc":"18398:15:24","nodeType":"YulFunctionCall","src":"18398:15:24"},"nativeSrc":"18398:15:24","nodeType":"YulExpressionStatement","src":"18398:15:24"}]},"name":"panic_error_0x21","nativeSrc":"18239:180:24","nodeType":"YulFunctionDefinition","src":"18239:180:24"},{"body":{"nativeSrc":"18457:138:24","nodeType":"YulBlock","src":"18457:138:24","statements":[{"nativeSrc":"18467:23:24","nodeType":"YulAssignment","src":"18467:23:24","value":{"arguments":[{"name":"x","nativeSrc":"18488:1:24","nodeType":"YulIdentifier","src":"18488:1:24"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"18472:15:24","nodeType":"YulIdentifier","src":"18472:15:24"},"nativeSrc":"18472:18:24","nodeType":"YulFunctionCall","src":"18472:18:24"},"variableNames":[{"name":"x","nativeSrc":"18467:1:24","nodeType":"YulIdentifier","src":"18467:1:24"}]},{"nativeSrc":"18499:23:24","nodeType":"YulAssignment","src":"18499:23:24","value":{"arguments":[{"name":"y","nativeSrc":"18520:1:24","nodeType":"YulIdentifier","src":"18520:1:24"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"18504:15:24","nodeType":"YulIdentifier","src":"18504:15:24"},"nativeSrc":"18504:18:24","nodeType":"YulFunctionCall","src":"18504:18:24"},"variableNames":[{"name":"y","nativeSrc":"18499:1:24","nodeType":"YulIdentifier","src":"18499:1:24"}]},{"body":{"nativeSrc":"18544:22:24","nodeType":"YulBlock","src":"18544:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nativeSrc":"18546:16:24","nodeType":"YulIdentifier","src":"18546:16:24"},"nativeSrc":"18546:18:24","nodeType":"YulFunctionCall","src":"18546:18:24"},"nativeSrc":"18546:18:24","nodeType":"YulExpressionStatement","src":"18546:18:24"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"18541:1:24","nodeType":"YulIdentifier","src":"18541:1:24"}],"functionName":{"name":"iszero","nativeSrc":"18534:6:24","nodeType":"YulIdentifier","src":"18534:6:24"},"nativeSrc":"18534:9:24","nodeType":"YulFunctionCall","src":"18534:9:24"},"nativeSrc":"18531:35:24","nodeType":"YulIf","src":"18531:35:24"},{"nativeSrc":"18575:14:24","nodeType":"YulAssignment","src":"18575:14:24","value":{"arguments":[{"name":"x","nativeSrc":"18584:1:24","nodeType":"YulIdentifier","src":"18584:1:24"},{"name":"y","nativeSrc":"18587:1:24","nodeType":"YulIdentifier","src":"18587:1:24"}],"functionName":{"name":"mod","nativeSrc":"18580:3:24","nodeType":"YulIdentifier","src":"18580:3:24"},"nativeSrc":"18580:9:24","nodeType":"YulFunctionCall","src":"18580:9:24"},"variableNames":[{"name":"r","nativeSrc":"18575:1:24","nodeType":"YulIdentifier","src":"18575:1:24"}]}]},"name":"mod_t_uint8","nativeSrc":"18425:170:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"18446:1:24","nodeType":"YulTypedName","src":"18446:1:24","type":""},{"name":"y","nativeSrc":"18449:1:24","nodeType":"YulTypedName","src":"18449:1:24","type":""}],"returnVariables":[{"name":"r","nativeSrc":"18455:1:24","nodeType":"YulTypedName","src":"18455:1:24","type":""}],"src":"18425:170:24"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n mcopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b(memPtr) {\n\n mstore(add(memPtr, 0), \"Invalid strategy index\")\n\n }\n\n function abi_encode_t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_02c5fa2989418879755422d4c75eb933adce7a1dc2017469228ceba060be426b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a(memPtr) {\n\n mstore(add(memPtr, 0), \"Strategy is not active\")\n\n }\n\n function abi_encode_t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_5938fc586bdbe0850b8ef0338fbff84509d9eb098d2b4d24555144ec8e444e1a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273(memPtr) {\n\n mstore(add(memPtr, 0), \"Strategy not found in active str\")\n\n mstore(add(memPtr, 32), \"ategies\")\n\n }\n\n function abi_encode_t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n store_literal_in_memory_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_82240d11ded28a0c987b868ab902b8d4e4a4e18683bb959f67d812395aa6e273_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strategy cannot be zero address\")\n\n }\n\n function abi_encode_t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_282c917cf25ac58a91e4905ffdd6b8ec684ce9c0af1520dbb29955ad0f92deb2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa(memPtr) {\n\n mstore(add(memPtr, 0), \"Strategy already active\")\n\n }\n\n function abi_encode_t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 23)\n store_literal_in_memory_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4bc0b0d0e6f1065ffa2693361693b76ca0cfb5d011dc43fbe6828829c6e756fa_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_add_t_uint8(x, y) -> sum {\n x := cleanup_t_uint8(x)\n y := cleanup_t_uint8(y)\n sum := add(x, y)\n\n if gt(sum, 0xff) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function shift_right_1_unsigned(value) -> newValue {\n newValue :=\n\n shr(1, value)\n\n }\n\n function checked_exp_helper(_power, _base, exponent, max) -> power, base {\n power := _power\n base := _base\n for { } gt(exponent, 1) {}\n {\n // overflow check for base * base\n if gt(base, div(max, base)) { panic_error_0x11() }\n if and(exponent, 1)\n {\n // No checks for power := mul(power, base) needed, because the check\n // for base * base above is sufficient, since:\n // |power| <= base (proof by induction) and thus:\n // |power * base| <= base * base <= max <= |min| (for signed)\n // (this is equally true for signed and unsigned exp)\n power := mul(power, base)\n }\n base := mul(base, base)\n exponent := shift_right_1_unsigned(exponent)\n }\n }\n\n function checked_exp_unsigned(base, exponent, max) -> power {\n // This function currently cannot be inlined because of the\n // \"leave\" statements. We have to improve the optimizer.\n\n // Note that 0**0 == 1\n if iszero(exponent) { power := 1 leave }\n if iszero(base) { power := 0 leave }\n\n // Specializations for small bases\n switch base\n // 0 is handled above\n case 1 { power := 1 leave }\n case 2\n {\n if gt(exponent, 255) { panic_error_0x11() }\n power := exp(2, exponent)\n if gt(power, max) { panic_error_0x11() }\n leave\n }\n if or(\n and(lt(base, 11), lt(exponent, 78)),\n and(lt(base, 307), lt(exponent, 32))\n )\n {\n power := exp(base, exponent)\n if gt(power, max) { panic_error_0x11() }\n leave\n }\n\n power, base := checked_exp_helper(1, base, exponent, max)\n\n if gt(power, div(max, base)) { panic_error_0x11() }\n power := mul(power, base)\n }\n\n function checked_exp_t_uint256_t_uint8(base, exponent) -> power {\n base := cleanup_t_uint256(base)\n exponent := cleanup_t_uint8(exponent)\n\n power := checked_exp_unsigned(base, exponent, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function mod_t_uint8(x, y) -> r {\n x := cleanup_t_uint8(x)\n y := cleanup_t_uint8(y)\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n\n}\n","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"1164":[{"length":32,"start":4004}],"1166":[{"length":32,"start":3955}],"6613":[{"length":32,"start":2437}]},"linkReferences":{},"object":"608060405234801561000f575f80fd5b506004361061021a575f3560e01c8063715018a611610123578063ba087652116100ab578063d25815031161007a578063d2581503146106b0578063d905777e146106e0578063dd62ed3e14610710578063ef8b30f714610740578063f2fde38b146107705761021a565b8063ba087652146105f0578063c63d75b614610620578063c6e6f59214610650578063ce96cb77146106805761021a565b806395d89b41116100f257806395d89b4114610512578063a9059cbb14610530578063b20b242914610560578063b3d7f6b914610590578063b460af94146105c05761021a565b8063715018a6146104b05780638456cb59146104ba5780638da5cb5b146104c457806394bf804d146104e25761021a565b806323b872dd116101a6578063402d267d11610175578063402d267d146103d25780634cdad506146104025780635c975abb146104325780636e553f651461045057806370a08231146104805761021a565b806323b872dd1461035c578063313ce5671461038c57806338d52e0f146103aa5780633f4ba83a146103c85761021a565b80630a28a477116101ed5780630a28a477146102ba5780630c474691146102ea578063175188e81461030657806318160ddd14610322578063223e5479146103405761021a565b806301e1d1141461021e57806306fdde031461023c57806307a2d13a1461025a578063095ea7b31461028a575b5f80fd5b61022661078c565b604051610233919061241b565b60405180910390f35b610244610811565b60405161025191906124a4565b60405180910390f35b610274600480360381019061026f91906124f2565b6108a1565b604051610281919061241b565b60405180910390f35b6102a4600480360381019061029f9190612577565b6108b3565b6040516102b191906125cf565b60405180910390f35b6102d460048036038101906102cf91906124f2565b6108d5565b6040516102e1919061241b565b60405180910390f35b61030460048036038101906102ff91906125e8565b6108e8565b005b610320600480360381019061031b9190612626565b610a1c565b005b61032a610d2e565b604051610337919061241b565b60405180910390f35b61035a60048036038101906103559190612626565b610d37565b005b61037660048036038101906103719190612651565b610f3a565b60405161038391906125cf565b60405180910390f35b610394610f68565b6040516103a191906126bc565b60405180910390f35b6103b2610fa1565b6040516103bf91906126e4565b60405180910390f35b6103d0610fc8565b005b6103ec60048036038101906103e79190612626565b610fda565b6040516103f9919061241b565b60405180910390f35b61041c600480360381019061041791906124f2565b611003565b604051610429919061241b565b60405180910390f35b61043a611015565b60405161044791906125cf565b60405180910390f35b61046a600480360381019061046591906126fd565b61102b565b604051610477919061241b565b60405180910390f35b61049a60048036038101906104959190612626565b6110ab565b6040516104a7919061241b565b60405180910390f35b6104b86110f0565b005b6104c2611103565b005b6104cc611115565b6040516104d991906126e4565b60405180910390f35b6104fc60048036038101906104f791906126fd565b61113d565b604051610509919061241b565b60405180910390f35b61051a6111bd565b60405161052791906124a4565b60405180910390f35b61054a60048036038101906105459190612577565b61124d565b60405161055791906125cf565b60405180910390f35b61057a600480360381019061057591906124f2565b61126f565b60405161058791906126e4565b60405180910390f35b6105aa60048036038101906105a591906124f2565b6112aa565b6040516105b7919061241b565b60405180910390f35b6105da60048036038101906105d5919061273b565b6112bd565b6040516105e7919061241b565b60405180910390f35b61060a6004803603810190610605919061273b565b61133f565b604051610617919061241b565b60405180910390f35b61063a60048036038101906106359190612626565b6113c1565b604051610647919061241b565b60405180910390f35b61066a600480360381019061066591906124f2565b6113ea565b604051610677919061241b565b60405180910390f35b61069a60048036038101906106959190612626565b6113fc565b6040516106a7919061241b565b60405180910390f35b6106ca60048036038101906106c59190612626565b611415565b6040516106d791906125cf565b60405180910390f35b6106fa60048036038101906106f59190612626565b611432565b604051610707919061241b565b60405180910390f35b61072a6004803603810190610725919061278b565b611443565b604051610737919061241b565b60405180910390f35b61075a600480360381019061075591906124f2565b6114c5565b604051610767919061241b565b60405180910390f35b61078a60048036038101906107859190612626565b6114d7565b005b5f610795610fa1565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107cd91906126e4565b602060405180830381865afa1580156107e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080c91906127dd565b905090565b60606003805461082090612835565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90612835565b80156108975780601f1061086e57610100808354040283529160200191610897565b820191905f5260205f20905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b5f6108ac825f61155b565b9050919050565b5f806108bd6115b3565b90506108ca8185856115ba565b600191505092915050565b5f6108e18260016115cc565b9050919050565b6108f0611624565b6108f86116ab565b600680549050821061093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610936906128af565b60405180910390fd5b5f60068381548110610954576109536128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109c981837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116ec9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f04c429193504ad3c2cf06e0f2297127fd05e32601d5555ce5fd7eae9b77e4d1a83604051610a0f919061241b565b60405180910390a2505050565b610a24611624565b610a2c6116ab565b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612944565b60405180910390fd5b5f805f5b600680549050811015610b4d578373ffffffffffffffffffffffffffffffffffffffff1660068281548110610af157610af06128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b405780925060019150610b4d565b8080600101915050610ab9565b5080610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906129d2565b60405180910390fd5b6001600680549050610ba09190612a1d565b821015610c4e5760066001600680549050610bbb9190612a1d565b81548110610bcc57610bcb6128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068381548110610c0857610c076128cd565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6006805480610c6057610c5f612a50565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea460405160405180910390a2505050565b5f600254905090565b610d3f611624565b610d476116ab565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90612ac7565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690612b2f565b60405180910390fd5b600681908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f160405160405180910390a250565b5f80610f446115b3565b9050610f5185828561173f565b610f5c8585856117d2565b60019150509392505050565b5f610f716118c2565b7f0000000000000000000000000000000000000000000000000000000000000000610f9c9190612b4d565b905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b610fd0611624565b610fd86118c6565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f61100e825f61155b565b9050919050565b5f600560149054906101000a900460ff16905090565b5f8061103683610fda565b905080841115611081578284826040517f79012fb200000000000000000000000000000000000000000000000000000000815260040161107893929190612b81565b60405180910390fd5b5f61108b856114c5565b90506110a06110986115b3565b858784611928565b809250505092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110f8611624565b6111015f611942565b565b61110b611624565b611113611a05565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80611148836113c1565b905080841115611193578284826040517f284ff66700000000000000000000000000000000000000000000000000000000815260040161118a93929190612b81565b60405180910390fd5b5f61119d856112aa565b90506111b26111aa6115b3565b858388611928565b809250505092915050565b6060600480546111cc90612835565b80601f01602080910402602001604051908101604052809291908181526020018280546111f890612835565b80156112435780601f1061121a57610100808354040283529160200191611243565b820191905f5260205f20905b81548152906001019060200180831161122657829003601f168201915b5050505050905090565b5f806112576115b3565b90506112648185856117d2565b600191505092915050565b6006818154811061127e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6112b682600161155b565b9050919050565b5f806112c8836113fc565b905080851115611313578285826040517ffe9cceec00000000000000000000000000000000000000000000000000000000815260040161130a93929190612b81565b60405180910390fd5b5f61131d866108d5565b905061133361132a6115b3565b86868985611a68565b80925050509392505050565b5f8061134a83611432565b905080851115611395578285826040517fb94abeec00000000000000000000000000000000000000000000000000000000815260040161138c93929190612b81565b60405180910390fd5b5f61139f86611003565b90506113b56113ac6115b3565b8686848a611a68565b80925050509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f6113f5825f6115cc565b9050919050565b5f61140e61140983611432565b611003565b9050919050565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f61143c826110ab565b9050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6114d0825f6115cc565b9050919050565b6114df611624565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361154f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161154691906126e4565b60405180910390fd5b61155881611942565b50565b5f6115ab600161156961078c565b6115739190612bb6565b61157b6118c2565b600a6115879190612d18565b61158f610d2e565b6115999190612bb6565b8486611a84909392919063ffffffff16565b905092915050565b5f33905090565b6115c78383836001611ad1565b505050565b5f61161c6115d86118c2565b600a6115e49190612d18565b6115ec610d2e565b6115f69190612bb6565b600161160061078c565b61160a9190612bb6565b8486611a84909392919063ffffffff16565b905092915050565b61162c6115b3565b73ffffffffffffffffffffffffffffffffffffffff1661164a611115565b73ffffffffffffffffffffffffffffffffffffffff16146116a95761166d6115b3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116a091906126e4565b60405180910390fd5b565b6116b3611015565b156116ea576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6116f98383836001611ca0565b61173a57826040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161173191906126e4565b60405180910390fd5b505050565b5f61174a8484611443565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156117cc57818110156117bd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016117b493929190612b81565b60405180910390fd5b6117cb84848484035f611ad1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611842575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161183991906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b2575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016118a991906126e4565b60405180910390fd5b6118bd838383611d02565b505050565b5f90565b6118ce611f1b565b5f600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6119116115b3565b60405161191e91906126e4565b60405180910390a1565b6119306116ab565b61193c84848484611f5b565b50505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611a0d6116ab565b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a516115b3565b604051611a5e91906126e4565b60405180910390a1565b611a706116ab565b611a7d8585858585611fdc565b5050505050565b5f611ab2611a91836120b4565b8015611aad57505f8480611aa857611aa7612d62565b5b868809115b6120e1565b611abd8686866120ec565b611ac79190612bb6565b9050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b41575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611b3891906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bb1575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611ba891906126e4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c9a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c91919061241b565b60405180910390a35b50505050565b5f8063a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f808b5af1925060015f51148316611cf4578383151615611ce8573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d52578060025f828254611d469190612bb6565b92505081905550611e20565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ddb578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611dd293929190612b81565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e67578060025f8282540392505081905550611eb1565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f0e919061241b565b60405180910390a3505050565b611f23611015565b611f59576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611f6584836121cb565b611f6f83826121e2565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051611fce929190612d8f565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461201b5761201a83868361173f565b5b6120258382612261565b61202f84836122e0565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db85856040516120a5929190612d8f565b60405180910390a45050505050565b5f600160028360038111156120cc576120cb612db6565b5b6120d69190612de3565b60ff16149050919050565b5f8115159050919050565b5f805f6120f986866122f6565b915091505f820361211e5783818161211457612113612d62565b5b04925050506121c4565b81841161213d5761213c6121375f861460126011612313565b61232c565b5b5f8486880990508181118303925080820391505f855f038616905080860495508083049250600181825f0304019050808402831792505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808402955050505050505b9392505050565b6121de6121d6610fa1565b83308461233d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612252575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161224991906126e4565b60405180910390fd5b61225d5f8383611d02565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d1575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122c891906126e4565b60405180910390fd5b6122dc825f83611d02565b5050565b6122f26122eb610fa1565b83836116ec565b5050565b5f805f198385098385029150818110828203039250509250929050565b5f61231d846120e1565b82841802821890509392505050565b634e487b715f52806020526024601cfd5b61234b848484846001612392565b61238c57836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161238391906126e4565b60405180910390fd5b50505050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f511483166123f05783831516156123e4573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f819050919050565b61241581612403565b82525050565b5f60208201905061242e5f83018461240c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247682612434565b612480818561243e565b935061249081856020860161244e565b6124998161245c565b840191505092915050565b5f6020820190508181035f8301526124bc818461246c565b905092915050565b5f80fd5b6124d181612403565b81146124db575f80fd5b50565b5f813590506124ec816124c8565b92915050565b5f60208284031215612507576125066124c4565b5b5f612514848285016124de565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125468261251d565b9050919050565b6125568161253c565b8114612560575f80fd5b50565b5f813590506125718161254d565b92915050565b5f806040838503121561258d5761258c6124c4565b5b5f61259a85828601612563565b92505060206125ab858286016124de565b9150509250929050565b5f8115159050919050565b6125c9816125b5565b82525050565b5f6020820190506125e25f8301846125c0565b92915050565b5f80604083850312156125fe576125fd6124c4565b5b5f61260b858286016124de565b925050602061261c858286016124de565b9150509250929050565b5f6020828403121561263b5761263a6124c4565b5b5f61264884828501612563565b91505092915050565b5f805f60608486031215612668576126676124c4565b5b5f61267586828701612563565b935050602061268686828701612563565b9250506040612697868287016124de565b9150509250925092565b5f60ff82169050919050565b6126b6816126a1565b82525050565b5f6020820190506126cf5f8301846126ad565b92915050565b6126de8161253c565b82525050565b5f6020820190506126f75f8301846126d5565b92915050565b5f8060408385031215612713576127126124c4565b5b5f612720858286016124de565b925050602061273185828601612563565b9150509250929050565b5f805f60608486031215612752576127516124c4565b5b5f61275f868287016124de565b935050602061277086828701612563565b925050604061278186828701612563565b9150509250925092565b5f80604083850312156127a1576127a06124c4565b5b5f6127ae85828601612563565b92505060206127bf85828601612563565b9150509250929050565b5f815190506127d7816124c8565b92915050565b5f602082840312156127f2576127f16124c4565b5b5f6127ff848285016127c9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061284c57607f821691505b60208210810361285f5761285e612808565b5b50919050565b7f496e76616c696420737472617465677920696e646578000000000000000000005f82015250565b5f61289960168361243e565b91506128a482612865565b602082019050919050565b5f6020820190508181035f8301526128c68161288d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5374726174656779206973206e6f7420616374697665000000000000000000005f82015250565b5f61292e60168361243e565b9150612939826128fa565b602082019050919050565b5f6020820190508181035f83015261295b81612922565b9050919050565b7f5374726174656779206e6f7420666f756e6420696e20616374697665207374725f8201527f6174656769657300000000000000000000000000000000000000000000000000602082015250565b5f6129bc60278361243e565b91506129c782612962565b604082019050919050565b5f6020820190508181035f8301526129e9816129b0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a2782612403565b9150612a3283612403565b9250828203905081811115612a4a57612a496129f0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f53747261746567792063616e6e6f74206265207a65726f2061646472657373005f82015250565b5f612ab1601f8361243e565b9150612abc82612a7d565b602082019050919050565b5f6020820190508181035f830152612ade81612aa5565b9050919050565b7f537472617465677920616c7265616479206163746976650000000000000000005f82015250565b5f612b1960178361243e565b9150612b2482612ae5565b602082019050919050565b5f6020820190508181035f830152612b4681612b0d565b9050919050565b5f612b57826126a1565b9150612b62836126a1565b9250828201905060ff811115612b7b57612b7a6129f0565b5b92915050565b5f606082019050612b945f8301866126d5565b612ba1602083018561240c565b612bae604083018461240c565b949350505050565b5f612bc082612403565b9150612bcb83612403565b9250828201905080821115612be357612be26129f0565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612c3e57808604811115612c1a57612c196129f0565b5b6001851615612c295780820291505b8081029050612c3785612be9565b9450612bfe565b94509492505050565b5f82612c565760019050612d11565b81612c63575f9050612d11565b8160018114612c795760028114612c8357612cb2565b6001915050612d11565b60ff841115612c9557612c946129f0565b5b8360020a915084821115612cac57612cab6129f0565b5b50612d11565b5060208310610133831016604e8410600b8410161715612ce75782820a905083811115612ce257612ce16129f0565b5b612d11565b612cf48484846001612bf5565b92509050818404811115612d0b57612d0a6129f0565b5b81810290505b9392505050565b5f612d2282612403565b9150612d2d836126a1565b9250612d5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c47565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f604082019050612da25f83018561240c565b612daf602083018461240c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f612ded826126a1565b9150612df8836126a1565b925082612e0857612e07612d62565b5b82820690509291505056fea2646970667358221220fa3bd3c51766bd22cbd04b38725598e4a5231c1d3036a24f4c2cd1f4cead250664736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x123 JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xD2581503 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD2581503 EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x6E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x710 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x740 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x770 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x620 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x680 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0xB20B2429 EQ PUSH2 0x560 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x5C0 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x4E2 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x402D267D GT PUSH2 0x175 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x432 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x480 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x3C8 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x1ED JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xC474691 EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x175188E8 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x223E5479 EQ PUSH2 0x340 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x28A JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x226 PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x233 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x244 PUSH2 0x811 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x251 SWAP2 SWAP1 PUSH2 0x24A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x26F SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x8A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x29F SWAP2 SWAP1 PUSH2 0x2577 JUMP JUMPDEST PUSH2 0x8B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B1 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2CF SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x8D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E1 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x304 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2FF SWAP2 SWAP1 PUSH2 0x25E8 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x320 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31B SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0xA1C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x32A PUSH2 0xD2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x337 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x355 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x376 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x371 SWAP2 SWAP1 PUSH2 0x2651 JUMP JUMPDEST PUSH2 0xF3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x383 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x394 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A1 SWAP2 SWAP1 PUSH2 0x26BC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B2 PUSH2 0xFA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3BF SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D0 PUSH2 0xFC8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3EC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3E7 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0xFDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x1003 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x429 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x447 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x46A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x465 SWAP2 SWAP1 PUSH2 0x26FD JUMP JUMPDEST PUSH2 0x102B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x477 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x495 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A7 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4B8 PUSH2 0x10F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4C2 PUSH2 0x1103 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4CC PUSH2 0x1115 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4D9 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4FC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4F7 SWAP2 SWAP1 PUSH2 0x26FD JUMP JUMPDEST PUSH2 0x113D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x51A PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x527 SWAP2 SWAP1 PUSH2 0x24A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x545 SWAP2 SWAP1 PUSH2 0x2577 JUMP JUMPDEST PUSH2 0x124D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x557 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x57A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x575 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x587 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5AA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5A5 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x12AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B7 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5DA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5D5 SWAP2 SWAP1 PUSH2 0x273B JUMP JUMPDEST PUSH2 0x12BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5E7 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x60A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x605 SWAP2 SWAP1 PUSH2 0x273B JUMP JUMPDEST PUSH2 0x133F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x617 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x63A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x635 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x13C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x647 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x66A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x665 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x677 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x69A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x695 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x13FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6A7 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6C5 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6FA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6F5 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x1432 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x707 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x72A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x725 SWAP2 SWAP1 PUSH2 0x278B JUMP JUMPDEST PUSH2 0x1443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x737 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x75A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x755 SWAP2 SWAP1 PUSH2 0x24F2 JUMP JUMPDEST PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x767 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x78A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x785 SWAP2 SWAP1 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x14D7 JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH2 0x795 PUSH2 0xFA1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x80C SWAP2 SWAP1 PUSH2 0x27DD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x820 SWAP1 PUSH2 0x2835 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x84C SWAP1 PUSH2 0x2835 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x897 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x86E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x897 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x87A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x8AC DUP3 PUSH0 PUSH2 0x155B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x8BD PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x8CA DUP2 DUP6 DUP6 PUSH2 0x15BA JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8E1 DUP3 PUSH1 0x1 PUSH2 0x15CC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8F0 PUSH2 0x1624 JUMP JUMPDEST PUSH2 0x8F8 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 POP DUP3 LT PUSH2 0x93F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x936 SWAP1 PUSH2 0x28AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x6 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x954 JUMPI PUSH2 0x953 PUSH2 0x28CD JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x9C9 DUP2 DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16EC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4C429193504AD3C2CF06E0F2297127FD05E32601D5555CE5FD7EAE9B77E4D1A DUP4 PUSH1 0x40 MLOAD PUSH2 0xA0F SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0xA24 PUSH2 0x1624 JUMP JUMPDEST PUSH2 0xA2C PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x7 PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAB5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAAC SWAP1 PUSH2 0x2944 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0xB4D JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xAF1 JUMPI PUSH2 0xAF0 PUSH2 0x28CD JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB40 JUMPI DUP1 SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0xB4D JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xAB9 JUMP JUMPDEST POP DUP1 PUSH2 0xB8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB85 SWAP1 PUSH2 0x29D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 DUP1 SLOAD SWAP1 POP PUSH2 0xBA0 SWAP2 SWAP1 PUSH2 0x2A1D JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xC4E JUMPI PUSH1 0x6 PUSH1 0x1 PUSH1 0x6 DUP1 SLOAD SWAP1 POP PUSH2 0xBBB SWAP2 SWAP1 PUSH2 0x2A1D JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0xBCC JUMPI PUSH2 0xBCB PUSH2 0x28CD JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x6 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xC08 JUMPI PUSH2 0xC07 PUSH2 0x28CD JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x6 DUP1 SLOAD DUP1 PUSH2 0xC60 JUMPI PUSH2 0xC5F PUSH2 0x2A50 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE PUSH0 PUSH1 0x7 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9A1DB4B80C32706328728508C941A6B954F31EB5AFFD32F236C1FD405F8FEA4 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xD3F PUSH2 0x1624 JUMP JUMPDEST PUSH2 0xD47 PUSH2 0x16AB JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xDB5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDAC SWAP1 PUSH2 0x2AC7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE3F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE36 SWAP1 PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x7 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3F008FD510EAE7A9E7BEE13513D7B83BEF8003D488B5A3D0B0DA4DE71D6846F1 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0xF44 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0xF51 DUP6 DUP3 DUP6 PUSH2 0x173F JUMP JUMPDEST PUSH2 0xF5C DUP6 DUP6 DUP6 PUSH2 0x17D2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xF71 PUSH2 0x18C2 JUMP JUMPDEST PUSH32 0x0 PUSH2 0xF9C SWAP2 SWAP1 PUSH2 0x2B4D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFD0 PUSH2 0x1624 JUMP JUMPDEST PUSH2 0xFD8 PUSH2 0x18C6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x100E DUP3 PUSH0 PUSH2 0x155B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1036 DUP4 PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1081 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH32 0x79012FB200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1078 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x108B DUP6 PUSH2 0x14C5 JUMP JUMPDEST SWAP1 POP PUSH2 0x10A0 PUSH2 0x1098 PUSH2 0x15B3 JUMP JUMPDEST DUP6 DUP8 DUP5 PUSH2 0x1928 JUMP JUMPDEST DUP1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x10F8 PUSH2 0x1624 JUMP JUMPDEST PUSH2 0x1101 PUSH0 PUSH2 0x1942 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x110B PUSH2 0x1624 JUMP JUMPDEST PUSH2 0x1113 PUSH2 0x1A05 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1148 DUP4 PUSH2 0x13C1 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1193 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH32 0x284FF66700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x118A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x119D DUP6 PUSH2 0x12AA JUMP JUMPDEST SWAP1 POP PUSH2 0x11B2 PUSH2 0x11AA PUSH2 0x15B3 JUMP JUMPDEST DUP6 DUP4 DUP9 PUSH2 0x1928 JUMP JUMPDEST DUP1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x11CC SWAP1 PUSH2 0x2835 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x11F8 SWAP1 PUSH2 0x2835 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1243 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x121A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1243 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1226 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1257 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1264 DUP2 DUP6 DUP6 PUSH2 0x17D2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x127E JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH0 PUSH2 0x12B6 DUP3 PUSH1 0x1 PUSH2 0x155B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12C8 DUP4 PUSH2 0x13FC JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1313 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH32 0xFE9CCEEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x130A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x131D DUP7 PUSH2 0x8D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1333 PUSH2 0x132A PUSH2 0x15B3 JUMP JUMPDEST DUP7 DUP7 DUP10 DUP6 PUSH2 0x1A68 JUMP JUMPDEST DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x134A DUP4 PUSH2 0x1432 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1395 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH32 0xB94ABEEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x138C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x139F DUP7 PUSH2 0x1003 JUMP JUMPDEST SWAP1 POP PUSH2 0x13B5 PUSH2 0x13AC PUSH2 0x15B3 JUMP JUMPDEST DUP7 DUP7 DUP5 DUP11 PUSH2 0x1A68 JUMP JUMPDEST DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x13F5 DUP3 PUSH0 PUSH2 0x15CC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x140E PUSH2 0x1409 DUP4 PUSH2 0x1432 JUMP JUMPDEST PUSH2 0x1003 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH0 PUSH2 0x143C DUP3 PUSH2 0x10AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x14D0 DUP3 PUSH0 PUSH2 0x15CC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14DF PUSH2 0x1624 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x154F JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1546 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1558 DUP2 PUSH2 0x1942 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x15AB PUSH1 0x1 PUSH2 0x1569 PUSH2 0x78C JUMP JUMPDEST PUSH2 0x1573 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST PUSH2 0x157B PUSH2 0x18C2 JUMP JUMPDEST PUSH1 0xA PUSH2 0x1587 SWAP2 SWAP1 PUSH2 0x2D18 JUMP JUMPDEST PUSH2 0x158F PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x1599 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST DUP5 DUP7 PUSH2 0x1A84 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x15C7 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AD1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x161C PUSH2 0x15D8 PUSH2 0x18C2 JUMP JUMPDEST PUSH1 0xA PUSH2 0x15E4 SWAP2 SWAP1 PUSH2 0x2D18 JUMP JUMPDEST PUSH2 0x15EC PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x15F6 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1600 PUSH2 0x78C JUMP JUMPDEST PUSH2 0x160A SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST DUP5 DUP7 PUSH2 0x1A84 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x162C PUSH2 0x15B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x164A PUSH2 0x1115 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x16A9 JUMPI PUSH2 0x166D PUSH2 0x15B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16A0 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x16B3 PUSH2 0x1015 JUMP JUMPDEST ISZERO PUSH2 0x16EA JUMPI PUSH1 0x40 MLOAD PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x16F9 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1CA0 JUMP JUMPDEST PUSH2 0x173A JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1731 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x174A DUP5 DUP5 PUSH2 0x1443 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x17CC JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x17BD JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17B4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17CB DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1AD1 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1842 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1839 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x18B2 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18A9 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18BD DUP4 DUP4 DUP4 PUSH2 0x1D02 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x18CE PUSH2 0x1F1B JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x1911 PUSH2 0x15B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x191E SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1930 PUSH2 0x16AB JUMP JUMPDEST PUSH2 0x193C DUP5 DUP5 DUP5 DUP5 PUSH2 0x1F5B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x1A0D PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1A51 PUSH2 0x15B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5E SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1A70 PUSH2 0x16AB JUMP JUMPDEST PUSH2 0x1A7D DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1FDC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1AB2 PUSH2 0x1A91 DUP4 PUSH2 0x20B4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1AAD JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x1AA8 JUMPI PUSH2 0x1AA7 PUSH2 0x2D62 JUMP JUMPDEST JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST PUSH2 0x20E1 JUMP JUMPDEST PUSH2 0x1ABD DUP7 DUP7 DUP7 PUSH2 0x20EC JUMP JUMPDEST PUSH2 0x1AC7 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B41 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B38 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1BB1 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BA8 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1C9A JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1C91 SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 POP PUSH1 0x40 MLOAD DUP2 PUSH0 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP7 AND PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE PUSH1 0x20 PUSH0 PUSH1 0x44 PUSH0 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x1CF4 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x1CE8 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1D52 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1D46 SWAP2 SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1E20 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x1DDB JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DD2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1E67 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1EB1 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x1F0E SWAP2 SWAP1 PUSH2 0x241B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x1F23 PUSH2 0x1015 JUMP JUMPDEST PUSH2 0x1F59 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x1F65 DUP5 DUP4 PUSH2 0x21CB JUMP JUMPDEST PUSH2 0x1F6F DUP4 DUP3 PUSH2 0x21E2 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1FCE SWAP3 SWAP2 SWAP1 PUSH2 0x2D8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x201B JUMPI PUSH2 0x201A DUP4 DUP7 DUP4 PUSH2 0x173F JUMP JUMPDEST JUMPDEST PUSH2 0x2025 DUP4 DUP3 PUSH2 0x2261 JUMP JUMPDEST PUSH2 0x202F DUP5 DUP4 PUSH2 0x22E0 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x20A5 SWAP3 SWAP2 SWAP1 PUSH2 0x2D8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x20CC JUMPI PUSH2 0x20CB PUSH2 0x2DB6 JUMP JUMPDEST JUMPDEST PUSH2 0x20D6 SWAP2 SWAP1 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0xFF AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH2 0x20F9 DUP7 DUP7 PUSH2 0x22F6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 DUP3 SUB PUSH2 0x211E JUMPI DUP4 DUP2 DUP2 PUSH2 0x2114 JUMPI PUSH2 0x2113 PUSH2 0x2D62 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x21C4 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x213D JUMPI PUSH2 0x213C PUSH2 0x2137 PUSH0 DUP7 EQ PUSH1 0x12 PUSH1 0x11 PUSH2 0x2313 JUMP JUMPDEST PUSH2 0x232C JUMP JUMPDEST JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD SWAP1 POP DUP2 DUP2 GT DUP4 SUB SWAP3 POP DUP1 DUP3 SUB SWAP2 POP PUSH0 DUP6 PUSH0 SUB DUP7 AND SWAP1 POP DUP1 DUP7 DIV SWAP6 POP DUP1 DUP4 DIV SWAP3 POP PUSH1 0x1 DUP2 DUP3 PUSH0 SUB DIV ADD SWAP1 POP DUP1 DUP5 MUL DUP4 OR SWAP3 POP PUSH0 PUSH1 0x2 DUP8 PUSH1 0x3 MUL XOR SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP8 MUL PUSH1 0x2 SUB DUP2 MUL SWAP1 POP DUP1 DUP5 MUL SWAP6 POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x21DE PUSH2 0x21D6 PUSH2 0xFA1 JUMP JUMPDEST DUP4 ADDRESS DUP5 PUSH2 0x233D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2252 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2249 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x225D PUSH0 DUP4 DUP4 PUSH2 0x1D02 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22D1 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22C8 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22DC DUP3 PUSH0 DUP4 PUSH2 0x1D02 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x22F2 PUSH2 0x22EB PUSH2 0xFA1 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x16EC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD DUP4 DUP6 MUL SWAP2 POP DUP2 DUP2 LT DUP3 DUP3 SUB SUB SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x231D DUP5 PUSH2 0x20E1 JUMP JUMPDEST DUP3 DUP5 XOR MUL DUP3 XOR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x234B DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2392 JUMP JUMPDEST PUSH2 0x238C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2383 SWAP2 SWAP1 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 POP PUSH1 0x40 MLOAD DUP2 PUSH0 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP8 AND PUSH1 0x4 MSTORE PUSH0 NOT PUSH1 0x60 SHR DUP7 AND PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH0 PUSH1 0x64 PUSH0 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x23F0 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x23E4 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST DUP1 PUSH1 0x40 MSTORE PUSH0 PUSH1 0x60 MSTORE POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2415 DUP2 PUSH2 0x2403 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x242E PUSH0 DUP4 ADD DUP5 PUSH2 0x240C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2476 DUP3 PUSH2 0x2434 JUMP JUMPDEST PUSH2 0x2480 DUP2 DUP6 PUSH2 0x243E JUMP JUMPDEST SWAP4 POP PUSH2 0x2490 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x244E JUMP JUMPDEST PUSH2 0x2499 DUP2 PUSH2 0x245C JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x24BC DUP2 DUP5 PUSH2 0x246C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x24D1 DUP2 PUSH2 0x2403 JUMP JUMPDEST DUP2 EQ PUSH2 0x24DB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x24EC DUP2 PUSH2 0x24C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2507 JUMPI PUSH2 0x2506 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2514 DUP5 DUP3 DUP6 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2546 DUP3 PUSH2 0x251D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2556 DUP2 PUSH2 0x253C JUMP JUMPDEST DUP2 EQ PUSH2 0x2560 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2571 DUP2 PUSH2 0x254D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x258D JUMPI PUSH2 0x258C PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x259A DUP6 DUP3 DUP7 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x25AB DUP6 DUP3 DUP7 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x25C9 DUP2 PUSH2 0x25B5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25E2 PUSH0 DUP4 ADD DUP5 PUSH2 0x25C0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25FE JUMPI PUSH2 0x25FD PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x260B DUP6 DUP3 DUP7 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x261C DUP6 DUP3 DUP7 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x263B JUMPI PUSH2 0x263A PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2648 DUP5 DUP3 DUP6 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2668 JUMPI PUSH2 0x2667 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2675 DUP7 DUP3 DUP8 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2686 DUP7 DUP3 DUP8 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2697 DUP7 DUP3 DUP8 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26B6 DUP2 PUSH2 0x26A1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x26CF PUSH0 DUP4 ADD DUP5 PUSH2 0x26AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x26DE DUP2 PUSH2 0x253C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x26F7 PUSH0 DUP4 ADD DUP5 PUSH2 0x26D5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2713 JUMPI PUSH2 0x2712 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2720 DUP6 DUP3 DUP7 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2731 DUP6 DUP3 DUP7 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2752 JUMPI PUSH2 0x2751 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x275F DUP7 DUP3 DUP8 ADD PUSH2 0x24DE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2770 DUP7 DUP3 DUP8 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2781 DUP7 DUP3 DUP8 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27A1 JUMPI PUSH2 0x27A0 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x27AE DUP6 DUP3 DUP7 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x27BF DUP6 DUP3 DUP7 ADD PUSH2 0x2563 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x27D7 DUP2 PUSH2 0x24C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27F2 JUMPI PUSH2 0x27F1 PUSH2 0x24C4 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x27FF DUP5 DUP3 DUP6 ADD PUSH2 0x27C9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x284C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x285F JUMPI PUSH2 0x285E PUSH2 0x2808 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420737472617465677920696E64657800000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2899 PUSH1 0x16 DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x28A4 DUP3 PUSH2 0x2865 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x28C6 DUP2 PUSH2 0x288D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x5374726174656779206973206E6F742061637469766500000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x292E PUSH1 0x16 DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x2939 DUP3 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x295B DUP2 PUSH2 0x2922 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5374726174656779206E6F7420666F756E6420696E2061637469766520737472 PUSH0 DUP3 ADD MSTORE PUSH32 0x6174656769657300000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x29BC PUSH1 0x27 DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x29C7 DUP3 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x29E9 DUP2 PUSH2 0x29B0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2A27 DUP3 PUSH2 0x2403 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A32 DUP4 PUSH2 0x2403 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x2A4A JUMPI PUSH2 0x2A49 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x53747261746567792063616E6E6F74206265207A65726F206164647265737300 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2AB1 PUSH1 0x1F DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x2ABC DUP3 PUSH2 0x2A7D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2ADE DUP2 PUSH2 0x2AA5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472617465677920616C726561647920616374697665000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2B19 PUSH1 0x17 DUP4 PUSH2 0x243E JUMP JUMPDEST SWAP2 POP PUSH2 0x2B24 DUP3 PUSH2 0x2AE5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2B46 DUP2 PUSH2 0x2B0D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2B57 DUP3 PUSH2 0x26A1 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B62 DUP4 PUSH2 0x26A1 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x2B7B JUMPI PUSH2 0x2B7A PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2B94 PUSH0 DUP4 ADD DUP7 PUSH2 0x26D5 JUMP JUMPDEST PUSH2 0x2BA1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x240C JUMP JUMPDEST PUSH2 0x2BAE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x240C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2BC0 DUP3 PUSH2 0x2403 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BCB DUP4 PUSH2 0x2403 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2BE3 JUMPI PUSH2 0x2BE2 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 DUP3 SWAP2 POP DUP4 SWAP1 POP JUMPDEST PUSH1 0x1 DUP6 GT ISZERO PUSH2 0x2C3E JUMPI DUP1 DUP7 DIV DUP2 GT ISZERO PUSH2 0x2C1A JUMPI PUSH2 0x2C19 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x2C29 JUMPI DUP1 DUP3 MUL SWAP2 POP JUMPDEST DUP1 DUP2 MUL SWAP1 POP PUSH2 0x2C37 DUP6 PUSH2 0x2BE9 JUMP JUMPDEST SWAP5 POP PUSH2 0x2BFE JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2C56 JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x2D11 JUMP JUMPDEST DUP2 PUSH2 0x2C63 JUMPI PUSH0 SWAP1 POP PUSH2 0x2D11 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2C79 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x2C83 JUMPI PUSH2 0x2CB2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x2D11 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x2C95 JUMPI PUSH2 0x2C94 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x2 EXP SWAP2 POP DUP5 DUP3 GT ISZERO PUSH2 0x2CAC JUMPI PUSH2 0x2CAB PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST POP PUSH2 0x2D11 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x2CE7 JUMPI DUP3 DUP3 EXP SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0x2CE2 JUMPI PUSH2 0x2CE1 PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST PUSH2 0x2D11 JUMP JUMPDEST PUSH2 0x2CF4 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2BF5 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 DUP5 DIV DUP2 GT ISZERO PUSH2 0x2D0B JUMPI PUSH2 0x2D0A PUSH2 0x29F0 JUMP JUMPDEST JUMPDEST DUP2 DUP2 MUL SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2D22 DUP3 PUSH2 0x2403 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D2D DUP4 PUSH2 0x26A1 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP5 PUSH2 0x2C47 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2DA2 PUSH0 DUP4 ADD DUP6 PUSH2 0x240C JUMP JUMPDEST PUSH2 0x2DAF PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x240C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2DED DUP3 PUSH2 0x26A1 JUMP JUMPDEST SWAP2 POP PUSH2 0x2DF8 DUP4 PUSH2 0x26A1 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x2E08 JUMPI PUSH2 0x2E07 PUSH2 0x2D62 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL EXTCODESIZE 0xD3 0xC5 OR PUSH7 0xBD22CBD04B3872 SSTORE SWAP9 0xE4 0xA5 0x23 SHR SAR ADDRESS CALLDATASIZE LOG2 0x4F 0x4C 0x2C 0xD1 DELEGATECALL 0xCE 0xAD 0x25 MOD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"493:4019:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7191:125:8;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:89:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7534:148:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8671:147:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2986:512:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1870:932;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2803:97:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1397:359:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4680:244:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6876:151:8;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7062:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3687:65:20;;;:::i;:::-;;7717:108:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8853:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1726:84:15;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9034:392:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2933:116:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2293:101:0;;;:::i;:::-;;3561:61:20;;;:::i;:::-;;1638:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9461:380:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:93:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3244:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;726:33:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8493:143:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9876:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10324:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7860:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7351:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8000:129;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;824:48:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8164:112:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3455:140:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8311:147:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2543:215:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7191:125:8;7243:7;7276;:5;:7::i;:::-;7269:25;;;7303:4;7269:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7262:47;;7191:125;:::o;1760:89:6:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;7534:148:8:-;7604:7;7630:45;7647:6;7655:19;7630:16;:45::i;:::-;7623:52;;7534:148;;;:::o;3902:186:6:-;3975:4;3991:13;4007:12;:10;:12::i;:::-;3991:28;;4029:31;4038:5;4045:7;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;:::o;8671:147:8:-;8741:7;8767:44;8784:6;8792:18;8767:16;:44::i;:::-;8760:51;;8671:147;;;:::o;2986:512:20:-;1531:13:0;:11;:13::i;:::-;1350:19:15::1;:17;:19::i;:::-;3118:16:20::2;:23;;;;3102:13;:39;3094:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3178:16;3197;3214:13;3197:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3178:50;;3398:37;3418:8;3428:6;3398;:19;;;;:37;;;;;:::i;:::-;3474:8;3460:31;;;3484:6;3460:31;;;;;;:::i;:::-;;;;;;;;3084:414;2986:512:::0;;:::o;1870:932::-;1531:13:0;:11;:13::i;:::-;1350:19:15::1;:17;:19::i;:::-;1963:16:20::2;:26;1980:8;1963:26;;;;;;;;;;;;;;;;;;;;;;;;;1955:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;2073:21;2108:10:::0;2141:9:::2;2136:218;2160:16;:23;;;;2156:1;:27;2136:218;;;2231:8;2208:31;;:16;2225:1;2208:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:31;;::::0;2204:140:::2;;2275:1;2259:17;;2302:4;2294:12;;2324:5;;2204:140;2185:3;;;;;;;2136:218;;;;2380:5;2372:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2564:1;2538:16;:23;;;;:27;;;;:::i;:::-;2522:13;:43;2518:153;;;2615:16;2658:1;2632:16;:23;;;;:27;;;;:::i;:::-;2615:45;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2581:16;2598:13;2581:31;;;;;;;;:::i;:::-;;;;;;;;;;:79;;;;;;;;;;;;;;;;;;2518:153;2680:16;:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;2750:5;2721:16;:26;2738:8;2721:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2786:8;2770:25;;;;;;;;;;;;1945:857;;1870:932:::0;:::o;2803:97:6:-;2855:7;2881:12;;2874:19;;2803:97;:::o;1397:359:20:-;1531:13:0;:11;:13::i;:::-;1350:19:15::1;:17;:19::i;:::-;1507:1:20::2;1487:22;;:8;:22;;::::0;1479:66:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;1564:16;:26;1581:8;1564:26;;;;;;;;;;;;;;;;;;;;;;;;;1563:27;1555:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1637:16;1659:8;1637:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1707:4;1678:16;:26;1695:8;1678:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1740:8;1726:23;;;;;;;;;;;;1397:359:::0;:::o;4680:244:6:-;4767:4;4783:15;4801:12;:10;:12::i;:::-;4783:30;;4823:37;4839:4;4845:7;4854:5;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;:::o;6876:151:8:-;6957:5;7003:17;:15;:17::i;:::-;6981:19;:39;;;;:::i;:::-;6974:46;;6876:151;:::o;7062:94::-;7108:7;7142:6;7127:22;;7062:94;:::o;3687:65:20:-;1531:13:0;:11;:13::i;:::-;3735:10:20::1;:8;:10::i;:::-;3687:65::o:0;7717:108:8:-;7775:7;7801:17;7794:24;;7717:108;;;:::o;8853:146::-;8921:7;8947:45;8964:6;8972:19;8947:16;:45::i;:::-;8940:52;;8853:146;;;:::o;1726:84:15:-;1773:4;1796:7;;;;;;;;;;;1789:14;;1726:84;:::o;9034:392:8:-;9109:7;9128:17;9148:20;9159:8;9148:10;:20::i;:::-;9128:40;;9191:9;9182:6;:18;9178:110;;;9249:8;9259:6;9267:9;9223:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;9178:110;9298:14;9315:22;9330:6;9315:14;:22::i;:::-;9298:39;;9347:48;9356:12;:10;:12::i;:::-;9370:8;9380:6;9388;9347:8;:48::i;:::-;9413:6;9406:13;;;;9034:392;;;;:::o;2933:116:6:-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;3561:61:20:-;1531:13:0;:11;:13::i;:::-;3607:8:20::1;:6;:8::i;:::-;3561:61::o:0;1638:85:0:-;1684:7;1710:6;;;;;;;;;;;1703:13;;1638:85;:::o;9461:380:8:-;9533:7;9552:17;9572;9580:8;9572:7;:17::i;:::-;9552:37;;9612:9;9603:6;:18;9599:107;;;9667:8;9677:6;9685:9;9644:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;9599:107;9716:14;9733:19;9745:6;9733:11;:19::i;:::-;9716:36;;9762:48;9771:12;:10;:12::i;:::-;9785:8;9795:6;9803;9762:8;:48::i;:::-;9828:6;9821:13;;;;9461:380;;;;:::o;1962:93:6:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;3244:178::-;3313:4;3329:13;3345:12;:10;:12::i;:::-;3329:28;;3367:27;3377:5;3384:2;3388:5;3367:9;:27::i;:::-;3411:4;3404:11;;;3244:178;;;;:::o;726:33:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8493:143:8:-;8559:7;8585:44;8602:6;8610:18;8585:16;:44::i;:::-;8578:51;;8493:143;;;:::o;9876:413::-;9967:7;9986:17;10006:18;10018:5;10006:11;:18::i;:::-;9986:38;;10047:9;10038:6;:18;10034:108;;;10106:5;10113:6;10121:9;10079:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;10034:108;10152:14;10169:23;10185:6;10169:15;:23::i;:::-;10152:40;;10202:56;10212:12;:10;:12::i;:::-;10226:8;10236:5;10243:6;10251;10202:9;:56::i;:::-;10276:6;10269:13;;;;9876:413;;;;;:::o;10324:405::-;10413:7;10432:17;10452:16;10462:5;10452:9;:16::i;:::-;10432:36;;10491:9;10482:6;:18;10478:106;;;10548:5;10555:6;10563:9;10523:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;10478:106;10594:14;10611:21;10625:6;10611:13;:21::i;:::-;10594:38;;10642:56;10652:12;:10;:12::i;:::-;10666:8;10676:5;10683:6;10691;10642:9;:56::i;:::-;10716:6;10709:13;;;;10324:405;;;;;:::o;7860:105::-;7915:7;7941:17;7934:24;;7860:105;;;:::o;7351:148::-;7421:7;7447:45;7464:6;7472:19;7447:16;:45::i;:::-;7440:52;;7351:148;;;:::o;8000:129::-;8065:7;8091:31;8105:16;8115:5;8105:9;:16::i;:::-;8091:13;:31::i;:::-;8084:38;;8000:129;;;:::o;824:48:20:-;;;;;;;;;;;;;;;;;;;;;;:::o;8164:112:8:-;8227:7;8253:16;8263:5;8253:9;:16::i;:::-;8246:23;;8164:112;;;:::o;3455:140:6:-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;8311:147:8:-;8380:7;8406:45;8423:6;8431:19;8406:16;:45::i;:::-;8399:52;;8311:147;;;:::o;2543:215:0:-;1531:13;:11;:13::i;:::-;2647:1:::1;2627:22;;:8;:22;;::::0;2623:91:::1;;2700:1;2672:31;;;;;;;;;;;:::i;:::-;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;11190:213:8:-;11287:7;11313:83;11343:1;11327:13;:11;:13::i;:::-;:17;;;;:::i;:::-;11368;:15;:17::i;:::-;11362:2;:23;;;;:::i;:::-;11346:13;:11;:13::i;:::-;:39;;;;:::i;:::-;11387:8;11313:6;:13;;:83;;;;;;:::i;:::-;11306:90;;11190:213;;;;:::o;656:96:11:-;709:7;735:10;728:17;;656:96;:::o;8630:128:6:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10853:213:8:-;10950:7;10976:83;11012:17;:15;:17::i;:::-;11006:2;:23;;;;:::i;:::-;10990:13;:11;:13::i;:::-;:39;;;;:::i;:::-;11047:1;11031:13;:11;:13::i;:::-;:17;;;;:::i;:::-;11050:8;10976:6;:13;;:83;;;;;;:::i;:::-;10969:90;;10853:213;;;;:::o;1796:162:0:-;1866:12;:10;:12::i;:::-;1855:23;;:7;:5;:7::i;:::-;:23;;;1851:101;;1928:12;:10;:12::i;:::-;1901:40;;;;;;;;;;;:::i;:::-;;;;;;;;1851:101;1796:162::o;1878:128:15:-;1943:8;:6;:8::i;:::-;1939:61;;;1974:15;;;;;;;;;;;;;;1939:61;1878:128::o;1219:204:10:-;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1399:5;1366:40;;;;;;;;;;;:::i;:::-;;;;;;;;1301:116;1219:204;;;:::o;10321:476:6:-;10420:24;10447:25;10457:5;10464:7;10447:9;:25::i;:::-;10420:52;;10505:17;10486:16;:36;10482:309;;;10561:5;10542:16;:24;10538:130;;;10620:7;10629:16;10647:5;10593:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10538:130;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10482:309;10410:387;10321:476;;;:::o;5297:300::-;5396:1;5380:18;;:4;:18;;;5376:86;;5448:1;5421:30;;;;;;;;;;;:::i;:::-;;;;;;;;5376:86;5489:1;5475:16;;:2;:16;;;5471:86;;5543:1;5514:32;;;;;;;;;;;:::i;:::-;;;;;;;;5471:86;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;:::-;5297:300;;;:::o;13784:90:8:-;13842:5;13784:90;:::o;2586:117:15:-;1597:16;:14;:16::i;:::-;2654:5:::1;2644:7;;:15;;;;;;;;;;;;;;;;;;2674:22;2683:12;:10;:12::i;:::-;2674:22;;;;;;:::i;:::-;;;;;;;;2586:117::o:0;3813:376:20:-;1350:19:15;:17;:19::i;:::-;3985:48:20::1;4000:6;4008:8;4018:6;4026;3985:14;:48::i;:::-;3813:376:::0;;;;:::o;2912:187:0:-;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;2339:115:15:-;1350:19;:17;:19::i;:::-;2408:4:::1;2398:7;;:14;;;;;;;;;;;;;;;;;;2427:20;2434:12;:10;:12::i;:::-;2427:20;;;;;;:::i;:::-;;;;;;;;2339:115::o:0;4251:259:20:-;1350:19:15;:17;:19::i;:::-;4447:56:20::1;4463:6;4471:8;4481:5;4488:6;4496;4447:15;:56::i;:::-;4251:259:::0;;;;;:::o;11108:238:17:-;11209:7;11263:76;11279:26;11296:8;11279:16;:26::i;:::-;:59;;;;;11337:1;11322:11;11309:25;;;;;:::i;:::-;;11319:1;11316;11309:25;:29;11279:59;11263:15;:76::i;:::-;11235:25;11242:1;11245;11248:11;11235:6;:25::i;:::-;:104;;;;:::i;:::-;11228:111;;11108:238;;;;;;:::o;9607:432:6:-;9736:1;9719:19;;:5;:19;;;9715:89;;9790:1;9761:32;;;;;;;;;;;:::i;:::-;;;;;;;;9715:89;9836:1;9817:21;;:7;:21;;;9813:90;;9889:1;9861:31;;;;;;;;;;;:::i;:::-;;;;;;;;9813:90;9942:5;9912:11;:18;9924:5;9912:18;;;;;;;;;;;;;;;:27;9931:7;9912:27;;;;;;;;;;;;;;;:35;;;;9961:9;9957:76;;;10007:7;9991:31;;10000:5;9991:31;;;10016:5;9991:31;;;;;;:::i;:::-;;;;;;;;9957:76;9607:432;;;;:::o;8373:1244:10:-;8467:12;8491:15;8509:24;;;8491:42;;8600:4;8594:11;8631:8;8625:4;8618:22;8686:1;8682:6;8678:2;8674:15;8670:2;8666:24;8660:4;8653:38;8717:5;8711:4;8704:19;8787:4;8781;8775;8769;8766:1;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9597:3;9591:4;9584:17;8569:1042;;8373:1244;;;;;;:::o;5912:1107:6:-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;2078:126:15:-;2141:8;:6;:8::i;:::-;2136:62;;2172:15;;;;;;;;;;;;;;2136:62;2078:126::o;11467:794:8:-;12137:27;12149:6;12157;12137:11;:27::i;:::-;12174:23;12180:8;12190:6;12174:5;:23::i;:::-;12229:8;12213:41;;12221:6;12213:41;;;12239:6;12247;12213:41;;;;;;;:::i;:::-;;;;;;;;11467:794;;;;:::o;12328:898::-;12515:5;12505:15;;:6;:15;;;12501:84;;12536:38;12552:5;12559:6;12567;12536:15;:38::i;:::-;12501:84;13094:20;13100:5;13107:6;13094:5;:20::i;:::-;13124:30;13137:8;13147:6;13124:12;:30::i;:::-;13197:5;13170:49;;13187:8;13170:49;;13179:6;13170:49;;;13204:6;13212;13170:49;;;;;;;:::i;:::-;;;;;;;;12328:898;;;;;:::o;32337:122:17:-;32405:4;32451:1;32446;32434:8;32428:15;;;;;;;;:::i;:::-;;:19;;;;:::i;:::-;:24;;;32421:31;;32337:122;;;:::o;34792:145:18:-;34839:9;34918:1;34911:9;34904:17;34899:22;;34792:145;;;:::o;7296:3683:17:-;7378:14;7429:12;7443:11;7458:12;7465:1;7468;7458:6;:12::i;:::-;7428:42;;;;7560:1;7552:4;:9;7548:365;;7887:11;7881:3;:17;;;;;:::i;:::-;;;7874:24;;;;;;7548:365;8038:4;8023:11;:19;8019:142;;8062:84;8074:71;8097:1;8082:11;:16;1035:4:14;940;8074:7:17;:71::i;:::-;8062:11;:84::i;:::-;8019:142;8413:17;8564:11;8561:1;8558;8551:25;8538:38;;8690:3;8679:9;8676:18;8670:4;8666:29;8658:37;;8728:9;8723:3;8719:19;8712:26;;8956:12;8990:11;8986:1;:15;8971:11;:31;8956:46;;9138:4;9125:11;9121:22;9106:37;;9223:4;9218:3;9214:14;9207:21;;9384:1;9377:4;9370;9367:1;9363:12;9359:23;9355:31;9347:39;;9477:4;9470;:11;9463:18;;;;9816:15;9854:1;9839:11;9835:1;:15;9834:21;9816:39;;10101:7;10087:11;:21;10083:1;:25;10072:36;;;;10171:7;10157:11;:21;10153:1;:25;10142:36;;;;10243:7;10229:11;:21;10225:1;:25;10214:36;;;;10314:7;10300:11;:21;10296:1;:25;10285:36;;;;10387:7;10373:11;:21;10369:1;:25;10358:36;;;;10461:7;10447:11;:21;10443:1;:25;10432:36;;;;10928:7;10922:3;:13;10913:22;;10949:13;;;;;7296:3683;;;;;;:::o;13355:157:8:-;13433:72;13467:7;:5;:7::i;:::-;13477:4;13491;13498:6;13433:26;:72::i;:::-;13355:157;;:::o;7362:208:6:-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;7888:206::-;7977:1;7958:21;;:7;:21;;;7954:89;;8029:1;8002:30;;;;;;;;;;;:::i;:::-;;;;;;;;7954:89;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;:::-;7888:206;;:::o;13643:135:8:-;13720:51;13750:7;:5;:7::i;:::-;13760:2;13764:6;13720:22;:51::i;:::-;13643:135;;:::o;1027:550:17:-;1088:12;1102:11;1478:1;1474:6;1471:1;1468;1461:20;1508:1;1505;1501:9;1494:16;;1556:3;1552:2;1549:11;1543:3;1539:2;1535:12;1531:30;1523:38;;1437:134;1027:550;;;;;:::o;5087:294::-;5165:7;5337:26;5353:9;5337:15;:26::i;:::-;5332:1;5328;:5;5327:36;5322:1;:42;5315:49;;5087:294;;;;;:::o;1776:194:14:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;1662:232:10;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1870:5;1837:40;;;;;;;;;;;:::i;:::-;;;;;;;;1762:126;1662:232;;;;:::o;10165:1393::-;10323:12;10347:15;10365:28;;;10347:46;;10460:4;10454:11;10491:8;10485:4;10478:22;10548:1;10544:6;10540:2;10536:15;10530:4;10526:26;10520:4;10513:40;10599:1;10595:6;10591:2;10587:15;10583:2;10579:24;10573:4;10566:38;10630:5;10624:4;10617:19;10700:4;10694;10688;10682;10679:1;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11510:3;11504:4;11497:17;11540:1;11534:4;11527:15;10429:1123;;10165:1393;;;;;;;:::o;7:77:24:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:139::-;811:6;806:3;801;795:23;852:1;843:6;838:3;834:16;827:27;722:139;;;:::o;867:102::-;908:6;959:2;955:7;950:2;943:5;939:14;935:28;925:38;;867:102;;;:::o;975:377::-;1063:3;1091:39;1124:5;1091:39;:::i;:::-;1146:71;1210:6;1205:3;1146:71;:::i;:::-;1139:78;;1226:65;1284:6;1279:3;1272:4;1265:5;1261:16;1226:65;:::i;:::-;1316:29;1338:6;1316:29;:::i;:::-;1311:3;1307:39;1300:46;;1067:285;975:377;;;;:::o;1358:313::-;1471:4;1509:2;1498:9;1494:18;1486:26;;1558:9;1552:4;1548:20;1544:1;1533:9;1529:17;1522:47;1586:78;1659:4;1650:6;1586:78;:::i;:::-;1578:86;;1358:313;;;;:::o;1758:117::-;1867:1;1864;1857:12;2004:122;2077:24;2095:5;2077:24;:::i;:::-;2070:5;2067:35;2057:63;;2116:1;2113;2106:12;2057:63;2004:122;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:126::-;2649:7;2689:42;2682:5;2678:54;2667:65;;2612:126;;;:::o;2744:96::-;2781:7;2810:24;2828:5;2810:24;:::i;:::-;2799:35;;2744:96;;;:::o;2846:122::-;2919:24;2937:5;2919:24;:::i;:::-;2912:5;2909:35;2899:63;;2958:1;2955;2948:12;2899:63;2846:122;:::o;2974:139::-;3020:5;3058:6;3045:20;3036:29;;3074:33;3101:5;3074:33;:::i;:::-;2974:139;;;;:::o;3119:474::-;3187:6;3195;3244:2;3232:9;3223:7;3219:23;3215:32;3212:119;;;3250:79;;:::i;:::-;3212:119;3370:1;3395:53;3440:7;3431:6;3420:9;3416:22;3395:53;:::i;:::-;3385:63;;3341:117;3497:2;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3468:118;3119:474;;;;;:::o;3599:90::-;3633:7;3676:5;3669:13;3662:21;3651:32;;3599:90;;;:::o;3695:109::-;3776:21;3791:5;3776:21;:::i;:::-;3771:3;3764:34;3695:109;;:::o;3810:210::-;3897:4;3935:2;3924:9;3920:18;3912:26;;3948:65;4010:1;3999:9;3995:17;3986:6;3948:65;:::i;:::-;3810:210;;;;:::o;4026:474::-;4094:6;4102;4151:2;4139:9;4130:7;4126:23;4122:32;4119:119;;;4157:79;;:::i;:::-;4119:119;4277:1;4302:53;4347:7;4338:6;4327:9;4323:22;4302:53;:::i;:::-;4292:63;;4248:117;4404:2;4430:53;4475:7;4466:6;4455:9;4451:22;4430:53;:::i;:::-;4420:63;;4375:118;4026:474;;;;;:::o;4506:329::-;4565:6;4614:2;4602:9;4593:7;4589:23;4585:32;4582:119;;;4620:79;;:::i;:::-;4582:119;4740:1;4765:53;4810:7;4801:6;4790:9;4786:22;4765:53;:::i;:::-;4755:63;;4711:117;4506:329;;;;:::o;4841:619::-;4918:6;4926;4934;4983:2;4971:9;4962:7;4958:23;4954:32;4951:119;;;4989:79;;:::i;:::-;4951:119;5109:1;5134:53;5179:7;5170:6;5159:9;5155:22;5134:53;:::i;:::-;5124:63;;5080:117;5236:2;5262:53;5307:7;5298:6;5287:9;5283:22;5262:53;:::i;:::-;5252:63;;5207:118;5364:2;5390:53;5435:7;5426:6;5415:9;5411:22;5390:53;:::i;:::-;5380:63;;5335:118;4841:619;;;;;:::o;5466:86::-;5501:7;5541:4;5534:5;5530:16;5519:27;;5466:86;;;:::o;5558:112::-;5641:22;5657:5;5641:22;:::i;:::-;5636:3;5629:35;5558:112;;:::o;5676:214::-;5765:4;5803:2;5792:9;5788:18;5780:26;;5816:67;5880:1;5869:9;5865:17;5856:6;5816:67;:::i;:::-;5676:214;;;;:::o;5896:118::-;5983:24;6001:5;5983:24;:::i;:::-;5978:3;5971:37;5896:118;;:::o;6020:222::-;6113:4;6151:2;6140:9;6136:18;6128:26;;6164:71;6232:1;6221:9;6217:17;6208:6;6164:71;:::i;:::-;6020:222;;;;:::o;6248:474::-;6316:6;6324;6373:2;6361:9;6352:7;6348:23;6344:32;6341:119;;;6379:79;;:::i;:::-;6341:119;6499:1;6524:53;6569:7;6560:6;6549:9;6545:22;6524:53;:::i;:::-;6514:63;;6470:117;6626:2;6652:53;6697:7;6688:6;6677:9;6673:22;6652:53;:::i;:::-;6642:63;;6597:118;6248:474;;;;;:::o;6728:619::-;6805:6;6813;6821;6870:2;6858:9;6849:7;6845:23;6841:32;6838:119;;;6876:79;;:::i;:::-;6838:119;6996:1;7021:53;7066:7;7057:6;7046:9;7042:22;7021:53;:::i;:::-;7011:63;;6967:117;7123:2;7149:53;7194:7;7185:6;7174:9;7170:22;7149:53;:::i;:::-;7139:63;;7094:118;7251:2;7277:53;7322:7;7313:6;7302:9;7298:22;7277:53;:::i;:::-;7267:63;;7222:118;6728:619;;;;;:::o;7353:474::-;7421:6;7429;7478:2;7466:9;7457:7;7453:23;7449:32;7446:119;;;7484:79;;:::i;:::-;7446:119;7604:1;7629:53;7674:7;7665:6;7654:9;7650:22;7629:53;:::i;:::-;7619:63;;7575:117;7731:2;7757:53;7802:7;7793:6;7782:9;7778:22;7757:53;:::i;:::-;7747:63;;7702:118;7353:474;;;;;:::o;7833:143::-;7890:5;7921:6;7915:13;7906:22;;7937:33;7964:5;7937:33;:::i;:::-;7833:143;;;;:::o;7982:351::-;8052:6;8101:2;8089:9;8080:7;8076:23;8072:32;8069:119;;;8107:79;;:::i;:::-;8069:119;8227:1;8252:64;8308:7;8299:6;8288:9;8284:22;8252:64;:::i;:::-;8242:74;;8198:128;7982:351;;;;:::o;8339:180::-;8387:77;8384:1;8377:88;8484:4;8481:1;8474:15;8508:4;8505:1;8498:15;8525:320;8569:6;8606:1;8600:4;8596:12;8586:22;;8653:1;8647:4;8643:12;8674:18;8664:81;;8730:4;8722:6;8718:17;8708:27;;8664:81;8792:2;8784:6;8781:14;8761:18;8758:38;8755:84;;8811:18;;:::i;:::-;8755:84;8576:269;8525:320;;;:::o;8851:172::-;8991:24;8987:1;8979:6;8975:14;8968:48;8851:172;:::o;9029:366::-;9171:3;9192:67;9256:2;9251:3;9192:67;:::i;:::-;9185:74;;9268:93;9357:3;9268:93;:::i;:::-;9386:2;9381:3;9377:12;9370:19;;9029:366;;;:::o;9401:419::-;9567:4;9605:2;9594:9;9590:18;9582:26;;9654:9;9648:4;9644:20;9640:1;9629:9;9625:17;9618:47;9682:131;9808:4;9682:131;:::i;:::-;9674:139;;9401:419;;;:::o;9826:180::-;9874:77;9871:1;9864:88;9971:4;9968:1;9961:15;9995:4;9992:1;9985:15;10012:172;10152:24;10148:1;10140:6;10136:14;10129:48;10012:172;:::o;10190:366::-;10332:3;10353:67;10417:2;10412:3;10353:67;:::i;:::-;10346:74;;10429:93;10518:3;10429:93;:::i;:::-;10547:2;10542:3;10538:12;10531:19;;10190:366;;;:::o;10562:419::-;10728:4;10766:2;10755:9;10751:18;10743:26;;10815:9;10809:4;10805:20;10801:1;10790:9;10786:17;10779:47;10843:131;10969:4;10843:131;:::i;:::-;10835:139;;10562:419;;;:::o;10987:226::-;11127:34;11123:1;11115:6;11111:14;11104:58;11196:9;11191:2;11183:6;11179:15;11172:34;10987:226;:::o;11219:366::-;11361:3;11382:67;11446:2;11441:3;11382:67;:::i;:::-;11375:74;;11458:93;11547:3;11458:93;:::i;:::-;11576:2;11571:3;11567:12;11560:19;;11219:366;;;:::o;11591:419::-;11757:4;11795:2;11784:9;11780:18;11772:26;;11844:9;11838:4;11834:20;11830:1;11819:9;11815:17;11808:47;11872:131;11998:4;11872:131;:::i;:::-;11864:139;;11591:419;;;:::o;12016:180::-;12064:77;12061:1;12054:88;12161:4;12158:1;12151:15;12185:4;12182:1;12175:15;12202:194;12242:4;12262:20;12280:1;12262:20;:::i;:::-;12257:25;;12296:20;12314:1;12296:20;:::i;:::-;12291:25;;12340:1;12337;12333:9;12325:17;;12364:1;12358:4;12355:11;12352:37;;;12369:18;;:::i;:::-;12352:37;12202:194;;;;:::o;12402:180::-;12450:77;12447:1;12440:88;12547:4;12544:1;12537:15;12571:4;12568:1;12561:15;12588:181;12728:33;12724:1;12716:6;12712:14;12705:57;12588:181;:::o;12775:366::-;12917:3;12938:67;13002:2;12997:3;12938:67;:::i;:::-;12931:74;;13014:93;13103:3;13014:93;:::i;:::-;13132:2;13127:3;13123:12;13116:19;;12775:366;;;:::o;13147:419::-;13313:4;13351:2;13340:9;13336:18;13328:26;;13400:9;13394:4;13390:20;13386:1;13375:9;13371:17;13364:47;13428:131;13554:4;13428:131;:::i;:::-;13420:139;;13147:419;;;:::o;13572:173::-;13712:25;13708:1;13700:6;13696:14;13689:49;13572:173;:::o;13751:366::-;13893:3;13914:67;13978:2;13973:3;13914:67;:::i;:::-;13907:74;;13990:93;14079:3;13990:93;:::i;:::-;14108:2;14103:3;14099:12;14092:19;;13751:366;;;:::o;14123:419::-;14289:4;14327:2;14316:9;14312:18;14304:26;;14376:9;14370:4;14366:20;14362:1;14351:9;14347:17;14340:47;14404:131;14530:4;14404:131;:::i;:::-;14396:139;;14123:419;;;:::o;14548:188::-;14586:3;14605:18;14621:1;14605:18;:::i;:::-;14600:23;;14637:18;14653:1;14637:18;:::i;:::-;14632:23;;14678:1;14675;14671:9;14664:16;;14701:4;14696:3;14693:13;14690:39;;;14709:18;;:::i;:::-;14690:39;14548:188;;;;:::o;14742:442::-;14891:4;14929:2;14918:9;14914:18;14906:26;;14942:71;15010:1;14999:9;14995:17;14986:6;14942:71;:::i;:::-;15023:72;15091:2;15080:9;15076:18;15067:6;15023:72;:::i;:::-;15105;15173:2;15162:9;15158:18;15149:6;15105:72;:::i;:::-;14742:442;;;;;;:::o;15190:191::-;15230:3;15249:20;15267:1;15249:20;:::i;:::-;15244:25;;15283:20;15301:1;15283:20;:::i;:::-;15278:25;;15326:1;15323;15319:9;15312:16;;15347:3;15344:1;15341:10;15338:36;;;15354:18;;:::i;:::-;15338:36;15190:191;;;;:::o;15387:102::-;15429:8;15476:5;15473:1;15469:13;15448:34;;15387:102;;;:::o;15495:848::-;15556:5;15563:4;15587:6;15578:15;;15611:5;15602:14;;15625:712;15646:1;15636:8;15633:15;15625:712;;;15741:4;15736:3;15732:14;15726:4;15723:24;15720:50;;;15750:18;;:::i;:::-;15720:50;15800:1;15790:8;15786:16;15783:451;;;16215:4;16208:5;16204:16;16195:25;;15783:451;16265:4;16259;16255:15;16247:23;;16295:32;16318:8;16295:32;:::i;:::-;16283:44;;15625:712;;;15495:848;;;;;;;:::o;16349:1073::-;16403:5;16594:8;16584:40;;16615:1;16606:10;;16617:5;;16584:40;16643:4;16633:36;;16660:1;16651:10;;16662:5;;16633:36;16729:4;16777:1;16772:27;;;;16813:1;16808:191;;;;16722:277;;16772:27;16790:1;16781:10;;16792:5;;;16808:191;16853:3;16843:8;16840:17;16837:43;;;16860:18;;:::i;:::-;16837:43;16909:8;16906:1;16902:16;16893:25;;16944:3;16937:5;16934:14;16931:40;;;16951:18;;:::i;:::-;16931:40;16984:5;;;16722:277;;17108:2;17098:8;17095:16;17089:3;17083:4;17080:13;17076:36;17058:2;17048:8;17045:16;17040:2;17034:4;17031:12;17027:35;17011:111;17008:246;;;17164:8;17158:4;17154:19;17145:28;;17199:3;17192:5;17189:14;17186:40;;;17206:18;;:::i;:::-;17186:40;17239:5;;17008:246;17279:42;17317:3;17307:8;17301:4;17298:1;17279:42;:::i;:::-;17264:57;;;;17353:4;17348:3;17344:14;17337:5;17334:25;17331:51;;;17362:18;;:::i;:::-;17331:51;17411:4;17404:5;17400:16;17391:25;;16349:1073;;;;;;:::o;17428:281::-;17486:5;17510:23;17528:4;17510:23;:::i;:::-;17502:31;;17554:25;17570:8;17554:25;:::i;:::-;17542:37;;17598:104;17635:66;17625:8;17619:4;17598:104;:::i;:::-;17589:113;;17428:281;;;;:::o;17715:180::-;17763:77;17760:1;17753:88;17860:4;17857:1;17850:15;17884:4;17881:1;17874:15;17901:332;18022:4;18060:2;18049:9;18045:18;18037:26;;18073:71;18141:1;18130:9;18126:17;18117:6;18073:71;:::i;:::-;18154:72;18222:2;18211:9;18207:18;18198:6;18154:72;:::i;:::-;17901:332;;;;;:::o;18239:180::-;18287:77;18284:1;18277:88;18384:4;18381:1;18374:15;18408:4;18405:1;18398:15;18425:170;18455:1;18472:18;18488:1;18472:18;:::i;:::-;18467:23;;18504:18;18520:1;18504:18;:::i;:::-;18499:23;;18541:1;18531:35;;18546:18;;:::i;:::-;18531:35;18587:1;18584;18580:9;18575:14;;18425:170;;;;:::o"},"methodIdentifiers":{"activeStrategies(uint256)":"b20b2429","addStrategy(address)":"223e5479","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deployToStrategy(uint256,uint256)":"0c474691","deposit(uint256,address)":"6e553f65","isActiveStrategy(address)":"d2581503","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","removeStrategy(address)":"175188e8","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"asset_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FundsDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"activeStrategies\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"addStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"strategyIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deployToStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isActiveStrategy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"removeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An ERC4626 compliant vault that takes a single asset (e.g., USDC) and automatically deploys it into whitelisted yield strategies (e.g., Aave, Curve).\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `owner`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `owner`.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"addStrategy(address)\":{\"details\":\"Add a new strategy.\",\"params\":{\"strategy\":\"The address of the strategy to add\"}},\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deployToStrategy(uint256,uint256)\":{\"details\":\"Deploy underlying assets to a specific strategy. Note: In a production environment, this should interface with specific protocols (Aave, etc.)\"},\"deposit(uint256,address)\":{\"details\":\"Deposit `assets` underlying tokens and send the corresponding number of vault shares (`shares`) to `receiver`. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly `shares` vault shares to `receiver` in exchange for `assets` underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"Pause all critical functions\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if called in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"removeStrategy(address)\":{\"details\":\"Remove a strategy.\",\"params\":{\"strategy\":\"The address of the strategy to remove\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause()\":{\"details\":\"Unpause all critical functions\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"title\":\"SmartBagVault\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SmartBagVault.sol\":\"SmartBagVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0xece5cbf726293ae6be1fbfade2936f052e1b399ed395ba1e221540ab82b62628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b97e58e90799e681dccbd4a8e469c6ebc2baf11312ad08f14332646123dd4b\",\"dweb:/ipfs/QmdamCQfxcuYinSNd3Et7VNo3oY98XSv4XCUQyq9xfMNUy\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0xaf981f76e8c7114161294c30b30468e2a7a19c3550023c40cee417a1c7cfec21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da2ff7222360cd0828ed409858cf7267e7809f876d53427bd1543f2635d7406a\",\"dweb:/ipfs/QmTEf8PiH1ixABQLizjen1iMEMuPeAZqiVPt9AUsdn8boB\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5\",\"dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi\"]},\"@openzeppelin/contracts/utils/Memory.sol\":{\"keccak256\":\"0x2e7bad5e7af061641d83d7d1c76a5c257e3a72839a215f0ed9983aa5900b5650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://774cb2501045a51b589a7b0642a0fe09cb9728956f49f7b0994adc3f5278f759\",\"dweb:/ipfs/QmZB5mD4eiFQLicfAaPU4P1BXvjGCeJQoCdVgNhR5fpvwh\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"contracts/SmartBagVault.sol\":{\"keccak256\":\"0x303bdec9e7d698a6df125100fa6ded9dd87786591cc82077d932387eb7344851\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c68354266bc51326a53c84b8d39e8f698434d8c30168d05df8a7d33228895bf6\",\"dweb:/ipfs/QmTezUFvMp9Nm5f84RS9qjrsrCerE4UUAwdTbFifStZEB2\"]}},\"version\":1}"}},"contracts/mocks/MockERC20.sol":{"MockERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_6957":{"entryPoint":null,"id":6957,"parameterSlots":3,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":337,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":402,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint8_fromMemory":{"entryPoint":481,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint8_fromMemory":{"entryPoint":501,"id":null,"parameterSlots":2,"returnSlots":3},"allocate_memory":{"entryPoint":249,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":114,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":275,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_string_storage":{"entryPoint":740,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":637,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_t_string_storage":{"entryPoint":1025,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_uint256":{"entryPoint":866,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":447,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":991,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":884,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1162,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":323,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":758,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":692,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":1135,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":200,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":875,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":1107,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":647,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":155,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":917,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":131,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":135,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":127,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":123,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":139,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":773,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1095,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":967,"id":null,"parameterSlots":2,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":785,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":926,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_uint8":{"entryPoint":459,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":963,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:8980:24","nodeType":"YulBlock","src":"0:8980:24","statements":[{"body":{"nativeSrc":"47:35:24","nodeType":"YulBlock","src":"47:35:24","statements":[{"nativeSrc":"57:19:24","nodeType":"YulAssignment","src":"57:19:24","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:24","nodeType":"YulLiteral","src":"73:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:24","nodeType":"YulIdentifier","src":"67:5:24"},"nativeSrc":"67:9:24","nodeType":"YulFunctionCall","src":"67:9:24"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:24","nodeType":"YulIdentifier","src":"57:6:24"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:24","nodeType":"YulTypedName","src":"40:6:24","type":""}],"src":"7:75:24"},{"body":{"nativeSrc":"177:28:24","nodeType":"YulBlock","src":"177:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:24","nodeType":"YulLiteral","src":"194:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:24","nodeType":"YulLiteral","src":"197:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:24","nodeType":"YulIdentifier","src":"187:6:24"},"nativeSrc":"187:12:24","nodeType":"YulFunctionCall","src":"187:12:24"},"nativeSrc":"187:12:24","nodeType":"YulExpressionStatement","src":"187:12:24"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:24","nodeType":"YulFunctionDefinition","src":"88:117:24"},{"body":{"nativeSrc":"300:28:24","nodeType":"YulBlock","src":"300:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:24","nodeType":"YulLiteral","src":"317:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:24","nodeType":"YulLiteral","src":"320:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:24","nodeType":"YulIdentifier","src":"310:6:24"},"nativeSrc":"310:12:24","nodeType":"YulFunctionCall","src":"310:12:24"},"nativeSrc":"310:12:24","nodeType":"YulExpressionStatement","src":"310:12:24"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:24","nodeType":"YulFunctionDefinition","src":"211:117:24"},{"body":{"nativeSrc":"423:28:24","nodeType":"YulBlock","src":"423:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"440:1:24","nodeType":"YulLiteral","src":"440:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"443:1:24","nodeType":"YulLiteral","src":"443:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"433:6:24","nodeType":"YulIdentifier","src":"433:6:24"},"nativeSrc":"433:12:24","nodeType":"YulFunctionCall","src":"433:12:24"},"nativeSrc":"433:12:24","nodeType":"YulExpressionStatement","src":"433:12:24"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"334:117:24","nodeType":"YulFunctionDefinition","src":"334:117:24"},{"body":{"nativeSrc":"546:28:24","nodeType":"YulBlock","src":"546:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"563:1:24","nodeType":"YulLiteral","src":"563:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"566:1:24","nodeType":"YulLiteral","src":"566:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"556:6:24","nodeType":"YulIdentifier","src":"556:6:24"},"nativeSrc":"556:12:24","nodeType":"YulFunctionCall","src":"556:12:24"},"nativeSrc":"556:12:24","nodeType":"YulExpressionStatement","src":"556:12:24"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"457:117:24","nodeType":"YulFunctionDefinition","src":"457:117:24"},{"body":{"nativeSrc":"628:54:24","nodeType":"YulBlock","src":"628:54:24","statements":[{"nativeSrc":"638:38:24","nodeType":"YulAssignment","src":"638:38:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"656:5:24","nodeType":"YulIdentifier","src":"656:5:24"},{"kind":"number","nativeSrc":"663:2:24","nodeType":"YulLiteral","src":"663:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"652:3:24","nodeType":"YulIdentifier","src":"652:3:24"},"nativeSrc":"652:14:24","nodeType":"YulFunctionCall","src":"652:14:24"},{"arguments":[{"kind":"number","nativeSrc":"672:2:24","nodeType":"YulLiteral","src":"672:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"668:3:24","nodeType":"YulIdentifier","src":"668:3:24"},"nativeSrc":"668:7:24","nodeType":"YulFunctionCall","src":"668:7:24"}],"functionName":{"name":"and","nativeSrc":"648:3:24","nodeType":"YulIdentifier","src":"648:3:24"},"nativeSrc":"648:28:24","nodeType":"YulFunctionCall","src":"648:28:24"},"variableNames":[{"name":"result","nativeSrc":"638:6:24","nodeType":"YulIdentifier","src":"638:6:24"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"580:102:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"611:5:24","nodeType":"YulTypedName","src":"611:5:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"621:6:24","nodeType":"YulTypedName","src":"621:6:24","type":""}],"src":"580:102:24"},{"body":{"nativeSrc":"716:152:24","nodeType":"YulBlock","src":"716:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"733:1:24","nodeType":"YulLiteral","src":"733:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"736:77:24","nodeType":"YulLiteral","src":"736:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"726:6:24","nodeType":"YulIdentifier","src":"726:6:24"},"nativeSrc":"726:88:24","nodeType":"YulFunctionCall","src":"726:88:24"},"nativeSrc":"726:88:24","nodeType":"YulExpressionStatement","src":"726:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"830:1:24","nodeType":"YulLiteral","src":"830:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"833:4:24","nodeType":"YulLiteral","src":"833:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"823:6:24","nodeType":"YulIdentifier","src":"823:6:24"},"nativeSrc":"823:15:24","nodeType":"YulFunctionCall","src":"823:15:24"},"nativeSrc":"823:15:24","nodeType":"YulExpressionStatement","src":"823:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"854:1:24","nodeType":"YulLiteral","src":"854:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"857:4:24","nodeType":"YulLiteral","src":"857:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"847:6:24","nodeType":"YulIdentifier","src":"847:6:24"},"nativeSrc":"847:15:24","nodeType":"YulFunctionCall","src":"847:15:24"},"nativeSrc":"847:15:24","nodeType":"YulExpressionStatement","src":"847:15:24"}]},"name":"panic_error_0x41","nativeSrc":"688:180:24","nodeType":"YulFunctionDefinition","src":"688:180:24"},{"body":{"nativeSrc":"917:238:24","nodeType":"YulBlock","src":"917:238:24","statements":[{"nativeSrc":"927:58:24","nodeType":"YulVariableDeclaration","src":"927:58:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"949:6:24","nodeType":"YulIdentifier","src":"949:6:24"},{"arguments":[{"name":"size","nativeSrc":"979:4:24","nodeType":"YulIdentifier","src":"979:4:24"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"957:21:24","nodeType":"YulIdentifier","src":"957:21:24"},"nativeSrc":"957:27:24","nodeType":"YulFunctionCall","src":"957:27:24"}],"functionName":{"name":"add","nativeSrc":"945:3:24","nodeType":"YulIdentifier","src":"945:3:24"},"nativeSrc":"945:40:24","nodeType":"YulFunctionCall","src":"945:40:24"},"variables":[{"name":"newFreePtr","nativeSrc":"931:10:24","nodeType":"YulTypedName","src":"931:10:24","type":""}]},{"body":{"nativeSrc":"1096:22:24","nodeType":"YulBlock","src":"1096:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1098:16:24","nodeType":"YulIdentifier","src":"1098:16:24"},"nativeSrc":"1098:18:24","nodeType":"YulFunctionCall","src":"1098:18:24"},"nativeSrc":"1098:18:24","nodeType":"YulExpressionStatement","src":"1098:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1039:10:24","nodeType":"YulIdentifier","src":"1039:10:24"},{"kind":"number","nativeSrc":"1051:18:24","nodeType":"YulLiteral","src":"1051:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1036:2:24","nodeType":"YulIdentifier","src":"1036:2:24"},"nativeSrc":"1036:34:24","nodeType":"YulFunctionCall","src":"1036:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1075:10:24","nodeType":"YulIdentifier","src":"1075:10:24"},{"name":"memPtr","nativeSrc":"1087:6:24","nodeType":"YulIdentifier","src":"1087:6:24"}],"functionName":{"name":"lt","nativeSrc":"1072:2:24","nodeType":"YulIdentifier","src":"1072:2:24"},"nativeSrc":"1072:22:24","nodeType":"YulFunctionCall","src":"1072:22:24"}],"functionName":{"name":"or","nativeSrc":"1033:2:24","nodeType":"YulIdentifier","src":"1033:2:24"},"nativeSrc":"1033:62:24","nodeType":"YulFunctionCall","src":"1033:62:24"},"nativeSrc":"1030:88:24","nodeType":"YulIf","src":"1030:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1134:2:24","nodeType":"YulLiteral","src":"1134:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1138:10:24","nodeType":"YulIdentifier","src":"1138:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1127:6:24","nodeType":"YulIdentifier","src":"1127:6:24"},"nativeSrc":"1127:22:24","nodeType":"YulFunctionCall","src":"1127:22:24"},"nativeSrc":"1127:22:24","nodeType":"YulExpressionStatement","src":"1127:22:24"}]},"name":"finalize_allocation","nativeSrc":"874:281:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"903:6:24","nodeType":"YulTypedName","src":"903:6:24","type":""},{"name":"size","nativeSrc":"911:4:24","nodeType":"YulTypedName","src":"911:4:24","type":""}],"src":"874:281:24"},{"body":{"nativeSrc":"1202:88:24","nodeType":"YulBlock","src":"1202:88:24","statements":[{"nativeSrc":"1212:30:24","nodeType":"YulAssignment","src":"1212:30:24","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nativeSrc":"1222:18:24","nodeType":"YulIdentifier","src":"1222:18:24"},"nativeSrc":"1222:20:24","nodeType":"YulFunctionCall","src":"1222:20:24"},"variableNames":[{"name":"memPtr","nativeSrc":"1212:6:24","nodeType":"YulIdentifier","src":"1212:6:24"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1271:6:24","nodeType":"YulIdentifier","src":"1271:6:24"},{"name":"size","nativeSrc":"1279:4:24","nodeType":"YulIdentifier","src":"1279:4:24"}],"functionName":{"name":"finalize_allocation","nativeSrc":"1251:19:24","nodeType":"YulIdentifier","src":"1251:19:24"},"nativeSrc":"1251:33:24","nodeType":"YulFunctionCall","src":"1251:33:24"},"nativeSrc":"1251:33:24","nodeType":"YulExpressionStatement","src":"1251:33:24"}]},"name":"allocate_memory","nativeSrc":"1161:129:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"1186:4:24","nodeType":"YulTypedName","src":"1186:4:24","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"1195:6:24","nodeType":"YulTypedName","src":"1195:6:24","type":""}],"src":"1161:129:24"},{"body":{"nativeSrc":"1363:241:24","nodeType":"YulBlock","src":"1363:241:24","statements":[{"body":{"nativeSrc":"1468:22:24","nodeType":"YulBlock","src":"1468:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1470:16:24","nodeType":"YulIdentifier","src":"1470:16:24"},"nativeSrc":"1470:18:24","nodeType":"YulFunctionCall","src":"1470:18:24"},"nativeSrc":"1470:18:24","nodeType":"YulExpressionStatement","src":"1470:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1440:6:24","nodeType":"YulIdentifier","src":"1440:6:24"},{"kind":"number","nativeSrc":"1448:18:24","nodeType":"YulLiteral","src":"1448:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1437:2:24","nodeType":"YulIdentifier","src":"1437:2:24"},"nativeSrc":"1437:30:24","nodeType":"YulFunctionCall","src":"1437:30:24"},"nativeSrc":"1434:56:24","nodeType":"YulIf","src":"1434:56:24"},{"nativeSrc":"1500:37:24","nodeType":"YulAssignment","src":"1500:37:24","value":{"arguments":[{"name":"length","nativeSrc":"1530:6:24","nodeType":"YulIdentifier","src":"1530:6:24"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"1508:21:24","nodeType":"YulIdentifier","src":"1508:21:24"},"nativeSrc":"1508:29:24","nodeType":"YulFunctionCall","src":"1508:29:24"},"variableNames":[{"name":"size","nativeSrc":"1500:4:24","nodeType":"YulIdentifier","src":"1500:4:24"}]},{"nativeSrc":"1574:23:24","nodeType":"YulAssignment","src":"1574:23:24","value":{"arguments":[{"name":"size","nativeSrc":"1586:4:24","nodeType":"YulIdentifier","src":"1586:4:24"},{"kind":"number","nativeSrc":"1592:4:24","nodeType":"YulLiteral","src":"1592:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1582:3:24","nodeType":"YulIdentifier","src":"1582:3:24"},"nativeSrc":"1582:15:24","nodeType":"YulFunctionCall","src":"1582:15:24"},"variableNames":[{"name":"size","nativeSrc":"1574:4:24","nodeType":"YulIdentifier","src":"1574:4:24"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nativeSrc":"1296:308:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"1347:6:24","nodeType":"YulTypedName","src":"1347:6:24","type":""}],"returnVariables":[{"name":"size","nativeSrc":"1358:4:24","nodeType":"YulTypedName","src":"1358:4:24","type":""}],"src":"1296:308:24"},{"body":{"nativeSrc":"1672:77:24","nodeType":"YulBlock","src":"1672:77:24","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"1689:3:24","nodeType":"YulIdentifier","src":"1689:3:24"},{"name":"src","nativeSrc":"1694:3:24","nodeType":"YulIdentifier","src":"1694:3:24"},{"name":"length","nativeSrc":"1699:6:24","nodeType":"YulIdentifier","src":"1699:6:24"}],"functionName":{"name":"mcopy","nativeSrc":"1683:5:24","nodeType":"YulIdentifier","src":"1683:5:24"},"nativeSrc":"1683:23:24","nodeType":"YulFunctionCall","src":"1683:23:24"},"nativeSrc":"1683:23:24","nodeType":"YulExpressionStatement","src":"1683:23:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"1726:3:24","nodeType":"YulIdentifier","src":"1726:3:24"},{"name":"length","nativeSrc":"1731:6:24","nodeType":"YulIdentifier","src":"1731:6:24"}],"functionName":{"name":"add","nativeSrc":"1722:3:24","nodeType":"YulIdentifier","src":"1722:3:24"},"nativeSrc":"1722:16:24","nodeType":"YulFunctionCall","src":"1722:16:24"},{"kind":"number","nativeSrc":"1740:1:24","nodeType":"YulLiteral","src":"1740:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1715:6:24","nodeType":"YulIdentifier","src":"1715:6:24"},"nativeSrc":"1715:27:24","nodeType":"YulFunctionCall","src":"1715:27:24"},"nativeSrc":"1715:27:24","nodeType":"YulExpressionStatement","src":"1715:27:24"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"1610:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"1654:3:24","nodeType":"YulTypedName","src":"1654:3:24","type":""},{"name":"dst","nativeSrc":"1659:3:24","nodeType":"YulTypedName","src":"1659:3:24","type":""},{"name":"length","nativeSrc":"1664:6:24","nodeType":"YulTypedName","src":"1664:6:24","type":""}],"src":"1610:139:24"},{"body":{"nativeSrc":"1850:339:24","nodeType":"YulBlock","src":"1850:339:24","statements":[{"nativeSrc":"1860:75:24","nodeType":"YulAssignment","src":"1860:75:24","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1927:6:24","nodeType":"YulIdentifier","src":"1927:6:24"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nativeSrc":"1885:41:24","nodeType":"YulIdentifier","src":"1885:41:24"},"nativeSrc":"1885:49:24","nodeType":"YulFunctionCall","src":"1885:49:24"}],"functionName":{"name":"allocate_memory","nativeSrc":"1869:15:24","nodeType":"YulIdentifier","src":"1869:15:24"},"nativeSrc":"1869:66:24","nodeType":"YulFunctionCall","src":"1869:66:24"},"variableNames":[{"name":"array","nativeSrc":"1860:5:24","nodeType":"YulIdentifier","src":"1860:5:24"}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"1951:5:24","nodeType":"YulIdentifier","src":"1951:5:24"},{"name":"length","nativeSrc":"1958:6:24","nodeType":"YulIdentifier","src":"1958:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1944:6:24","nodeType":"YulIdentifier","src":"1944:6:24"},"nativeSrc":"1944:21:24","nodeType":"YulFunctionCall","src":"1944:21:24"},"nativeSrc":"1944:21:24","nodeType":"YulExpressionStatement","src":"1944:21:24"},{"nativeSrc":"1974:27:24","nodeType":"YulVariableDeclaration","src":"1974:27:24","value":{"arguments":[{"name":"array","nativeSrc":"1989:5:24","nodeType":"YulIdentifier","src":"1989:5:24"},{"kind":"number","nativeSrc":"1996:4:24","nodeType":"YulLiteral","src":"1996:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1985:3:24","nodeType":"YulIdentifier","src":"1985:3:24"},"nativeSrc":"1985:16:24","nodeType":"YulFunctionCall","src":"1985:16:24"},"variables":[{"name":"dst","nativeSrc":"1978:3:24","nodeType":"YulTypedName","src":"1978:3:24","type":""}]},{"body":{"nativeSrc":"2039:83:24","nodeType":"YulBlock","src":"2039:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"2041:77:24","nodeType":"YulIdentifier","src":"2041:77:24"},"nativeSrc":"2041:79:24","nodeType":"YulFunctionCall","src":"2041:79:24"},"nativeSrc":"2041:79:24","nodeType":"YulExpressionStatement","src":"2041:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2020:3:24","nodeType":"YulIdentifier","src":"2020:3:24"},{"name":"length","nativeSrc":"2025:6:24","nodeType":"YulIdentifier","src":"2025:6:24"}],"functionName":{"name":"add","nativeSrc":"2016:3:24","nodeType":"YulIdentifier","src":"2016:3:24"},"nativeSrc":"2016:16:24","nodeType":"YulFunctionCall","src":"2016:16:24"},{"name":"end","nativeSrc":"2034:3:24","nodeType":"YulIdentifier","src":"2034:3:24"}],"functionName":{"name":"gt","nativeSrc":"2013:2:24","nodeType":"YulIdentifier","src":"2013:2:24"},"nativeSrc":"2013:25:24","nodeType":"YulFunctionCall","src":"2013:25:24"},"nativeSrc":"2010:112:24","nodeType":"YulIf","src":"2010:112:24"},{"expression":{"arguments":[{"name":"src","nativeSrc":"2166:3:24","nodeType":"YulIdentifier","src":"2166:3:24"},{"name":"dst","nativeSrc":"2171:3:24","nodeType":"YulIdentifier","src":"2171:3:24"},{"name":"length","nativeSrc":"2176:6:24","nodeType":"YulIdentifier","src":"2176:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2131:34:24","nodeType":"YulIdentifier","src":"2131:34:24"},"nativeSrc":"2131:52:24","nodeType":"YulFunctionCall","src":"2131:52:24"},"nativeSrc":"2131:52:24","nodeType":"YulExpressionStatement","src":"2131:52:24"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nativeSrc":"1755:434:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"1823:3:24","nodeType":"YulTypedName","src":"1823:3:24","type":""},{"name":"length","nativeSrc":"1828:6:24","nodeType":"YulTypedName","src":"1828:6:24","type":""},{"name":"end","nativeSrc":"1836:3:24","nodeType":"YulTypedName","src":"1836:3:24","type":""}],"returnVariables":[{"name":"array","nativeSrc":"1844:5:24","nodeType":"YulTypedName","src":"1844:5:24","type":""}],"src":"1755:434:24"},{"body":{"nativeSrc":"2282:282:24","nodeType":"YulBlock","src":"2282:282:24","statements":[{"body":{"nativeSrc":"2331:83:24","nodeType":"YulBlock","src":"2331:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2333:77:24","nodeType":"YulIdentifier","src":"2333:77:24"},"nativeSrc":"2333:79:24","nodeType":"YulFunctionCall","src":"2333:79:24"},"nativeSrc":"2333:79:24","nodeType":"YulExpressionStatement","src":"2333:79:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2310:6:24","nodeType":"YulIdentifier","src":"2310:6:24"},{"kind":"number","nativeSrc":"2318:4:24","nodeType":"YulLiteral","src":"2318:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2306:3:24","nodeType":"YulIdentifier","src":"2306:3:24"},"nativeSrc":"2306:17:24","nodeType":"YulFunctionCall","src":"2306:17:24"},{"name":"end","nativeSrc":"2325:3:24","nodeType":"YulIdentifier","src":"2325:3:24"}],"functionName":{"name":"slt","nativeSrc":"2302:3:24","nodeType":"YulIdentifier","src":"2302:3:24"},"nativeSrc":"2302:27:24","nodeType":"YulFunctionCall","src":"2302:27:24"}],"functionName":{"name":"iszero","nativeSrc":"2295:6:24","nodeType":"YulIdentifier","src":"2295:6:24"},"nativeSrc":"2295:35:24","nodeType":"YulFunctionCall","src":"2295:35:24"},"nativeSrc":"2292:122:24","nodeType":"YulIf","src":"2292:122:24"},{"nativeSrc":"2423:27:24","nodeType":"YulVariableDeclaration","src":"2423:27:24","value":{"arguments":[{"name":"offset","nativeSrc":"2443:6:24","nodeType":"YulIdentifier","src":"2443:6:24"}],"functionName":{"name":"mload","nativeSrc":"2437:5:24","nodeType":"YulIdentifier","src":"2437:5:24"},"nativeSrc":"2437:13:24","nodeType":"YulFunctionCall","src":"2437:13:24"},"variables":[{"name":"length","nativeSrc":"2427:6:24","nodeType":"YulTypedName","src":"2427:6:24","type":""}]},{"nativeSrc":"2459:99:24","nodeType":"YulAssignment","src":"2459:99:24","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2531:6:24","nodeType":"YulIdentifier","src":"2531:6:24"},{"kind":"number","nativeSrc":"2539:4:24","nodeType":"YulLiteral","src":"2539:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2527:3:24","nodeType":"YulIdentifier","src":"2527:3:24"},"nativeSrc":"2527:17:24","nodeType":"YulFunctionCall","src":"2527:17:24"},{"name":"length","nativeSrc":"2546:6:24","nodeType":"YulIdentifier","src":"2546:6:24"},{"name":"end","nativeSrc":"2554:3:24","nodeType":"YulIdentifier","src":"2554:3:24"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nativeSrc":"2468:58:24","nodeType":"YulIdentifier","src":"2468:58:24"},"nativeSrc":"2468:90:24","nodeType":"YulFunctionCall","src":"2468:90:24"},"variableNames":[{"name":"array","nativeSrc":"2459:5:24","nodeType":"YulIdentifier","src":"2459:5:24"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nativeSrc":"2209:355:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2260:6:24","nodeType":"YulTypedName","src":"2260:6:24","type":""},{"name":"end","nativeSrc":"2268:3:24","nodeType":"YulTypedName","src":"2268:3:24","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2276:5:24","nodeType":"YulTypedName","src":"2276:5:24","type":""}],"src":"2209:355:24"},{"body":{"nativeSrc":"2613:43:24","nodeType":"YulBlock","src":"2613:43:24","statements":[{"nativeSrc":"2623:27:24","nodeType":"YulAssignment","src":"2623:27:24","value":{"arguments":[{"name":"value","nativeSrc":"2638:5:24","nodeType":"YulIdentifier","src":"2638:5:24"},{"kind":"number","nativeSrc":"2645:4:24","nodeType":"YulLiteral","src":"2645:4:24","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2634:3:24","nodeType":"YulIdentifier","src":"2634:3:24"},"nativeSrc":"2634:16:24","nodeType":"YulFunctionCall","src":"2634:16:24"},"variableNames":[{"name":"cleaned","nativeSrc":"2623:7:24","nodeType":"YulIdentifier","src":"2623:7:24"}]}]},"name":"cleanup_t_uint8","nativeSrc":"2570:86:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2595:5:24","nodeType":"YulTypedName","src":"2595:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"2605:7:24","nodeType":"YulTypedName","src":"2605:7:24","type":""}],"src":"2570:86:24"},{"body":{"nativeSrc":"2703:77:24","nodeType":"YulBlock","src":"2703:77:24","statements":[{"body":{"nativeSrc":"2758:16:24","nodeType":"YulBlock","src":"2758:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2767:1:24","nodeType":"YulLiteral","src":"2767:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2770:1:24","nodeType":"YulLiteral","src":"2770:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2760:6:24","nodeType":"YulIdentifier","src":"2760:6:24"},"nativeSrc":"2760:12:24","nodeType":"YulFunctionCall","src":"2760:12:24"},"nativeSrc":"2760:12:24","nodeType":"YulExpressionStatement","src":"2760:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2726:5:24","nodeType":"YulIdentifier","src":"2726:5:24"},{"arguments":[{"name":"value","nativeSrc":"2749:5:24","nodeType":"YulIdentifier","src":"2749:5:24"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"2733:15:24","nodeType":"YulIdentifier","src":"2733:15:24"},"nativeSrc":"2733:22:24","nodeType":"YulFunctionCall","src":"2733:22:24"}],"functionName":{"name":"eq","nativeSrc":"2723:2:24","nodeType":"YulIdentifier","src":"2723:2:24"},"nativeSrc":"2723:33:24","nodeType":"YulFunctionCall","src":"2723:33:24"}],"functionName":{"name":"iszero","nativeSrc":"2716:6:24","nodeType":"YulIdentifier","src":"2716:6:24"},"nativeSrc":"2716:41:24","nodeType":"YulFunctionCall","src":"2716:41:24"},"nativeSrc":"2713:61:24","nodeType":"YulIf","src":"2713:61:24"}]},"name":"validator_revert_t_uint8","nativeSrc":"2662:118:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2696:5:24","nodeType":"YulTypedName","src":"2696:5:24","type":""}],"src":"2662:118:24"},{"body":{"nativeSrc":"2847:78:24","nodeType":"YulBlock","src":"2847:78:24","statements":[{"nativeSrc":"2857:22:24","nodeType":"YulAssignment","src":"2857:22:24","value":{"arguments":[{"name":"offset","nativeSrc":"2872:6:24","nodeType":"YulIdentifier","src":"2872:6:24"}],"functionName":{"name":"mload","nativeSrc":"2866:5:24","nodeType":"YulIdentifier","src":"2866:5:24"},"nativeSrc":"2866:13:24","nodeType":"YulFunctionCall","src":"2866:13:24"},"variableNames":[{"name":"value","nativeSrc":"2857:5:24","nodeType":"YulIdentifier","src":"2857:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2913:5:24","nodeType":"YulIdentifier","src":"2913:5:24"}],"functionName":{"name":"validator_revert_t_uint8","nativeSrc":"2888:24:24","nodeType":"YulIdentifier","src":"2888:24:24"},"nativeSrc":"2888:31:24","nodeType":"YulFunctionCall","src":"2888:31:24"},"nativeSrc":"2888:31:24","nodeType":"YulExpressionStatement","src":"2888:31:24"}]},"name":"abi_decode_t_uint8_fromMemory","nativeSrc":"2786:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2825:6:24","nodeType":"YulTypedName","src":"2825:6:24","type":""},{"name":"end","nativeSrc":"2833:3:24","nodeType":"YulTypedName","src":"2833:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2841:5:24","nodeType":"YulTypedName","src":"2841:5:24","type":""}],"src":"2786:139:24"},{"body":{"nativeSrc":"3060:876:24","nodeType":"YulBlock","src":"3060:876:24","statements":[{"body":{"nativeSrc":"3106:83:24","nodeType":"YulBlock","src":"3106:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3108:77:24","nodeType":"YulIdentifier","src":"3108:77:24"},"nativeSrc":"3108:79:24","nodeType":"YulFunctionCall","src":"3108:79:24"},"nativeSrc":"3108:79:24","nodeType":"YulExpressionStatement","src":"3108:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3081:7:24","nodeType":"YulIdentifier","src":"3081:7:24"},{"name":"headStart","nativeSrc":"3090:9:24","nodeType":"YulIdentifier","src":"3090:9:24"}],"functionName":{"name":"sub","nativeSrc":"3077:3:24","nodeType":"YulIdentifier","src":"3077:3:24"},"nativeSrc":"3077:23:24","nodeType":"YulFunctionCall","src":"3077:23:24"},{"kind":"number","nativeSrc":"3102:2:24","nodeType":"YulLiteral","src":"3102:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3073:3:24","nodeType":"YulIdentifier","src":"3073:3:24"},"nativeSrc":"3073:32:24","nodeType":"YulFunctionCall","src":"3073:32:24"},"nativeSrc":"3070:119:24","nodeType":"YulIf","src":"3070:119:24"},{"nativeSrc":"3199:291:24","nodeType":"YulBlock","src":"3199:291:24","statements":[{"nativeSrc":"3214:38:24","nodeType":"YulVariableDeclaration","src":"3214:38:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3238:9:24","nodeType":"YulIdentifier","src":"3238:9:24"},{"kind":"number","nativeSrc":"3249:1:24","nodeType":"YulLiteral","src":"3249:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3234:3:24","nodeType":"YulIdentifier","src":"3234:3:24"},"nativeSrc":"3234:17:24","nodeType":"YulFunctionCall","src":"3234:17:24"}],"functionName":{"name":"mload","nativeSrc":"3228:5:24","nodeType":"YulIdentifier","src":"3228:5:24"},"nativeSrc":"3228:24:24","nodeType":"YulFunctionCall","src":"3228:24:24"},"variables":[{"name":"offset","nativeSrc":"3218:6:24","nodeType":"YulTypedName","src":"3218:6:24","type":""}]},{"body":{"nativeSrc":"3299:83:24","nodeType":"YulBlock","src":"3299:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"3301:77:24","nodeType":"YulIdentifier","src":"3301:77:24"},"nativeSrc":"3301:79:24","nodeType":"YulFunctionCall","src":"3301:79:24"},"nativeSrc":"3301:79:24","nodeType":"YulExpressionStatement","src":"3301:79:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3271:6:24","nodeType":"YulIdentifier","src":"3271:6:24"},{"kind":"number","nativeSrc":"3279:18:24","nodeType":"YulLiteral","src":"3279:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3268:2:24","nodeType":"YulIdentifier","src":"3268:2:24"},"nativeSrc":"3268:30:24","nodeType":"YulFunctionCall","src":"3268:30:24"},"nativeSrc":"3265:117:24","nodeType":"YulIf","src":"3265:117:24"},{"nativeSrc":"3396:84:24","nodeType":"YulAssignment","src":"3396:84:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3452:9:24","nodeType":"YulIdentifier","src":"3452:9:24"},{"name":"offset","nativeSrc":"3463:6:24","nodeType":"YulIdentifier","src":"3463:6:24"}],"functionName":{"name":"add","nativeSrc":"3448:3:24","nodeType":"YulIdentifier","src":"3448:3:24"},"nativeSrc":"3448:22:24","nodeType":"YulFunctionCall","src":"3448:22:24"},{"name":"dataEnd","nativeSrc":"3472:7:24","nodeType":"YulIdentifier","src":"3472:7:24"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nativeSrc":"3406:41:24","nodeType":"YulIdentifier","src":"3406:41:24"},"nativeSrc":"3406:74:24","nodeType":"YulFunctionCall","src":"3406:74:24"},"variableNames":[{"name":"value0","nativeSrc":"3396:6:24","nodeType":"YulIdentifier","src":"3396:6:24"}]}]},{"nativeSrc":"3500:292:24","nodeType":"YulBlock","src":"3500:292:24","statements":[{"nativeSrc":"3515:39:24","nodeType":"YulVariableDeclaration","src":"3515:39:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3539:9:24","nodeType":"YulIdentifier","src":"3539:9:24"},{"kind":"number","nativeSrc":"3550:2:24","nodeType":"YulLiteral","src":"3550:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3535:3:24","nodeType":"YulIdentifier","src":"3535:3:24"},"nativeSrc":"3535:18:24","nodeType":"YulFunctionCall","src":"3535:18:24"}],"functionName":{"name":"mload","nativeSrc":"3529:5:24","nodeType":"YulIdentifier","src":"3529:5:24"},"nativeSrc":"3529:25:24","nodeType":"YulFunctionCall","src":"3529:25:24"},"variables":[{"name":"offset","nativeSrc":"3519:6:24","nodeType":"YulTypedName","src":"3519:6:24","type":""}]},{"body":{"nativeSrc":"3601:83:24","nodeType":"YulBlock","src":"3601:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"3603:77:24","nodeType":"YulIdentifier","src":"3603:77:24"},"nativeSrc":"3603:79:24","nodeType":"YulFunctionCall","src":"3603:79:24"},"nativeSrc":"3603:79:24","nodeType":"YulExpressionStatement","src":"3603:79:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3573:6:24","nodeType":"YulIdentifier","src":"3573:6:24"},{"kind":"number","nativeSrc":"3581:18:24","nodeType":"YulLiteral","src":"3581:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3570:2:24","nodeType":"YulIdentifier","src":"3570:2:24"},"nativeSrc":"3570:30:24","nodeType":"YulFunctionCall","src":"3570:30:24"},"nativeSrc":"3567:117:24","nodeType":"YulIf","src":"3567:117:24"},{"nativeSrc":"3698:84:24","nodeType":"YulAssignment","src":"3698:84:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3754:9:24","nodeType":"YulIdentifier","src":"3754:9:24"},{"name":"offset","nativeSrc":"3765:6:24","nodeType":"YulIdentifier","src":"3765:6:24"}],"functionName":{"name":"add","nativeSrc":"3750:3:24","nodeType":"YulIdentifier","src":"3750:3:24"},"nativeSrc":"3750:22:24","nodeType":"YulFunctionCall","src":"3750:22:24"},{"name":"dataEnd","nativeSrc":"3774:7:24","nodeType":"YulIdentifier","src":"3774:7:24"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nativeSrc":"3708:41:24","nodeType":"YulIdentifier","src":"3708:41:24"},"nativeSrc":"3708:74:24","nodeType":"YulFunctionCall","src":"3708:74:24"},"variableNames":[{"name":"value1","nativeSrc":"3698:6:24","nodeType":"YulIdentifier","src":"3698:6:24"}]}]},{"nativeSrc":"3802:127:24","nodeType":"YulBlock","src":"3802:127:24","statements":[{"nativeSrc":"3817:16:24","nodeType":"YulVariableDeclaration","src":"3817:16:24","value":{"kind":"number","nativeSrc":"3831:2:24","nodeType":"YulLiteral","src":"3831:2:24","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"3821:6:24","nodeType":"YulTypedName","src":"3821:6:24","type":""}]},{"nativeSrc":"3847:72:24","nodeType":"YulAssignment","src":"3847:72:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3891:9:24","nodeType":"YulIdentifier","src":"3891:9:24"},{"name":"offset","nativeSrc":"3902:6:24","nodeType":"YulIdentifier","src":"3902:6:24"}],"functionName":{"name":"add","nativeSrc":"3887:3:24","nodeType":"YulIdentifier","src":"3887:3:24"},"nativeSrc":"3887:22:24","nodeType":"YulFunctionCall","src":"3887:22:24"},{"name":"dataEnd","nativeSrc":"3911:7:24","nodeType":"YulIdentifier","src":"3911:7:24"}],"functionName":{"name":"abi_decode_t_uint8_fromMemory","nativeSrc":"3857:29:24","nodeType":"YulIdentifier","src":"3857:29:24"},"nativeSrc":"3857:62:24","nodeType":"YulFunctionCall","src":"3857:62:24"},"variableNames":[{"name":"value2","nativeSrc":"3847:6:24","nodeType":"YulIdentifier","src":"3847:6:24"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint8_fromMemory","nativeSrc":"2931:1005:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3014:9:24","nodeType":"YulTypedName","src":"3014:9:24","type":""},{"name":"dataEnd","nativeSrc":"3025:7:24","nodeType":"YulTypedName","src":"3025:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3037:6:24","nodeType":"YulTypedName","src":"3037:6:24","type":""},{"name":"value1","nativeSrc":"3045:6:24","nodeType":"YulTypedName","src":"3045:6:24","type":""},{"name":"value2","nativeSrc":"3053:6:24","nodeType":"YulTypedName","src":"3053:6:24","type":""}],"src":"2931:1005:24"},{"body":{"nativeSrc":"4001:40:24","nodeType":"YulBlock","src":"4001:40:24","statements":[{"nativeSrc":"4012:22:24","nodeType":"YulAssignment","src":"4012:22:24","value":{"arguments":[{"name":"value","nativeSrc":"4028:5:24","nodeType":"YulIdentifier","src":"4028:5:24"}],"functionName":{"name":"mload","nativeSrc":"4022:5:24","nodeType":"YulIdentifier","src":"4022:5:24"},"nativeSrc":"4022:12:24","nodeType":"YulFunctionCall","src":"4022:12:24"},"variableNames":[{"name":"length","nativeSrc":"4012:6:24","nodeType":"YulIdentifier","src":"4012:6:24"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"3942:99:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3984:5:24","nodeType":"YulTypedName","src":"3984:5:24","type":""}],"returnVariables":[{"name":"length","nativeSrc":"3994:6:24","nodeType":"YulTypedName","src":"3994:6:24","type":""}],"src":"3942:99:24"},{"body":{"nativeSrc":"4075:152:24","nodeType":"YulBlock","src":"4075:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4092:1:24","nodeType":"YulLiteral","src":"4092:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4095:77:24","nodeType":"YulLiteral","src":"4095:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"4085:6:24","nodeType":"YulIdentifier","src":"4085:6:24"},"nativeSrc":"4085:88:24","nodeType":"YulFunctionCall","src":"4085:88:24"},"nativeSrc":"4085:88:24","nodeType":"YulExpressionStatement","src":"4085:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4189:1:24","nodeType":"YulLiteral","src":"4189:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"4192:4:24","nodeType":"YulLiteral","src":"4192:4:24","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"4182:6:24","nodeType":"YulIdentifier","src":"4182:6:24"},"nativeSrc":"4182:15:24","nodeType":"YulFunctionCall","src":"4182:15:24"},"nativeSrc":"4182:15:24","nodeType":"YulExpressionStatement","src":"4182:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4213:1:24","nodeType":"YulLiteral","src":"4213:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4216:4:24","nodeType":"YulLiteral","src":"4216:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4206:6:24","nodeType":"YulIdentifier","src":"4206:6:24"},"nativeSrc":"4206:15:24","nodeType":"YulFunctionCall","src":"4206:15:24"},"nativeSrc":"4206:15:24","nodeType":"YulExpressionStatement","src":"4206:15:24"}]},"name":"panic_error_0x22","nativeSrc":"4047:180:24","nodeType":"YulFunctionDefinition","src":"4047:180:24"},{"body":{"nativeSrc":"4284:269:24","nodeType":"YulBlock","src":"4284:269:24","statements":[{"nativeSrc":"4294:22:24","nodeType":"YulAssignment","src":"4294:22:24","value":{"arguments":[{"name":"data","nativeSrc":"4308:4:24","nodeType":"YulIdentifier","src":"4308:4:24"},{"kind":"number","nativeSrc":"4314:1:24","nodeType":"YulLiteral","src":"4314:1:24","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"4304:3:24","nodeType":"YulIdentifier","src":"4304:3:24"},"nativeSrc":"4304:12:24","nodeType":"YulFunctionCall","src":"4304:12:24"},"variableNames":[{"name":"length","nativeSrc":"4294:6:24","nodeType":"YulIdentifier","src":"4294:6:24"}]},{"nativeSrc":"4325:38:24","nodeType":"YulVariableDeclaration","src":"4325:38:24","value":{"arguments":[{"name":"data","nativeSrc":"4355:4:24","nodeType":"YulIdentifier","src":"4355:4:24"},{"kind":"number","nativeSrc":"4361:1:24","nodeType":"YulLiteral","src":"4361:1:24","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"4351:3:24","nodeType":"YulIdentifier","src":"4351:3:24"},"nativeSrc":"4351:12:24","nodeType":"YulFunctionCall","src":"4351:12:24"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"4329:18:24","nodeType":"YulTypedName","src":"4329:18:24","type":""}]},{"body":{"nativeSrc":"4402:51:24","nodeType":"YulBlock","src":"4402:51:24","statements":[{"nativeSrc":"4416:27:24","nodeType":"YulAssignment","src":"4416:27:24","value":{"arguments":[{"name":"length","nativeSrc":"4430:6:24","nodeType":"YulIdentifier","src":"4430:6:24"},{"kind":"number","nativeSrc":"4438:4:24","nodeType":"YulLiteral","src":"4438:4:24","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"4426:3:24","nodeType":"YulIdentifier","src":"4426:3:24"},"nativeSrc":"4426:17:24","nodeType":"YulFunctionCall","src":"4426:17:24"},"variableNames":[{"name":"length","nativeSrc":"4416:6:24","nodeType":"YulIdentifier","src":"4416:6:24"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4382:18:24","nodeType":"YulIdentifier","src":"4382:18:24"}],"functionName":{"name":"iszero","nativeSrc":"4375:6:24","nodeType":"YulIdentifier","src":"4375:6:24"},"nativeSrc":"4375:26:24","nodeType":"YulFunctionCall","src":"4375:26:24"},"nativeSrc":"4372:81:24","nodeType":"YulIf","src":"4372:81:24"},{"body":{"nativeSrc":"4505:42:24","nodeType":"YulBlock","src":"4505:42:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nativeSrc":"4519:16:24","nodeType":"YulIdentifier","src":"4519:16:24"},"nativeSrc":"4519:18:24","nodeType":"YulFunctionCall","src":"4519:18:24"},"nativeSrc":"4519:18:24","nodeType":"YulExpressionStatement","src":"4519:18:24"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4469:18:24","nodeType":"YulIdentifier","src":"4469:18:24"},{"arguments":[{"name":"length","nativeSrc":"4492:6:24","nodeType":"YulIdentifier","src":"4492:6:24"},{"kind":"number","nativeSrc":"4500:2:24","nodeType":"YulLiteral","src":"4500:2:24","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4489:2:24","nodeType":"YulIdentifier","src":"4489:2:24"},"nativeSrc":"4489:14:24","nodeType":"YulFunctionCall","src":"4489:14:24"}],"functionName":{"name":"eq","nativeSrc":"4466:2:24","nodeType":"YulIdentifier","src":"4466:2:24"},"nativeSrc":"4466:38:24","nodeType":"YulFunctionCall","src":"4466:38:24"},"nativeSrc":"4463:84:24","nodeType":"YulIf","src":"4463:84:24"}]},"name":"extract_byte_array_length","nativeSrc":"4233:320:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4268:4:24","nodeType":"YulTypedName","src":"4268:4:24","type":""}],"returnVariables":[{"name":"length","nativeSrc":"4277:6:24","nodeType":"YulTypedName","src":"4277:6:24","type":""}],"src":"4233:320:24"},{"body":{"nativeSrc":"4613:87:24","nodeType":"YulBlock","src":"4613:87:24","statements":[{"nativeSrc":"4623:11:24","nodeType":"YulAssignment","src":"4623:11:24","value":{"name":"ptr","nativeSrc":"4631:3:24","nodeType":"YulIdentifier","src":"4631:3:24"},"variableNames":[{"name":"data","nativeSrc":"4623:4:24","nodeType":"YulIdentifier","src":"4623:4:24"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4651:1:24","nodeType":"YulLiteral","src":"4651:1:24","type":"","value":"0"},{"name":"ptr","nativeSrc":"4654:3:24","nodeType":"YulIdentifier","src":"4654:3:24"}],"functionName":{"name":"mstore","nativeSrc":"4644:6:24","nodeType":"YulIdentifier","src":"4644:6:24"},"nativeSrc":"4644:14:24","nodeType":"YulFunctionCall","src":"4644:14:24"},"nativeSrc":"4644:14:24","nodeType":"YulExpressionStatement","src":"4644:14:24"},{"nativeSrc":"4667:26:24","nodeType":"YulAssignment","src":"4667:26:24","value":{"arguments":[{"kind":"number","nativeSrc":"4685:1:24","nodeType":"YulLiteral","src":"4685:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4688:4:24","nodeType":"YulLiteral","src":"4688:4:24","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"4675:9:24","nodeType":"YulIdentifier","src":"4675:9:24"},"nativeSrc":"4675:18:24","nodeType":"YulFunctionCall","src":"4675:18:24"},"variableNames":[{"name":"data","nativeSrc":"4667:4:24","nodeType":"YulIdentifier","src":"4667:4:24"}]}]},"name":"array_dataslot_t_string_storage","nativeSrc":"4559:141:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"4600:3:24","nodeType":"YulTypedName","src":"4600:3:24","type":""}],"returnVariables":[{"name":"data","nativeSrc":"4608:4:24","nodeType":"YulTypedName","src":"4608:4:24","type":""}],"src":"4559:141:24"},{"body":{"nativeSrc":"4750:49:24","nodeType":"YulBlock","src":"4750:49:24","statements":[{"nativeSrc":"4760:33:24","nodeType":"YulAssignment","src":"4760:33:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4778:5:24","nodeType":"YulIdentifier","src":"4778:5:24"},{"kind":"number","nativeSrc":"4785:2:24","nodeType":"YulLiteral","src":"4785:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4774:3:24","nodeType":"YulIdentifier","src":"4774:3:24"},"nativeSrc":"4774:14:24","nodeType":"YulFunctionCall","src":"4774:14:24"},{"kind":"number","nativeSrc":"4790:2:24","nodeType":"YulLiteral","src":"4790:2:24","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"4770:3:24","nodeType":"YulIdentifier","src":"4770:3:24"},"nativeSrc":"4770:23:24","nodeType":"YulFunctionCall","src":"4770:23:24"},"variableNames":[{"name":"result","nativeSrc":"4760:6:24","nodeType":"YulIdentifier","src":"4760:6:24"}]}]},"name":"divide_by_32_ceil","nativeSrc":"4706:93:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4733:5:24","nodeType":"YulTypedName","src":"4733:5:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"4743:6:24","nodeType":"YulTypedName","src":"4743:6:24","type":""}],"src":"4706:93:24"},{"body":{"nativeSrc":"4858:54:24","nodeType":"YulBlock","src":"4858:54:24","statements":[{"nativeSrc":"4868:37:24","nodeType":"YulAssignment","src":"4868:37:24","value":{"arguments":[{"name":"bits","nativeSrc":"4893:4:24","nodeType":"YulIdentifier","src":"4893:4:24"},{"name":"value","nativeSrc":"4899:5:24","nodeType":"YulIdentifier","src":"4899:5:24"}],"functionName":{"name":"shl","nativeSrc":"4889:3:24","nodeType":"YulIdentifier","src":"4889:3:24"},"nativeSrc":"4889:16:24","nodeType":"YulFunctionCall","src":"4889:16:24"},"variableNames":[{"name":"newValue","nativeSrc":"4868:8:24","nodeType":"YulIdentifier","src":"4868:8:24"}]}]},"name":"shift_left_dynamic","nativeSrc":"4805:107:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nativeSrc":"4833:4:24","nodeType":"YulTypedName","src":"4833:4:24","type":""},{"name":"value","nativeSrc":"4839:5:24","nodeType":"YulTypedName","src":"4839:5:24","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"4849:8:24","nodeType":"YulTypedName","src":"4849:8:24","type":""}],"src":"4805:107:24"},{"body":{"nativeSrc":"4994:317:24","nodeType":"YulBlock","src":"4994:317:24","statements":[{"nativeSrc":"5004:35:24","nodeType":"YulVariableDeclaration","src":"5004:35:24","value":{"arguments":[{"name":"shiftBytes","nativeSrc":"5025:10:24","nodeType":"YulIdentifier","src":"5025:10:24"},{"kind":"number","nativeSrc":"5037:1:24","nodeType":"YulLiteral","src":"5037:1:24","type":"","value":"8"}],"functionName":{"name":"mul","nativeSrc":"5021:3:24","nodeType":"YulIdentifier","src":"5021:3:24"},"nativeSrc":"5021:18:24","nodeType":"YulFunctionCall","src":"5021:18:24"},"variables":[{"name":"shiftBits","nativeSrc":"5008:9:24","nodeType":"YulTypedName","src":"5008:9:24","type":""}]},{"nativeSrc":"5048:109:24","nodeType":"YulVariableDeclaration","src":"5048:109:24","value":{"arguments":[{"name":"shiftBits","nativeSrc":"5079:9:24","nodeType":"YulIdentifier","src":"5079:9:24"},{"kind":"number","nativeSrc":"5090:66:24","nodeType":"YulLiteral","src":"5090:66:24","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"5060:18:24","nodeType":"YulIdentifier","src":"5060:18:24"},"nativeSrc":"5060:97:24","nodeType":"YulFunctionCall","src":"5060:97:24"},"variables":[{"name":"mask","nativeSrc":"5052:4:24","nodeType":"YulTypedName","src":"5052:4:24","type":""}]},{"nativeSrc":"5166:51:24","nodeType":"YulAssignment","src":"5166:51:24","value":{"arguments":[{"name":"shiftBits","nativeSrc":"5197:9:24","nodeType":"YulIdentifier","src":"5197:9:24"},{"name":"toInsert","nativeSrc":"5208:8:24","nodeType":"YulIdentifier","src":"5208:8:24"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"5178:18:24","nodeType":"YulIdentifier","src":"5178:18:24"},"nativeSrc":"5178:39:24","nodeType":"YulFunctionCall","src":"5178:39:24"},"variableNames":[{"name":"toInsert","nativeSrc":"5166:8:24","nodeType":"YulIdentifier","src":"5166:8:24"}]},{"nativeSrc":"5226:30:24","nodeType":"YulAssignment","src":"5226:30:24","value":{"arguments":[{"name":"value","nativeSrc":"5239:5:24","nodeType":"YulIdentifier","src":"5239:5:24"},{"arguments":[{"name":"mask","nativeSrc":"5250:4:24","nodeType":"YulIdentifier","src":"5250:4:24"}],"functionName":{"name":"not","nativeSrc":"5246:3:24","nodeType":"YulIdentifier","src":"5246:3:24"},"nativeSrc":"5246:9:24","nodeType":"YulFunctionCall","src":"5246:9:24"}],"functionName":{"name":"and","nativeSrc":"5235:3:24","nodeType":"YulIdentifier","src":"5235:3:24"},"nativeSrc":"5235:21:24","nodeType":"YulFunctionCall","src":"5235:21:24"},"variableNames":[{"name":"value","nativeSrc":"5226:5:24","nodeType":"YulIdentifier","src":"5226:5:24"}]},{"nativeSrc":"5265:40:24","nodeType":"YulAssignment","src":"5265:40:24","value":{"arguments":[{"name":"value","nativeSrc":"5278:5:24","nodeType":"YulIdentifier","src":"5278:5:24"},{"arguments":[{"name":"toInsert","nativeSrc":"5289:8:24","nodeType":"YulIdentifier","src":"5289:8:24"},{"name":"mask","nativeSrc":"5299:4:24","nodeType":"YulIdentifier","src":"5299:4:24"}],"functionName":{"name":"and","nativeSrc":"5285:3:24","nodeType":"YulIdentifier","src":"5285:3:24"},"nativeSrc":"5285:19:24","nodeType":"YulFunctionCall","src":"5285:19:24"}],"functionName":{"name":"or","nativeSrc":"5275:2:24","nodeType":"YulIdentifier","src":"5275:2:24"},"nativeSrc":"5275:30:24","nodeType":"YulFunctionCall","src":"5275:30:24"},"variableNames":[{"name":"result","nativeSrc":"5265:6:24","nodeType":"YulIdentifier","src":"5265:6:24"}]}]},"name":"update_byte_slice_dynamic32","nativeSrc":"4918:393:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4955:5:24","nodeType":"YulTypedName","src":"4955:5:24","type":""},{"name":"shiftBytes","nativeSrc":"4962:10:24","nodeType":"YulTypedName","src":"4962:10:24","type":""},{"name":"toInsert","nativeSrc":"4974:8:24","nodeType":"YulTypedName","src":"4974:8:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"4987:6:24","nodeType":"YulTypedName","src":"4987:6:24","type":""}],"src":"4918:393:24"},{"body":{"nativeSrc":"5362:32:24","nodeType":"YulBlock","src":"5362:32:24","statements":[{"nativeSrc":"5372:16:24","nodeType":"YulAssignment","src":"5372:16:24","value":{"name":"value","nativeSrc":"5383:5:24","nodeType":"YulIdentifier","src":"5383:5:24"},"variableNames":[{"name":"cleaned","nativeSrc":"5372:7:24","nodeType":"YulIdentifier","src":"5372:7:24"}]}]},"name":"cleanup_t_uint256","nativeSrc":"5317:77:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5344:5:24","nodeType":"YulTypedName","src":"5344:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"5354:7:24","nodeType":"YulTypedName","src":"5354:7:24","type":""}],"src":"5317:77:24"},{"body":{"nativeSrc":"5432:28:24","nodeType":"YulBlock","src":"5432:28:24","statements":[{"nativeSrc":"5442:12:24","nodeType":"YulAssignment","src":"5442:12:24","value":{"name":"value","nativeSrc":"5449:5:24","nodeType":"YulIdentifier","src":"5449:5:24"},"variableNames":[{"name":"ret","nativeSrc":"5442:3:24","nodeType":"YulIdentifier","src":"5442:3:24"}]}]},"name":"identity","nativeSrc":"5400:60:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5418:5:24","nodeType":"YulTypedName","src":"5418:5:24","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"5428:3:24","nodeType":"YulTypedName","src":"5428:3:24","type":""}],"src":"5400:60:24"},{"body":{"nativeSrc":"5526:82:24","nodeType":"YulBlock","src":"5526:82:24","statements":[{"nativeSrc":"5536:66:24","nodeType":"YulAssignment","src":"5536:66:24","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5594:5:24","nodeType":"YulIdentifier","src":"5594:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"5576:17:24","nodeType":"YulIdentifier","src":"5576:17:24"},"nativeSrc":"5576:24:24","nodeType":"YulFunctionCall","src":"5576:24:24"}],"functionName":{"name":"identity","nativeSrc":"5567:8:24","nodeType":"YulIdentifier","src":"5567:8:24"},"nativeSrc":"5567:34:24","nodeType":"YulFunctionCall","src":"5567:34:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"5549:17:24","nodeType":"YulIdentifier","src":"5549:17:24"},"nativeSrc":"5549:53:24","nodeType":"YulFunctionCall","src":"5549:53:24"},"variableNames":[{"name":"converted","nativeSrc":"5536:9:24","nodeType":"YulIdentifier","src":"5536:9:24"}]}]},"name":"convert_t_uint256_to_t_uint256","nativeSrc":"5466:142:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5506:5:24","nodeType":"YulTypedName","src":"5506:5:24","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"5516:9:24","nodeType":"YulTypedName","src":"5516:9:24","type":""}],"src":"5466:142:24"},{"body":{"nativeSrc":"5661:28:24","nodeType":"YulBlock","src":"5661:28:24","statements":[{"nativeSrc":"5671:12:24","nodeType":"YulAssignment","src":"5671:12:24","value":{"name":"value","nativeSrc":"5678:5:24","nodeType":"YulIdentifier","src":"5678:5:24"},"variableNames":[{"name":"ret","nativeSrc":"5671:3:24","nodeType":"YulIdentifier","src":"5671:3:24"}]}]},"name":"prepare_store_t_uint256","nativeSrc":"5614:75:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5647:5:24","nodeType":"YulTypedName","src":"5647:5:24","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"5657:3:24","nodeType":"YulTypedName","src":"5657:3:24","type":""}],"src":"5614:75:24"},{"body":{"nativeSrc":"5771:193:24","nodeType":"YulBlock","src":"5771:193:24","statements":[{"nativeSrc":"5781:63:24","nodeType":"YulVariableDeclaration","src":"5781:63:24","value":{"arguments":[{"name":"value_0","nativeSrc":"5836:7:24","nodeType":"YulIdentifier","src":"5836:7:24"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nativeSrc":"5805:30:24","nodeType":"YulIdentifier","src":"5805:30:24"},"nativeSrc":"5805:39:24","nodeType":"YulFunctionCall","src":"5805:39:24"},"variables":[{"name":"convertedValue_0","nativeSrc":"5785:16:24","nodeType":"YulTypedName","src":"5785:16:24","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5860:4:24","nodeType":"YulIdentifier","src":"5860:4:24"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"5900:4:24","nodeType":"YulIdentifier","src":"5900:4:24"}],"functionName":{"name":"sload","nativeSrc":"5894:5:24","nodeType":"YulIdentifier","src":"5894:5:24"},"nativeSrc":"5894:11:24","nodeType":"YulFunctionCall","src":"5894:11:24"},{"name":"offset","nativeSrc":"5907:6:24","nodeType":"YulIdentifier","src":"5907:6:24"},{"arguments":[{"name":"convertedValue_0","nativeSrc":"5939:16:24","nodeType":"YulIdentifier","src":"5939:16:24"}],"functionName":{"name":"prepare_store_t_uint256","nativeSrc":"5915:23:24","nodeType":"YulIdentifier","src":"5915:23:24"},"nativeSrc":"5915:41:24","nodeType":"YulFunctionCall","src":"5915:41:24"}],"functionName":{"name":"update_byte_slice_dynamic32","nativeSrc":"5866:27:24","nodeType":"YulIdentifier","src":"5866:27:24"},"nativeSrc":"5866:91:24","nodeType":"YulFunctionCall","src":"5866:91:24"}],"functionName":{"name":"sstore","nativeSrc":"5853:6:24","nodeType":"YulIdentifier","src":"5853:6:24"},"nativeSrc":"5853:105:24","nodeType":"YulFunctionCall","src":"5853:105:24"},"nativeSrc":"5853:105:24","nodeType":"YulExpressionStatement","src":"5853:105:24"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nativeSrc":"5695:269:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"5748:4:24","nodeType":"YulTypedName","src":"5748:4:24","type":""},{"name":"offset","nativeSrc":"5754:6:24","nodeType":"YulTypedName","src":"5754:6:24","type":""},{"name":"value_0","nativeSrc":"5762:7:24","nodeType":"YulTypedName","src":"5762:7:24","type":""}],"src":"5695:269:24"},{"body":{"nativeSrc":"6019:24:24","nodeType":"YulBlock","src":"6019:24:24","statements":[{"nativeSrc":"6029:8:24","nodeType":"YulAssignment","src":"6029:8:24","value":{"kind":"number","nativeSrc":"6036:1:24","nodeType":"YulLiteral","src":"6036:1:24","type":"","value":"0"},"variableNames":[{"name":"ret","nativeSrc":"6029:3:24","nodeType":"YulIdentifier","src":"6029:3:24"}]}]},"name":"zero_value_for_split_t_uint256","nativeSrc":"5970:73:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nativeSrc":"6015:3:24","nodeType":"YulTypedName","src":"6015:3:24","type":""}],"src":"5970:73:24"},{"body":{"nativeSrc":"6102:136:24","nodeType":"YulBlock","src":"6102:136:24","statements":[{"nativeSrc":"6112:46:24","nodeType":"YulVariableDeclaration","src":"6112:46:24","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nativeSrc":"6126:30:24","nodeType":"YulIdentifier","src":"6126:30:24"},"nativeSrc":"6126:32:24","nodeType":"YulFunctionCall","src":"6126:32:24"},"variables":[{"name":"zero_0","nativeSrc":"6116:6:24","nodeType":"YulTypedName","src":"6116:6:24","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6211:4:24","nodeType":"YulIdentifier","src":"6211:4:24"},{"name":"offset","nativeSrc":"6217:6:24","nodeType":"YulIdentifier","src":"6217:6:24"},{"name":"zero_0","nativeSrc":"6225:6:24","nodeType":"YulIdentifier","src":"6225:6:24"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nativeSrc":"6167:43:24","nodeType":"YulIdentifier","src":"6167:43:24"},"nativeSrc":"6167:65:24","nodeType":"YulFunctionCall","src":"6167:65:24"},"nativeSrc":"6167:65:24","nodeType":"YulExpressionStatement","src":"6167:65:24"}]},"name":"storage_set_to_zero_t_uint256","nativeSrc":"6049:189:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"6088:4:24","nodeType":"YulTypedName","src":"6088:4:24","type":""},{"name":"offset","nativeSrc":"6094:6:24","nodeType":"YulTypedName","src":"6094:6:24","type":""}],"src":"6049:189:24"},{"body":{"nativeSrc":"6294:136:24","nodeType":"YulBlock","src":"6294:136:24","statements":[{"body":{"nativeSrc":"6361:63:24","nodeType":"YulBlock","src":"6361:63:24","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"6405:5:24","nodeType":"YulIdentifier","src":"6405:5:24"},{"kind":"number","nativeSrc":"6412:1:24","nodeType":"YulLiteral","src":"6412:1:24","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nativeSrc":"6375:29:24","nodeType":"YulIdentifier","src":"6375:29:24"},"nativeSrc":"6375:39:24","nodeType":"YulFunctionCall","src":"6375:39:24"},"nativeSrc":"6375:39:24","nodeType":"YulExpressionStatement","src":"6375:39:24"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"6314:5:24","nodeType":"YulIdentifier","src":"6314:5:24"},{"name":"end","nativeSrc":"6321:3:24","nodeType":"YulIdentifier","src":"6321:3:24"}],"functionName":{"name":"lt","nativeSrc":"6311:2:24","nodeType":"YulIdentifier","src":"6311:2:24"},"nativeSrc":"6311:14:24","nodeType":"YulFunctionCall","src":"6311:14:24"},"nativeSrc":"6304:120:24","nodeType":"YulForLoop","post":{"nativeSrc":"6326:26:24","nodeType":"YulBlock","src":"6326:26:24","statements":[{"nativeSrc":"6328:22:24","nodeType":"YulAssignment","src":"6328:22:24","value":{"arguments":[{"name":"start","nativeSrc":"6341:5:24","nodeType":"YulIdentifier","src":"6341:5:24"},{"kind":"number","nativeSrc":"6348:1:24","nodeType":"YulLiteral","src":"6348:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6337:3:24","nodeType":"YulIdentifier","src":"6337:3:24"},"nativeSrc":"6337:13:24","nodeType":"YulFunctionCall","src":"6337:13:24"},"variableNames":[{"name":"start","nativeSrc":"6328:5:24","nodeType":"YulIdentifier","src":"6328:5:24"}]}]},"pre":{"nativeSrc":"6308:2:24","nodeType":"YulBlock","src":"6308:2:24","statements":[]},"src":"6304:120:24"}]},"name":"clear_storage_range_t_bytes1","nativeSrc":"6244:186:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"6282:5:24","nodeType":"YulTypedName","src":"6282:5:24","type":""},{"name":"end","nativeSrc":"6289:3:24","nodeType":"YulTypedName","src":"6289:3:24","type":""}],"src":"6244:186:24"},{"body":{"nativeSrc":"6515:464:24","nodeType":"YulBlock","src":"6515:464:24","statements":[{"body":{"nativeSrc":"6541:431:24","nodeType":"YulBlock","src":"6541:431:24","statements":[{"nativeSrc":"6555:54:24","nodeType":"YulVariableDeclaration","src":"6555:54:24","value":{"arguments":[{"name":"array","nativeSrc":"6603:5:24","nodeType":"YulIdentifier","src":"6603:5:24"}],"functionName":{"name":"array_dataslot_t_string_storage","nativeSrc":"6571:31:24","nodeType":"YulIdentifier","src":"6571:31:24"},"nativeSrc":"6571:38:24","nodeType":"YulFunctionCall","src":"6571:38:24"},"variables":[{"name":"dataArea","nativeSrc":"6559:8:24","nodeType":"YulTypedName","src":"6559:8:24","type":""}]},{"nativeSrc":"6622:63:24","nodeType":"YulVariableDeclaration","src":"6622:63:24","value":{"arguments":[{"name":"dataArea","nativeSrc":"6645:8:24","nodeType":"YulIdentifier","src":"6645:8:24"},{"arguments":[{"name":"startIndex","nativeSrc":"6673:10:24","nodeType":"YulIdentifier","src":"6673:10:24"}],"functionName":{"name":"divide_by_32_ceil","nativeSrc":"6655:17:24","nodeType":"YulIdentifier","src":"6655:17:24"},"nativeSrc":"6655:29:24","nodeType":"YulFunctionCall","src":"6655:29:24"}],"functionName":{"name":"add","nativeSrc":"6641:3:24","nodeType":"YulIdentifier","src":"6641:3:24"},"nativeSrc":"6641:44:24","nodeType":"YulFunctionCall","src":"6641:44:24"},"variables":[{"name":"deleteStart","nativeSrc":"6626:11:24","nodeType":"YulTypedName","src":"6626:11:24","type":""}]},{"body":{"nativeSrc":"6842:27:24","nodeType":"YulBlock","src":"6842:27:24","statements":[{"nativeSrc":"6844:23:24","nodeType":"YulAssignment","src":"6844:23:24","value":{"name":"dataArea","nativeSrc":"6859:8:24","nodeType":"YulIdentifier","src":"6859:8:24"},"variableNames":[{"name":"deleteStart","nativeSrc":"6844:11:24","nodeType":"YulIdentifier","src":"6844:11:24"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"6826:10:24","nodeType":"YulIdentifier","src":"6826:10:24"},{"kind":"number","nativeSrc":"6838:2:24","nodeType":"YulLiteral","src":"6838:2:24","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"6823:2:24","nodeType":"YulIdentifier","src":"6823:2:24"},"nativeSrc":"6823:18:24","nodeType":"YulFunctionCall","src":"6823:18:24"},"nativeSrc":"6820:49:24","nodeType":"YulIf","src":"6820:49:24"},{"expression":{"arguments":[{"name":"deleteStart","nativeSrc":"6911:11:24","nodeType":"YulIdentifier","src":"6911:11:24"},{"arguments":[{"name":"dataArea","nativeSrc":"6928:8:24","nodeType":"YulIdentifier","src":"6928:8:24"},{"arguments":[{"name":"len","nativeSrc":"6956:3:24","nodeType":"YulIdentifier","src":"6956:3:24"}],"functionName":{"name":"divide_by_32_ceil","nativeSrc":"6938:17:24","nodeType":"YulIdentifier","src":"6938:17:24"},"nativeSrc":"6938:22:24","nodeType":"YulFunctionCall","src":"6938:22:24"}],"functionName":{"name":"add","nativeSrc":"6924:3:24","nodeType":"YulIdentifier","src":"6924:3:24"},"nativeSrc":"6924:37:24","nodeType":"YulFunctionCall","src":"6924:37:24"}],"functionName":{"name":"clear_storage_range_t_bytes1","nativeSrc":"6882:28:24","nodeType":"YulIdentifier","src":"6882:28:24"},"nativeSrc":"6882:80:24","nodeType":"YulFunctionCall","src":"6882:80:24"},"nativeSrc":"6882:80:24","nodeType":"YulExpressionStatement","src":"6882:80:24"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"6532:3:24","nodeType":"YulIdentifier","src":"6532:3:24"},{"kind":"number","nativeSrc":"6537:2:24","nodeType":"YulLiteral","src":"6537:2:24","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"6529:2:24","nodeType":"YulIdentifier","src":"6529:2:24"},"nativeSrc":"6529:11:24","nodeType":"YulFunctionCall","src":"6529:11:24"},"nativeSrc":"6526:446:24","nodeType":"YulIf","src":"6526:446:24"}]},"name":"clean_up_bytearray_end_slots_t_string_storage","nativeSrc":"6436:543:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"6491:5:24","nodeType":"YulTypedName","src":"6491:5:24","type":""},{"name":"len","nativeSrc":"6498:3:24","nodeType":"YulTypedName","src":"6498:3:24","type":""},{"name":"startIndex","nativeSrc":"6503:10:24","nodeType":"YulTypedName","src":"6503:10:24","type":""}],"src":"6436:543:24"},{"body":{"nativeSrc":"7048:54:24","nodeType":"YulBlock","src":"7048:54:24","statements":[{"nativeSrc":"7058:37:24","nodeType":"YulAssignment","src":"7058:37:24","value":{"arguments":[{"name":"bits","nativeSrc":"7083:4:24","nodeType":"YulIdentifier","src":"7083:4:24"},{"name":"value","nativeSrc":"7089:5:24","nodeType":"YulIdentifier","src":"7089:5:24"}],"functionName":{"name":"shr","nativeSrc":"7079:3:24","nodeType":"YulIdentifier","src":"7079:3:24"},"nativeSrc":"7079:16:24","nodeType":"YulFunctionCall","src":"7079:16:24"},"variableNames":[{"name":"newValue","nativeSrc":"7058:8:24","nodeType":"YulIdentifier","src":"7058:8:24"}]}]},"name":"shift_right_unsigned_dynamic","nativeSrc":"6985:117:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nativeSrc":"7023:4:24","nodeType":"YulTypedName","src":"7023:4:24","type":""},{"name":"value","nativeSrc":"7029:5:24","nodeType":"YulTypedName","src":"7029:5:24","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"7039:8:24","nodeType":"YulTypedName","src":"7039:8:24","type":""}],"src":"6985:117:24"},{"body":{"nativeSrc":"7159:118:24","nodeType":"YulBlock","src":"7159:118:24","statements":[{"nativeSrc":"7169:68:24","nodeType":"YulVariableDeclaration","src":"7169:68:24","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7218:1:24","nodeType":"YulLiteral","src":"7218:1:24","type":"","value":"8"},{"name":"bytes","nativeSrc":"7221:5:24","nodeType":"YulIdentifier","src":"7221:5:24"}],"functionName":{"name":"mul","nativeSrc":"7214:3:24","nodeType":"YulIdentifier","src":"7214:3:24"},"nativeSrc":"7214:13:24","nodeType":"YulFunctionCall","src":"7214:13:24"},{"arguments":[{"kind":"number","nativeSrc":"7233:1:24","nodeType":"YulLiteral","src":"7233:1:24","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7229:3:24","nodeType":"YulIdentifier","src":"7229:3:24"},"nativeSrc":"7229:6:24","nodeType":"YulFunctionCall","src":"7229:6:24"}],"functionName":{"name":"shift_right_unsigned_dynamic","nativeSrc":"7185:28:24","nodeType":"YulIdentifier","src":"7185:28:24"},"nativeSrc":"7185:51:24","nodeType":"YulFunctionCall","src":"7185:51:24"}],"functionName":{"name":"not","nativeSrc":"7181:3:24","nodeType":"YulIdentifier","src":"7181:3:24"},"nativeSrc":"7181:56:24","nodeType":"YulFunctionCall","src":"7181:56:24"},"variables":[{"name":"mask","nativeSrc":"7173:4:24","nodeType":"YulTypedName","src":"7173:4:24","type":""}]},{"nativeSrc":"7246:25:24","nodeType":"YulAssignment","src":"7246:25:24","value":{"arguments":[{"name":"data","nativeSrc":"7260:4:24","nodeType":"YulIdentifier","src":"7260:4:24"},{"name":"mask","nativeSrc":"7266:4:24","nodeType":"YulIdentifier","src":"7266:4:24"}],"functionName":{"name":"and","nativeSrc":"7256:3:24","nodeType":"YulIdentifier","src":"7256:3:24"},"nativeSrc":"7256:15:24","nodeType":"YulFunctionCall","src":"7256:15:24"},"variableNames":[{"name":"result","nativeSrc":"7246:6:24","nodeType":"YulIdentifier","src":"7246:6:24"}]}]},"name":"mask_bytes_dynamic","nativeSrc":"7108:169:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"7136:4:24","nodeType":"YulTypedName","src":"7136:4:24","type":""},{"name":"bytes","nativeSrc":"7142:5:24","nodeType":"YulTypedName","src":"7142:5:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"7152:6:24","nodeType":"YulTypedName","src":"7152:6:24","type":""}],"src":"7108:169:24"},{"body":{"nativeSrc":"7363:214:24","nodeType":"YulBlock","src":"7363:214:24","statements":[{"nativeSrc":"7496:37:24","nodeType":"YulAssignment","src":"7496:37:24","value":{"arguments":[{"name":"data","nativeSrc":"7523:4:24","nodeType":"YulIdentifier","src":"7523:4:24"},{"name":"len","nativeSrc":"7529:3:24","nodeType":"YulIdentifier","src":"7529:3:24"}],"functionName":{"name":"mask_bytes_dynamic","nativeSrc":"7504:18:24","nodeType":"YulIdentifier","src":"7504:18:24"},"nativeSrc":"7504:29:24","nodeType":"YulFunctionCall","src":"7504:29:24"},"variableNames":[{"name":"data","nativeSrc":"7496:4:24","nodeType":"YulIdentifier","src":"7496:4:24"}]},{"nativeSrc":"7542:29:24","nodeType":"YulAssignment","src":"7542:29:24","value":{"arguments":[{"name":"data","nativeSrc":"7553:4:24","nodeType":"YulIdentifier","src":"7553:4:24"},{"arguments":[{"kind":"number","nativeSrc":"7563:1:24","nodeType":"YulLiteral","src":"7563:1:24","type":"","value":"2"},{"name":"len","nativeSrc":"7566:3:24","nodeType":"YulIdentifier","src":"7566:3:24"}],"functionName":{"name":"mul","nativeSrc":"7559:3:24","nodeType":"YulIdentifier","src":"7559:3:24"},"nativeSrc":"7559:11:24","nodeType":"YulFunctionCall","src":"7559:11:24"}],"functionName":{"name":"or","nativeSrc":"7550:2:24","nodeType":"YulIdentifier","src":"7550:2:24"},"nativeSrc":"7550:21:24","nodeType":"YulFunctionCall","src":"7550:21:24"},"variableNames":[{"name":"used","nativeSrc":"7542:4:24","nodeType":"YulIdentifier","src":"7542:4:24"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"7282:295:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"7344:4:24","nodeType":"YulTypedName","src":"7344:4:24","type":""},{"name":"len","nativeSrc":"7350:3:24","nodeType":"YulTypedName","src":"7350:3:24","type":""}],"returnVariables":[{"name":"used","nativeSrc":"7358:4:24","nodeType":"YulTypedName","src":"7358:4:24","type":""}],"src":"7282:295:24"},{"body":{"nativeSrc":"7674:1303:24","nodeType":"YulBlock","src":"7674:1303:24","statements":[{"nativeSrc":"7685:51:24","nodeType":"YulVariableDeclaration","src":"7685:51:24","value":{"arguments":[{"name":"src","nativeSrc":"7732:3:24","nodeType":"YulIdentifier","src":"7732:3:24"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"7699:32:24","nodeType":"YulIdentifier","src":"7699:32:24"},"nativeSrc":"7699:37:24","nodeType":"YulFunctionCall","src":"7699:37:24"},"variables":[{"name":"newLen","nativeSrc":"7689:6:24","nodeType":"YulTypedName","src":"7689:6:24","type":""}]},{"body":{"nativeSrc":"7821:22:24","nodeType":"YulBlock","src":"7821:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"7823:16:24","nodeType":"YulIdentifier","src":"7823:16:24"},"nativeSrc":"7823:18:24","nodeType":"YulFunctionCall","src":"7823:18:24"},"nativeSrc":"7823:18:24","nodeType":"YulExpressionStatement","src":"7823:18:24"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"7793:6:24","nodeType":"YulIdentifier","src":"7793:6:24"},{"kind":"number","nativeSrc":"7801:18:24","nodeType":"YulLiteral","src":"7801:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7790:2:24","nodeType":"YulIdentifier","src":"7790:2:24"},"nativeSrc":"7790:30:24","nodeType":"YulFunctionCall","src":"7790:30:24"},"nativeSrc":"7787:56:24","nodeType":"YulIf","src":"7787:56:24"},{"nativeSrc":"7853:52:24","nodeType":"YulVariableDeclaration","src":"7853:52:24","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"7899:4:24","nodeType":"YulIdentifier","src":"7899:4:24"}],"functionName":{"name":"sload","nativeSrc":"7893:5:24","nodeType":"YulIdentifier","src":"7893:5:24"},"nativeSrc":"7893:11:24","nodeType":"YulFunctionCall","src":"7893:11:24"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"7867:25:24","nodeType":"YulIdentifier","src":"7867:25:24"},"nativeSrc":"7867:38:24","nodeType":"YulFunctionCall","src":"7867:38:24"},"variables":[{"name":"oldLen","nativeSrc":"7857:6:24","nodeType":"YulTypedName","src":"7857:6:24","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"7998:4:24","nodeType":"YulIdentifier","src":"7998:4:24"},{"name":"oldLen","nativeSrc":"8004:6:24","nodeType":"YulIdentifier","src":"8004:6:24"},{"name":"newLen","nativeSrc":"8012:6:24","nodeType":"YulIdentifier","src":"8012:6:24"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_string_storage","nativeSrc":"7952:45:24","nodeType":"YulIdentifier","src":"7952:45:24"},"nativeSrc":"7952:67:24","nodeType":"YulFunctionCall","src":"7952:67:24"},"nativeSrc":"7952:67:24","nodeType":"YulExpressionStatement","src":"7952:67:24"},{"nativeSrc":"8029:18:24","nodeType":"YulVariableDeclaration","src":"8029:18:24","value":{"kind":"number","nativeSrc":"8046:1:24","nodeType":"YulLiteral","src":"8046:1:24","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"8033:9:24","nodeType":"YulTypedName","src":"8033:9:24","type":""}]},{"nativeSrc":"8057:17:24","nodeType":"YulAssignment","src":"8057:17:24","value":{"kind":"number","nativeSrc":"8070:4:24","nodeType":"YulLiteral","src":"8070:4:24","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"8057:9:24","nodeType":"YulIdentifier","src":"8057:9:24"}]},{"cases":[{"body":{"nativeSrc":"8121:611:24","nodeType":"YulBlock","src":"8121:611:24","statements":[{"nativeSrc":"8135:37:24","nodeType":"YulVariableDeclaration","src":"8135:37:24","value":{"arguments":[{"name":"newLen","nativeSrc":"8154:6:24","nodeType":"YulIdentifier","src":"8154:6:24"},{"arguments":[{"kind":"number","nativeSrc":"8166:4:24","nodeType":"YulLiteral","src":"8166:4:24","type":"","value":"0x1f"}],"functionName":{"name":"not","nativeSrc":"8162:3:24","nodeType":"YulIdentifier","src":"8162:3:24"},"nativeSrc":"8162:9:24","nodeType":"YulFunctionCall","src":"8162:9:24"}],"functionName":{"name":"and","nativeSrc":"8150:3:24","nodeType":"YulIdentifier","src":"8150:3:24"},"nativeSrc":"8150:22:24","nodeType":"YulFunctionCall","src":"8150:22:24"},"variables":[{"name":"loopEnd","nativeSrc":"8139:7:24","nodeType":"YulTypedName","src":"8139:7:24","type":""}]},{"nativeSrc":"8186:51:24","nodeType":"YulVariableDeclaration","src":"8186:51:24","value":{"arguments":[{"name":"slot","nativeSrc":"8232:4:24","nodeType":"YulIdentifier","src":"8232:4:24"}],"functionName":{"name":"array_dataslot_t_string_storage","nativeSrc":"8200:31:24","nodeType":"YulIdentifier","src":"8200:31:24"},"nativeSrc":"8200:37:24","nodeType":"YulFunctionCall","src":"8200:37:24"},"variables":[{"name":"dstPtr","nativeSrc":"8190:6:24","nodeType":"YulTypedName","src":"8190:6:24","type":""}]},{"nativeSrc":"8250:10:24","nodeType":"YulVariableDeclaration","src":"8250:10:24","value":{"kind":"number","nativeSrc":"8259:1:24","nodeType":"YulLiteral","src":"8259:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"8254:1:24","nodeType":"YulTypedName","src":"8254:1:24","type":""}]},{"body":{"nativeSrc":"8318:163:24","nodeType":"YulBlock","src":"8318:163:24","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"8343:6:24","nodeType":"YulIdentifier","src":"8343:6:24"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"8361:3:24","nodeType":"YulIdentifier","src":"8361:3:24"},{"name":"srcOffset","nativeSrc":"8366:9:24","nodeType":"YulIdentifier","src":"8366:9:24"}],"functionName":{"name":"add","nativeSrc":"8357:3:24","nodeType":"YulIdentifier","src":"8357:3:24"},"nativeSrc":"8357:19:24","nodeType":"YulFunctionCall","src":"8357:19:24"}],"functionName":{"name":"mload","nativeSrc":"8351:5:24","nodeType":"YulIdentifier","src":"8351:5:24"},"nativeSrc":"8351:26:24","nodeType":"YulFunctionCall","src":"8351:26:24"}],"functionName":{"name":"sstore","nativeSrc":"8336:6:24","nodeType":"YulIdentifier","src":"8336:6:24"},"nativeSrc":"8336:42:24","nodeType":"YulFunctionCall","src":"8336:42:24"},"nativeSrc":"8336:42:24","nodeType":"YulExpressionStatement","src":"8336:42:24"},{"nativeSrc":"8395:24:24","nodeType":"YulAssignment","src":"8395:24:24","value":{"arguments":[{"name":"dstPtr","nativeSrc":"8409:6:24","nodeType":"YulIdentifier","src":"8409:6:24"},{"kind":"number","nativeSrc":"8417:1:24","nodeType":"YulLiteral","src":"8417:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8405:3:24","nodeType":"YulIdentifier","src":"8405:3:24"},"nativeSrc":"8405:14:24","nodeType":"YulFunctionCall","src":"8405:14:24"},"variableNames":[{"name":"dstPtr","nativeSrc":"8395:6:24","nodeType":"YulIdentifier","src":"8395:6:24"}]},{"nativeSrc":"8436:31:24","nodeType":"YulAssignment","src":"8436:31:24","value":{"arguments":[{"name":"srcOffset","nativeSrc":"8453:9:24","nodeType":"YulIdentifier","src":"8453:9:24"},{"kind":"number","nativeSrc":"8464:2:24","nodeType":"YulLiteral","src":"8464:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8449:3:24","nodeType":"YulIdentifier","src":"8449:3:24"},"nativeSrc":"8449:18:24","nodeType":"YulFunctionCall","src":"8449:18:24"},"variableNames":[{"name":"srcOffset","nativeSrc":"8436:9:24","nodeType":"YulIdentifier","src":"8436:9:24"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"8284:1:24","nodeType":"YulIdentifier","src":"8284:1:24"},{"name":"loopEnd","nativeSrc":"8287:7:24","nodeType":"YulIdentifier","src":"8287:7:24"}],"functionName":{"name":"lt","nativeSrc":"8281:2:24","nodeType":"YulIdentifier","src":"8281:2:24"},"nativeSrc":"8281:14:24","nodeType":"YulFunctionCall","src":"8281:14:24"},"nativeSrc":"8273:208:24","nodeType":"YulForLoop","post":{"nativeSrc":"8296:21:24","nodeType":"YulBlock","src":"8296:21:24","statements":[{"nativeSrc":"8298:17:24","nodeType":"YulAssignment","src":"8298:17:24","value":{"arguments":[{"name":"i","nativeSrc":"8307:1:24","nodeType":"YulIdentifier","src":"8307:1:24"},{"kind":"number","nativeSrc":"8310:4:24","nodeType":"YulLiteral","src":"8310:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8303:3:24","nodeType":"YulIdentifier","src":"8303:3:24"},"nativeSrc":"8303:12:24","nodeType":"YulFunctionCall","src":"8303:12:24"},"variableNames":[{"name":"i","nativeSrc":"8298:1:24","nodeType":"YulIdentifier","src":"8298:1:24"}]}]},"pre":{"nativeSrc":"8277:3:24","nodeType":"YulBlock","src":"8277:3:24","statements":[]},"src":"8273:208:24"},{"body":{"nativeSrc":"8517:156:24","nodeType":"YulBlock","src":"8517:156:24","statements":[{"nativeSrc":"8535:43:24","nodeType":"YulVariableDeclaration","src":"8535:43:24","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"8562:3:24","nodeType":"YulIdentifier","src":"8562:3:24"},{"name":"srcOffset","nativeSrc":"8567:9:24","nodeType":"YulIdentifier","src":"8567:9:24"}],"functionName":{"name":"add","nativeSrc":"8558:3:24","nodeType":"YulIdentifier","src":"8558:3:24"},"nativeSrc":"8558:19:24","nodeType":"YulFunctionCall","src":"8558:19:24"}],"functionName":{"name":"mload","nativeSrc":"8552:5:24","nodeType":"YulIdentifier","src":"8552:5:24"},"nativeSrc":"8552:26:24","nodeType":"YulFunctionCall","src":"8552:26:24"},"variables":[{"name":"lastValue","nativeSrc":"8539:9:24","nodeType":"YulTypedName","src":"8539:9:24","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"8602:6:24","nodeType":"YulIdentifier","src":"8602:6:24"},{"arguments":[{"name":"lastValue","nativeSrc":"8629:9:24","nodeType":"YulIdentifier","src":"8629:9:24"},{"arguments":[{"name":"newLen","nativeSrc":"8644:6:24","nodeType":"YulIdentifier","src":"8644:6:24"},{"kind":"number","nativeSrc":"8652:4:24","nodeType":"YulLiteral","src":"8652:4:24","type":"","value":"0x1f"}],"functionName":{"name":"and","nativeSrc":"8640:3:24","nodeType":"YulIdentifier","src":"8640:3:24"},"nativeSrc":"8640:17:24","nodeType":"YulFunctionCall","src":"8640:17:24"}],"functionName":{"name":"mask_bytes_dynamic","nativeSrc":"8610:18:24","nodeType":"YulIdentifier","src":"8610:18:24"},"nativeSrc":"8610:48:24","nodeType":"YulFunctionCall","src":"8610:48:24"}],"functionName":{"name":"sstore","nativeSrc":"8595:6:24","nodeType":"YulIdentifier","src":"8595:6:24"},"nativeSrc":"8595:64:24","nodeType":"YulFunctionCall","src":"8595:64:24"},"nativeSrc":"8595:64:24","nodeType":"YulExpressionStatement","src":"8595:64:24"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"8500:7:24","nodeType":"YulIdentifier","src":"8500:7:24"},{"name":"newLen","nativeSrc":"8509:6:24","nodeType":"YulIdentifier","src":"8509:6:24"}],"functionName":{"name":"lt","nativeSrc":"8497:2:24","nodeType":"YulIdentifier","src":"8497:2:24"},"nativeSrc":"8497:19:24","nodeType":"YulFunctionCall","src":"8497:19:24"},"nativeSrc":"8494:179:24","nodeType":"YulIf","src":"8494:179:24"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"8693:4:24","nodeType":"YulIdentifier","src":"8693:4:24"},{"arguments":[{"arguments":[{"name":"newLen","nativeSrc":"8707:6:24","nodeType":"YulIdentifier","src":"8707:6:24"},{"kind":"number","nativeSrc":"8715:1:24","nodeType":"YulLiteral","src":"8715:1:24","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"8703:3:24","nodeType":"YulIdentifier","src":"8703:3:24"},"nativeSrc":"8703:14:24","nodeType":"YulFunctionCall","src":"8703:14:24"},{"kind":"number","nativeSrc":"8719:1:24","nodeType":"YulLiteral","src":"8719:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8699:3:24","nodeType":"YulIdentifier","src":"8699:3:24"},"nativeSrc":"8699:22:24","nodeType":"YulFunctionCall","src":"8699:22:24"}],"functionName":{"name":"sstore","nativeSrc":"8686:6:24","nodeType":"YulIdentifier","src":"8686:6:24"},"nativeSrc":"8686:36:24","nodeType":"YulFunctionCall","src":"8686:36:24"},"nativeSrc":"8686:36:24","nodeType":"YulExpressionStatement","src":"8686:36:24"}]},"nativeSrc":"8114:618:24","nodeType":"YulCase","src":"8114:618:24","value":{"kind":"number","nativeSrc":"8119:1:24","nodeType":"YulLiteral","src":"8119:1:24","type":"","value":"1"}},{"body":{"nativeSrc":"8749:222:24","nodeType":"YulBlock","src":"8749:222:24","statements":[{"nativeSrc":"8763:14:24","nodeType":"YulVariableDeclaration","src":"8763:14:24","value":{"kind":"number","nativeSrc":"8776:1:24","nodeType":"YulLiteral","src":"8776:1:24","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"8767:5:24","nodeType":"YulTypedName","src":"8767:5:24","type":""}]},{"body":{"nativeSrc":"8800:67:24","nodeType":"YulBlock","src":"8800:67:24","statements":[{"nativeSrc":"8818:35:24","nodeType":"YulAssignment","src":"8818:35:24","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"8837:3:24","nodeType":"YulIdentifier","src":"8837:3:24"},{"name":"srcOffset","nativeSrc":"8842:9:24","nodeType":"YulIdentifier","src":"8842:9:24"}],"functionName":{"name":"add","nativeSrc":"8833:3:24","nodeType":"YulIdentifier","src":"8833:3:24"},"nativeSrc":"8833:19:24","nodeType":"YulFunctionCall","src":"8833:19:24"}],"functionName":{"name":"mload","nativeSrc":"8827:5:24","nodeType":"YulIdentifier","src":"8827:5:24"},"nativeSrc":"8827:26:24","nodeType":"YulFunctionCall","src":"8827:26:24"},"variableNames":[{"name":"value","nativeSrc":"8818:5:24","nodeType":"YulIdentifier","src":"8818:5:24"}]}]},"condition":{"name":"newLen","nativeSrc":"8793:6:24","nodeType":"YulIdentifier","src":"8793:6:24"},"nativeSrc":"8790:77:24","nodeType":"YulIf","src":"8790:77:24"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"8887:4:24","nodeType":"YulIdentifier","src":"8887:4:24"},{"arguments":[{"name":"value","nativeSrc":"8946:5:24","nodeType":"YulIdentifier","src":"8946:5:24"},{"name":"newLen","nativeSrc":"8953:6:24","nodeType":"YulIdentifier","src":"8953:6:24"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"8893:52:24","nodeType":"YulIdentifier","src":"8893:52:24"},"nativeSrc":"8893:67:24","nodeType":"YulFunctionCall","src":"8893:67:24"}],"functionName":{"name":"sstore","nativeSrc":"8880:6:24","nodeType":"YulIdentifier","src":"8880:6:24"},"nativeSrc":"8880:81:24","nodeType":"YulFunctionCall","src":"8880:81:24"},"nativeSrc":"8880:81:24","nodeType":"YulExpressionStatement","src":"8880:81:24"}]},"nativeSrc":"8741:230:24","nodeType":"YulCase","src":"8741:230:24","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"8094:6:24","nodeType":"YulIdentifier","src":"8094:6:24"},{"kind":"number","nativeSrc":"8102:2:24","nodeType":"YulLiteral","src":"8102:2:24","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"8091:2:24","nodeType":"YulIdentifier","src":"8091:2:24"},"nativeSrc":"8091:14:24","nodeType":"YulFunctionCall","src":"8091:14:24"},"nativeSrc":"8084:887:24","nodeType":"YulSwitch","src":"8084:887:24"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"7582:1395:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"7663:4:24","nodeType":"YulTypedName","src":"7663:4:24","type":""},{"name":"src","nativeSrc":"7669:3:24","nodeType":"YulTypedName","src":"7669:3:24","type":""}],"src":"7582:1395:24"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n mcopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function validator_revert_t_uint8(value) {\n if iszero(eq(value, cleanup_t_uint8(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint8_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint8(value)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint8_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint8_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n}\n","id":24,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561000f575f80fd5b50604051611233380380611233833981810160405281019061003191906101f5565b825f908161003f919061048a565b50816001908161004f919061048a565b508060025f6101000a81548160ff021916908360ff160217905550505050610559565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100d18261008b565b810181811067ffffffffffffffff821117156100f0576100ef61009b565b5b80604052505050565b5f610102610072565b905061010e82826100c8565b919050565b5f67ffffffffffffffff82111561012d5761012c61009b565b5b6101368261008b565b9050602081019050919050565b8281835e5f83830152505050565b5f61016361015e84610113565b6100f9565b90508281526020810184848401111561017f5761017e610087565b5b61018a848285610143565b509392505050565b5f82601f8301126101a6576101a5610083565b5b81516101b6848260208601610151565b91505092915050565b5f60ff82169050919050565b6101d4816101bf565b81146101de575f80fd5b50565b5f815190506101ef816101cb565b92915050565b5f805f6060848603121561020c5761020b61007b565b5b5f84015167ffffffffffffffff8111156102295761022861007f565b5b61023586828701610192565b935050602084015167ffffffffffffffff8111156102565761025561007f565b5b61026286828701610192565b9250506040610273868287016101e1565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102cb57607f821691505b6020821081036102de576102dd610287565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610305565b61034a8683610305565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61038e61038961038484610362565b61036b565b610362565b9050919050565b5f819050919050565b6103a783610374565b6103bb6103b382610395565b848454610311565b825550505050565b5f90565b6103cf6103c3565b6103da81848461039e565b505050565b5b818110156103fd576103f25f826103c7565b6001810190506103e0565b5050565b601f82111561044257610413816102e4565b61041c846102f6565b8101602085101561042b578190505b61043f610437856102f6565b8301826103df565b50505b505050565b5f82821c905092915050565b5f6104625f1984600802610447565b1980831691505092915050565b5f61047a8383610453565b9150826002028217905092915050565b6104938261027d565b67ffffffffffffffff8111156104ac576104ab61009b565b5b6104b682546102b4565b6104c1828285610401565b5f60209050601f8311600181146104f2575f84156104e0578287015190505b6104ea858261046f565b865550610551565b601f198416610500866102e4565b5f5b8281101561052757848901518255600182019150602085019450602081019050610502565b868310156105445784890151610540601f891682610453565b8355505b6001600288020188555050505b505050505050565b610ccd806105665f395ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c806340c10f191161006457806340c10f191461013157806370a082311461014d57806395d89b411461017d578063a9059cbb1461019b578063dd62ed3e146101cb57610091565b806306fdde0314610095578063095ea7b3146100b357806323b872dd146100e3578063313ce56714610113575b5f80fd5b61009d6101fb565b6040516100aa9190610854565b60405180910390f35b6100cd60048036038101906100c89190610905565b610286565b6040516100da919061095d565b60405180910390f35b6100fd60048036038101906100f89190610976565b61030e565b60405161010a919061095d565b60405180910390f35b61011b610589565b60405161012891906109e1565b60405180910390f35b61014b60048036038101906101469190610905565b61059b565b005b610167600480360381019061016291906109fa565b6105f2565b6040516101749190610a34565b60405180910390f35b610185610607565b6040516101929190610854565b60405180910390f35b6101b560048036038101906101b09190610905565b610693565b6040516101c2919061095d565b60405180910390f35b6101e560048036038101906101e09190610a4d565b6107c4565b6040516101f29190610a34565b60405180910390f35b5f805461020790610ab8565b80601f016020809104026020016040519081016040528092919081815260200182805461023390610ab8565b801561027e5780601f106102555761010080835404028352916020019161027e565b820191905f5260205f20905b81548152906001019060200180831161026157829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001905092915050565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561038f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038690610b58565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044190610be6565b60405180910390fd5b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104969190610c31565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104e99190610c64565b925050819055508160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105779190610c31565b92505081905550600190509392505050565b60025f9054906101000a900460ff1681565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105e79190610c64565b925050819055505050565b6003602052805f5260405f205f915090505481565b6001805461061490610ab8565b80601f016020809104026020016040519081016040528092919081815260200182805461064090610ab8565b801561068b5780601f106106625761010080835404028352916020019161068b565b820191905f5260205f20905b81548152906001019060200180831161066e57829003601f168201915b505050505081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90610b58565b60405180910390fd5b8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107609190610c31565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107b39190610c64565b925050819055506001905092915050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610826826107e4565b61083081856107ee565b93506108408185602086016107fe565b6108498161080c565b840191505092915050565b5f6020820190508181035f83015261086c818461081c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108a182610878565b9050919050565b6108b181610897565b81146108bb575f80fd5b50565b5f813590506108cc816108a8565b92915050565b5f819050919050565b6108e4816108d2565b81146108ee575f80fd5b50565b5f813590506108ff816108db565b92915050565b5f806040838503121561091b5761091a610874565b5b5f610928858286016108be565b9250506020610939858286016108f1565b9150509250929050565b5f8115159050919050565b61095781610943565b82525050565b5f6020820190506109705f83018461094e565b92915050565b5f805f6060848603121561098d5761098c610874565b5b5f61099a868287016108be565b93505060206109ab868287016108be565b92505060406109bc868287016108f1565b9150509250925092565b5f60ff82169050919050565b6109db816109c6565b82525050565b5f6020820190506109f45f8301846109d2565b92915050565b5f60208284031215610a0f57610a0e610874565b5b5f610a1c848285016108be565b91505092915050565b610a2e816108d2565b82525050565b5f602082019050610a475f830184610a25565b92915050565b5f8060408385031215610a6357610a62610874565b5b5f610a70858286016108be565b9250506020610a81858286016108be565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610acf57607f821691505b602082108103610ae257610ae1610a8b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f610b426026836107ee565b9150610b4d82610ae8565b604082019050919050565b5f6020820190508181035f830152610b6f81610b36565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f610bd06028836107ee565b9150610bdb82610b76565b604082019050919050565b5f6020820190508181035f830152610bfd81610bc4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c3b826108d2565b9150610c46836108d2565b9250828203905081811115610c5e57610c5d610c04565b5b92915050565b5f610c6e826108d2565b9150610c79836108d2565b9250828201905080821115610c9157610c90610c04565b5b9291505056fea2646970667358221220d980f1b95d92986aca3cba704275c02bcc7167fe1ad3089b07ec23124b960dfd64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1233 CODESIZE SUB DUP1 PUSH2 0x1233 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x31 SWAP2 SWAP1 PUSH2 0x1F5 JUMP JUMPDEST DUP3 PUSH0 SWAP1 DUP2 PUSH2 0x3F SWAP2 SWAP1 PUSH2 0x48A JUMP JUMPDEST POP DUP2 PUSH1 0x1 SWAP1 DUP2 PUSH2 0x4F SWAP2 SWAP1 PUSH2 0x48A JUMP JUMPDEST POP DUP1 PUSH1 0x2 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP POP POP POP PUSH2 0x559 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD1 DUP3 PUSH2 0x8B JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xF0 JUMPI PUSH2 0xEF PUSH2 0x9B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x102 PUSH2 0x72 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E DUP3 DUP3 PUSH2 0xC8 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x12D JUMPI PUSH2 0x12C PUSH2 0x9B JUMP JUMPDEST JUMPDEST PUSH2 0x136 DUP3 PUSH2 0x8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x163 PUSH2 0x15E DUP5 PUSH2 0x113 JUMP JUMPDEST PUSH2 0xF9 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x17F JUMPI PUSH2 0x17E PUSH2 0x87 JUMP JUMPDEST JUMPDEST PUSH2 0x18A DUP5 DUP3 DUP6 PUSH2 0x143 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A6 JUMPI PUSH2 0x1A5 PUSH2 0x83 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x1B6 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x151 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1D4 DUP2 PUSH2 0x1BF JUMP JUMPDEST DUP2 EQ PUSH2 0x1DE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x1EF DUP2 PUSH2 0x1CB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x20C JUMPI PUSH2 0x20B PUSH2 0x7B JUMP JUMPDEST JUMPDEST PUSH0 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x229 JUMPI PUSH2 0x228 PUSH2 0x7F JUMP JUMPDEST JUMPDEST PUSH2 0x235 DUP7 DUP3 DUP8 ADD PUSH2 0x192 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x256 JUMPI PUSH2 0x255 PUSH2 0x7F JUMP JUMPDEST JUMPDEST PUSH2 0x262 DUP7 DUP3 DUP8 ADD PUSH2 0x192 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x273 DUP7 DUP3 DUP8 ADD PUSH2 0x1E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2CB JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2DE JUMPI PUSH2 0x2DD PUSH2 0x287 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH2 0x340 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x305 JUMP JUMPDEST PUSH2 0x34A DUP7 DUP4 PUSH2 0x305 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x38E PUSH2 0x389 PUSH2 0x384 DUP5 PUSH2 0x362 JUMP JUMPDEST PUSH2 0x36B JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A7 DUP4 PUSH2 0x374 JUMP JUMPDEST PUSH2 0x3BB PUSH2 0x3B3 DUP3 PUSH2 0x395 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x311 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3CF PUSH2 0x3C3 JUMP JUMPDEST PUSH2 0x3DA DUP2 DUP5 DUP5 PUSH2 0x39E JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3FD JUMPI PUSH2 0x3F2 PUSH0 DUP3 PUSH2 0x3C7 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x3E0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x442 JUMPI PUSH2 0x413 DUP2 PUSH2 0x2E4 JUMP JUMPDEST PUSH2 0x41C DUP5 PUSH2 0x2F6 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x42B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x43F PUSH2 0x437 DUP6 PUSH2 0x2F6 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x3DF JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x462 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x447 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x47A DUP4 DUP4 PUSH2 0x453 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x493 DUP3 PUSH2 0x27D JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4AC JUMPI PUSH2 0x4AB PUSH2 0x9B JUMP JUMPDEST JUMPDEST PUSH2 0x4B6 DUP3 SLOAD PUSH2 0x2B4 JUMP JUMPDEST PUSH2 0x4C1 DUP3 DUP3 DUP6 PUSH2 0x401 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4F2 JUMPI PUSH0 DUP5 ISZERO PUSH2 0x4E0 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x4EA DUP6 DUP3 PUSH2 0x46F JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x551 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x500 DUP7 PUSH2 0x2E4 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x527 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x502 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x544 JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x540 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x453 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCCD DUP1 PUSH2 0x566 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x91 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1CB JUMPI PUSH2 0x91 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x113 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x9D PUSH2 0x1FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x854 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x905 JUMP JUMPDEST PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDA SWAP2 SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10A SWAP2 SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x589 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x905 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x5F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x174 SWAP2 SWAP1 PUSH2 0xA34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x185 PUSH2 0x607 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x192 SWAP2 SWAP1 PUSH2 0x854 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B0 SWAP2 SWAP1 PUSH2 0x905 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C2 SWAP2 SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E0 SWAP2 SWAP1 PUSH2 0xA4D JUMP JUMPDEST PUSH2 0x7C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0xA34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x207 SWAP1 PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x233 SWAP1 PUSH2 0xAB8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x255 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x27E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x261 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x4 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x3 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD LT ISZERO PUSH2 0x38F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x386 SWAP1 PUSH2 0xB58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x4 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x441 SWAP1 PUSH2 0xBE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x496 SWAP2 SWAP1 PUSH2 0xC31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x4E9 SWAP2 SWAP1 PUSH2 0xC64 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x4 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x577 SWAP2 SWAP1 PUSH2 0xC31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x5E7 SWAP2 SWAP1 PUSH2 0xC64 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x614 SWAP1 PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x640 SWAP1 PUSH2 0xAB8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x68B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x662 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x68B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x66E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x3 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD LT ISZERO PUSH2 0x714 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x70B SWAP1 PUSH2 0xB58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x760 SWAP2 SWAP1 PUSH2 0xC31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x7B3 SWAP2 SWAP1 PUSH2 0xC64 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP2 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x826 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x830 DUP2 DUP6 PUSH2 0x7EE JUMP JUMPDEST SWAP4 POP PUSH2 0x840 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x849 DUP2 PUSH2 0x80C JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x86C DUP2 DUP5 PUSH2 0x81C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x8A1 DUP3 PUSH2 0x878 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8B1 DUP2 PUSH2 0x897 JUMP JUMPDEST DUP2 EQ PUSH2 0x8BB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8CC DUP2 PUSH2 0x8A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8E4 DUP2 PUSH2 0x8D2 JUMP JUMPDEST DUP2 EQ PUSH2 0x8EE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8FF DUP2 PUSH2 0x8DB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x91B JUMPI PUSH2 0x91A PUSH2 0x874 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x928 DUP6 DUP3 DUP7 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x939 DUP6 DUP3 DUP7 ADD PUSH2 0x8F1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x957 DUP2 PUSH2 0x943 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x970 PUSH0 DUP4 ADD DUP5 PUSH2 0x94E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x98D JUMPI PUSH2 0x98C PUSH2 0x874 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x99A DUP7 DUP3 DUP8 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x9AB DUP7 DUP3 DUP8 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x9BC DUP7 DUP3 DUP8 ADD PUSH2 0x8F1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9DB DUP2 PUSH2 0x9C6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9F4 PUSH0 DUP4 ADD DUP5 PUSH2 0x9D2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA0F JUMPI PUSH2 0xA0E PUSH2 0x874 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xA1C DUP5 DUP3 DUP6 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA2E DUP2 PUSH2 0x8D2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xA47 PUSH0 DUP4 ADD DUP5 PUSH2 0xA25 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA63 JUMPI PUSH2 0xA62 PUSH2 0x874 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xA70 DUP6 DUP3 DUP7 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA81 DUP6 DUP3 DUP7 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xACF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xAE2 JUMPI PUSH2 0xAE1 PUSH2 0xA8B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0xB42 PUSH1 0x26 DUP4 PUSH2 0x7EE JUMP JUMPDEST SWAP2 POP PUSH2 0xB4D DUP3 PUSH2 0xAE8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xB6F DUP2 PUSH2 0xB36 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH0 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0xBD0 PUSH1 0x28 DUP4 PUSH2 0x7EE JUMP JUMPDEST SWAP2 POP PUSH2 0xBDB DUP3 PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xBFD DUP2 PUSH2 0xBC4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xC3B DUP3 PUSH2 0x8D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xC46 DUP4 PUSH2 0x8D2 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0xC5E JUMPI PUSH2 0xC5D PUSH2 0xC04 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC6E DUP3 PUSH2 0x8D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xC79 DUP4 PUSH2 0x8D2 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xC91 JUMPI PUSH2 0xC90 PUSH2 0xC04 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 DUP1 CALL 0xB9 TSTORE SWAP3 SWAP9 PUSH11 0xCA3CBA704275C02BCC7167 INVALID BYTE 0xD3 ADDMOD SWAP12 SMOD 0xEC 0x23 SLT 0x4B SWAP7 0xD REVERT PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"104:1417:21:-:0;;;327:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;417:5;410:4;:12;;;;;;:::i;:::-;;441:7;432:6;:16;;;;;;:::i;:::-;;469:9;458:8;;:20;;;;;;;;;;;;;;;;;;327:158;;;104:1417;;7:75:24;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:139::-;1699:6;1694:3;1689;1683:23;1740:1;1731:6;1726:3;1722:16;1715:27;1610:139;;;:::o;1755:434::-;1844:5;1869:66;1885:49;1927:6;1885:49;:::i;:::-;1869:66;:::i;:::-;1860:75;;1958:6;1951:5;1944:21;1996:4;1989:5;1985:16;2034:3;2025:6;2020:3;2016:16;2013:25;2010:112;;;2041:79;;:::i;:::-;2010:112;2131:52;2176:6;2171:3;2166;2131:52;:::i;:::-;1850:339;1755:434;;;;;:::o;2209:355::-;2276:5;2325:3;2318:4;2310:6;2306:17;2302:27;2292:122;;2333:79;;:::i;:::-;2292:122;2443:6;2437:13;2468:90;2554:3;2546:6;2539:4;2531:6;2527:17;2468:90;:::i;:::-;2459:99;;2282:282;2209:355;;;;:::o;2570:86::-;2605:7;2645:4;2638:5;2634:16;2623:27;;2570:86;;;:::o;2662:118::-;2733:22;2749:5;2733:22;:::i;:::-;2726:5;2723:33;2713:61;;2770:1;2767;2760:12;2713:61;2662:118;:::o;2786:139::-;2841:5;2872:6;2866:13;2857:22;;2888:31;2913:5;2888:31;:::i;:::-;2786:139;;;;:::o;2931:1005::-;3037:6;3045;3053;3102:2;3090:9;3081:7;3077:23;3073:32;3070:119;;;3108:79;;:::i;:::-;3070:119;3249:1;3238:9;3234:17;3228:24;3279:18;3271:6;3268:30;3265:117;;;3301:79;;:::i;:::-;3265:117;3406:74;3472:7;3463:6;3452:9;3448:22;3406:74;:::i;:::-;3396:84;;3199:291;3550:2;3539:9;3535:18;3529:25;3581:18;3573:6;3570:30;3567:117;;;3603:79;;:::i;:::-;3567:117;3708:74;3774:7;3765:6;3754:9;3750:22;3708:74;:::i;:::-;3698:84;;3500:292;3831:2;3857:62;3911:7;3902:6;3891:9;3887:22;3857:62;:::i;:::-;3847:72;;3802:127;2931:1005;;;;;:::o;3942:99::-;3994:6;4028:5;4022:12;4012:22;;3942:99;;;:::o;4047:180::-;4095:77;4092:1;4085:88;4192:4;4189:1;4182:15;4216:4;4213:1;4206:15;4233:320;4277:6;4314:1;4308:4;4304:12;4294:22;;4361:1;4355:4;4351:12;4382:18;4372:81;;4438:4;4430:6;4426:17;4416:27;;4372:81;4500:2;4492:6;4489:14;4469:18;4466:38;4463:84;;4519:18;;:::i;:::-;4463:84;4284:269;4233:320;;;:::o;4559:141::-;4608:4;4631:3;4623:11;;4654:3;4651:1;4644:14;4688:4;4685:1;4675:18;4667:26;;4559:141;;;:::o;4706:93::-;4743:6;4790:2;4785;4778:5;4774:14;4770:23;4760:33;;4706:93;;;:::o;4805:107::-;4849:8;4899:5;4893:4;4889:16;4868:37;;4805:107;;;;:::o;4918:393::-;4987:6;5037:1;5025:10;5021:18;5060:97;5090:66;5079:9;5060:97;:::i;:::-;5178:39;5208:8;5197:9;5178:39;:::i;:::-;5166:51;;5250:4;5246:9;5239:5;5235:21;5226:30;;5299:4;5289:8;5285:19;5278:5;5275:30;5265:40;;4994:317;;4918:393;;;;;:::o;5317:77::-;5354:7;5383:5;5372:16;;5317:77;;;:::o;5400:60::-;5428:3;5449:5;5442:12;;5400:60;;;:::o;5466:142::-;5516:9;5549:53;5567:34;5576:24;5594:5;5576:24;:::i;:::-;5567:34;:::i;:::-;5549:53;:::i;:::-;5536:66;;5466:142;;;:::o;5614:75::-;5657:3;5678:5;5671:12;;5614:75;;;:::o;5695:269::-;5805:39;5836:7;5805:39;:::i;:::-;5866:91;5915:41;5939:16;5915:41;:::i;:::-;5907:6;5900:4;5894:11;5866:91;:::i;:::-;5860:4;5853:105;5771:193;5695:269;;;:::o;5970:73::-;6015:3;5970:73;:::o;6049:189::-;6126:32;;:::i;:::-;6167:65;6225:6;6217;6211:4;6167:65;:::i;:::-;6102:136;6049:189;;:::o;6244:186::-;6304:120;6321:3;6314:5;6311:14;6304:120;;;6375:39;6412:1;6405:5;6375:39;:::i;:::-;6348:1;6341:5;6337:13;6328:22;;6304:120;;;6244:186;;:::o;6436:543::-;6537:2;6532:3;6529:11;6526:446;;;6571:38;6603:5;6571:38;:::i;:::-;6655:29;6673:10;6655:29;:::i;:::-;6645:8;6641:44;6838:2;6826:10;6823:18;6820:49;;;6859:8;6844:23;;6820:49;6882:80;6938:22;6956:3;6938:22;:::i;:::-;6928:8;6924:37;6911:11;6882:80;:::i;:::-;6541:431;;6526:446;6436:543;;;:::o;6985:117::-;7039:8;7089:5;7083:4;7079:16;7058:37;;6985:117;;;;:::o;7108:169::-;7152:6;7185:51;7233:1;7229:6;7221:5;7218:1;7214:13;7185:51;:::i;:::-;7181:56;7266:4;7260;7256:15;7246:25;;7159:118;7108:169;;;;:::o;7282:295::-;7358:4;7504:29;7529:3;7523:4;7504:29;:::i;:::-;7496:37;;7566:3;7563:1;7559:11;7553:4;7550:21;7542:29;;7282:295;;;;:::o;7582:1395::-;7699:37;7732:3;7699:37;:::i;:::-;7801:18;7793:6;7790:30;7787:56;;;7823:18;;:::i;:::-;7787:56;7867:38;7899:4;7893:11;7867:38;:::i;:::-;7952:67;8012:6;8004;7998:4;7952:67;:::i;:::-;8046:1;8070:4;8057:17;;8102:2;8094:6;8091:14;8119:1;8114:618;;;;8776:1;8793:6;8790:77;;;8842:9;8837:3;8833:19;8827:26;8818:35;;8790:77;8893:67;8953:6;8946:5;8893:67;:::i;:::-;8887:4;8880:81;8749:222;8084:887;;8114:618;8166:4;8162:9;8154:6;8150:22;8200:37;8232:4;8200:37;:::i;:::-;8259:1;8273:208;8287:7;8284:1;8281:14;8273:208;;;8366:9;8361:3;8357:19;8351:26;8343:6;8336:42;8417:1;8409:6;8405:14;8395:24;;8464:2;8453:9;8449:18;8436:31;;8310:4;8307:1;8303:12;8298:17;;8273:208;;;8509:6;8500:7;8497:19;8494:179;;;8567:9;8562:3;8558:19;8552:26;8610:48;8652:4;8644:6;8640:17;8629:9;8610:48;:::i;:::-;8602:6;8595:64;8517:156;8494:179;8719:1;8715;8707:6;8703:14;8699:22;8693:4;8686:36;8121:611;;;8084:887;;7674:1303;;;7582:1395;;:::o;104:1417:21:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@allowance_6935":{"entryPoint":1988,"id":6935,"parameterSlots":0,"returnSlots":0},"@approve_7015":{"entryPoint":646,"id":7015,"parameterSlots":2,"returnSlots":1},"@balanceOf_6929":{"entryPoint":1522,"id":6929,"parameterSlots":0,"returnSlots":0},"@decimals_6925":{"entryPoint":1417,"id":6925,"parameterSlots":0,"returnSlots":0},"@mint_7089":{"entryPoint":1435,"id":7089,"parameterSlots":2,"returnSlots":0},"@name_6921":{"entryPoint":507,"id":6921,"parameterSlots":0,"returnSlots":0},"@symbol_6923":{"entryPoint":1543,"id":6923,"parameterSlots":0,"returnSlots":0},"@transferFrom_7075":{"entryPoint":782,"id":7075,"parameterSlots":3,"returnSlots":1},"@transfer_6994":{"entryPoint":1683,"id":6994,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2238,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":2289,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2554,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":2637,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2422,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2309,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":2382,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":2076,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack":{"entryPoint":2870,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack":{"entryPoint":3012,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":2597,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":2514,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":2397,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2132,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2904,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3046,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":2612,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":2529,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":2020,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":2030,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":3172,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3121,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":2199,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":2371,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2168,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":2258,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":2502,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2046,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":2744,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3076,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":2699,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2164,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2060,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6":{"entryPoint":2792,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330":{"entryPoint":2934,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2216,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":2267,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:8711:24","nodeType":"YulBlock","src":"0:8711:24","statements":[{"body":{"nativeSrc":"66:40:24","nodeType":"YulBlock","src":"66:40:24","statements":[{"nativeSrc":"77:22:24","nodeType":"YulAssignment","src":"77:22:24","value":{"arguments":[{"name":"value","nativeSrc":"93:5:24","nodeType":"YulIdentifier","src":"93:5:24"}],"functionName":{"name":"mload","nativeSrc":"87:5:24","nodeType":"YulIdentifier","src":"87:5:24"},"nativeSrc":"87:12:24","nodeType":"YulFunctionCall","src":"87:12:24"},"variableNames":[{"name":"length","nativeSrc":"77:6:24","nodeType":"YulIdentifier","src":"77:6:24"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"7:99:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"49:5:24","nodeType":"YulTypedName","src":"49:5:24","type":""}],"returnVariables":[{"name":"length","nativeSrc":"59:6:24","nodeType":"YulTypedName","src":"59:6:24","type":""}],"src":"7:99:24"},{"body":{"nativeSrc":"208:73:24","nodeType":"YulBlock","src":"208:73:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"225:3:24","nodeType":"YulIdentifier","src":"225:3:24"},{"name":"length","nativeSrc":"230:6:24","nodeType":"YulIdentifier","src":"230:6:24"}],"functionName":{"name":"mstore","nativeSrc":"218:6:24","nodeType":"YulIdentifier","src":"218:6:24"},"nativeSrc":"218:19:24","nodeType":"YulFunctionCall","src":"218:19:24"},"nativeSrc":"218:19:24","nodeType":"YulExpressionStatement","src":"218:19:24"},{"nativeSrc":"246:29:24","nodeType":"YulAssignment","src":"246:29:24","value":{"arguments":[{"name":"pos","nativeSrc":"265:3:24","nodeType":"YulIdentifier","src":"265:3:24"},{"kind":"number","nativeSrc":"270:4:24","nodeType":"YulLiteral","src":"270:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"261:3:24","nodeType":"YulIdentifier","src":"261:3:24"},"nativeSrc":"261:14:24","nodeType":"YulFunctionCall","src":"261:14:24"},"variableNames":[{"name":"updated_pos","nativeSrc":"246:11:24","nodeType":"YulIdentifier","src":"246:11:24"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"112:169:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"180:3:24","nodeType":"YulTypedName","src":"180:3:24","type":""},{"name":"length","nativeSrc":"185:6:24","nodeType":"YulTypedName","src":"185:6:24","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"196:11:24","nodeType":"YulTypedName","src":"196:11:24","type":""}],"src":"112:169:24"},{"body":{"nativeSrc":"349:77:24","nodeType":"YulBlock","src":"349:77:24","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"366:3:24","nodeType":"YulIdentifier","src":"366:3:24"},{"name":"src","nativeSrc":"371:3:24","nodeType":"YulIdentifier","src":"371:3:24"},{"name":"length","nativeSrc":"376:6:24","nodeType":"YulIdentifier","src":"376:6:24"}],"functionName":{"name":"mcopy","nativeSrc":"360:5:24","nodeType":"YulIdentifier","src":"360:5:24"},"nativeSrc":"360:23:24","nodeType":"YulFunctionCall","src":"360:23:24"},"nativeSrc":"360:23:24","nodeType":"YulExpressionStatement","src":"360:23:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"403:3:24","nodeType":"YulIdentifier","src":"403:3:24"},{"name":"length","nativeSrc":"408:6:24","nodeType":"YulIdentifier","src":"408:6:24"}],"functionName":{"name":"add","nativeSrc":"399:3:24","nodeType":"YulIdentifier","src":"399:3:24"},"nativeSrc":"399:16:24","nodeType":"YulFunctionCall","src":"399:16:24"},{"kind":"number","nativeSrc":"417:1:24","nodeType":"YulLiteral","src":"417:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"392:6:24","nodeType":"YulIdentifier","src":"392:6:24"},"nativeSrc":"392:27:24","nodeType":"YulFunctionCall","src":"392:27:24"},"nativeSrc":"392:27:24","nodeType":"YulExpressionStatement","src":"392:27:24"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"287:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"331:3:24","nodeType":"YulTypedName","src":"331:3:24","type":""},{"name":"dst","nativeSrc":"336:3:24","nodeType":"YulTypedName","src":"336:3:24","type":""},{"name":"length","nativeSrc":"341:6:24","nodeType":"YulTypedName","src":"341:6:24","type":""}],"src":"287:139:24"},{"body":{"nativeSrc":"480:54:24","nodeType":"YulBlock","src":"480:54:24","statements":[{"nativeSrc":"490:38:24","nodeType":"YulAssignment","src":"490:38:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"508:5:24","nodeType":"YulIdentifier","src":"508:5:24"},{"kind":"number","nativeSrc":"515:2:24","nodeType":"YulLiteral","src":"515:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"504:3:24","nodeType":"YulIdentifier","src":"504:3:24"},"nativeSrc":"504:14:24","nodeType":"YulFunctionCall","src":"504:14:24"},{"arguments":[{"kind":"number","nativeSrc":"524:2:24","nodeType":"YulLiteral","src":"524:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"520:3:24","nodeType":"YulIdentifier","src":"520:3:24"},"nativeSrc":"520:7:24","nodeType":"YulFunctionCall","src":"520:7:24"}],"functionName":{"name":"and","nativeSrc":"500:3:24","nodeType":"YulIdentifier","src":"500:3:24"},"nativeSrc":"500:28:24","nodeType":"YulFunctionCall","src":"500:28:24"},"variableNames":[{"name":"result","nativeSrc":"490:6:24","nodeType":"YulIdentifier","src":"490:6:24"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"432:102:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"463:5:24","nodeType":"YulTypedName","src":"463:5:24","type":""}],"returnVariables":[{"name":"result","nativeSrc":"473:6:24","nodeType":"YulTypedName","src":"473:6:24","type":""}],"src":"432:102:24"},{"body":{"nativeSrc":"632:285:24","nodeType":"YulBlock","src":"632:285:24","statements":[{"nativeSrc":"642:53:24","nodeType":"YulVariableDeclaration","src":"642:53:24","value":{"arguments":[{"name":"value","nativeSrc":"689:5:24","nodeType":"YulIdentifier","src":"689:5:24"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"656:32:24","nodeType":"YulIdentifier","src":"656:32:24"},"nativeSrc":"656:39:24","nodeType":"YulFunctionCall","src":"656:39:24"},"variables":[{"name":"length","nativeSrc":"646:6:24","nodeType":"YulTypedName","src":"646:6:24","type":""}]},{"nativeSrc":"704:78:24","nodeType":"YulAssignment","src":"704:78:24","value":{"arguments":[{"name":"pos","nativeSrc":"770:3:24","nodeType":"YulIdentifier","src":"770:3:24"},{"name":"length","nativeSrc":"775:6:24","nodeType":"YulIdentifier","src":"775:6:24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"711:58:24","nodeType":"YulIdentifier","src":"711:58:24"},"nativeSrc":"711:71:24","nodeType":"YulFunctionCall","src":"711:71:24"},"variableNames":[{"name":"pos","nativeSrc":"704:3:24","nodeType":"YulIdentifier","src":"704:3:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"830:5:24","nodeType":"YulIdentifier","src":"830:5:24"},{"kind":"number","nativeSrc":"837:4:24","nodeType":"YulLiteral","src":"837:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"826:3:24","nodeType":"YulIdentifier","src":"826:3:24"},"nativeSrc":"826:16:24","nodeType":"YulFunctionCall","src":"826:16:24"},{"name":"pos","nativeSrc":"844:3:24","nodeType":"YulIdentifier","src":"844:3:24"},{"name":"length","nativeSrc":"849:6:24","nodeType":"YulIdentifier","src":"849:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"791:34:24","nodeType":"YulIdentifier","src":"791:34:24"},"nativeSrc":"791:65:24","nodeType":"YulFunctionCall","src":"791:65:24"},"nativeSrc":"791:65:24","nodeType":"YulExpressionStatement","src":"791:65:24"},{"nativeSrc":"865:46:24","nodeType":"YulAssignment","src":"865:46:24","value":{"arguments":[{"name":"pos","nativeSrc":"876:3:24","nodeType":"YulIdentifier","src":"876:3:24"},{"arguments":[{"name":"length","nativeSrc":"903:6:24","nodeType":"YulIdentifier","src":"903:6:24"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"881:21:24","nodeType":"YulIdentifier","src":"881:21:24"},"nativeSrc":"881:29:24","nodeType":"YulFunctionCall","src":"881:29:24"}],"functionName":{"name":"add","nativeSrc":"872:3:24","nodeType":"YulIdentifier","src":"872:3:24"},"nativeSrc":"872:39:24","nodeType":"YulFunctionCall","src":"872:39:24"},"variableNames":[{"name":"end","nativeSrc":"865:3:24","nodeType":"YulIdentifier","src":"865:3:24"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"540:377:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"613:5:24","nodeType":"YulTypedName","src":"613:5:24","type":""},{"name":"pos","nativeSrc":"620:3:24","nodeType":"YulTypedName","src":"620:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"628:3:24","nodeType":"YulTypedName","src":"628:3:24","type":""}],"src":"540:377:24"},{"body":{"nativeSrc":"1041:195:24","nodeType":"YulBlock","src":"1041:195:24","statements":[{"nativeSrc":"1051:26:24","nodeType":"YulAssignment","src":"1051:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1063:9:24","nodeType":"YulIdentifier","src":"1063:9:24"},{"kind":"number","nativeSrc":"1074:2:24","nodeType":"YulLiteral","src":"1074:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1059:3:24","nodeType":"YulIdentifier","src":"1059:3:24"},"nativeSrc":"1059:18:24","nodeType":"YulFunctionCall","src":"1059:18:24"},"variableNames":[{"name":"tail","nativeSrc":"1051:4:24","nodeType":"YulIdentifier","src":"1051:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1098:9:24","nodeType":"YulIdentifier","src":"1098:9:24"},{"kind":"number","nativeSrc":"1109:1:24","nodeType":"YulLiteral","src":"1109:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1094:3:24","nodeType":"YulIdentifier","src":"1094:3:24"},"nativeSrc":"1094:17:24","nodeType":"YulFunctionCall","src":"1094:17:24"},{"arguments":[{"name":"tail","nativeSrc":"1117:4:24","nodeType":"YulIdentifier","src":"1117:4:24"},{"name":"headStart","nativeSrc":"1123:9:24","nodeType":"YulIdentifier","src":"1123:9:24"}],"functionName":{"name":"sub","nativeSrc":"1113:3:24","nodeType":"YulIdentifier","src":"1113:3:24"},"nativeSrc":"1113:20:24","nodeType":"YulFunctionCall","src":"1113:20:24"}],"functionName":{"name":"mstore","nativeSrc":"1087:6:24","nodeType":"YulIdentifier","src":"1087:6:24"},"nativeSrc":"1087:47:24","nodeType":"YulFunctionCall","src":"1087:47:24"},"nativeSrc":"1087:47:24","nodeType":"YulExpressionStatement","src":"1087:47:24"},{"nativeSrc":"1143:86:24","nodeType":"YulAssignment","src":"1143:86:24","value":{"arguments":[{"name":"value0","nativeSrc":"1215:6:24","nodeType":"YulIdentifier","src":"1215:6:24"},{"name":"tail","nativeSrc":"1224:4:24","nodeType":"YulIdentifier","src":"1224:4:24"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"1151:63:24","nodeType":"YulIdentifier","src":"1151:63:24"},"nativeSrc":"1151:78:24","nodeType":"YulFunctionCall","src":"1151:78:24"},"variableNames":[{"name":"tail","nativeSrc":"1143:4:24","nodeType":"YulIdentifier","src":"1143:4:24"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"923:313:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1013:9:24","nodeType":"YulTypedName","src":"1013:9:24","type":""},{"name":"value0","nativeSrc":"1025:6:24","nodeType":"YulTypedName","src":"1025:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1036:4:24","nodeType":"YulTypedName","src":"1036:4:24","type":""}],"src":"923:313:24"},{"body":{"nativeSrc":"1282:35:24","nodeType":"YulBlock","src":"1282:35:24","statements":[{"nativeSrc":"1292:19:24","nodeType":"YulAssignment","src":"1292:19:24","value":{"arguments":[{"kind":"number","nativeSrc":"1308:2:24","nodeType":"YulLiteral","src":"1308:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1302:5:24","nodeType":"YulIdentifier","src":"1302:5:24"},"nativeSrc":"1302:9:24","nodeType":"YulFunctionCall","src":"1302:9:24"},"variableNames":[{"name":"memPtr","nativeSrc":"1292:6:24","nodeType":"YulIdentifier","src":"1292:6:24"}]}]},"name":"allocate_unbounded","nativeSrc":"1242:75:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"1275:6:24","nodeType":"YulTypedName","src":"1275:6:24","type":""}],"src":"1242:75:24"},{"body":{"nativeSrc":"1412:28:24","nodeType":"YulBlock","src":"1412:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1429:1:24","nodeType":"YulLiteral","src":"1429:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1432:1:24","nodeType":"YulLiteral","src":"1432:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1422:6:24","nodeType":"YulIdentifier","src":"1422:6:24"},"nativeSrc":"1422:12:24","nodeType":"YulFunctionCall","src":"1422:12:24"},"nativeSrc":"1422:12:24","nodeType":"YulExpressionStatement","src":"1422:12:24"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"1323:117:24","nodeType":"YulFunctionDefinition","src":"1323:117:24"},{"body":{"nativeSrc":"1535:28:24","nodeType":"YulBlock","src":"1535:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1552:1:24","nodeType":"YulLiteral","src":"1552:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1555:1:24","nodeType":"YulLiteral","src":"1555:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1545:6:24","nodeType":"YulIdentifier","src":"1545:6:24"},"nativeSrc":"1545:12:24","nodeType":"YulFunctionCall","src":"1545:12:24"},"nativeSrc":"1545:12:24","nodeType":"YulExpressionStatement","src":"1545:12:24"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"1446:117:24","nodeType":"YulFunctionDefinition","src":"1446:117:24"},{"body":{"nativeSrc":"1614:81:24","nodeType":"YulBlock","src":"1614:81:24","statements":[{"nativeSrc":"1624:65:24","nodeType":"YulAssignment","src":"1624:65:24","value":{"arguments":[{"name":"value","nativeSrc":"1639:5:24","nodeType":"YulIdentifier","src":"1639:5:24"},{"kind":"number","nativeSrc":"1646:42:24","nodeType":"YulLiteral","src":"1646:42:24","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1635:3:24","nodeType":"YulIdentifier","src":"1635:3:24"},"nativeSrc":"1635:54:24","nodeType":"YulFunctionCall","src":"1635:54:24"},"variableNames":[{"name":"cleaned","nativeSrc":"1624:7:24","nodeType":"YulIdentifier","src":"1624:7:24"}]}]},"name":"cleanup_t_uint160","nativeSrc":"1569:126:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1596:5:24","nodeType":"YulTypedName","src":"1596:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1606:7:24","nodeType":"YulTypedName","src":"1606:7:24","type":""}],"src":"1569:126:24"},{"body":{"nativeSrc":"1746:51:24","nodeType":"YulBlock","src":"1746:51:24","statements":[{"nativeSrc":"1756:35:24","nodeType":"YulAssignment","src":"1756:35:24","value":{"arguments":[{"name":"value","nativeSrc":"1785:5:24","nodeType":"YulIdentifier","src":"1785:5:24"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"1767:17:24","nodeType":"YulIdentifier","src":"1767:17:24"},"nativeSrc":"1767:24:24","nodeType":"YulFunctionCall","src":"1767:24:24"},"variableNames":[{"name":"cleaned","nativeSrc":"1756:7:24","nodeType":"YulIdentifier","src":"1756:7:24"}]}]},"name":"cleanup_t_address","nativeSrc":"1701:96:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1728:5:24","nodeType":"YulTypedName","src":"1728:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1738:7:24","nodeType":"YulTypedName","src":"1738:7:24","type":""}],"src":"1701:96:24"},{"body":{"nativeSrc":"1846:79:24","nodeType":"YulBlock","src":"1846:79:24","statements":[{"body":{"nativeSrc":"1903:16:24","nodeType":"YulBlock","src":"1903:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:1:24","nodeType":"YulLiteral","src":"1912:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1915:1:24","nodeType":"YulLiteral","src":"1915:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1905:6:24","nodeType":"YulIdentifier","src":"1905:6:24"},"nativeSrc":"1905:12:24","nodeType":"YulFunctionCall","src":"1905:12:24"},"nativeSrc":"1905:12:24","nodeType":"YulExpressionStatement","src":"1905:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1869:5:24","nodeType":"YulIdentifier","src":"1869:5:24"},{"arguments":[{"name":"value","nativeSrc":"1894:5:24","nodeType":"YulIdentifier","src":"1894:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1876:17:24","nodeType":"YulIdentifier","src":"1876:17:24"},"nativeSrc":"1876:24:24","nodeType":"YulFunctionCall","src":"1876:24:24"}],"functionName":{"name":"eq","nativeSrc":"1866:2:24","nodeType":"YulIdentifier","src":"1866:2:24"},"nativeSrc":"1866:35:24","nodeType":"YulFunctionCall","src":"1866:35:24"}],"functionName":{"name":"iszero","nativeSrc":"1859:6:24","nodeType":"YulIdentifier","src":"1859:6:24"},"nativeSrc":"1859:43:24","nodeType":"YulFunctionCall","src":"1859:43:24"},"nativeSrc":"1856:63:24","nodeType":"YulIf","src":"1856:63:24"}]},"name":"validator_revert_t_address","nativeSrc":"1803:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1839:5:24","nodeType":"YulTypedName","src":"1839:5:24","type":""}],"src":"1803:122:24"},{"body":{"nativeSrc":"1983:87:24","nodeType":"YulBlock","src":"1983:87:24","statements":[{"nativeSrc":"1993:29:24","nodeType":"YulAssignment","src":"1993:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"2015:6:24","nodeType":"YulIdentifier","src":"2015:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"2002:12:24","nodeType":"YulIdentifier","src":"2002:12:24"},"nativeSrc":"2002:20:24","nodeType":"YulFunctionCall","src":"2002:20:24"},"variableNames":[{"name":"value","nativeSrc":"1993:5:24","nodeType":"YulIdentifier","src":"1993:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2058:5:24","nodeType":"YulIdentifier","src":"2058:5:24"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"2031:26:24","nodeType":"YulIdentifier","src":"2031:26:24"},"nativeSrc":"2031:33:24","nodeType":"YulFunctionCall","src":"2031:33:24"},"nativeSrc":"2031:33:24","nodeType":"YulExpressionStatement","src":"2031:33:24"}]},"name":"abi_decode_t_address","nativeSrc":"1931:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1961:6:24","nodeType":"YulTypedName","src":"1961:6:24","type":""},{"name":"end","nativeSrc":"1969:3:24","nodeType":"YulTypedName","src":"1969:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1977:5:24","nodeType":"YulTypedName","src":"1977:5:24","type":""}],"src":"1931:139:24"},{"body":{"nativeSrc":"2121:32:24","nodeType":"YulBlock","src":"2121:32:24","statements":[{"nativeSrc":"2131:16:24","nodeType":"YulAssignment","src":"2131:16:24","value":{"name":"value","nativeSrc":"2142:5:24","nodeType":"YulIdentifier","src":"2142:5:24"},"variableNames":[{"name":"cleaned","nativeSrc":"2131:7:24","nodeType":"YulIdentifier","src":"2131:7:24"}]}]},"name":"cleanup_t_uint256","nativeSrc":"2076:77:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2103:5:24","nodeType":"YulTypedName","src":"2103:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"2113:7:24","nodeType":"YulTypedName","src":"2113:7:24","type":""}],"src":"2076:77:24"},{"body":{"nativeSrc":"2202:79:24","nodeType":"YulBlock","src":"2202:79:24","statements":[{"body":{"nativeSrc":"2259:16:24","nodeType":"YulBlock","src":"2259:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2268:1:24","nodeType":"YulLiteral","src":"2268:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2271:1:24","nodeType":"YulLiteral","src":"2271:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2261:6:24","nodeType":"YulIdentifier","src":"2261:6:24"},"nativeSrc":"2261:12:24","nodeType":"YulFunctionCall","src":"2261:12:24"},"nativeSrc":"2261:12:24","nodeType":"YulExpressionStatement","src":"2261:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2225:5:24","nodeType":"YulIdentifier","src":"2225:5:24"},{"arguments":[{"name":"value","nativeSrc":"2250:5:24","nodeType":"YulIdentifier","src":"2250:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"2232:17:24","nodeType":"YulIdentifier","src":"2232:17:24"},"nativeSrc":"2232:24:24","nodeType":"YulFunctionCall","src":"2232:24:24"}],"functionName":{"name":"eq","nativeSrc":"2222:2:24","nodeType":"YulIdentifier","src":"2222:2:24"},"nativeSrc":"2222:35:24","nodeType":"YulFunctionCall","src":"2222:35:24"}],"functionName":{"name":"iszero","nativeSrc":"2215:6:24","nodeType":"YulIdentifier","src":"2215:6:24"},"nativeSrc":"2215:43:24","nodeType":"YulFunctionCall","src":"2215:43:24"},"nativeSrc":"2212:63:24","nodeType":"YulIf","src":"2212:63:24"}]},"name":"validator_revert_t_uint256","nativeSrc":"2159:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2195:5:24","nodeType":"YulTypedName","src":"2195:5:24","type":""}],"src":"2159:122:24"},{"body":{"nativeSrc":"2339:87:24","nodeType":"YulBlock","src":"2339:87:24","statements":[{"nativeSrc":"2349:29:24","nodeType":"YulAssignment","src":"2349:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"2371:6:24","nodeType":"YulIdentifier","src":"2371:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"2358:12:24","nodeType":"YulIdentifier","src":"2358:12:24"},"nativeSrc":"2358:20:24","nodeType":"YulFunctionCall","src":"2358:20:24"},"variableNames":[{"name":"value","nativeSrc":"2349:5:24","nodeType":"YulIdentifier","src":"2349:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2414:5:24","nodeType":"YulIdentifier","src":"2414:5:24"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"2387:26:24","nodeType":"YulIdentifier","src":"2387:26:24"},"nativeSrc":"2387:33:24","nodeType":"YulFunctionCall","src":"2387:33:24"},"nativeSrc":"2387:33:24","nodeType":"YulExpressionStatement","src":"2387:33:24"}]},"name":"abi_decode_t_uint256","nativeSrc":"2287:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2317:6:24","nodeType":"YulTypedName","src":"2317:6:24","type":""},{"name":"end","nativeSrc":"2325:3:24","nodeType":"YulTypedName","src":"2325:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2333:5:24","nodeType":"YulTypedName","src":"2333:5:24","type":""}],"src":"2287:139:24"},{"body":{"nativeSrc":"2515:391:24","nodeType":"YulBlock","src":"2515:391:24","statements":[{"body":{"nativeSrc":"2561:83:24","nodeType":"YulBlock","src":"2561:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"2563:77:24","nodeType":"YulIdentifier","src":"2563:77:24"},"nativeSrc":"2563:79:24","nodeType":"YulFunctionCall","src":"2563:79:24"},"nativeSrc":"2563:79:24","nodeType":"YulExpressionStatement","src":"2563:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2536:7:24","nodeType":"YulIdentifier","src":"2536:7:24"},{"name":"headStart","nativeSrc":"2545:9:24","nodeType":"YulIdentifier","src":"2545:9:24"}],"functionName":{"name":"sub","nativeSrc":"2532:3:24","nodeType":"YulIdentifier","src":"2532:3:24"},"nativeSrc":"2532:23:24","nodeType":"YulFunctionCall","src":"2532:23:24"},{"kind":"number","nativeSrc":"2557:2:24","nodeType":"YulLiteral","src":"2557:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2528:3:24","nodeType":"YulIdentifier","src":"2528:3:24"},"nativeSrc":"2528:32:24","nodeType":"YulFunctionCall","src":"2528:32:24"},"nativeSrc":"2525:119:24","nodeType":"YulIf","src":"2525:119:24"},{"nativeSrc":"2654:117:24","nodeType":"YulBlock","src":"2654:117:24","statements":[{"nativeSrc":"2669:15:24","nodeType":"YulVariableDeclaration","src":"2669:15:24","value":{"kind":"number","nativeSrc":"2683:1:24","nodeType":"YulLiteral","src":"2683:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2673:6:24","nodeType":"YulTypedName","src":"2673:6:24","type":""}]},{"nativeSrc":"2698:63:24","nodeType":"YulAssignment","src":"2698:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2733:9:24","nodeType":"YulIdentifier","src":"2733:9:24"},{"name":"offset","nativeSrc":"2744:6:24","nodeType":"YulIdentifier","src":"2744:6:24"}],"functionName":{"name":"add","nativeSrc":"2729:3:24","nodeType":"YulIdentifier","src":"2729:3:24"},"nativeSrc":"2729:22:24","nodeType":"YulFunctionCall","src":"2729:22:24"},{"name":"dataEnd","nativeSrc":"2753:7:24","nodeType":"YulIdentifier","src":"2753:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"2708:20:24","nodeType":"YulIdentifier","src":"2708:20:24"},"nativeSrc":"2708:53:24","nodeType":"YulFunctionCall","src":"2708:53:24"},"variableNames":[{"name":"value0","nativeSrc":"2698:6:24","nodeType":"YulIdentifier","src":"2698:6:24"}]}]},{"nativeSrc":"2781:118:24","nodeType":"YulBlock","src":"2781:118:24","statements":[{"nativeSrc":"2796:16:24","nodeType":"YulVariableDeclaration","src":"2796:16:24","value":{"kind":"number","nativeSrc":"2810:2:24","nodeType":"YulLiteral","src":"2810:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"2800:6:24","nodeType":"YulTypedName","src":"2800:6:24","type":""}]},{"nativeSrc":"2826:63:24","nodeType":"YulAssignment","src":"2826:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2861:9:24","nodeType":"YulIdentifier","src":"2861:9:24"},{"name":"offset","nativeSrc":"2872:6:24","nodeType":"YulIdentifier","src":"2872:6:24"}],"functionName":{"name":"add","nativeSrc":"2857:3:24","nodeType":"YulIdentifier","src":"2857:3:24"},"nativeSrc":"2857:22:24","nodeType":"YulFunctionCall","src":"2857:22:24"},{"name":"dataEnd","nativeSrc":"2881:7:24","nodeType":"YulIdentifier","src":"2881:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"2836:20:24","nodeType":"YulIdentifier","src":"2836:20:24"},"nativeSrc":"2836:53:24","nodeType":"YulFunctionCall","src":"2836:53:24"},"variableNames":[{"name":"value1","nativeSrc":"2826:6:24","nodeType":"YulIdentifier","src":"2826:6:24"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"2432:474:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2477:9:24","nodeType":"YulTypedName","src":"2477:9:24","type":""},{"name":"dataEnd","nativeSrc":"2488:7:24","nodeType":"YulTypedName","src":"2488:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2500:6:24","nodeType":"YulTypedName","src":"2500:6:24","type":""},{"name":"value1","nativeSrc":"2508:6:24","nodeType":"YulTypedName","src":"2508:6:24","type":""}],"src":"2432:474:24"},{"body":{"nativeSrc":"2954:48:24","nodeType":"YulBlock","src":"2954:48:24","statements":[{"nativeSrc":"2964:32:24","nodeType":"YulAssignment","src":"2964:32:24","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2989:5:24","nodeType":"YulIdentifier","src":"2989:5:24"}],"functionName":{"name":"iszero","nativeSrc":"2982:6:24","nodeType":"YulIdentifier","src":"2982:6:24"},"nativeSrc":"2982:13:24","nodeType":"YulFunctionCall","src":"2982:13:24"}],"functionName":{"name":"iszero","nativeSrc":"2975:6:24","nodeType":"YulIdentifier","src":"2975:6:24"},"nativeSrc":"2975:21:24","nodeType":"YulFunctionCall","src":"2975:21:24"},"variableNames":[{"name":"cleaned","nativeSrc":"2964:7:24","nodeType":"YulIdentifier","src":"2964:7:24"}]}]},"name":"cleanup_t_bool","nativeSrc":"2912:90:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2936:5:24","nodeType":"YulTypedName","src":"2936:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"2946:7:24","nodeType":"YulTypedName","src":"2946:7:24","type":""}],"src":"2912:90:24"},{"body":{"nativeSrc":"3067:50:24","nodeType":"YulBlock","src":"3067:50:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3084:3:24","nodeType":"YulIdentifier","src":"3084:3:24"},{"arguments":[{"name":"value","nativeSrc":"3104:5:24","nodeType":"YulIdentifier","src":"3104:5:24"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"3089:14:24","nodeType":"YulIdentifier","src":"3089:14:24"},"nativeSrc":"3089:21:24","nodeType":"YulFunctionCall","src":"3089:21:24"}],"functionName":{"name":"mstore","nativeSrc":"3077:6:24","nodeType":"YulIdentifier","src":"3077:6:24"},"nativeSrc":"3077:34:24","nodeType":"YulFunctionCall","src":"3077:34:24"},"nativeSrc":"3077:34:24","nodeType":"YulExpressionStatement","src":"3077:34:24"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"3008:109:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3055:5:24","nodeType":"YulTypedName","src":"3055:5:24","type":""},{"name":"pos","nativeSrc":"3062:3:24","nodeType":"YulTypedName","src":"3062:3:24","type":""}],"src":"3008:109:24"},{"body":{"nativeSrc":"3215:118:24","nodeType":"YulBlock","src":"3215:118:24","statements":[{"nativeSrc":"3225:26:24","nodeType":"YulAssignment","src":"3225:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"3237:9:24","nodeType":"YulIdentifier","src":"3237:9:24"},{"kind":"number","nativeSrc":"3248:2:24","nodeType":"YulLiteral","src":"3248:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3233:3:24","nodeType":"YulIdentifier","src":"3233:3:24"},"nativeSrc":"3233:18:24","nodeType":"YulFunctionCall","src":"3233:18:24"},"variableNames":[{"name":"tail","nativeSrc":"3225:4:24","nodeType":"YulIdentifier","src":"3225:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"3299:6:24","nodeType":"YulIdentifier","src":"3299:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"3312:9:24","nodeType":"YulIdentifier","src":"3312:9:24"},{"kind":"number","nativeSrc":"3323:1:24","nodeType":"YulLiteral","src":"3323:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3308:3:24","nodeType":"YulIdentifier","src":"3308:3:24"},"nativeSrc":"3308:17:24","nodeType":"YulFunctionCall","src":"3308:17:24"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"3261:37:24","nodeType":"YulIdentifier","src":"3261:37:24"},"nativeSrc":"3261:65:24","nodeType":"YulFunctionCall","src":"3261:65:24"},"nativeSrc":"3261:65:24","nodeType":"YulExpressionStatement","src":"3261:65:24"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"3123:210:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3187:9:24","nodeType":"YulTypedName","src":"3187:9:24","type":""},{"name":"value0","nativeSrc":"3199:6:24","nodeType":"YulTypedName","src":"3199:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3210:4:24","nodeType":"YulTypedName","src":"3210:4:24","type":""}],"src":"3123:210:24"},{"body":{"nativeSrc":"3439:519:24","nodeType":"YulBlock","src":"3439:519:24","statements":[{"body":{"nativeSrc":"3485:83:24","nodeType":"YulBlock","src":"3485:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3487:77:24","nodeType":"YulIdentifier","src":"3487:77:24"},"nativeSrc":"3487:79:24","nodeType":"YulFunctionCall","src":"3487:79:24"},"nativeSrc":"3487:79:24","nodeType":"YulExpressionStatement","src":"3487:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3460:7:24","nodeType":"YulIdentifier","src":"3460:7:24"},{"name":"headStart","nativeSrc":"3469:9:24","nodeType":"YulIdentifier","src":"3469:9:24"}],"functionName":{"name":"sub","nativeSrc":"3456:3:24","nodeType":"YulIdentifier","src":"3456:3:24"},"nativeSrc":"3456:23:24","nodeType":"YulFunctionCall","src":"3456:23:24"},{"kind":"number","nativeSrc":"3481:2:24","nodeType":"YulLiteral","src":"3481:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3452:3:24","nodeType":"YulIdentifier","src":"3452:3:24"},"nativeSrc":"3452:32:24","nodeType":"YulFunctionCall","src":"3452:32:24"},"nativeSrc":"3449:119:24","nodeType":"YulIf","src":"3449:119:24"},{"nativeSrc":"3578:117:24","nodeType":"YulBlock","src":"3578:117:24","statements":[{"nativeSrc":"3593:15:24","nodeType":"YulVariableDeclaration","src":"3593:15:24","value":{"kind":"number","nativeSrc":"3607:1:24","nodeType":"YulLiteral","src":"3607:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3597:6:24","nodeType":"YulTypedName","src":"3597:6:24","type":""}]},{"nativeSrc":"3622:63:24","nodeType":"YulAssignment","src":"3622:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3657:9:24","nodeType":"YulIdentifier","src":"3657:9:24"},{"name":"offset","nativeSrc":"3668:6:24","nodeType":"YulIdentifier","src":"3668:6:24"}],"functionName":{"name":"add","nativeSrc":"3653:3:24","nodeType":"YulIdentifier","src":"3653:3:24"},"nativeSrc":"3653:22:24","nodeType":"YulFunctionCall","src":"3653:22:24"},{"name":"dataEnd","nativeSrc":"3677:7:24","nodeType":"YulIdentifier","src":"3677:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"3632:20:24","nodeType":"YulIdentifier","src":"3632:20:24"},"nativeSrc":"3632:53:24","nodeType":"YulFunctionCall","src":"3632:53:24"},"variableNames":[{"name":"value0","nativeSrc":"3622:6:24","nodeType":"YulIdentifier","src":"3622:6:24"}]}]},{"nativeSrc":"3705:118:24","nodeType":"YulBlock","src":"3705:118:24","statements":[{"nativeSrc":"3720:16:24","nodeType":"YulVariableDeclaration","src":"3720:16:24","value":{"kind":"number","nativeSrc":"3734:2:24","nodeType":"YulLiteral","src":"3734:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"3724:6:24","nodeType":"YulTypedName","src":"3724:6:24","type":""}]},{"nativeSrc":"3750:63:24","nodeType":"YulAssignment","src":"3750:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3785:9:24","nodeType":"YulIdentifier","src":"3785:9:24"},{"name":"offset","nativeSrc":"3796:6:24","nodeType":"YulIdentifier","src":"3796:6:24"}],"functionName":{"name":"add","nativeSrc":"3781:3:24","nodeType":"YulIdentifier","src":"3781:3:24"},"nativeSrc":"3781:22:24","nodeType":"YulFunctionCall","src":"3781:22:24"},{"name":"dataEnd","nativeSrc":"3805:7:24","nodeType":"YulIdentifier","src":"3805:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"3760:20:24","nodeType":"YulIdentifier","src":"3760:20:24"},"nativeSrc":"3760:53:24","nodeType":"YulFunctionCall","src":"3760:53:24"},"variableNames":[{"name":"value1","nativeSrc":"3750:6:24","nodeType":"YulIdentifier","src":"3750:6:24"}]}]},{"nativeSrc":"3833:118:24","nodeType":"YulBlock","src":"3833:118:24","statements":[{"nativeSrc":"3848:16:24","nodeType":"YulVariableDeclaration","src":"3848:16:24","value":{"kind":"number","nativeSrc":"3862:2:24","nodeType":"YulLiteral","src":"3862:2:24","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"3852:6:24","nodeType":"YulTypedName","src":"3852:6:24","type":""}]},{"nativeSrc":"3878:63:24","nodeType":"YulAssignment","src":"3878:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3913:9:24","nodeType":"YulIdentifier","src":"3913:9:24"},{"name":"offset","nativeSrc":"3924:6:24","nodeType":"YulIdentifier","src":"3924:6:24"}],"functionName":{"name":"add","nativeSrc":"3909:3:24","nodeType":"YulIdentifier","src":"3909:3:24"},"nativeSrc":"3909:22:24","nodeType":"YulFunctionCall","src":"3909:22:24"},{"name":"dataEnd","nativeSrc":"3933:7:24","nodeType":"YulIdentifier","src":"3933:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"3888:20:24","nodeType":"YulIdentifier","src":"3888:20:24"},"nativeSrc":"3888:53:24","nodeType":"YulFunctionCall","src":"3888:53:24"},"variableNames":[{"name":"value2","nativeSrc":"3878:6:24","nodeType":"YulIdentifier","src":"3878:6:24"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"3339:619:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3393:9:24","nodeType":"YulTypedName","src":"3393:9:24","type":""},{"name":"dataEnd","nativeSrc":"3404:7:24","nodeType":"YulTypedName","src":"3404:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3416:6:24","nodeType":"YulTypedName","src":"3416:6:24","type":""},{"name":"value1","nativeSrc":"3424:6:24","nodeType":"YulTypedName","src":"3424:6:24","type":""},{"name":"value2","nativeSrc":"3432:6:24","nodeType":"YulTypedName","src":"3432:6:24","type":""}],"src":"3339:619:24"},{"body":{"nativeSrc":"4007:43:24","nodeType":"YulBlock","src":"4007:43:24","statements":[{"nativeSrc":"4017:27:24","nodeType":"YulAssignment","src":"4017:27:24","value":{"arguments":[{"name":"value","nativeSrc":"4032:5:24","nodeType":"YulIdentifier","src":"4032:5:24"},{"kind":"number","nativeSrc":"4039:4:24","nodeType":"YulLiteral","src":"4039:4:24","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"4028:3:24","nodeType":"YulIdentifier","src":"4028:3:24"},"nativeSrc":"4028:16:24","nodeType":"YulFunctionCall","src":"4028:16:24"},"variableNames":[{"name":"cleaned","nativeSrc":"4017:7:24","nodeType":"YulIdentifier","src":"4017:7:24"}]}]},"name":"cleanup_t_uint8","nativeSrc":"3964:86:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3989:5:24","nodeType":"YulTypedName","src":"3989:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"3999:7:24","nodeType":"YulTypedName","src":"3999:7:24","type":""}],"src":"3964:86:24"},{"body":{"nativeSrc":"4117:51:24","nodeType":"YulBlock","src":"4117:51:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4134:3:24","nodeType":"YulIdentifier","src":"4134:3:24"},{"arguments":[{"name":"value","nativeSrc":"4155:5:24","nodeType":"YulIdentifier","src":"4155:5:24"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"4139:15:24","nodeType":"YulIdentifier","src":"4139:15:24"},"nativeSrc":"4139:22:24","nodeType":"YulFunctionCall","src":"4139:22:24"}],"functionName":{"name":"mstore","nativeSrc":"4127:6:24","nodeType":"YulIdentifier","src":"4127:6:24"},"nativeSrc":"4127:35:24","nodeType":"YulFunctionCall","src":"4127:35:24"},"nativeSrc":"4127:35:24","nodeType":"YulExpressionStatement","src":"4127:35:24"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nativeSrc":"4056:112:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4105:5:24","nodeType":"YulTypedName","src":"4105:5:24","type":""},{"name":"pos","nativeSrc":"4112:3:24","nodeType":"YulTypedName","src":"4112:3:24","type":""}],"src":"4056:112:24"},{"body":{"nativeSrc":"4268:120:24","nodeType":"YulBlock","src":"4268:120:24","statements":[{"nativeSrc":"4278:26:24","nodeType":"YulAssignment","src":"4278:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"4290:9:24","nodeType":"YulIdentifier","src":"4290:9:24"},{"kind":"number","nativeSrc":"4301:2:24","nodeType":"YulLiteral","src":"4301:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4286:3:24","nodeType":"YulIdentifier","src":"4286:3:24"},"nativeSrc":"4286:18:24","nodeType":"YulFunctionCall","src":"4286:18:24"},"variableNames":[{"name":"tail","nativeSrc":"4278:4:24","nodeType":"YulIdentifier","src":"4278:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"4354:6:24","nodeType":"YulIdentifier","src":"4354:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"4367:9:24","nodeType":"YulIdentifier","src":"4367:9:24"},{"kind":"number","nativeSrc":"4378:1:24","nodeType":"YulLiteral","src":"4378:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4363:3:24","nodeType":"YulIdentifier","src":"4363:3:24"},"nativeSrc":"4363:17:24","nodeType":"YulFunctionCall","src":"4363:17:24"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nativeSrc":"4314:39:24","nodeType":"YulIdentifier","src":"4314:39:24"},"nativeSrc":"4314:67:24","nodeType":"YulFunctionCall","src":"4314:67:24"},"nativeSrc":"4314:67:24","nodeType":"YulExpressionStatement","src":"4314:67:24"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"4174:214:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4240:9:24","nodeType":"YulTypedName","src":"4240:9:24","type":""},{"name":"value0","nativeSrc":"4252:6:24","nodeType":"YulTypedName","src":"4252:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4263:4:24","nodeType":"YulTypedName","src":"4263:4:24","type":""}],"src":"4174:214:24"},{"body":{"nativeSrc":"4460:263:24","nodeType":"YulBlock","src":"4460:263:24","statements":[{"body":{"nativeSrc":"4506:83:24","nodeType":"YulBlock","src":"4506:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"4508:77:24","nodeType":"YulIdentifier","src":"4508:77:24"},"nativeSrc":"4508:79:24","nodeType":"YulFunctionCall","src":"4508:79:24"},"nativeSrc":"4508:79:24","nodeType":"YulExpressionStatement","src":"4508:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4481:7:24","nodeType":"YulIdentifier","src":"4481:7:24"},{"name":"headStart","nativeSrc":"4490:9:24","nodeType":"YulIdentifier","src":"4490:9:24"}],"functionName":{"name":"sub","nativeSrc":"4477:3:24","nodeType":"YulIdentifier","src":"4477:3:24"},"nativeSrc":"4477:23:24","nodeType":"YulFunctionCall","src":"4477:23:24"},{"kind":"number","nativeSrc":"4502:2:24","nodeType":"YulLiteral","src":"4502:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4473:3:24","nodeType":"YulIdentifier","src":"4473:3:24"},"nativeSrc":"4473:32:24","nodeType":"YulFunctionCall","src":"4473:32:24"},"nativeSrc":"4470:119:24","nodeType":"YulIf","src":"4470:119:24"},{"nativeSrc":"4599:117:24","nodeType":"YulBlock","src":"4599:117:24","statements":[{"nativeSrc":"4614:15:24","nodeType":"YulVariableDeclaration","src":"4614:15:24","value":{"kind":"number","nativeSrc":"4628:1:24","nodeType":"YulLiteral","src":"4628:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"4618:6:24","nodeType":"YulTypedName","src":"4618:6:24","type":""}]},{"nativeSrc":"4643:63:24","nodeType":"YulAssignment","src":"4643:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4678:9:24","nodeType":"YulIdentifier","src":"4678:9:24"},{"name":"offset","nativeSrc":"4689:6:24","nodeType":"YulIdentifier","src":"4689:6:24"}],"functionName":{"name":"add","nativeSrc":"4674:3:24","nodeType":"YulIdentifier","src":"4674:3:24"},"nativeSrc":"4674:22:24","nodeType":"YulFunctionCall","src":"4674:22:24"},{"name":"dataEnd","nativeSrc":"4698:7:24","nodeType":"YulIdentifier","src":"4698:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"4653:20:24","nodeType":"YulIdentifier","src":"4653:20:24"},"nativeSrc":"4653:53:24","nodeType":"YulFunctionCall","src":"4653:53:24"},"variableNames":[{"name":"value0","nativeSrc":"4643:6:24","nodeType":"YulIdentifier","src":"4643:6:24"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4394:329:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4430:9:24","nodeType":"YulTypedName","src":"4430:9:24","type":""},{"name":"dataEnd","nativeSrc":"4441:7:24","nodeType":"YulTypedName","src":"4441:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4453:6:24","nodeType":"YulTypedName","src":"4453:6:24","type":""}],"src":"4394:329:24"},{"body":{"nativeSrc":"4794:53:24","nodeType":"YulBlock","src":"4794:53:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4811:3:24","nodeType":"YulIdentifier","src":"4811:3:24"},{"arguments":[{"name":"value","nativeSrc":"4834:5:24","nodeType":"YulIdentifier","src":"4834:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"4816:17:24","nodeType":"YulIdentifier","src":"4816:17:24"},"nativeSrc":"4816:24:24","nodeType":"YulFunctionCall","src":"4816:24:24"}],"functionName":{"name":"mstore","nativeSrc":"4804:6:24","nodeType":"YulIdentifier","src":"4804:6:24"},"nativeSrc":"4804:37:24","nodeType":"YulFunctionCall","src":"4804:37:24"},"nativeSrc":"4804:37:24","nodeType":"YulExpressionStatement","src":"4804:37:24"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"4729:118:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4782:5:24","nodeType":"YulTypedName","src":"4782:5:24","type":""},{"name":"pos","nativeSrc":"4789:3:24","nodeType":"YulTypedName","src":"4789:3:24","type":""}],"src":"4729:118:24"},{"body":{"nativeSrc":"4951:124:24","nodeType":"YulBlock","src":"4951:124:24","statements":[{"nativeSrc":"4961:26:24","nodeType":"YulAssignment","src":"4961:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"4973:9:24","nodeType":"YulIdentifier","src":"4973:9:24"},{"kind":"number","nativeSrc":"4984:2:24","nodeType":"YulLiteral","src":"4984:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4969:3:24","nodeType":"YulIdentifier","src":"4969:3:24"},"nativeSrc":"4969:18:24","nodeType":"YulFunctionCall","src":"4969:18:24"},"variableNames":[{"name":"tail","nativeSrc":"4961:4:24","nodeType":"YulIdentifier","src":"4961:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"5041:6:24","nodeType":"YulIdentifier","src":"5041:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"5054:9:24","nodeType":"YulIdentifier","src":"5054:9:24"},{"kind":"number","nativeSrc":"5065:1:24","nodeType":"YulLiteral","src":"5065:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5050:3:24","nodeType":"YulIdentifier","src":"5050:3:24"},"nativeSrc":"5050:17:24","nodeType":"YulFunctionCall","src":"5050:17:24"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"4997:43:24","nodeType":"YulIdentifier","src":"4997:43:24"},"nativeSrc":"4997:71:24","nodeType":"YulFunctionCall","src":"4997:71:24"},"nativeSrc":"4997:71:24","nodeType":"YulExpressionStatement","src":"4997:71:24"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"4853:222:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4923:9:24","nodeType":"YulTypedName","src":"4923:9:24","type":""},{"name":"value0","nativeSrc":"4935:6:24","nodeType":"YulTypedName","src":"4935:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4946:4:24","nodeType":"YulTypedName","src":"4946:4:24","type":""}],"src":"4853:222:24"},{"body":{"nativeSrc":"5164:391:24","nodeType":"YulBlock","src":"5164:391:24","statements":[{"body":{"nativeSrc":"5210:83:24","nodeType":"YulBlock","src":"5210:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"5212:77:24","nodeType":"YulIdentifier","src":"5212:77:24"},"nativeSrc":"5212:79:24","nodeType":"YulFunctionCall","src":"5212:79:24"},"nativeSrc":"5212:79:24","nodeType":"YulExpressionStatement","src":"5212:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5185:7:24","nodeType":"YulIdentifier","src":"5185:7:24"},{"name":"headStart","nativeSrc":"5194:9:24","nodeType":"YulIdentifier","src":"5194:9:24"}],"functionName":{"name":"sub","nativeSrc":"5181:3:24","nodeType":"YulIdentifier","src":"5181:3:24"},"nativeSrc":"5181:23:24","nodeType":"YulFunctionCall","src":"5181:23:24"},{"kind":"number","nativeSrc":"5206:2:24","nodeType":"YulLiteral","src":"5206:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5177:3:24","nodeType":"YulIdentifier","src":"5177:3:24"},"nativeSrc":"5177:32:24","nodeType":"YulFunctionCall","src":"5177:32:24"},"nativeSrc":"5174:119:24","nodeType":"YulIf","src":"5174:119:24"},{"nativeSrc":"5303:117:24","nodeType":"YulBlock","src":"5303:117:24","statements":[{"nativeSrc":"5318:15:24","nodeType":"YulVariableDeclaration","src":"5318:15:24","value":{"kind":"number","nativeSrc":"5332:1:24","nodeType":"YulLiteral","src":"5332:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"5322:6:24","nodeType":"YulTypedName","src":"5322:6:24","type":""}]},{"nativeSrc":"5347:63:24","nodeType":"YulAssignment","src":"5347:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5382:9:24","nodeType":"YulIdentifier","src":"5382:9:24"},{"name":"offset","nativeSrc":"5393:6:24","nodeType":"YulIdentifier","src":"5393:6:24"}],"functionName":{"name":"add","nativeSrc":"5378:3:24","nodeType":"YulIdentifier","src":"5378:3:24"},"nativeSrc":"5378:22:24","nodeType":"YulFunctionCall","src":"5378:22:24"},{"name":"dataEnd","nativeSrc":"5402:7:24","nodeType":"YulIdentifier","src":"5402:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"5357:20:24","nodeType":"YulIdentifier","src":"5357:20:24"},"nativeSrc":"5357:53:24","nodeType":"YulFunctionCall","src":"5357:53:24"},"variableNames":[{"name":"value0","nativeSrc":"5347:6:24","nodeType":"YulIdentifier","src":"5347:6:24"}]}]},{"nativeSrc":"5430:118:24","nodeType":"YulBlock","src":"5430:118:24","statements":[{"nativeSrc":"5445:16:24","nodeType":"YulVariableDeclaration","src":"5445:16:24","value":{"kind":"number","nativeSrc":"5459:2:24","nodeType":"YulLiteral","src":"5459:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"5449:6:24","nodeType":"YulTypedName","src":"5449:6:24","type":""}]},{"nativeSrc":"5475:63:24","nodeType":"YulAssignment","src":"5475:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5510:9:24","nodeType":"YulIdentifier","src":"5510:9:24"},{"name":"offset","nativeSrc":"5521:6:24","nodeType":"YulIdentifier","src":"5521:6:24"}],"functionName":{"name":"add","nativeSrc":"5506:3:24","nodeType":"YulIdentifier","src":"5506:3:24"},"nativeSrc":"5506:22:24","nodeType":"YulFunctionCall","src":"5506:22:24"},{"name":"dataEnd","nativeSrc":"5530:7:24","nodeType":"YulIdentifier","src":"5530:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"5485:20:24","nodeType":"YulIdentifier","src":"5485:20:24"},"nativeSrc":"5485:53:24","nodeType":"YulFunctionCall","src":"5485:53:24"},"variableNames":[{"name":"value1","nativeSrc":"5475:6:24","nodeType":"YulIdentifier","src":"5475:6:24"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"5081:474:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5126:9:24","nodeType":"YulTypedName","src":"5126:9:24","type":""},{"name":"dataEnd","nativeSrc":"5137:7:24","nodeType":"YulTypedName","src":"5137:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5149:6:24","nodeType":"YulTypedName","src":"5149:6:24","type":""},{"name":"value1","nativeSrc":"5157:6:24","nodeType":"YulTypedName","src":"5157:6:24","type":""}],"src":"5081:474:24"},{"body":{"nativeSrc":"5589:152:24","nodeType":"YulBlock","src":"5589:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5606:1:24","nodeType":"YulLiteral","src":"5606:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"5609:77:24","nodeType":"YulLiteral","src":"5609:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"5599:6:24","nodeType":"YulIdentifier","src":"5599:6:24"},"nativeSrc":"5599:88:24","nodeType":"YulFunctionCall","src":"5599:88:24"},"nativeSrc":"5599:88:24","nodeType":"YulExpressionStatement","src":"5599:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5703:1:24","nodeType":"YulLiteral","src":"5703:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"5706:4:24","nodeType":"YulLiteral","src":"5706:4:24","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"5696:6:24","nodeType":"YulIdentifier","src":"5696:6:24"},"nativeSrc":"5696:15:24","nodeType":"YulFunctionCall","src":"5696:15:24"},"nativeSrc":"5696:15:24","nodeType":"YulExpressionStatement","src":"5696:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5727:1:24","nodeType":"YulLiteral","src":"5727:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"5730:4:24","nodeType":"YulLiteral","src":"5730:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5720:6:24","nodeType":"YulIdentifier","src":"5720:6:24"},"nativeSrc":"5720:15:24","nodeType":"YulFunctionCall","src":"5720:15:24"},"nativeSrc":"5720:15:24","nodeType":"YulExpressionStatement","src":"5720:15:24"}]},"name":"panic_error_0x22","nativeSrc":"5561:180:24","nodeType":"YulFunctionDefinition","src":"5561:180:24"},{"body":{"nativeSrc":"5798:269:24","nodeType":"YulBlock","src":"5798:269:24","statements":[{"nativeSrc":"5808:22:24","nodeType":"YulAssignment","src":"5808:22:24","value":{"arguments":[{"name":"data","nativeSrc":"5822:4:24","nodeType":"YulIdentifier","src":"5822:4:24"},{"kind":"number","nativeSrc":"5828:1:24","nodeType":"YulLiteral","src":"5828:1:24","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"5818:3:24","nodeType":"YulIdentifier","src":"5818:3:24"},"nativeSrc":"5818:12:24","nodeType":"YulFunctionCall","src":"5818:12:24"},"variableNames":[{"name":"length","nativeSrc":"5808:6:24","nodeType":"YulIdentifier","src":"5808:6:24"}]},{"nativeSrc":"5839:38:24","nodeType":"YulVariableDeclaration","src":"5839:38:24","value":{"arguments":[{"name":"data","nativeSrc":"5869:4:24","nodeType":"YulIdentifier","src":"5869:4:24"},{"kind":"number","nativeSrc":"5875:1:24","nodeType":"YulLiteral","src":"5875:1:24","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"5865:3:24","nodeType":"YulIdentifier","src":"5865:3:24"},"nativeSrc":"5865:12:24","nodeType":"YulFunctionCall","src":"5865:12:24"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"5843:18:24","nodeType":"YulTypedName","src":"5843:18:24","type":""}]},{"body":{"nativeSrc":"5916:51:24","nodeType":"YulBlock","src":"5916:51:24","statements":[{"nativeSrc":"5930:27:24","nodeType":"YulAssignment","src":"5930:27:24","value":{"arguments":[{"name":"length","nativeSrc":"5944:6:24","nodeType":"YulIdentifier","src":"5944:6:24"},{"kind":"number","nativeSrc":"5952:4:24","nodeType":"YulLiteral","src":"5952:4:24","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"5940:3:24","nodeType":"YulIdentifier","src":"5940:3:24"},"nativeSrc":"5940:17:24","nodeType":"YulFunctionCall","src":"5940:17:24"},"variableNames":[{"name":"length","nativeSrc":"5930:6:24","nodeType":"YulIdentifier","src":"5930:6:24"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5896:18:24","nodeType":"YulIdentifier","src":"5896:18:24"}],"functionName":{"name":"iszero","nativeSrc":"5889:6:24","nodeType":"YulIdentifier","src":"5889:6:24"},"nativeSrc":"5889:26:24","nodeType":"YulFunctionCall","src":"5889:26:24"},"nativeSrc":"5886:81:24","nodeType":"YulIf","src":"5886:81:24"},{"body":{"nativeSrc":"6019:42:24","nodeType":"YulBlock","src":"6019:42:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nativeSrc":"6033:16:24","nodeType":"YulIdentifier","src":"6033:16:24"},"nativeSrc":"6033:18:24","nodeType":"YulFunctionCall","src":"6033:18:24"},"nativeSrc":"6033:18:24","nodeType":"YulExpressionStatement","src":"6033:18:24"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5983:18:24","nodeType":"YulIdentifier","src":"5983:18:24"},{"arguments":[{"name":"length","nativeSrc":"6006:6:24","nodeType":"YulIdentifier","src":"6006:6:24"},{"kind":"number","nativeSrc":"6014:2:24","nodeType":"YulLiteral","src":"6014:2:24","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"6003:2:24","nodeType":"YulIdentifier","src":"6003:2:24"},"nativeSrc":"6003:14:24","nodeType":"YulFunctionCall","src":"6003:14:24"}],"functionName":{"name":"eq","nativeSrc":"5980:2:24","nodeType":"YulIdentifier","src":"5980:2:24"},"nativeSrc":"5980:38:24","nodeType":"YulFunctionCall","src":"5980:38:24"},"nativeSrc":"5977:84:24","nodeType":"YulIf","src":"5977:84:24"}]},"name":"extract_byte_array_length","nativeSrc":"5747:320:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"5782:4:24","nodeType":"YulTypedName","src":"5782:4:24","type":""}],"returnVariables":[{"name":"length","nativeSrc":"5791:6:24","nodeType":"YulTypedName","src":"5791:6:24","type":""}],"src":"5747:320:24"},{"body":{"nativeSrc":"6179:119:24","nodeType":"YulBlock","src":"6179:119:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6201:6:24","nodeType":"YulIdentifier","src":"6201:6:24"},{"kind":"number","nativeSrc":"6209:1:24","nodeType":"YulLiteral","src":"6209:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6197:3:24","nodeType":"YulIdentifier","src":"6197:3:24"},"nativeSrc":"6197:14:24","nodeType":"YulFunctionCall","src":"6197:14:24"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nativeSrc":"6213:34:24","nodeType":"YulLiteral","src":"6213:34:24","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nativeSrc":"6190:6:24","nodeType":"YulIdentifier","src":"6190:6:24"},"nativeSrc":"6190:58:24","nodeType":"YulFunctionCall","src":"6190:58:24"},"nativeSrc":"6190:58:24","nodeType":"YulExpressionStatement","src":"6190:58:24"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6269:6:24","nodeType":"YulIdentifier","src":"6269:6:24"},{"kind":"number","nativeSrc":"6277:2:24","nodeType":"YulLiteral","src":"6277:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6265:3:24","nodeType":"YulIdentifier","src":"6265:3:24"},"nativeSrc":"6265:15:24","nodeType":"YulFunctionCall","src":"6265:15:24"},{"hexValue":"616c616e6365","kind":"string","nativeSrc":"6282:8:24","nodeType":"YulLiteral","src":"6282:8:24","type":"","value":"alance"}],"functionName":{"name":"mstore","nativeSrc":"6258:6:24","nodeType":"YulIdentifier","src":"6258:6:24"},"nativeSrc":"6258:33:24","nodeType":"YulFunctionCall","src":"6258:33:24"},"nativeSrc":"6258:33:24","nodeType":"YulExpressionStatement","src":"6258:33:24"}]},"name":"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","nativeSrc":"6073:225:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"6171:6:24","nodeType":"YulTypedName","src":"6171:6:24","type":""}],"src":"6073:225:24"},{"body":{"nativeSrc":"6450:220:24","nodeType":"YulBlock","src":"6450:220:24","statements":[{"nativeSrc":"6460:74:24","nodeType":"YulAssignment","src":"6460:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"6526:3:24","nodeType":"YulIdentifier","src":"6526:3:24"},{"kind":"number","nativeSrc":"6531:2:24","nodeType":"YulLiteral","src":"6531:2:24","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"6467:58:24","nodeType":"YulIdentifier","src":"6467:58:24"},"nativeSrc":"6467:67:24","nodeType":"YulFunctionCall","src":"6467:67:24"},"variableNames":[{"name":"pos","nativeSrc":"6460:3:24","nodeType":"YulIdentifier","src":"6460:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"6632:3:24","nodeType":"YulIdentifier","src":"6632:3:24"}],"functionName":{"name":"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","nativeSrc":"6543:88:24","nodeType":"YulIdentifier","src":"6543:88:24"},"nativeSrc":"6543:93:24","nodeType":"YulFunctionCall","src":"6543:93:24"},"nativeSrc":"6543:93:24","nodeType":"YulExpressionStatement","src":"6543:93:24"},{"nativeSrc":"6645:19:24","nodeType":"YulAssignment","src":"6645:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"6656:3:24","nodeType":"YulIdentifier","src":"6656:3:24"},{"kind":"number","nativeSrc":"6661:2:24","nodeType":"YulLiteral","src":"6661:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6652:3:24","nodeType":"YulIdentifier","src":"6652:3:24"},"nativeSrc":"6652:12:24","nodeType":"YulFunctionCall","src":"6652:12:24"},"variableNames":[{"name":"end","nativeSrc":"6645:3:24","nodeType":"YulIdentifier","src":"6645:3:24"}]}]},"name":"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack","nativeSrc":"6304:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6438:3:24","nodeType":"YulTypedName","src":"6438:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6446:3:24","nodeType":"YulTypedName","src":"6446:3:24","type":""}],"src":"6304:366:24"},{"body":{"nativeSrc":"6847:248:24","nodeType":"YulBlock","src":"6847:248:24","statements":[{"nativeSrc":"6857:26:24","nodeType":"YulAssignment","src":"6857:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"6869:9:24","nodeType":"YulIdentifier","src":"6869:9:24"},{"kind":"number","nativeSrc":"6880:2:24","nodeType":"YulLiteral","src":"6880:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6865:3:24","nodeType":"YulIdentifier","src":"6865:3:24"},"nativeSrc":"6865:18:24","nodeType":"YulFunctionCall","src":"6865:18:24"},"variableNames":[{"name":"tail","nativeSrc":"6857:4:24","nodeType":"YulIdentifier","src":"6857:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6904:9:24","nodeType":"YulIdentifier","src":"6904:9:24"},{"kind":"number","nativeSrc":"6915:1:24","nodeType":"YulLiteral","src":"6915:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6900:3:24","nodeType":"YulIdentifier","src":"6900:3:24"},"nativeSrc":"6900:17:24","nodeType":"YulFunctionCall","src":"6900:17:24"},{"arguments":[{"name":"tail","nativeSrc":"6923:4:24","nodeType":"YulIdentifier","src":"6923:4:24"},{"name":"headStart","nativeSrc":"6929:9:24","nodeType":"YulIdentifier","src":"6929:9:24"}],"functionName":{"name":"sub","nativeSrc":"6919:3:24","nodeType":"YulIdentifier","src":"6919:3:24"},"nativeSrc":"6919:20:24","nodeType":"YulFunctionCall","src":"6919:20:24"}],"functionName":{"name":"mstore","nativeSrc":"6893:6:24","nodeType":"YulIdentifier","src":"6893:6:24"},"nativeSrc":"6893:47:24","nodeType":"YulFunctionCall","src":"6893:47:24"},"nativeSrc":"6893:47:24","nodeType":"YulExpressionStatement","src":"6893:47:24"},{"nativeSrc":"6949:139:24","nodeType":"YulAssignment","src":"6949:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"7083:4:24","nodeType":"YulIdentifier","src":"7083:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack","nativeSrc":"6957:124:24","nodeType":"YulIdentifier","src":"6957:124:24"},"nativeSrc":"6957:131:24","nodeType":"YulFunctionCall","src":"6957:131:24"},"variableNames":[{"name":"tail","nativeSrc":"6949:4:24","nodeType":"YulIdentifier","src":"6949:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6676:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6827:9:24","nodeType":"YulTypedName","src":"6827:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6842:4:24","nodeType":"YulTypedName","src":"6842:4:24","type":""}],"src":"6676:419:24"},{"body":{"nativeSrc":"7207:121:24","nodeType":"YulBlock","src":"7207:121:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7229:6:24","nodeType":"YulIdentifier","src":"7229:6:24"},{"kind":"number","nativeSrc":"7237:1:24","nodeType":"YulLiteral","src":"7237:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7225:3:24","nodeType":"YulIdentifier","src":"7225:3:24"},"nativeSrc":"7225:14:24","nodeType":"YulFunctionCall","src":"7225:14:24"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732061","kind":"string","nativeSrc":"7241:34:24","nodeType":"YulLiteral","src":"7241:34:24","type":"","value":"ERC20: transfer amount exceeds a"}],"functionName":{"name":"mstore","nativeSrc":"7218:6:24","nodeType":"YulIdentifier","src":"7218:6:24"},"nativeSrc":"7218:58:24","nodeType":"YulFunctionCall","src":"7218:58:24"},"nativeSrc":"7218:58:24","nodeType":"YulExpressionStatement","src":"7218:58:24"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7297:6:24","nodeType":"YulIdentifier","src":"7297:6:24"},{"kind":"number","nativeSrc":"7305:2:24","nodeType":"YulLiteral","src":"7305:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7293:3:24","nodeType":"YulIdentifier","src":"7293:3:24"},"nativeSrc":"7293:15:24","nodeType":"YulFunctionCall","src":"7293:15:24"},{"hexValue":"6c6c6f77616e6365","kind":"string","nativeSrc":"7310:10:24","nodeType":"YulLiteral","src":"7310:10:24","type":"","value":"llowance"}],"functionName":{"name":"mstore","nativeSrc":"7286:6:24","nodeType":"YulIdentifier","src":"7286:6:24"},"nativeSrc":"7286:35:24","nodeType":"YulFunctionCall","src":"7286:35:24"},"nativeSrc":"7286:35:24","nodeType":"YulExpressionStatement","src":"7286:35:24"}]},"name":"store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330","nativeSrc":"7101:227:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"7199:6:24","nodeType":"YulTypedName","src":"7199:6:24","type":""}],"src":"7101:227:24"},{"body":{"nativeSrc":"7480:220:24","nodeType":"YulBlock","src":"7480:220:24","statements":[{"nativeSrc":"7490:74:24","nodeType":"YulAssignment","src":"7490:74:24","value":{"arguments":[{"name":"pos","nativeSrc":"7556:3:24","nodeType":"YulIdentifier","src":"7556:3:24"},{"kind":"number","nativeSrc":"7561:2:24","nodeType":"YulLiteral","src":"7561:2:24","type":"","value":"40"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7497:58:24","nodeType":"YulIdentifier","src":"7497:58:24"},"nativeSrc":"7497:67:24","nodeType":"YulFunctionCall","src":"7497:67:24"},"variableNames":[{"name":"pos","nativeSrc":"7490:3:24","nodeType":"YulIdentifier","src":"7490:3:24"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"7662:3:24","nodeType":"YulIdentifier","src":"7662:3:24"}],"functionName":{"name":"store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330","nativeSrc":"7573:88:24","nodeType":"YulIdentifier","src":"7573:88:24"},"nativeSrc":"7573:93:24","nodeType":"YulFunctionCall","src":"7573:93:24"},"nativeSrc":"7573:93:24","nodeType":"YulExpressionStatement","src":"7573:93:24"},{"nativeSrc":"7675:19:24","nodeType":"YulAssignment","src":"7675:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"7686:3:24","nodeType":"YulIdentifier","src":"7686:3:24"},{"kind":"number","nativeSrc":"7691:2:24","nodeType":"YulLiteral","src":"7691:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7682:3:24","nodeType":"YulIdentifier","src":"7682:3:24"},"nativeSrc":"7682:12:24","nodeType":"YulFunctionCall","src":"7682:12:24"},"variableNames":[{"name":"end","nativeSrc":"7675:3:24","nodeType":"YulIdentifier","src":"7675:3:24"}]}]},"name":"abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack","nativeSrc":"7334:366:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7468:3:24","nodeType":"YulTypedName","src":"7468:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7476:3:24","nodeType":"YulTypedName","src":"7476:3:24","type":""}],"src":"7334:366:24"},{"body":{"nativeSrc":"7877:248:24","nodeType":"YulBlock","src":"7877:248:24","statements":[{"nativeSrc":"7887:26:24","nodeType":"YulAssignment","src":"7887:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"7899:9:24","nodeType":"YulIdentifier","src":"7899:9:24"},{"kind":"number","nativeSrc":"7910:2:24","nodeType":"YulLiteral","src":"7910:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7895:3:24","nodeType":"YulIdentifier","src":"7895:3:24"},"nativeSrc":"7895:18:24","nodeType":"YulFunctionCall","src":"7895:18:24"},"variableNames":[{"name":"tail","nativeSrc":"7887:4:24","nodeType":"YulIdentifier","src":"7887:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7934:9:24","nodeType":"YulIdentifier","src":"7934:9:24"},{"kind":"number","nativeSrc":"7945:1:24","nodeType":"YulLiteral","src":"7945:1:24","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7930:3:24","nodeType":"YulIdentifier","src":"7930:3:24"},"nativeSrc":"7930:17:24","nodeType":"YulFunctionCall","src":"7930:17:24"},{"arguments":[{"name":"tail","nativeSrc":"7953:4:24","nodeType":"YulIdentifier","src":"7953:4:24"},{"name":"headStart","nativeSrc":"7959:9:24","nodeType":"YulIdentifier","src":"7959:9:24"}],"functionName":{"name":"sub","nativeSrc":"7949:3:24","nodeType":"YulIdentifier","src":"7949:3:24"},"nativeSrc":"7949:20:24","nodeType":"YulFunctionCall","src":"7949:20:24"}],"functionName":{"name":"mstore","nativeSrc":"7923:6:24","nodeType":"YulIdentifier","src":"7923:6:24"},"nativeSrc":"7923:47:24","nodeType":"YulFunctionCall","src":"7923:47:24"},"nativeSrc":"7923:47:24","nodeType":"YulExpressionStatement","src":"7923:47:24"},{"nativeSrc":"7979:139:24","nodeType":"YulAssignment","src":"7979:139:24","value":{"arguments":[{"name":"tail","nativeSrc":"8113:4:24","nodeType":"YulIdentifier","src":"8113:4:24"}],"functionName":{"name":"abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack","nativeSrc":"7987:124:24","nodeType":"YulIdentifier","src":"7987:124:24"},"nativeSrc":"7987:131:24","nodeType":"YulFunctionCall","src":"7987:131:24"},"variableNames":[{"name":"tail","nativeSrc":"7979:4:24","nodeType":"YulIdentifier","src":"7979:4:24"}]}]},"name":"abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7706:419:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7857:9:24","nodeType":"YulTypedName","src":"7857:9:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7872:4:24","nodeType":"YulTypedName","src":"7872:4:24","type":""}],"src":"7706:419:24"},{"body":{"nativeSrc":"8159:152:24","nodeType":"YulBlock","src":"8159:152:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8176:1:24","nodeType":"YulLiteral","src":"8176:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"8179:77:24","nodeType":"YulLiteral","src":"8179:77:24","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"8169:6:24","nodeType":"YulIdentifier","src":"8169:6:24"},"nativeSrc":"8169:88:24","nodeType":"YulFunctionCall","src":"8169:88:24"},"nativeSrc":"8169:88:24","nodeType":"YulExpressionStatement","src":"8169:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8273:1:24","nodeType":"YulLiteral","src":"8273:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"8276:4:24","nodeType":"YulLiteral","src":"8276:4:24","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"8266:6:24","nodeType":"YulIdentifier","src":"8266:6:24"},"nativeSrc":"8266:15:24","nodeType":"YulFunctionCall","src":"8266:15:24"},"nativeSrc":"8266:15:24","nodeType":"YulExpressionStatement","src":"8266:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8297:1:24","nodeType":"YulLiteral","src":"8297:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"8300:4:24","nodeType":"YulLiteral","src":"8300:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8290:6:24","nodeType":"YulIdentifier","src":"8290:6:24"},"nativeSrc":"8290:15:24","nodeType":"YulFunctionCall","src":"8290:15:24"},"nativeSrc":"8290:15:24","nodeType":"YulExpressionStatement","src":"8290:15:24"}]},"name":"panic_error_0x11","nativeSrc":"8131:180:24","nodeType":"YulFunctionDefinition","src":"8131:180:24"},{"body":{"nativeSrc":"8362:149:24","nodeType":"YulBlock","src":"8362:149:24","statements":[{"nativeSrc":"8372:25:24","nodeType":"YulAssignment","src":"8372:25:24","value":{"arguments":[{"name":"x","nativeSrc":"8395:1:24","nodeType":"YulIdentifier","src":"8395:1:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"8377:17:24","nodeType":"YulIdentifier","src":"8377:17:24"},"nativeSrc":"8377:20:24","nodeType":"YulFunctionCall","src":"8377:20:24"},"variableNames":[{"name":"x","nativeSrc":"8372:1:24","nodeType":"YulIdentifier","src":"8372:1:24"}]},{"nativeSrc":"8406:25:24","nodeType":"YulAssignment","src":"8406:25:24","value":{"arguments":[{"name":"y","nativeSrc":"8429:1:24","nodeType":"YulIdentifier","src":"8429:1:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"8411:17:24","nodeType":"YulIdentifier","src":"8411:17:24"},"nativeSrc":"8411:20:24","nodeType":"YulFunctionCall","src":"8411:20:24"},"variableNames":[{"name":"y","nativeSrc":"8406:1:24","nodeType":"YulIdentifier","src":"8406:1:24"}]},{"nativeSrc":"8440:17:24","nodeType":"YulAssignment","src":"8440:17:24","value":{"arguments":[{"name":"x","nativeSrc":"8452:1:24","nodeType":"YulIdentifier","src":"8452:1:24"},{"name":"y","nativeSrc":"8455:1:24","nodeType":"YulIdentifier","src":"8455:1:24"}],"functionName":{"name":"sub","nativeSrc":"8448:3:24","nodeType":"YulIdentifier","src":"8448:3:24"},"nativeSrc":"8448:9:24","nodeType":"YulFunctionCall","src":"8448:9:24"},"variableNames":[{"name":"diff","nativeSrc":"8440:4:24","nodeType":"YulIdentifier","src":"8440:4:24"}]},{"body":{"nativeSrc":"8482:22:24","nodeType":"YulBlock","src":"8482:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"8484:16:24","nodeType":"YulIdentifier","src":"8484:16:24"},"nativeSrc":"8484:18:24","nodeType":"YulFunctionCall","src":"8484:18:24"},"nativeSrc":"8484:18:24","nodeType":"YulExpressionStatement","src":"8484:18:24"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"8473:4:24","nodeType":"YulIdentifier","src":"8473:4:24"},{"name":"x","nativeSrc":"8479:1:24","nodeType":"YulIdentifier","src":"8479:1:24"}],"functionName":{"name":"gt","nativeSrc":"8470:2:24","nodeType":"YulIdentifier","src":"8470:2:24"},"nativeSrc":"8470:11:24","nodeType":"YulFunctionCall","src":"8470:11:24"},"nativeSrc":"8467:37:24","nodeType":"YulIf","src":"8467:37:24"}]},"name":"checked_sub_t_uint256","nativeSrc":"8317:194:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"8348:1:24","nodeType":"YulTypedName","src":"8348:1:24","type":""},{"name":"y","nativeSrc":"8351:1:24","nodeType":"YulTypedName","src":"8351:1:24","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"8357:4:24","nodeType":"YulTypedName","src":"8357:4:24","type":""}],"src":"8317:194:24"},{"body":{"nativeSrc":"8561:147:24","nodeType":"YulBlock","src":"8561:147:24","statements":[{"nativeSrc":"8571:25:24","nodeType":"YulAssignment","src":"8571:25:24","value":{"arguments":[{"name":"x","nativeSrc":"8594:1:24","nodeType":"YulIdentifier","src":"8594:1:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"8576:17:24","nodeType":"YulIdentifier","src":"8576:17:24"},"nativeSrc":"8576:20:24","nodeType":"YulFunctionCall","src":"8576:20:24"},"variableNames":[{"name":"x","nativeSrc":"8571:1:24","nodeType":"YulIdentifier","src":"8571:1:24"}]},{"nativeSrc":"8605:25:24","nodeType":"YulAssignment","src":"8605:25:24","value":{"arguments":[{"name":"y","nativeSrc":"8628:1:24","nodeType":"YulIdentifier","src":"8628:1:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"8610:17:24","nodeType":"YulIdentifier","src":"8610:17:24"},"nativeSrc":"8610:20:24","nodeType":"YulFunctionCall","src":"8610:20:24"},"variableNames":[{"name":"y","nativeSrc":"8605:1:24","nodeType":"YulIdentifier","src":"8605:1:24"}]},{"nativeSrc":"8639:16:24","nodeType":"YulAssignment","src":"8639:16:24","value":{"arguments":[{"name":"x","nativeSrc":"8650:1:24","nodeType":"YulIdentifier","src":"8650:1:24"},{"name":"y","nativeSrc":"8653:1:24","nodeType":"YulIdentifier","src":"8653:1:24"}],"functionName":{"name":"add","nativeSrc":"8646:3:24","nodeType":"YulIdentifier","src":"8646:3:24"},"nativeSrc":"8646:9:24","nodeType":"YulFunctionCall","src":"8646:9:24"},"variableNames":[{"name":"sum","nativeSrc":"8639:3:24","nodeType":"YulIdentifier","src":"8639:3:24"}]},{"body":{"nativeSrc":"8679:22:24","nodeType":"YulBlock","src":"8679:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"8681:16:24","nodeType":"YulIdentifier","src":"8681:16:24"},"nativeSrc":"8681:18:24","nodeType":"YulFunctionCall","src":"8681:18:24"},"nativeSrc":"8681:18:24","nodeType":"YulExpressionStatement","src":"8681:18:24"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"8671:1:24","nodeType":"YulIdentifier","src":"8671:1:24"},{"name":"sum","nativeSrc":"8674:3:24","nodeType":"YulIdentifier","src":"8674:3:24"}],"functionName":{"name":"gt","nativeSrc":"8668:2:24","nodeType":"YulIdentifier","src":"8668:2:24"},"nativeSrc":"8668:10:24","nodeType":"YulFunctionCall","src":"8668:10:24"},"nativeSrc":"8665:36:24","nodeType":"YulIf","src":"8665:36:24"}]},"name":"checked_add_t_uint256","nativeSrc":"8517:191:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"8548:1:24","nodeType":"YulTypedName","src":"8548:1:24","type":""},{"name":"y","nativeSrc":"8551:1:24","nodeType":"YulTypedName","src":"8551:1:24","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"8557:3:24","nodeType":"YulTypedName","src":"8557:3:24","type":""}],"src":"8517:191:24"}]},"contents":"{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n mcopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds b\")\n\n mstore(add(memPtr, 32), \"alance\")\n\n }\n\n function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds a\")\n\n mstore(add(memPtr, 32), \"llowance\")\n\n }\n\n function abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n}\n","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561000f575f80fd5b5060043610610091575f3560e01c806340c10f191161006457806340c10f191461013157806370a082311461014d57806395d89b411461017d578063a9059cbb1461019b578063dd62ed3e146101cb57610091565b806306fdde0314610095578063095ea7b3146100b357806323b872dd146100e3578063313ce56714610113575b5f80fd5b61009d6101fb565b6040516100aa9190610854565b60405180910390f35b6100cd60048036038101906100c89190610905565b610286565b6040516100da919061095d565b60405180910390f35b6100fd60048036038101906100f89190610976565b61030e565b60405161010a919061095d565b60405180910390f35b61011b610589565b60405161012891906109e1565b60405180910390f35b61014b60048036038101906101469190610905565b61059b565b005b610167600480360381019061016291906109fa565b6105f2565b6040516101749190610a34565b60405180910390f35b610185610607565b6040516101929190610854565b60405180910390f35b6101b560048036038101906101b09190610905565b610693565b6040516101c2919061095d565b60405180910390f35b6101e560048036038101906101e09190610a4d565b6107c4565b6040516101f29190610a34565b60405180910390f35b5f805461020790610ab8565b80601f016020809104026020016040519081016040528092919081815260200182805461023390610ab8565b801561027e5780601f106102555761010080835404028352916020019161027e565b820191905f5260205f20905b81548152906001019060200180831161026157829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001905092915050565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561038f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038690610b58565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044190610be6565b60405180910390fd5b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104969190610c31565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104e99190610c64565b925050819055508160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105779190610c31565b92505081905550600190509392505050565b60025f9054906101000a900460ff1681565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105e79190610c64565b925050819055505050565b6003602052805f5260405f205f915090505481565b6001805461061490610ab8565b80601f016020809104026020016040519081016040528092919081815260200182805461064090610ab8565b801561068b5780601f106106625761010080835404028352916020019161068b565b820191905f5260205f20905b81548152906001019060200180831161066e57829003601f168201915b505050505081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90610b58565b60405180910390fd5b8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107609190610c31565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107b39190610c64565b925050819055506001905092915050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610826826107e4565b61083081856107ee565b93506108408185602086016107fe565b6108498161080c565b840191505092915050565b5f6020820190508181035f83015261086c818461081c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108a182610878565b9050919050565b6108b181610897565b81146108bb575f80fd5b50565b5f813590506108cc816108a8565b92915050565b5f819050919050565b6108e4816108d2565b81146108ee575f80fd5b50565b5f813590506108ff816108db565b92915050565b5f806040838503121561091b5761091a610874565b5b5f610928858286016108be565b9250506020610939858286016108f1565b9150509250929050565b5f8115159050919050565b61095781610943565b82525050565b5f6020820190506109705f83018461094e565b92915050565b5f805f6060848603121561098d5761098c610874565b5b5f61099a868287016108be565b93505060206109ab868287016108be565b92505060406109bc868287016108f1565b9150509250925092565b5f60ff82169050919050565b6109db816109c6565b82525050565b5f6020820190506109f45f8301846109d2565b92915050565b5f60208284031215610a0f57610a0e610874565b5b5f610a1c848285016108be565b91505092915050565b610a2e816108d2565b82525050565b5f602082019050610a475f830184610a25565b92915050565b5f8060408385031215610a6357610a62610874565b5b5f610a70858286016108be565b9250506020610a81858286016108be565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610acf57607f821691505b602082108103610ae257610ae1610a8b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f610b426026836107ee565b9150610b4d82610ae8565b604082019050919050565b5f6020820190508181035f830152610b6f81610b36565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f610bd06028836107ee565b9150610bdb82610b76565b604082019050919050565b5f6020820190508181035f830152610bfd81610bc4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c3b826108d2565b9150610c46836108d2565b9250828203905081811115610c5e57610c5d610c04565b5b92915050565b5f610c6e826108d2565b9150610c79836108d2565b9250828201905080821115610c9157610c90610c04565b5b9291505056fea2646970667358221220d980f1b95d92986aca3cba704275c02bcc7167fe1ad3089b07ec23124b960dfd64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x91 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1CB JUMPI PUSH2 0x91 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x113 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x9D PUSH2 0x1FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x854 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x905 JUMP JUMPDEST PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDA SWAP2 SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10A SWAP2 SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x589 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x905 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x5F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x174 SWAP2 SWAP1 PUSH2 0xA34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x185 PUSH2 0x607 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x192 SWAP2 SWAP1 PUSH2 0x854 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B0 SWAP2 SWAP1 PUSH2 0x905 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C2 SWAP2 SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E0 SWAP2 SWAP1 PUSH2 0xA4D JUMP JUMPDEST PUSH2 0x7C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0xA34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x207 SWAP1 PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x233 SWAP1 PUSH2 0xAB8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x27E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x255 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x27E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x261 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x4 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x3 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD LT ISZERO PUSH2 0x38F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x386 SWAP1 PUSH2 0xB58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x4 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x441 SWAP1 PUSH2 0xBE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x496 SWAP2 SWAP1 PUSH2 0xC31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x4E9 SWAP2 SWAP1 PUSH2 0xC64 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x4 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x577 SWAP2 SWAP1 PUSH2 0xC31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x5E7 SWAP2 SWAP1 PUSH2 0xC64 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x614 SWAP1 PUSH2 0xAB8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x640 SWAP1 PUSH2 0xAB8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x68B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x662 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x68B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x66E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x3 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD LT ISZERO PUSH2 0x714 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x70B SWAP1 PUSH2 0xB58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x760 SWAP2 SWAP1 PUSH2 0xC31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x7B3 SWAP2 SWAP1 PUSH2 0xC64 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP2 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x826 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x830 DUP2 DUP6 PUSH2 0x7EE JUMP JUMPDEST SWAP4 POP PUSH2 0x840 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x849 DUP2 PUSH2 0x80C JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x86C DUP2 DUP5 PUSH2 0x81C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x8A1 DUP3 PUSH2 0x878 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8B1 DUP2 PUSH2 0x897 JUMP JUMPDEST DUP2 EQ PUSH2 0x8BB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8CC DUP2 PUSH2 0x8A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8E4 DUP2 PUSH2 0x8D2 JUMP JUMPDEST DUP2 EQ PUSH2 0x8EE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8FF DUP2 PUSH2 0x8DB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x91B JUMPI PUSH2 0x91A PUSH2 0x874 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x928 DUP6 DUP3 DUP7 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x939 DUP6 DUP3 DUP7 ADD PUSH2 0x8F1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x957 DUP2 PUSH2 0x943 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x970 PUSH0 DUP4 ADD DUP5 PUSH2 0x94E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x98D JUMPI PUSH2 0x98C PUSH2 0x874 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x99A DUP7 DUP3 DUP8 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x9AB DUP7 DUP3 DUP8 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x9BC DUP7 DUP3 DUP8 ADD PUSH2 0x8F1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9DB DUP2 PUSH2 0x9C6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9F4 PUSH0 DUP4 ADD DUP5 PUSH2 0x9D2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA0F JUMPI PUSH2 0xA0E PUSH2 0x874 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xA1C DUP5 DUP3 DUP6 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA2E DUP2 PUSH2 0x8D2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xA47 PUSH0 DUP4 ADD DUP5 PUSH2 0xA25 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA63 JUMPI PUSH2 0xA62 PUSH2 0x874 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xA70 DUP6 DUP3 DUP7 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA81 DUP6 DUP3 DUP7 ADD PUSH2 0x8BE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xACF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xAE2 JUMPI PUSH2 0xAE1 PUSH2 0xA8B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0xB42 PUSH1 0x26 DUP4 PUSH2 0x7EE JUMP JUMPDEST SWAP2 POP PUSH2 0xB4D DUP3 PUSH2 0xAE8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xB6F DUP2 PUSH2 0xB36 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH0 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0xBD0 PUSH1 0x28 DUP4 PUSH2 0x7EE JUMP JUMPDEST SWAP2 POP PUSH2 0xBDB DUP3 PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xBFD DUP2 PUSH2 0xBC4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xC3B DUP3 PUSH2 0x8D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xC46 DUP4 PUSH2 0x8D2 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0xC5E JUMPI PUSH2 0xC5D PUSH2 0xC04 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC6E DUP3 PUSH2 0x8D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xC79 DUP4 PUSH2 0x8D2 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xC91 JUMPI PUSH2 0xC90 PUSH2 0xC04 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 DUP1 CALL 0xB9 TSTORE SWAP3 SWAP9 PUSH11 0xCA3CBA704275C02BCC7167 INVALID BYTE 0xD3 ADDMOD SWAP12 SMOD 0xEC 0x23 SLT 0x4B SWAP7 0xD REVERT PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"104:1417:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;129:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;787:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;944:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;179:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1428:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;206:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;153:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;491:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;256:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;129:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;787:151::-;855:4;904:6;871:9;:21;881:10;871:21;;;;;;;;;;;;;;;:30;893:7;871:30;;;;;;;;;;;;;;;:39;;;;927:4;920:11;;787:151;;;;:::o;944:478::-;1026:4;1064:6;1046:9;:15;1056:4;1046:15;;;;;;;;;;;;;;;;:24;1042:103;;;1086:48;;;;;;;;;;:::i;:::-;;;;;;;;1042:103;1188:6;1158:9;:15;1168:4;1158:15;;;;;;;;;;;;;;;:27;1174:10;1158:27;;;;;;;;;;;;;;;;:36;1154:117;;;1210:50;;;;;;;;;;:::i;:::-;;;;;;;;1154:117;1308:6;1289:9;:15;1299:4;1289:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;1341:6;1324:9;:13;1334:2;1324:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;1388:6;1357:9;:15;1367:4;1357:15;;;;;;;;;;;;;;;:27;1373:10;1357:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1411:4;1404:11;;944:478;;;;;:::o;179:21::-;;;;;;;;;;;;;:::o;1428:91::-;1506:6;1489:9;:13;1499:2;1489:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;1428:91;;:::o;206:44::-;;;;;;;;;;;;;;;;;:::o;153:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;491:290::-;555:4;599:6;575:9;:21;585:10;575:21;;;;;;;;;;;;;;;;:30;571:109;;;621:48;;;;;;;;;;:::i;:::-;;;;;;;;571:109;714:6;689:9;:21;699:10;689:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;747:6;730:9;:13;740:2;730:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;770:4;763:11;;491:290;;;;:::o;256:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:24:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:619::-;3416:6;3424;3432;3481:2;3469:9;3460:7;3456:23;3452:32;3449:119;;;3487:79;;:::i;:::-;3449:119;3607:1;3632:53;3677:7;3668:6;3657:9;3653:22;3632:53;:::i;:::-;3622:63;;3578:117;3734:2;3760:53;3805:7;3796:6;3785:9;3781:22;3760:53;:::i;:::-;3750:63;;3705:118;3862:2;3888:53;3933:7;3924:6;3913:9;3909:22;3888:53;:::i;:::-;3878:63;;3833:118;3339:619;;;;;:::o;3964:86::-;3999:7;4039:4;4032:5;4028:16;4017:27;;3964:86;;;:::o;4056:112::-;4139:22;4155:5;4139:22;:::i;:::-;4134:3;4127:35;4056:112;;:::o;4174:214::-;4263:4;4301:2;4290:9;4286:18;4278:26;;4314:67;4378:1;4367:9;4363:17;4354:6;4314:67;:::i;:::-;4174:214;;;;:::o;4394:329::-;4453:6;4502:2;4490:9;4481:7;4477:23;4473:32;4470:119;;;4508:79;;:::i;:::-;4470:119;4628:1;4653:53;4698:7;4689:6;4678:9;4674:22;4653:53;:::i;:::-;4643:63;;4599:117;4394:329;;;;:::o;4729:118::-;4816:24;4834:5;4816:24;:::i;:::-;4811:3;4804:37;4729:118;;:::o;4853:222::-;4946:4;4984:2;4973:9;4969:18;4961:26;;4997:71;5065:1;5054:9;5050:17;5041:6;4997:71;:::i;:::-;4853:222;;;;:::o;5081:474::-;5149:6;5157;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5459:2;5485:53;5530:7;5521:6;5510:9;5506:22;5485:53;:::i;:::-;5475:63;;5430:118;5081:474;;;;;:::o;5561:180::-;5609:77;5606:1;5599:88;5706:4;5703:1;5696:15;5730:4;5727:1;5720:15;5747:320;5791:6;5828:1;5822:4;5818:12;5808:22;;5875:1;5869:4;5865:12;5896:18;5886:81;;5952:4;5944:6;5940:17;5930:27;;5886:81;6014:2;6006:6;6003:14;5983:18;5980:38;5977:84;;6033:18;;:::i;:::-;5977:84;5798:269;5747:320;;;:::o;6073:225::-;6213:34;6209:1;6201:6;6197:14;6190:58;6282:8;6277:2;6269:6;6265:15;6258:33;6073:225;:::o;6304:366::-;6446:3;6467:67;6531:2;6526:3;6467:67;:::i;:::-;6460:74;;6543:93;6632:3;6543:93;:::i;:::-;6661:2;6656:3;6652:12;6645:19;;6304:366;;;:::o;6676:419::-;6842:4;6880:2;6869:9;6865:18;6857:26;;6929:9;6923:4;6919:20;6915:1;6904:9;6900:17;6893:47;6957:131;7083:4;6957:131;:::i;:::-;6949:139;;6676:419;;;:::o;7101:227::-;7241:34;7237:1;7229:6;7225:14;7218:58;7310:10;7305:2;7297:6;7293:15;7286:35;7101:227;:::o;7334:366::-;7476:3;7497:67;7561:2;7556:3;7497:67;:::i;:::-;7490:74;;7573:93;7662:3;7573:93;:::i;:::-;7691:2;7686:3;7682:12;7675:19;;7334:366;;;:::o;7706:419::-;7872:4;7910:2;7899:9;7895:18;7887:26;;7959:9;7953:4;7949:20;7945:1;7934:9;7930:17;7923:47;7987:131;8113:4;7987:131;:::i;:::-;7979:139;;7706:419;;;:::o;8131:180::-;8179:77;8176:1;8169:88;8276:4;8273:1;8266:15;8300:4;8297:1;8290:15;8317:194;8357:4;8377:20;8395:1;8377:20;:::i;:::-;8372:25;;8411:20;8429:1;8411:20;:::i;:::-;8406:25;;8455:1;8452;8448:9;8440:17;;8479:1;8473:4;8470:11;8467:37;;;8484:18;;:::i;:::-;8467:37;8317:194;;;;:::o;8517:191::-;8557:3;8576:20;8594:1;8576:20;:::i;:::-;8571:25;;8610:20;8628:1;8610:20;:::i;:::-;8605:25;;8653:1;8650;8646:9;8639:16;;8674:3;8671:1;8668:10;8665:36;;;8681:18;;:::i;:::-;8665:36;8517:191;;;;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple ERC20 mock for testing\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/mocks/MockERC20.sol\":{\"keccak256\":\"0x6dc7df4c5eaa31196f5401871578aa894cc518784ed4c070b731d2deac2a1433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526254a9bde4244e50e45c5d8d03c5b57c80ad54e3233f89c8a585b074c900d3\",\"dweb:/ipfs/QmacTfb4ZT5QUkgC2UZSrz3b3f6sq9kjmugZDZsPF4ggYQ\"]}},\"version\":1}"}},"contracts/mocks/MockRouter.sol":{"MockRouter":{"abi":[{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"fromAmount","type":"uint256"},{"internalType":"address","name":"toAddress","type":"address"}],"name":"swapAndSend","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600e575f80fd5b506101798061001c5f395ff3fe608060405260043610610021575f3560e01c80630b51588d1461002c57610028565b3661002857005b5f80fd5b610046600480360381019061004191906100df565b610048565b005b50505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61007b82610052565b9050919050565b61008b81610071565b8114610095575f80fd5b50565b5f813590506100a681610082565b92915050565b5f819050919050565b6100be816100ac565b81146100c8575f80fd5b50565b5f813590506100d9816100b5565b92915050565b5f805f80608085870312156100f7576100f661004e565b5b5f61010487828801610098565b945050602061011587828801610098565b9350506040610126878288016100cb565b925050606061013787828801610098565b9150509295919450925056fea26469706673582212200cea30ffc360d5b146fa802726899fe4b61d8dcf62ace8ea39d9ce4f6424596864736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 DUP1 PUSH2 0x1C PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB51588D EQ PUSH2 0x2C JUMPI PUSH2 0x28 JUMP JUMPDEST CALLDATASIZE PUSH2 0x28 JUMPI STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x46 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41 SWAP2 SWAP1 PUSH2 0xDF JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST STOP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x7B DUP3 PUSH2 0x52 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8B DUP2 PUSH2 0x71 JUMP JUMPDEST DUP2 EQ PUSH2 0x95 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA6 DUP2 PUSH2 0x82 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBE DUP2 PUSH2 0xAC JUMP JUMPDEST DUP2 EQ PUSH2 0xC8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD9 DUP2 PUSH2 0xB5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF7 JUMPI PUSH2 0xF6 PUSH2 0x4E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x104 DUP8 DUP3 DUP9 ADD PUSH2 0x98 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x115 DUP8 DUP3 DUP9 ADD PUSH2 0x98 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x126 DUP8 DUP3 DUP9 ADD PUSH2 0xCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x137 DUP8 DUP3 DUP9 ADD PUSH2 0x98 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0xEA ADDRESS SELFDESTRUCT 0xC3 PUSH1 0xD5 0xB1 CHAINID STATICCALL DUP1 0x27 0x26 DUP10 SWAP16 0xE4 0xB6 SAR DUP14 0xCF PUSH3 0xACE8EA CODECOPY 0xD9 0xCE 0x4F PUSH5 0x2459686473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"118:465:22:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_7108":{"entryPoint":null,"id":7108,"parameterSlots":0,"returnSlots":0},"@swapAndSend_7104":{"entryPoint":72,"id":7104,"parameterSlots":4,"returnSlots":0},"abi_decode_t_address":{"entryPoint":152,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":203,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256t_address":{"entryPoint":223,"id":null,"parameterSlots":2,"returnSlots":4},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_t_address":{"entryPoint":113,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":82,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":172,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":78,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_t_address":{"entryPoint":130,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":181,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1965:24","nodeType":"YulBlock","src":"0:1965:24","statements":[{"body":{"nativeSrc":"47:35:24","nodeType":"YulBlock","src":"47:35:24","statements":[{"nativeSrc":"57:19:24","nodeType":"YulAssignment","src":"57:19:24","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:24","nodeType":"YulLiteral","src":"73:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:24","nodeType":"YulIdentifier","src":"67:5:24"},"nativeSrc":"67:9:24","nodeType":"YulFunctionCall","src":"67:9:24"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:24","nodeType":"YulIdentifier","src":"57:6:24"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:24","nodeType":"YulTypedName","src":"40:6:24","type":""}],"src":"7:75:24"},{"body":{"nativeSrc":"177:28:24","nodeType":"YulBlock","src":"177:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:24","nodeType":"YulLiteral","src":"194:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:24","nodeType":"YulLiteral","src":"197:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:24","nodeType":"YulIdentifier","src":"187:6:24"},"nativeSrc":"187:12:24","nodeType":"YulFunctionCall","src":"187:12:24"},"nativeSrc":"187:12:24","nodeType":"YulExpressionStatement","src":"187:12:24"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:24","nodeType":"YulFunctionDefinition","src":"88:117:24"},{"body":{"nativeSrc":"300:28:24","nodeType":"YulBlock","src":"300:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:24","nodeType":"YulLiteral","src":"317:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:24","nodeType":"YulLiteral","src":"320:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:24","nodeType":"YulIdentifier","src":"310:6:24"},"nativeSrc":"310:12:24","nodeType":"YulFunctionCall","src":"310:12:24"},"nativeSrc":"310:12:24","nodeType":"YulExpressionStatement","src":"310:12:24"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:24","nodeType":"YulFunctionDefinition","src":"211:117:24"},{"body":{"nativeSrc":"379:81:24","nodeType":"YulBlock","src":"379:81:24","statements":[{"nativeSrc":"389:65:24","nodeType":"YulAssignment","src":"389:65:24","value":{"arguments":[{"name":"value","nativeSrc":"404:5:24","nodeType":"YulIdentifier","src":"404:5:24"},{"kind":"number","nativeSrc":"411:42:24","nodeType":"YulLiteral","src":"411:42:24","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:24","nodeType":"YulIdentifier","src":"400:3:24"},"nativeSrc":"400:54:24","nodeType":"YulFunctionCall","src":"400:54:24"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:24","nodeType":"YulIdentifier","src":"389:7:24"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:24","nodeType":"YulTypedName","src":"361:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:24","nodeType":"YulTypedName","src":"371:7:24","type":""}],"src":"334:126:24"},{"body":{"nativeSrc":"511:51:24","nodeType":"YulBlock","src":"511:51:24","statements":[{"nativeSrc":"521:35:24","nodeType":"YulAssignment","src":"521:35:24","value":{"arguments":[{"name":"value","nativeSrc":"550:5:24","nodeType":"YulIdentifier","src":"550:5:24"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:24","nodeType":"YulIdentifier","src":"532:17:24"},"nativeSrc":"532:24:24","nodeType":"YulFunctionCall","src":"532:24:24"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:24","nodeType":"YulIdentifier","src":"521:7:24"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:24","nodeType":"YulTypedName","src":"493:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:24","nodeType":"YulTypedName","src":"503:7:24","type":""}],"src":"466:96:24"},{"body":{"nativeSrc":"611:79:24","nodeType":"YulBlock","src":"611:79:24","statements":[{"body":{"nativeSrc":"668:16:24","nodeType":"YulBlock","src":"668:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:24","nodeType":"YulLiteral","src":"677:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:24","nodeType":"YulLiteral","src":"680:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:24","nodeType":"YulIdentifier","src":"670:6:24"},"nativeSrc":"670:12:24","nodeType":"YulFunctionCall","src":"670:12:24"},"nativeSrc":"670:12:24","nodeType":"YulExpressionStatement","src":"670:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:24","nodeType":"YulIdentifier","src":"634:5:24"},{"arguments":[{"name":"value","nativeSrc":"659:5:24","nodeType":"YulIdentifier","src":"659:5:24"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:24","nodeType":"YulIdentifier","src":"641:17:24"},"nativeSrc":"641:24:24","nodeType":"YulFunctionCall","src":"641:24:24"}],"functionName":{"name":"eq","nativeSrc":"631:2:24","nodeType":"YulIdentifier","src":"631:2:24"},"nativeSrc":"631:35:24","nodeType":"YulFunctionCall","src":"631:35:24"}],"functionName":{"name":"iszero","nativeSrc":"624:6:24","nodeType":"YulIdentifier","src":"624:6:24"},"nativeSrc":"624:43:24","nodeType":"YulFunctionCall","src":"624:43:24"},"nativeSrc":"621:63:24","nodeType":"YulIf","src":"621:63:24"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:24","nodeType":"YulTypedName","src":"604:5:24","type":""}],"src":"568:122:24"},{"body":{"nativeSrc":"748:87:24","nodeType":"YulBlock","src":"748:87:24","statements":[{"nativeSrc":"758:29:24","nodeType":"YulAssignment","src":"758:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"780:6:24","nodeType":"YulIdentifier","src":"780:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"767:12:24","nodeType":"YulIdentifier","src":"767:12:24"},"nativeSrc":"767:20:24","nodeType":"YulFunctionCall","src":"767:20:24"},"variableNames":[{"name":"value","nativeSrc":"758:5:24","nodeType":"YulIdentifier","src":"758:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"823:5:24","nodeType":"YulIdentifier","src":"823:5:24"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"796:26:24","nodeType":"YulIdentifier","src":"796:26:24"},"nativeSrc":"796:33:24","nodeType":"YulFunctionCall","src":"796:33:24"},"nativeSrc":"796:33:24","nodeType":"YulExpressionStatement","src":"796:33:24"}]},"name":"abi_decode_t_address","nativeSrc":"696:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"726:6:24","nodeType":"YulTypedName","src":"726:6:24","type":""},{"name":"end","nativeSrc":"734:3:24","nodeType":"YulTypedName","src":"734:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"742:5:24","nodeType":"YulTypedName","src":"742:5:24","type":""}],"src":"696:139:24"},{"body":{"nativeSrc":"886:32:24","nodeType":"YulBlock","src":"886:32:24","statements":[{"nativeSrc":"896:16:24","nodeType":"YulAssignment","src":"896:16:24","value":{"name":"value","nativeSrc":"907:5:24","nodeType":"YulIdentifier","src":"907:5:24"},"variableNames":[{"name":"cleaned","nativeSrc":"896:7:24","nodeType":"YulIdentifier","src":"896:7:24"}]}]},"name":"cleanup_t_uint256","nativeSrc":"841:77:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"868:5:24","nodeType":"YulTypedName","src":"868:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"878:7:24","nodeType":"YulTypedName","src":"878:7:24","type":""}],"src":"841:77:24"},{"body":{"nativeSrc":"967:79:24","nodeType":"YulBlock","src":"967:79:24","statements":[{"body":{"nativeSrc":"1024:16:24","nodeType":"YulBlock","src":"1024:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1033:1:24","nodeType":"YulLiteral","src":"1033:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1036:1:24","nodeType":"YulLiteral","src":"1036:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1026:6:24","nodeType":"YulIdentifier","src":"1026:6:24"},"nativeSrc":"1026:12:24","nodeType":"YulFunctionCall","src":"1026:12:24"},"nativeSrc":"1026:12:24","nodeType":"YulExpressionStatement","src":"1026:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"990:5:24","nodeType":"YulIdentifier","src":"990:5:24"},{"arguments":[{"name":"value","nativeSrc":"1015:5:24","nodeType":"YulIdentifier","src":"1015:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"997:17:24","nodeType":"YulIdentifier","src":"997:17:24"},"nativeSrc":"997:24:24","nodeType":"YulFunctionCall","src":"997:24:24"}],"functionName":{"name":"eq","nativeSrc":"987:2:24","nodeType":"YulIdentifier","src":"987:2:24"},"nativeSrc":"987:35:24","nodeType":"YulFunctionCall","src":"987:35:24"}],"functionName":{"name":"iszero","nativeSrc":"980:6:24","nodeType":"YulIdentifier","src":"980:6:24"},"nativeSrc":"980:43:24","nodeType":"YulFunctionCall","src":"980:43:24"},"nativeSrc":"977:63:24","nodeType":"YulIf","src":"977:63:24"}]},"name":"validator_revert_t_uint256","nativeSrc":"924:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"960:5:24","nodeType":"YulTypedName","src":"960:5:24","type":""}],"src":"924:122:24"},{"body":{"nativeSrc":"1104:87:24","nodeType":"YulBlock","src":"1104:87:24","statements":[{"nativeSrc":"1114:29:24","nodeType":"YulAssignment","src":"1114:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"1136:6:24","nodeType":"YulIdentifier","src":"1136:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"1123:12:24","nodeType":"YulIdentifier","src":"1123:12:24"},"nativeSrc":"1123:20:24","nodeType":"YulFunctionCall","src":"1123:20:24"},"variableNames":[{"name":"value","nativeSrc":"1114:5:24","nodeType":"YulIdentifier","src":"1114:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1179:5:24","nodeType":"YulIdentifier","src":"1179:5:24"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"1152:26:24","nodeType":"YulIdentifier","src":"1152:26:24"},"nativeSrc":"1152:33:24","nodeType":"YulFunctionCall","src":"1152:33:24"},"nativeSrc":"1152:33:24","nodeType":"YulExpressionStatement","src":"1152:33:24"}]},"name":"abi_decode_t_uint256","nativeSrc":"1052:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1082:6:24","nodeType":"YulTypedName","src":"1082:6:24","type":""},{"name":"end","nativeSrc":"1090:3:24","nodeType":"YulTypedName","src":"1090:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1098:5:24","nodeType":"YulTypedName","src":"1098:5:24","type":""}],"src":"1052:139:24"},{"body":{"nativeSrc":"1314:648:24","nodeType":"YulBlock","src":"1314:648:24","statements":[{"body":{"nativeSrc":"1361:83:24","nodeType":"YulBlock","src":"1361:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"1363:77:24","nodeType":"YulIdentifier","src":"1363:77:24"},"nativeSrc":"1363:79:24","nodeType":"YulFunctionCall","src":"1363:79:24"},"nativeSrc":"1363:79:24","nodeType":"YulExpressionStatement","src":"1363:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1335:7:24","nodeType":"YulIdentifier","src":"1335:7:24"},{"name":"headStart","nativeSrc":"1344:9:24","nodeType":"YulIdentifier","src":"1344:9:24"}],"functionName":{"name":"sub","nativeSrc":"1331:3:24","nodeType":"YulIdentifier","src":"1331:3:24"},"nativeSrc":"1331:23:24","nodeType":"YulFunctionCall","src":"1331:23:24"},{"kind":"number","nativeSrc":"1356:3:24","nodeType":"YulLiteral","src":"1356:3:24","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"1327:3:24","nodeType":"YulIdentifier","src":"1327:3:24"},"nativeSrc":"1327:33:24","nodeType":"YulFunctionCall","src":"1327:33:24"},"nativeSrc":"1324:120:24","nodeType":"YulIf","src":"1324:120:24"},{"nativeSrc":"1454:117:24","nodeType":"YulBlock","src":"1454:117:24","statements":[{"nativeSrc":"1469:15:24","nodeType":"YulVariableDeclaration","src":"1469:15:24","value":{"kind":"number","nativeSrc":"1483:1:24","nodeType":"YulLiteral","src":"1483:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"1473:6:24","nodeType":"YulTypedName","src":"1473:6:24","type":""}]},{"nativeSrc":"1498:63:24","nodeType":"YulAssignment","src":"1498:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1533:9:24","nodeType":"YulIdentifier","src":"1533:9:24"},{"name":"offset","nativeSrc":"1544:6:24","nodeType":"YulIdentifier","src":"1544:6:24"}],"functionName":{"name":"add","nativeSrc":"1529:3:24","nodeType":"YulIdentifier","src":"1529:3:24"},"nativeSrc":"1529:22:24","nodeType":"YulFunctionCall","src":"1529:22:24"},{"name":"dataEnd","nativeSrc":"1553:7:24","nodeType":"YulIdentifier","src":"1553:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"1508:20:24","nodeType":"YulIdentifier","src":"1508:20:24"},"nativeSrc":"1508:53:24","nodeType":"YulFunctionCall","src":"1508:53:24"},"variableNames":[{"name":"value0","nativeSrc":"1498:6:24","nodeType":"YulIdentifier","src":"1498:6:24"}]}]},{"nativeSrc":"1581:118:24","nodeType":"YulBlock","src":"1581:118:24","statements":[{"nativeSrc":"1596:16:24","nodeType":"YulVariableDeclaration","src":"1596:16:24","value":{"kind":"number","nativeSrc":"1610:2:24","nodeType":"YulLiteral","src":"1610:2:24","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"1600:6:24","nodeType":"YulTypedName","src":"1600:6:24","type":""}]},{"nativeSrc":"1626:63:24","nodeType":"YulAssignment","src":"1626:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1661:9:24","nodeType":"YulIdentifier","src":"1661:9:24"},{"name":"offset","nativeSrc":"1672:6:24","nodeType":"YulIdentifier","src":"1672:6:24"}],"functionName":{"name":"add","nativeSrc":"1657:3:24","nodeType":"YulIdentifier","src":"1657:3:24"},"nativeSrc":"1657:22:24","nodeType":"YulFunctionCall","src":"1657:22:24"},{"name":"dataEnd","nativeSrc":"1681:7:24","nodeType":"YulIdentifier","src":"1681:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"1636:20:24","nodeType":"YulIdentifier","src":"1636:20:24"},"nativeSrc":"1636:53:24","nodeType":"YulFunctionCall","src":"1636:53:24"},"variableNames":[{"name":"value1","nativeSrc":"1626:6:24","nodeType":"YulIdentifier","src":"1626:6:24"}]}]},{"nativeSrc":"1709:118:24","nodeType":"YulBlock","src":"1709:118:24","statements":[{"nativeSrc":"1724:16:24","nodeType":"YulVariableDeclaration","src":"1724:16:24","value":{"kind":"number","nativeSrc":"1738:2:24","nodeType":"YulLiteral","src":"1738:2:24","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"1728:6:24","nodeType":"YulTypedName","src":"1728:6:24","type":""}]},{"nativeSrc":"1754:63:24","nodeType":"YulAssignment","src":"1754:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1789:9:24","nodeType":"YulIdentifier","src":"1789:9:24"},{"name":"offset","nativeSrc":"1800:6:24","nodeType":"YulIdentifier","src":"1800:6:24"}],"functionName":{"name":"add","nativeSrc":"1785:3:24","nodeType":"YulIdentifier","src":"1785:3:24"},"nativeSrc":"1785:22:24","nodeType":"YulFunctionCall","src":"1785:22:24"},{"name":"dataEnd","nativeSrc":"1809:7:24","nodeType":"YulIdentifier","src":"1809:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"1764:20:24","nodeType":"YulIdentifier","src":"1764:20:24"},"nativeSrc":"1764:53:24","nodeType":"YulFunctionCall","src":"1764:53:24"},"variableNames":[{"name":"value2","nativeSrc":"1754:6:24","nodeType":"YulIdentifier","src":"1754:6:24"}]}]},{"nativeSrc":"1837:118:24","nodeType":"YulBlock","src":"1837:118:24","statements":[{"nativeSrc":"1852:16:24","nodeType":"YulVariableDeclaration","src":"1852:16:24","value":{"kind":"number","nativeSrc":"1866:2:24","nodeType":"YulLiteral","src":"1866:2:24","type":"","value":"96"},"variables":[{"name":"offset","nativeSrc":"1856:6:24","nodeType":"YulTypedName","src":"1856:6:24","type":""}]},{"nativeSrc":"1882:63:24","nodeType":"YulAssignment","src":"1882:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1917:9:24","nodeType":"YulIdentifier","src":"1917:9:24"},{"name":"offset","nativeSrc":"1928:6:24","nodeType":"YulIdentifier","src":"1928:6:24"}],"functionName":{"name":"add","nativeSrc":"1913:3:24","nodeType":"YulIdentifier","src":"1913:3:24"},"nativeSrc":"1913:22:24","nodeType":"YulFunctionCall","src":"1913:22:24"},{"name":"dataEnd","nativeSrc":"1937:7:24","nodeType":"YulIdentifier","src":"1937:7:24"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"1892:20:24","nodeType":"YulIdentifier","src":"1892:20:24"},"nativeSrc":"1892:53:24","nodeType":"YulFunctionCall","src":"1892:53:24"},"variableNames":[{"name":"value3","nativeSrc":"1882:6:24","nodeType":"YulIdentifier","src":"1882:6:24"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_address","nativeSrc":"1197:765:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1260:9:24","nodeType":"YulTypedName","src":"1260:9:24","type":""},{"name":"dataEnd","nativeSrc":"1271:7:24","nodeType":"YulTypedName","src":"1271:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1283:6:24","nodeType":"YulTypedName","src":"1283:6:24","type":""},{"name":"value1","nativeSrc":"1291:6:24","nodeType":"YulTypedName","src":"1291:6:24","type":""},{"name":"value2","nativeSrc":"1299:6:24","nodeType":"YulTypedName","src":"1299:6:24","type":""},{"name":"value3","nativeSrc":"1307:6:24","nodeType":"YulTypedName","src":"1307:6:24","type":""}],"src":"1197:765:24"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405260043610610021575f3560e01c80630b51588d1461002c57610028565b3661002857005b5f80fd5b610046600480360381019061004191906100df565b610048565b005b50505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61007b82610052565b9050919050565b61008b81610071565b8114610095575f80fd5b50565b5f813590506100a681610082565b92915050565b5f819050919050565b6100be816100ac565b81146100c8575f80fd5b50565b5f813590506100d9816100b5565b92915050565b5f805f80608085870312156100f7576100f661004e565b5b5f61010487828801610098565b945050602061011587828801610098565b9350506040610126878288016100cb565b925050606061013787828801610098565b9150509295919450925056fea26469706673582212200cea30ffc360d5b146fa802726899fe4b61d8dcf62ace8ea39d9ce4f6424596864736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB51588D EQ PUSH2 0x2C JUMPI PUSH2 0x28 JUMP JUMPDEST CALLDATASIZE PUSH2 0x28 JUMPI STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x46 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41 SWAP2 SWAP1 PUSH2 0xDF JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST STOP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x7B DUP3 PUSH2 0x52 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8B DUP2 PUSH2 0x71 JUMP JUMPDEST DUP2 EQ PUSH2 0x95 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA6 DUP2 PUSH2 0x82 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBE DUP2 PUSH2 0xAC JUMP JUMPDEST DUP2 EQ PUSH2 0xC8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD9 DUP2 PUSH2 0xB5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF7 JUMPI PUSH2 0xF6 PUSH2 0x4E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x104 DUP8 DUP3 DUP9 ADD PUSH2 0x98 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x115 DUP8 DUP3 DUP9 ADD PUSH2 0x98 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x126 DUP8 DUP3 DUP9 ADD PUSH2 0xCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x137 DUP8 DUP3 DUP9 ADD PUSH2 0x98 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0xEA ADDRESS SELFDESTRUCT 0xC3 PUSH1 0xD5 0xB1 CHAINID STATICCALL DUP1 0x27 0x26 DUP10 SWAP16 0xE4 0xB6 SAR DUP14 0xCF PUSH3 0xACE8EA CODECOPY 0xD9 0xCE 0x4F PUSH5 0x2459686473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"118:465:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;214:296;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::o;88:117:24:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:765::-;1283:6;1291;1299;1307;1356:3;1344:9;1335:7;1331:23;1327:33;1324:120;;;1363:79;;:::i;:::-;1324:120;1483:1;1508:53;1553:7;1544:6;1533:9;1529:22;1508:53;:::i;:::-;1498:63;;1454:117;1610:2;1636:53;1681:7;1672:6;1661:9;1657:22;1636:53;:::i;:::-;1626:63;;1581:118;1738:2;1764:53;1809:7;1800:6;1789:9;1785:22;1764:53;:::i;:::-;1754:63;;1709:118;1866:2;1892:53;1937:7;1928:6;1917:9;1913:22;1892:53;:::i;:::-;1882:63;;1837:118;1197:765;;;;;;;:::o"},"methodIdentifiers":{"swapAndSend(address,address,uint256,address)":"0b51588d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fromAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"}],\"name\":\"swapAndSend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/MockRouter.sol\":\"MockRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/mocks/MockRouter.sol\":{\"keccak256\":\"0x55bf4ac5699c6d769cc9d6daca37d68060bdd8fcf4de8279d6e27512b2e4338d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25b6ab198dee71a26355f24160aa30ea79e14e8185115c9f18512257d38a43db\",\"dweb:/ipfs/QmVx8RpNfqpG4w5QotRDMFUBDAfS5uBDAeWbiMA8zmNV44\"]}},\"version\":1}"}},"contracts/mocks/MockStrategy.sol":{"MockStrategy":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600e575f80fd5b5060f88061001b5f395ff3fe6080604052348015600e575f80fd5b50600436106030575f3560e01c80632e1a7d4d146034578063b6b55f2514604c575b5f80fd5b604a600480360381019060469190609c565b6064565b005b60626004803603810190605e9190609c565b6067565b005b50565b50565b5f80fd5b5f819050919050565b607e81606e565b81146087575f80fd5b50565b5f813590506096816077565b92915050565b5f6020828403121560ae5760ad606a565b5b5f60b984828501608a565b9150509291505056fea26469706673582212200b4e7bb379121e86181ee79a019def53b6ebb8d580dfaee6f8657e9ef0384a8964736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0xF8 DUP1 PUSH2 0x1B PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x30 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E1A7D4D EQ PUSH1 0x34 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH1 0x4C JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x46 SWAP2 SWAP1 PUSH1 0x9C JUMP JUMPDEST PUSH1 0x64 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x62 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x5E SWAP2 SWAP1 PUSH1 0x9C JUMP JUMPDEST PUSH1 0x67 JUMP JUMPDEST STOP JUMPDEST POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7E DUP2 PUSH1 0x6E JUMP JUMPDEST DUP2 EQ PUSH1 0x87 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x96 DUP2 PUSH1 0x77 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xAE JUMPI PUSH1 0xAD PUSH1 0x6A JUMP JUMPDEST JUMPDEST PUSH0 PUSH1 0xB9 DUP5 DUP3 DUP6 ADD PUSH1 0x8A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND 0x4E PUSH28 0xB379121E86181EE79A019DEF53B6EBB8D580DFAEE6F8657E9EF0384A DUP10 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"116:272:23:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deposit_7118":{"entryPoint":103,"id":7118,"parameterSlots":1,"returnSlots":0},"@withdraw_7124":{"entryPoint":100,"id":7124,"parameterSlots":1,"returnSlots":0},"abi_decode_t_uint256":{"entryPoint":138,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":156,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":110,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":106,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":119,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1022:24","nodeType":"YulBlock","src":"0:1022:24","statements":[{"body":{"nativeSrc":"47:35:24","nodeType":"YulBlock","src":"47:35:24","statements":[{"nativeSrc":"57:19:24","nodeType":"YulAssignment","src":"57:19:24","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:24","nodeType":"YulLiteral","src":"73:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:24","nodeType":"YulIdentifier","src":"67:5:24"},"nativeSrc":"67:9:24","nodeType":"YulFunctionCall","src":"67:9:24"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:24","nodeType":"YulIdentifier","src":"57:6:24"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:24","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:24","nodeType":"YulTypedName","src":"40:6:24","type":""}],"src":"7:75:24"},{"body":{"nativeSrc":"177:28:24","nodeType":"YulBlock","src":"177:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:24","nodeType":"YulLiteral","src":"194:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:24","nodeType":"YulLiteral","src":"197:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:24","nodeType":"YulIdentifier","src":"187:6:24"},"nativeSrc":"187:12:24","nodeType":"YulFunctionCall","src":"187:12:24"},"nativeSrc":"187:12:24","nodeType":"YulExpressionStatement","src":"187:12:24"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:24","nodeType":"YulFunctionDefinition","src":"88:117:24"},{"body":{"nativeSrc":"300:28:24","nodeType":"YulBlock","src":"300:28:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:24","nodeType":"YulLiteral","src":"317:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:24","nodeType":"YulLiteral","src":"320:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:24","nodeType":"YulIdentifier","src":"310:6:24"},"nativeSrc":"310:12:24","nodeType":"YulFunctionCall","src":"310:12:24"},"nativeSrc":"310:12:24","nodeType":"YulExpressionStatement","src":"310:12:24"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:24","nodeType":"YulFunctionDefinition","src":"211:117:24"},{"body":{"nativeSrc":"379:32:24","nodeType":"YulBlock","src":"379:32:24","statements":[{"nativeSrc":"389:16:24","nodeType":"YulAssignment","src":"389:16:24","value":{"name":"value","nativeSrc":"400:5:24","nodeType":"YulIdentifier","src":"400:5:24"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:24","nodeType":"YulIdentifier","src":"389:7:24"}]}]},"name":"cleanup_t_uint256","nativeSrc":"334:77:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:24","nodeType":"YulTypedName","src":"361:5:24","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:24","nodeType":"YulTypedName","src":"371:7:24","type":""}],"src":"334:77:24"},{"body":{"nativeSrc":"460:79:24","nodeType":"YulBlock","src":"460:79:24","statements":[{"body":{"nativeSrc":"517:16:24","nodeType":"YulBlock","src":"517:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"526:1:24","nodeType":"YulLiteral","src":"526:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"529:1:24","nodeType":"YulLiteral","src":"529:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"519:6:24","nodeType":"YulIdentifier","src":"519:6:24"},"nativeSrc":"519:12:24","nodeType":"YulFunctionCall","src":"519:12:24"},"nativeSrc":"519:12:24","nodeType":"YulExpressionStatement","src":"519:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"483:5:24","nodeType":"YulIdentifier","src":"483:5:24"},{"arguments":[{"name":"value","nativeSrc":"508:5:24","nodeType":"YulIdentifier","src":"508:5:24"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"490:17:24","nodeType":"YulIdentifier","src":"490:17:24"},"nativeSrc":"490:24:24","nodeType":"YulFunctionCall","src":"490:24:24"}],"functionName":{"name":"eq","nativeSrc":"480:2:24","nodeType":"YulIdentifier","src":"480:2:24"},"nativeSrc":"480:35:24","nodeType":"YulFunctionCall","src":"480:35:24"}],"functionName":{"name":"iszero","nativeSrc":"473:6:24","nodeType":"YulIdentifier","src":"473:6:24"},"nativeSrc":"473:43:24","nodeType":"YulFunctionCall","src":"473:43:24"},"nativeSrc":"470:63:24","nodeType":"YulIf","src":"470:63:24"}]},"name":"validator_revert_t_uint256","nativeSrc":"417:122:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"453:5:24","nodeType":"YulTypedName","src":"453:5:24","type":""}],"src":"417:122:24"},{"body":{"nativeSrc":"597:87:24","nodeType":"YulBlock","src":"597:87:24","statements":[{"nativeSrc":"607:29:24","nodeType":"YulAssignment","src":"607:29:24","value":{"arguments":[{"name":"offset","nativeSrc":"629:6:24","nodeType":"YulIdentifier","src":"629:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"616:12:24","nodeType":"YulIdentifier","src":"616:12:24"},"nativeSrc":"616:20:24","nodeType":"YulFunctionCall","src":"616:20:24"},"variableNames":[{"name":"value","nativeSrc":"607:5:24","nodeType":"YulIdentifier","src":"607:5:24"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"672:5:24","nodeType":"YulIdentifier","src":"672:5:24"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"645:26:24","nodeType":"YulIdentifier","src":"645:26:24"},"nativeSrc":"645:33:24","nodeType":"YulFunctionCall","src":"645:33:24"},"nativeSrc":"645:33:24","nodeType":"YulExpressionStatement","src":"645:33:24"}]},"name":"abi_decode_t_uint256","nativeSrc":"545:139:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"575:6:24","nodeType":"YulTypedName","src":"575:6:24","type":""},{"name":"end","nativeSrc":"583:3:24","nodeType":"YulTypedName","src":"583:3:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"591:5:24","nodeType":"YulTypedName","src":"591:5:24","type":""}],"src":"545:139:24"},{"body":{"nativeSrc":"756:263:24","nodeType":"YulBlock","src":"756:263:24","statements":[{"body":{"nativeSrc":"802:83:24","nodeType":"YulBlock","src":"802:83:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"804:77:24","nodeType":"YulIdentifier","src":"804:77:24"},"nativeSrc":"804:79:24","nodeType":"YulFunctionCall","src":"804:79:24"},"nativeSrc":"804:79:24","nodeType":"YulExpressionStatement","src":"804:79:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"777:7:24","nodeType":"YulIdentifier","src":"777:7:24"},{"name":"headStart","nativeSrc":"786:9:24","nodeType":"YulIdentifier","src":"786:9:24"}],"functionName":{"name":"sub","nativeSrc":"773:3:24","nodeType":"YulIdentifier","src":"773:3:24"},"nativeSrc":"773:23:24","nodeType":"YulFunctionCall","src":"773:23:24"},{"kind":"number","nativeSrc":"798:2:24","nodeType":"YulLiteral","src":"798:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"769:3:24","nodeType":"YulIdentifier","src":"769:3:24"},"nativeSrc":"769:32:24","nodeType":"YulFunctionCall","src":"769:32:24"},"nativeSrc":"766:119:24","nodeType":"YulIf","src":"766:119:24"},{"nativeSrc":"895:117:24","nodeType":"YulBlock","src":"895:117:24","statements":[{"nativeSrc":"910:15:24","nodeType":"YulVariableDeclaration","src":"910:15:24","value":{"kind":"number","nativeSrc":"924:1:24","nodeType":"YulLiteral","src":"924:1:24","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"914:6:24","nodeType":"YulTypedName","src":"914:6:24","type":""}]},{"nativeSrc":"939:63:24","nodeType":"YulAssignment","src":"939:63:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"974:9:24","nodeType":"YulIdentifier","src":"974:9:24"},{"name":"offset","nativeSrc":"985:6:24","nodeType":"YulIdentifier","src":"985:6:24"}],"functionName":{"name":"add","nativeSrc":"970:3:24","nodeType":"YulIdentifier","src":"970:3:24"},"nativeSrc":"970:22:24","nodeType":"YulFunctionCall","src":"970:22:24"},{"name":"dataEnd","nativeSrc":"994:7:24","nodeType":"YulIdentifier","src":"994:7:24"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"949:20:24","nodeType":"YulIdentifier","src":"949:20:24"},"nativeSrc":"949:53:24","nodeType":"YulFunctionCall","src":"949:53:24"},"variableNames":[{"name":"value0","nativeSrc":"939:6:24","nodeType":"YulIdentifier","src":"939:6:24"}]}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"690:329:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"726:9:24","nodeType":"YulTypedName","src":"726:9:24","type":""},{"name":"dataEnd","nativeSrc":"737:7:24","nodeType":"YulTypedName","src":"737:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"749:6:24","nodeType":"YulTypedName","src":"749:6:24","type":""}],"src":"690:329:24"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600e575f80fd5b50600436106030575f3560e01c80632e1a7d4d146034578063b6b55f2514604c575b5f80fd5b604a600480360381019060469190609c565b6064565b005b60626004803603810190605e9190609c565b6067565b005b50565b50565b5f80fd5b5f819050919050565b607e81606e565b81146087575f80fd5b50565b5f813590506096816077565b92915050565b5f6020828403121560ae5760ad606a565b5b5f60b984828501608a565b9150509291505056fea26469706673582212200b4e7bb379121e86181ee79a019def53b6ebb8d580dfaee6f8657e9ef0384a8964736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x30 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E1A7D4D EQ PUSH1 0x34 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH1 0x4C JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x46 SWAP2 SWAP1 PUSH1 0x9C JUMP JUMPDEST PUSH1 0x64 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x62 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x5E SWAP2 SWAP1 PUSH1 0x9C JUMP JUMPDEST PUSH1 0x67 JUMP JUMPDEST STOP JUMPDEST POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7E DUP2 PUSH1 0x6E JUMP JUMPDEST DUP2 EQ PUSH1 0x87 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x96 DUP2 PUSH1 0x77 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xAE JUMPI PUSH1 0xAD PUSH1 0x6A JUMP JUMPDEST JUMPDEST PUSH0 PUSH1 0xB9 DUP5 DUP3 DUP6 ADD PUSH1 0x8A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND 0x4E PUSH28 0xB379121E86181EE79A019DEF53B6EBB8D580DFAEE6F8657E9EF0384A DUP10 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"116:272:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;187:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;291:95;;:::o;187:94::-;;:::o;88:117:24:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o"},"methodIdentifiers":{"deposit(uint256)":"b6b55f25","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple mock strategy contract for testing\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/MockStrategy.sol\":\"MockStrategy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/mocks/MockStrategy.sol\":{\"keccak256\":\"0x10388d06d0d1d5bb0f2c5ef8011e7b76add68261a19d6c8c253fe81a672a52c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42a29664e0dd483d4ce6c277b748623fc316cf8308a421a968d4d1003925bcf9\",\"dweb:/ipfs/QmXJa456EFU4kX6G6Gu6T3m8w3Qqvhyd6pbDDqSFBVZU3b\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/legacy/evm/artifacts/contracts/BagFiZapper.sol/BagFiZapper.dbg.json b/legacy/evm/artifacts/contracts/BagFiZapper.sol/BagFiZapper.dbg.json new file mode 100644 index 0000000..05c8644 --- /dev/null +++ b/legacy/evm/artifacts/contracts/BagFiZapper.sol/BagFiZapper.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/contracts/BagFiZapper.sol/BagFiZapper.json b/legacy/evm/artifacts/contracts/BagFiZapper.sol/BagFiZapper.json new file mode 100644 index 0000000..674c7f4 --- /dev/null +++ b/legacy/evm/artifacts/contracts/BagFiZapper.sol/BagFiZapper.json @@ -0,0 +1,61 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BagFiZapper", + "sourceName": "contracts/BagFiZapper.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC4626", + "name": "vault", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "router", + "type": "address" + }, + { + "internalType": "bytes", + "name": "swapData", + "type": "bytes" + } + ], + "name": "zapIn", + "outputs": [ + { + "internalType": "uint256", + "name": "sharesOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600e575f80fd5b506109888061001c5f395ff3fe60806040526004361061001d575f3560e01c8063c53dbf7014610021575b5f80fd5b61003b6004803603810190610036919061060c565b610051565b60405161004891906106b1565b60405180910390f35b5f61007f3330878973ffffffffffffffffffffffffffffffffffffffff166103da909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b385876040518363ffffffff1660e01b81526004016100ba9291906106d9565b6020604051808303815f875af11580156100d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fa9190610735565b505f8473ffffffffffffffffffffffffffffffffffffffff1634858560405161012492919061079c565b5f6040518083038185875af1925050503d805f811461015e576040519150601f19603f3d011682016040523d82523d5f602084013e610163565b606091505b50509050806101a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019e9061080e565b60405180910390fd5b5f8873ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102159190610840565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610251919061086b565b602060405180830381865afa15801561026c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102909190610898565b90505f81116102d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cb9061090d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b38b836040518363ffffffff1660e01b815260040161030f9291906106d9565b6020604051808303815f875af115801561032b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034f9190610735565b508973ffffffffffffffffffffffffffffffffffffffff16636e553f6582336040518363ffffffff1660e01b815260040161038b92919061092b565b6020604051808303815f875af11580156103a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cb9190610898565b93505050509695505050505050565b6103e884848484600161042f565b61042957836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610420919061086b565b60405180910390fd5b50505050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f5114831661048d578383151615610481573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104d1826104a8565b9050919050565b5f6104e2826104c7565b9050919050565b6104f2816104d8565b81146104fc575f80fd5b50565b5f8135905061050d816104e9565b92915050565b5f61051d826104c7565b9050919050565b61052d81610513565b8114610537575f80fd5b50565b5f8135905061054881610524565b92915050565b5f819050919050565b6105608161054e565b811461056a575f80fd5b50565b5f8135905061057b81610557565b92915050565b61058a816104c7565b8114610594575f80fd5b50565b5f813590506105a581610581565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126105cc576105cb6105ab565b5b8235905067ffffffffffffffff8111156105e9576105e86105af565b5b602083019150836001820283011115610605576106046105b3565b5b9250929050565b5f805f805f8060a08789031215610626576106256104a0565b5b5f61063389828a016104ff565b965050602061064489828a0161053a565b955050604061065589828a0161056d565b945050606061066689828a01610597565b935050608087013567ffffffffffffffff811115610687576106866104a4565b5b61069389828a016105b7565b92509250509295509295509295565b6106ab8161054e565b82525050565b5f6020820190506106c45f8301846106a2565b92915050565b6106d3816104c7565b82525050565b5f6040820190506106ec5f8301856106ca565b6106f960208301846106a2565b9392505050565b5f8115159050919050565b61071481610700565b811461071e575f80fd5b50565b5f8151905061072f8161070b565b92915050565b5f6020828403121561074a576107496104a0565b5b5f61075784828501610721565b91505092915050565b5f81905092915050565b828183375f83830152505050565b5f6107838385610760565b935061079083858461076a565b82840190509392505050565b5f6107a8828486610778565b91508190509392505050565b5f82825260208201905092915050565b7f53776170206661696c65640000000000000000000000000000000000000000005f82015250565b5f6107f8600b836107b4565b9150610803826107c4565b602082019050919050565b5f6020820190508181035f830152610825816107ec565b9050919050565b5f8151905061083a81610581565b92915050565b5f60208284031215610855576108546104a0565b5b5f6108628482850161082c565b91505092915050565b5f60208201905061087e5f8301846106ca565b92915050565b5f8151905061089281610557565b92915050565b5f602082840312156108ad576108ac6104a0565b5b5f6108ba84828501610884565b91505092915050565b7f4e6f2061737365747320726563656976656400000000000000000000000000005f82015250565b5f6108f76012836107b4565b9150610902826108c3565b602082019050919050565b5f6020820190508181035f830152610924816108eb565b9050919050565b5f60408201905061093e5f8301856106a2565b61094b60208301846106ca565b939250505056fea2646970667358221220b8f2ab90286576d5fc15901bcf47d054ff9cd09547fc6a212ab14eb1fe448b7a64736f6c634300081a0033", + "deployedBytecode": "0x60806040526004361061001d575f3560e01c8063c53dbf7014610021575b5f80fd5b61003b6004803603810190610036919061060c565b610051565b60405161004891906106b1565b60405180910390f35b5f61007f3330878973ffffffffffffffffffffffffffffffffffffffff166103da909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b385876040518363ffffffff1660e01b81526004016100ba9291906106d9565b6020604051808303815f875af11580156100d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fa9190610735565b505f8473ffffffffffffffffffffffffffffffffffffffff1634858560405161012492919061079c565b5f6040518083038185875af1925050503d805f811461015e576040519150601f19603f3d011682016040523d82523d5f602084013e610163565b606091505b50509050806101a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019e9061080e565b60405180910390fd5b5f8873ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102159190610840565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610251919061086b565b602060405180830381865afa15801561026c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102909190610898565b90505f81116102d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cb9061090d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b38b836040518363ffffffff1660e01b815260040161030f9291906106d9565b6020604051808303815f875af115801561032b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034f9190610735565b508973ffffffffffffffffffffffffffffffffffffffff16636e553f6582336040518363ffffffff1660e01b815260040161038b92919061092b565b6020604051808303815f875af11580156103a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cb9190610898565b93505050509695505050505050565b6103e884848484600161042f565b61042957836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610420919061086b565b60405180910390fd5b50505050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f5114831661048d578383151615610481573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104d1826104a8565b9050919050565b5f6104e2826104c7565b9050919050565b6104f2816104d8565b81146104fc575f80fd5b50565b5f8135905061050d816104e9565b92915050565b5f61051d826104c7565b9050919050565b61052d81610513565b8114610537575f80fd5b50565b5f8135905061054881610524565b92915050565b5f819050919050565b6105608161054e565b811461056a575f80fd5b50565b5f8135905061057b81610557565b92915050565b61058a816104c7565b8114610594575f80fd5b50565b5f813590506105a581610581565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126105cc576105cb6105ab565b5b8235905067ffffffffffffffff8111156105e9576105e86105af565b5b602083019150836001820283011115610605576106046105b3565b5b9250929050565b5f805f805f8060a08789031215610626576106256104a0565b5b5f61063389828a016104ff565b965050602061064489828a0161053a565b955050604061065589828a0161056d565b945050606061066689828a01610597565b935050608087013567ffffffffffffffff811115610687576106866104a4565b5b61069389828a016105b7565b92509250509295509295509295565b6106ab8161054e565b82525050565b5f6020820190506106c45f8301846106a2565b92915050565b6106d3816104c7565b82525050565b5f6040820190506106ec5f8301856106ca565b6106f960208301846106a2565b9392505050565b5f8115159050919050565b61071481610700565b811461071e575f80fd5b50565b5f8151905061072f8161070b565b92915050565b5f6020828403121561074a576107496104a0565b5b5f61075784828501610721565b91505092915050565b5f81905092915050565b828183375f83830152505050565b5f6107838385610760565b935061079083858461076a565b82840190509392505050565b5f6107a8828486610778565b91508190509392505050565b5f82825260208201905092915050565b7f53776170206661696c65640000000000000000000000000000000000000000005f82015250565b5f6107f8600b836107b4565b9150610803826107c4565b602082019050919050565b5f6020820190508181035f830152610825816107ec565b9050919050565b5f8151905061083a81610581565b92915050565b5f60208284031215610855576108546104a0565b5b5f6108628482850161082c565b91505092915050565b5f60208201905061087e5f8301846106ca565b92915050565b5f8151905061089281610557565b92915050565b5f602082840312156108ad576108ac6104a0565b5b5f6108ba84828501610884565b91505092915050565b7f4e6f2061737365747320726563656976656400000000000000000000000000005f82015250565b5f6108f76012836107b4565b9150610902826108c3565b602082019050919050565b5f6020820190508181035f830152610924816108eb565b9050919050565b5f60408201905061093e5f8301856106a2565b61094b60208301846106ca565b939250505056fea2646970667358221220b8f2ab90286576d5fc15901bcf47d054ff9cd09547fc6a212ab14eb1fe448b7a64736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/contracts/SmartBagVault.sol/SmartBagVault.dbg.json b/legacy/evm/artifacts/contracts/SmartBagVault.sol/SmartBagVault.dbg.json new file mode 100644 index 0000000..05c8644 --- /dev/null +++ b/legacy/evm/artifacts/contracts/SmartBagVault.sol/SmartBagVault.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/contracts/SmartBagVault.sol/SmartBagVault.json b/legacy/evm/artifacts/contracts/SmartBagVault.sol/SmartBagVault.json new file mode 100644 index 0000000..6f3b59d --- /dev/null +++ b/legacy/evm/artifacts/contracts/SmartBagVault.sol/SmartBagVault.json @@ -0,0 +1,1101 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SmartBagVault", + "sourceName": "contracts/SmartBagVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "asset_", + "type": "address" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "ERC4626ExceededMaxDeposit", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "ERC4626ExceededMaxMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "ERC4626ExceededMaxRedeem", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "ERC4626ExceededMaxWithdraw", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "FundsDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "StrategyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "StrategyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "activeStrategies", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "addStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "asset", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "convertToAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "convertToShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "strategyIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "deployToStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "deposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isActiveStrategy", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxMint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "maxRedeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "maxWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "previewDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "previewMint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "previewRedeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "name": "previewWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "removeStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60e060405234801561000f575f80fd5b506040516136f83803806136f8833981810160405281019061003191906104f9565b338383838160039081610044919061078e565b508060049081610054919061078e565b5050505f806100688361017a60201b60201c565b915091508161007857601261007a565b805b60ff1660a08160ff16815250508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361012e575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610125919061086c565b60405180910390fd5b61013d8161024660201b60201c565b508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050610885565b5f805f61018b61030960201b60201c565b90505f806101e98660405160240160405160208183030381529060405263313ce56760e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061031260201b60201c565b50915091506101fd8361033360201b60201c565b8180156102185750602061021561033a60201b60201c565b10155b8015610229575060ff8016815f1c11155b610234575f8061023a565b6001815f1c5b94509450505050915091565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f805f60405f855160208701885afa92505f51915060205190509250925092565b8060405250565b5f3d905090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61037b82610352565b9050919050565b5f61038c82610371565b9050919050565b61039c81610382565b81146103a6575f80fd5b50565b5f815190506103b781610393565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61040b826103c5565b810181811067ffffffffffffffff8211171561042a576104296103d5565b5b80604052505050565b5f61043c610341565b90506104488282610402565b919050565b5f67ffffffffffffffff821115610467576104666103d5565b5b610470826103c5565b9050602081019050919050565b8281835e5f83830152505050565b5f61049d6104988461044d565b610433565b9050828152602081018484840111156104b9576104b86103c1565b5b6104c484828561047d565b509392505050565b5f82601f8301126104e0576104df6103bd565b5b81516104f084826020860161048b565b91505092915050565b5f805f606084860312156105105761050f61034a565b5b5f61051d868287016103a9565b935050602084015167ffffffffffffffff81111561053e5761053d61034e565b5b61054a868287016104cc565b925050604084015167ffffffffffffffff81111561056b5761056a61034e565b5b610577868287016104cc565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806105cf57607f821691505b6020821081036105e2576105e161058b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610609565b61064e8683610609565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61069261068d61068884610666565b61066f565b610666565b9050919050565b5f819050919050565b6106ab83610678565b6106bf6106b782610699565b848454610615565b825550505050565b5f90565b6106d36106c7565b6106de8184846106a2565b505050565b5b81811015610701576106f65f826106cb565b6001810190506106e4565b5050565b601f82111561074657610717816105e8565b610720846105fa565b8101602085101561072f578190505b61074361073b856105fa565b8301826106e3565b50505b505050565b5f82821c905092915050565b5f6107665f198460080261074b565b1980831691505092915050565b5f61077e8383610757565b9150826002028217905092915050565b61079782610581565b67ffffffffffffffff8111156107b0576107af6103d5565b5b6107ba82546105b8565b6107c5828285610705565b5f60209050601f8311600181146107f6575f84156107e4578287015190505b6107ee8582610773565b865550610855565b601f198416610804866105e8565b5f5b8281101561082b57848901518255600182019150602085019450602081019050610806565b868310156108485784890151610844601f891682610757565b8355505b6001600288020188555050505b505050505050565b61086681610371565b82525050565b5f60208201905061087f5f83018461085d565b92915050565b60805160a05160c051612e496108af5f395f61098501525f610f7301525f610fa40152612e495ff3fe608060405234801561000f575f80fd5b506004361061021a575f3560e01c8063715018a611610123578063ba087652116100ab578063d25815031161007a578063d2581503146106b0578063d905777e146106e0578063dd62ed3e14610710578063ef8b30f714610740578063f2fde38b146107705761021a565b8063ba087652146105f0578063c63d75b614610620578063c6e6f59214610650578063ce96cb77146106805761021a565b806395d89b41116100f257806395d89b4114610512578063a9059cbb14610530578063b20b242914610560578063b3d7f6b914610590578063b460af94146105c05761021a565b8063715018a6146104b05780638456cb59146104ba5780638da5cb5b146104c457806394bf804d146104e25761021a565b806323b872dd116101a6578063402d267d11610175578063402d267d146103d25780634cdad506146104025780635c975abb146104325780636e553f651461045057806370a08231146104805761021a565b806323b872dd1461035c578063313ce5671461038c57806338d52e0f146103aa5780633f4ba83a146103c85761021a565b80630a28a477116101ed5780630a28a477146102ba5780630c474691146102ea578063175188e81461030657806318160ddd14610322578063223e5479146103405761021a565b806301e1d1141461021e57806306fdde031461023c57806307a2d13a1461025a578063095ea7b31461028a575b5f80fd5b61022661078c565b604051610233919061241b565b60405180910390f35b610244610811565b60405161025191906124a4565b60405180910390f35b610274600480360381019061026f91906124f2565b6108a1565b604051610281919061241b565b60405180910390f35b6102a4600480360381019061029f9190612577565b6108b3565b6040516102b191906125cf565b60405180910390f35b6102d460048036038101906102cf91906124f2565b6108d5565b6040516102e1919061241b565b60405180910390f35b61030460048036038101906102ff91906125e8565b6108e8565b005b610320600480360381019061031b9190612626565b610a1c565b005b61032a610d2e565b604051610337919061241b565b60405180910390f35b61035a60048036038101906103559190612626565b610d37565b005b61037660048036038101906103719190612651565b610f3a565b60405161038391906125cf565b60405180910390f35b610394610f68565b6040516103a191906126bc565b60405180910390f35b6103b2610fa1565b6040516103bf91906126e4565b60405180910390f35b6103d0610fc8565b005b6103ec60048036038101906103e79190612626565b610fda565b6040516103f9919061241b565b60405180910390f35b61041c600480360381019061041791906124f2565b611003565b604051610429919061241b565b60405180910390f35b61043a611015565b60405161044791906125cf565b60405180910390f35b61046a600480360381019061046591906126fd565b61102b565b604051610477919061241b565b60405180910390f35b61049a60048036038101906104959190612626565b6110ab565b6040516104a7919061241b565b60405180910390f35b6104b86110f0565b005b6104c2611103565b005b6104cc611115565b6040516104d991906126e4565b60405180910390f35b6104fc60048036038101906104f791906126fd565b61113d565b604051610509919061241b565b60405180910390f35b61051a6111bd565b60405161052791906124a4565b60405180910390f35b61054a60048036038101906105459190612577565b61124d565b60405161055791906125cf565b60405180910390f35b61057a600480360381019061057591906124f2565b61126f565b60405161058791906126e4565b60405180910390f35b6105aa60048036038101906105a591906124f2565b6112aa565b6040516105b7919061241b565b60405180910390f35b6105da60048036038101906105d5919061273b565b6112bd565b6040516105e7919061241b565b60405180910390f35b61060a6004803603810190610605919061273b565b61133f565b604051610617919061241b565b60405180910390f35b61063a60048036038101906106359190612626565b6113c1565b604051610647919061241b565b60405180910390f35b61066a600480360381019061066591906124f2565b6113ea565b604051610677919061241b565b60405180910390f35b61069a60048036038101906106959190612626565b6113fc565b6040516106a7919061241b565b60405180910390f35b6106ca60048036038101906106c59190612626565b611415565b6040516106d791906125cf565b60405180910390f35b6106fa60048036038101906106f59190612626565b611432565b604051610707919061241b565b60405180910390f35b61072a6004803603810190610725919061278b565b611443565b604051610737919061241b565b60405180910390f35b61075a600480360381019061075591906124f2565b6114c5565b604051610767919061241b565b60405180910390f35b61078a60048036038101906107859190612626565b6114d7565b005b5f610795610fa1565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107cd91906126e4565b602060405180830381865afa1580156107e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080c91906127dd565b905090565b60606003805461082090612835565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90612835565b80156108975780601f1061086e57610100808354040283529160200191610897565b820191905f5260205f20905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b5f6108ac825f61155b565b9050919050565b5f806108bd6115b3565b90506108ca8185856115ba565b600191505092915050565b5f6108e18260016115cc565b9050919050565b6108f0611624565b6108f86116ab565b600680549050821061093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610936906128af565b60405180910390fd5b5f60068381548110610954576109536128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109c981837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116ec9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f04c429193504ad3c2cf06e0f2297127fd05e32601d5555ce5fd7eae9b77e4d1a83604051610a0f919061241b565b60405180910390a2505050565b610a24611624565b610a2c6116ab565b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612944565b60405180910390fd5b5f805f5b600680549050811015610b4d578373ffffffffffffffffffffffffffffffffffffffff1660068281548110610af157610af06128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b405780925060019150610b4d565b8080600101915050610ab9565b5080610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906129d2565b60405180910390fd5b6001600680549050610ba09190612a1d565b821015610c4e5760066001600680549050610bbb9190612a1d565b81548110610bcc57610bcb6128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068381548110610c0857610c076128cd565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6006805480610c6057610c5f612a50565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea460405160405180910390a2505050565b5f600254905090565b610d3f611624565b610d476116ab565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90612ac7565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690612b2f565b60405180910390fd5b600681908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f160405160405180910390a250565b5f80610f446115b3565b9050610f5185828561173f565b610f5c8585856117d2565b60019150509392505050565b5f610f716118c2565b7f0000000000000000000000000000000000000000000000000000000000000000610f9c9190612b4d565b905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b610fd0611624565b610fd86118c6565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f61100e825f61155b565b9050919050565b5f600560149054906101000a900460ff16905090565b5f8061103683610fda565b905080841115611081578284826040517f79012fb200000000000000000000000000000000000000000000000000000000815260040161107893929190612b81565b60405180910390fd5b5f61108b856114c5565b90506110a06110986115b3565b858784611928565b809250505092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110f8611624565b6111015f611942565b565b61110b611624565b611113611a05565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80611148836113c1565b905080841115611193578284826040517f284ff66700000000000000000000000000000000000000000000000000000000815260040161118a93929190612b81565b60405180910390fd5b5f61119d856112aa565b90506111b26111aa6115b3565b858388611928565b809250505092915050565b6060600480546111cc90612835565b80601f01602080910402602001604051908101604052809291908181526020018280546111f890612835565b80156112435780601f1061121a57610100808354040283529160200191611243565b820191905f5260205f20905b81548152906001019060200180831161122657829003601f168201915b5050505050905090565b5f806112576115b3565b90506112648185856117d2565b600191505092915050565b6006818154811061127e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6112b682600161155b565b9050919050565b5f806112c8836113fc565b905080851115611313578285826040517ffe9cceec00000000000000000000000000000000000000000000000000000000815260040161130a93929190612b81565b60405180910390fd5b5f61131d866108d5565b905061133361132a6115b3565b86868985611a68565b80925050509392505050565b5f8061134a83611432565b905080851115611395578285826040517fb94abeec00000000000000000000000000000000000000000000000000000000815260040161138c93929190612b81565b60405180910390fd5b5f61139f86611003565b90506113b56113ac6115b3565b8686848a611a68565b80925050509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f6113f5825f6115cc565b9050919050565b5f61140e61140983611432565b611003565b9050919050565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f61143c826110ab565b9050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6114d0825f6115cc565b9050919050565b6114df611624565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361154f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161154691906126e4565b60405180910390fd5b61155881611942565b50565b5f6115ab600161156961078c565b6115739190612bb6565b61157b6118c2565b600a6115879190612d18565b61158f610d2e565b6115999190612bb6565b8486611a84909392919063ffffffff16565b905092915050565b5f33905090565b6115c78383836001611ad1565b505050565b5f61161c6115d86118c2565b600a6115e49190612d18565b6115ec610d2e565b6115f69190612bb6565b600161160061078c565b61160a9190612bb6565b8486611a84909392919063ffffffff16565b905092915050565b61162c6115b3565b73ffffffffffffffffffffffffffffffffffffffff1661164a611115565b73ffffffffffffffffffffffffffffffffffffffff16146116a95761166d6115b3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116a091906126e4565b60405180910390fd5b565b6116b3611015565b156116ea576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6116f98383836001611ca0565b61173a57826040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161173191906126e4565b60405180910390fd5b505050565b5f61174a8484611443565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156117cc57818110156117bd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016117b493929190612b81565b60405180910390fd5b6117cb84848484035f611ad1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611842575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161183991906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b2575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016118a991906126e4565b60405180910390fd5b6118bd838383611d02565b505050565b5f90565b6118ce611f1b565b5f600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6119116115b3565b60405161191e91906126e4565b60405180910390a1565b6119306116ab565b61193c84848484611f5b565b50505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611a0d6116ab565b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a516115b3565b604051611a5e91906126e4565b60405180910390a1565b611a706116ab565b611a7d8585858585611fdc565b5050505050565b5f611ab2611a91836120b4565b8015611aad57505f8480611aa857611aa7612d62565b5b868809115b6120e1565b611abd8686866120ec565b611ac79190612bb6565b9050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b41575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611b3891906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bb1575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611ba891906126e4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c9a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c91919061241b565b60405180910390a35b50505050565b5f8063a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f808b5af1925060015f51148316611cf4578383151615611ce8573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d52578060025f828254611d469190612bb6565b92505081905550611e20565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ddb578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611dd293929190612b81565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e67578060025f8282540392505081905550611eb1565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f0e919061241b565b60405180910390a3505050565b611f23611015565b611f59576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611f6584836121cb565b611f6f83826121e2565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051611fce929190612d8f565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461201b5761201a83868361173f565b5b6120258382612261565b61202f84836122e0565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db85856040516120a5929190612d8f565b60405180910390a45050505050565b5f600160028360038111156120cc576120cb612db6565b5b6120d69190612de3565b60ff16149050919050565b5f8115159050919050565b5f805f6120f986866122f6565b915091505f820361211e5783818161211457612113612d62565b5b04925050506121c4565b81841161213d5761213c6121375f861460126011612313565b61232c565b5b5f8486880990508181118303925080820391505f855f038616905080860495508083049250600181825f0304019050808402831792505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808402955050505050505b9392505050565b6121de6121d6610fa1565b83308461233d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612252575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161224991906126e4565b60405180910390fd5b61225d5f8383611d02565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d1575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122c891906126e4565b60405180910390fd5b6122dc825f83611d02565b5050565b6122f26122eb610fa1565b83836116ec565b5050565b5f805f198385098385029150818110828203039250509250929050565b5f61231d846120e1565b82841802821890509392505050565b634e487b715f52806020526024601cfd5b61234b848484846001612392565b61238c57836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161238391906126e4565b60405180910390fd5b50505050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f511483166123f05783831516156123e4573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f819050919050565b61241581612403565b82525050565b5f60208201905061242e5f83018461240c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247682612434565b612480818561243e565b935061249081856020860161244e565b6124998161245c565b840191505092915050565b5f6020820190508181035f8301526124bc818461246c565b905092915050565b5f80fd5b6124d181612403565b81146124db575f80fd5b50565b5f813590506124ec816124c8565b92915050565b5f60208284031215612507576125066124c4565b5b5f612514848285016124de565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125468261251d565b9050919050565b6125568161253c565b8114612560575f80fd5b50565b5f813590506125718161254d565b92915050565b5f806040838503121561258d5761258c6124c4565b5b5f61259a85828601612563565b92505060206125ab858286016124de565b9150509250929050565b5f8115159050919050565b6125c9816125b5565b82525050565b5f6020820190506125e25f8301846125c0565b92915050565b5f80604083850312156125fe576125fd6124c4565b5b5f61260b858286016124de565b925050602061261c858286016124de565b9150509250929050565b5f6020828403121561263b5761263a6124c4565b5b5f61264884828501612563565b91505092915050565b5f805f60608486031215612668576126676124c4565b5b5f61267586828701612563565b935050602061268686828701612563565b9250506040612697868287016124de565b9150509250925092565b5f60ff82169050919050565b6126b6816126a1565b82525050565b5f6020820190506126cf5f8301846126ad565b92915050565b6126de8161253c565b82525050565b5f6020820190506126f75f8301846126d5565b92915050565b5f8060408385031215612713576127126124c4565b5b5f612720858286016124de565b925050602061273185828601612563565b9150509250929050565b5f805f60608486031215612752576127516124c4565b5b5f61275f868287016124de565b935050602061277086828701612563565b925050604061278186828701612563565b9150509250925092565b5f80604083850312156127a1576127a06124c4565b5b5f6127ae85828601612563565b92505060206127bf85828601612563565b9150509250929050565b5f815190506127d7816124c8565b92915050565b5f602082840312156127f2576127f16124c4565b5b5f6127ff848285016127c9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061284c57607f821691505b60208210810361285f5761285e612808565b5b50919050565b7f496e76616c696420737472617465677920696e646578000000000000000000005f82015250565b5f61289960168361243e565b91506128a482612865565b602082019050919050565b5f6020820190508181035f8301526128c68161288d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5374726174656779206973206e6f7420616374697665000000000000000000005f82015250565b5f61292e60168361243e565b9150612939826128fa565b602082019050919050565b5f6020820190508181035f83015261295b81612922565b9050919050565b7f5374726174656779206e6f7420666f756e6420696e20616374697665207374725f8201527f6174656769657300000000000000000000000000000000000000000000000000602082015250565b5f6129bc60278361243e565b91506129c782612962565b604082019050919050565b5f6020820190508181035f8301526129e9816129b0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a2782612403565b9150612a3283612403565b9250828203905081811115612a4a57612a496129f0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f53747261746567792063616e6e6f74206265207a65726f2061646472657373005f82015250565b5f612ab1601f8361243e565b9150612abc82612a7d565b602082019050919050565b5f6020820190508181035f830152612ade81612aa5565b9050919050565b7f537472617465677920616c7265616479206163746976650000000000000000005f82015250565b5f612b1960178361243e565b9150612b2482612ae5565b602082019050919050565b5f6020820190508181035f830152612b4681612b0d565b9050919050565b5f612b57826126a1565b9150612b62836126a1565b9250828201905060ff811115612b7b57612b7a6129f0565b5b92915050565b5f606082019050612b945f8301866126d5565b612ba1602083018561240c565b612bae604083018461240c565b949350505050565b5f612bc082612403565b9150612bcb83612403565b9250828201905080821115612be357612be26129f0565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612c3e57808604811115612c1a57612c196129f0565b5b6001851615612c295780820291505b8081029050612c3785612be9565b9450612bfe565b94509492505050565b5f82612c565760019050612d11565b81612c63575f9050612d11565b8160018114612c795760028114612c8357612cb2565b6001915050612d11565b60ff841115612c9557612c946129f0565b5b8360020a915084821115612cac57612cab6129f0565b5b50612d11565b5060208310610133831016604e8410600b8410161715612ce75782820a905083811115612ce257612ce16129f0565b5b612d11565b612cf48484846001612bf5565b92509050818404811115612d0b57612d0a6129f0565b5b81810290505b9392505050565b5f612d2282612403565b9150612d2d836126a1565b9250612d5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c47565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f604082019050612da25f83018561240c565b612daf602083018461240c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f612ded826126a1565b9150612df8836126a1565b925082612e0857612e07612d62565b5b82820690509291505056fea2646970667358221220fa3bd3c51766bd22cbd04b38725598e4a5231c1d3036a24f4c2cd1f4cead250664736f6c634300081a0033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061021a575f3560e01c8063715018a611610123578063ba087652116100ab578063d25815031161007a578063d2581503146106b0578063d905777e146106e0578063dd62ed3e14610710578063ef8b30f714610740578063f2fde38b146107705761021a565b8063ba087652146105f0578063c63d75b614610620578063c6e6f59214610650578063ce96cb77146106805761021a565b806395d89b41116100f257806395d89b4114610512578063a9059cbb14610530578063b20b242914610560578063b3d7f6b914610590578063b460af94146105c05761021a565b8063715018a6146104b05780638456cb59146104ba5780638da5cb5b146104c457806394bf804d146104e25761021a565b806323b872dd116101a6578063402d267d11610175578063402d267d146103d25780634cdad506146104025780635c975abb146104325780636e553f651461045057806370a08231146104805761021a565b806323b872dd1461035c578063313ce5671461038c57806338d52e0f146103aa5780633f4ba83a146103c85761021a565b80630a28a477116101ed5780630a28a477146102ba5780630c474691146102ea578063175188e81461030657806318160ddd14610322578063223e5479146103405761021a565b806301e1d1141461021e57806306fdde031461023c57806307a2d13a1461025a578063095ea7b31461028a575b5f80fd5b61022661078c565b604051610233919061241b565b60405180910390f35b610244610811565b60405161025191906124a4565b60405180910390f35b610274600480360381019061026f91906124f2565b6108a1565b604051610281919061241b565b60405180910390f35b6102a4600480360381019061029f9190612577565b6108b3565b6040516102b191906125cf565b60405180910390f35b6102d460048036038101906102cf91906124f2565b6108d5565b6040516102e1919061241b565b60405180910390f35b61030460048036038101906102ff91906125e8565b6108e8565b005b610320600480360381019061031b9190612626565b610a1c565b005b61032a610d2e565b604051610337919061241b565b60405180910390f35b61035a60048036038101906103559190612626565b610d37565b005b61037660048036038101906103719190612651565b610f3a565b60405161038391906125cf565b60405180910390f35b610394610f68565b6040516103a191906126bc565b60405180910390f35b6103b2610fa1565b6040516103bf91906126e4565b60405180910390f35b6103d0610fc8565b005b6103ec60048036038101906103e79190612626565b610fda565b6040516103f9919061241b565b60405180910390f35b61041c600480360381019061041791906124f2565b611003565b604051610429919061241b565b60405180910390f35b61043a611015565b60405161044791906125cf565b60405180910390f35b61046a600480360381019061046591906126fd565b61102b565b604051610477919061241b565b60405180910390f35b61049a60048036038101906104959190612626565b6110ab565b6040516104a7919061241b565b60405180910390f35b6104b86110f0565b005b6104c2611103565b005b6104cc611115565b6040516104d991906126e4565b60405180910390f35b6104fc60048036038101906104f791906126fd565b61113d565b604051610509919061241b565b60405180910390f35b61051a6111bd565b60405161052791906124a4565b60405180910390f35b61054a60048036038101906105459190612577565b61124d565b60405161055791906125cf565b60405180910390f35b61057a600480360381019061057591906124f2565b61126f565b60405161058791906126e4565b60405180910390f35b6105aa60048036038101906105a591906124f2565b6112aa565b6040516105b7919061241b565b60405180910390f35b6105da60048036038101906105d5919061273b565b6112bd565b6040516105e7919061241b565b60405180910390f35b61060a6004803603810190610605919061273b565b61133f565b604051610617919061241b565b60405180910390f35b61063a60048036038101906106359190612626565b6113c1565b604051610647919061241b565b60405180910390f35b61066a600480360381019061066591906124f2565b6113ea565b604051610677919061241b565b60405180910390f35b61069a60048036038101906106959190612626565b6113fc565b6040516106a7919061241b565b60405180910390f35b6106ca60048036038101906106c59190612626565b611415565b6040516106d791906125cf565b60405180910390f35b6106fa60048036038101906106f59190612626565b611432565b604051610707919061241b565b60405180910390f35b61072a6004803603810190610725919061278b565b611443565b604051610737919061241b565b60405180910390f35b61075a600480360381019061075591906124f2565b6114c5565b604051610767919061241b565b60405180910390f35b61078a60048036038101906107859190612626565b6114d7565b005b5f610795610fa1565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107cd91906126e4565b602060405180830381865afa1580156107e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080c91906127dd565b905090565b60606003805461082090612835565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90612835565b80156108975780601f1061086e57610100808354040283529160200191610897565b820191905f5260205f20905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b5f6108ac825f61155b565b9050919050565b5f806108bd6115b3565b90506108ca8185856115ba565b600191505092915050565b5f6108e18260016115cc565b9050919050565b6108f0611624565b6108f86116ab565b600680549050821061093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610936906128af565b60405180910390fd5b5f60068381548110610954576109536128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109c981837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116ec9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f04c429193504ad3c2cf06e0f2297127fd05e32601d5555ce5fd7eae9b77e4d1a83604051610a0f919061241b565b60405180910390a2505050565b610a24611624565b610a2c6116ab565b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612944565b60405180910390fd5b5f805f5b600680549050811015610b4d578373ffffffffffffffffffffffffffffffffffffffff1660068281548110610af157610af06128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b405780925060019150610b4d565b8080600101915050610ab9565b5080610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906129d2565b60405180910390fd5b6001600680549050610ba09190612a1d565b821015610c4e5760066001600680549050610bbb9190612a1d565b81548110610bcc57610bcb6128cd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068381548110610c0857610c076128cd565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6006805480610c6057610c5f612a50565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea460405160405180910390a2505050565b5f600254905090565b610d3f611624565b610d476116ab565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90612ac7565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690612b2f565b60405180910390fd5b600681908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f160405160405180910390a250565b5f80610f446115b3565b9050610f5185828561173f565b610f5c8585856117d2565b60019150509392505050565b5f610f716118c2565b7f0000000000000000000000000000000000000000000000000000000000000000610f9c9190612b4d565b905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b610fd0611624565b610fd86118c6565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f61100e825f61155b565b9050919050565b5f600560149054906101000a900460ff16905090565b5f8061103683610fda565b905080841115611081578284826040517f79012fb200000000000000000000000000000000000000000000000000000000815260040161107893929190612b81565b60405180910390fd5b5f61108b856114c5565b90506110a06110986115b3565b858784611928565b809250505092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110f8611624565b6111015f611942565b565b61110b611624565b611113611a05565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80611148836113c1565b905080841115611193578284826040517f284ff66700000000000000000000000000000000000000000000000000000000815260040161118a93929190612b81565b60405180910390fd5b5f61119d856112aa565b90506111b26111aa6115b3565b858388611928565b809250505092915050565b6060600480546111cc90612835565b80601f01602080910402602001604051908101604052809291908181526020018280546111f890612835565b80156112435780601f1061121a57610100808354040283529160200191611243565b820191905f5260205f20905b81548152906001019060200180831161122657829003601f168201915b5050505050905090565b5f806112576115b3565b90506112648185856117d2565b600191505092915050565b6006818154811061127e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6112b682600161155b565b9050919050565b5f806112c8836113fc565b905080851115611313578285826040517ffe9cceec00000000000000000000000000000000000000000000000000000000815260040161130a93929190612b81565b60405180910390fd5b5f61131d866108d5565b905061133361132a6115b3565b86868985611a68565b80925050509392505050565b5f8061134a83611432565b905080851115611395578285826040517fb94abeec00000000000000000000000000000000000000000000000000000000815260040161138c93929190612b81565b60405180910390fd5b5f61139f86611003565b90506113b56113ac6115b3565b8686848a611a68565b80925050509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f6113f5825f6115cc565b9050919050565b5f61140e61140983611432565b611003565b9050919050565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f61143c826110ab565b9050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6114d0825f6115cc565b9050919050565b6114df611624565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361154f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161154691906126e4565b60405180910390fd5b61155881611942565b50565b5f6115ab600161156961078c565b6115739190612bb6565b61157b6118c2565b600a6115879190612d18565b61158f610d2e565b6115999190612bb6565b8486611a84909392919063ffffffff16565b905092915050565b5f33905090565b6115c78383836001611ad1565b505050565b5f61161c6115d86118c2565b600a6115e49190612d18565b6115ec610d2e565b6115f69190612bb6565b600161160061078c565b61160a9190612bb6565b8486611a84909392919063ffffffff16565b905092915050565b61162c6115b3565b73ffffffffffffffffffffffffffffffffffffffff1661164a611115565b73ffffffffffffffffffffffffffffffffffffffff16146116a95761166d6115b3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116a091906126e4565b60405180910390fd5b565b6116b3611015565b156116ea576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6116f98383836001611ca0565b61173a57826040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161173191906126e4565b60405180910390fd5b505050565b5f61174a8484611443565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156117cc57818110156117bd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016117b493929190612b81565b60405180910390fd5b6117cb84848484035f611ad1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611842575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161183991906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b2575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016118a991906126e4565b60405180910390fd5b6118bd838383611d02565b505050565b5f90565b6118ce611f1b565b5f600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6119116115b3565b60405161191e91906126e4565b60405180910390a1565b6119306116ab565b61193c84848484611f5b565b50505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611a0d6116ab565b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a516115b3565b604051611a5e91906126e4565b60405180910390a1565b611a706116ab565b611a7d8585858585611fdc565b5050505050565b5f611ab2611a91836120b4565b8015611aad57505f8480611aa857611aa7612d62565b5b868809115b6120e1565b611abd8686866120ec565b611ac79190612bb6565b9050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b41575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611b3891906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bb1575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611ba891906126e4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c9a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c91919061241b565b60405180910390a35b50505050565b5f8063a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f808b5af1925060015f51148316611cf4578383151615611ce8573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d52578060025f828254611d469190612bb6565b92505081905550611e20565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ddb578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611dd293929190612b81565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e67578060025f8282540392505081905550611eb1565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f0e919061241b565b60405180910390a3505050565b611f23611015565b611f59576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611f6584836121cb565b611f6f83826121e2565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051611fce929190612d8f565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461201b5761201a83868361173f565b5b6120258382612261565b61202f84836122e0565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db85856040516120a5929190612d8f565b60405180910390a45050505050565b5f600160028360038111156120cc576120cb612db6565b5b6120d69190612de3565b60ff16149050919050565b5f8115159050919050565b5f805f6120f986866122f6565b915091505f820361211e5783818161211457612113612d62565b5b04925050506121c4565b81841161213d5761213c6121375f861460126011612313565b61232c565b5b5f8486880990508181118303925080820391505f855f038616905080860495508083049250600181825f0304019050808402831792505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808402955050505050505b9392505050565b6121de6121d6610fa1565b83308461233d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612252575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161224991906126e4565b60405180910390fd5b61225d5f8383611d02565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d1575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122c891906126e4565b60405180910390fd5b6122dc825f83611d02565b5050565b6122f26122eb610fa1565b83836116ec565b5050565b5f805f198385098385029150818110828203039250509250929050565b5f61231d846120e1565b82841802821890509392505050565b634e487b715f52806020526024601cfd5b61234b848484846001612392565b61238c57836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161238391906126e4565b60405180910390fd5b50505050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f511483166123f05783831516156123e4573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f819050919050565b61241581612403565b82525050565b5f60208201905061242e5f83018461240c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247682612434565b612480818561243e565b935061249081856020860161244e565b6124998161245c565b840191505092915050565b5f6020820190508181035f8301526124bc818461246c565b905092915050565b5f80fd5b6124d181612403565b81146124db575f80fd5b50565b5f813590506124ec816124c8565b92915050565b5f60208284031215612507576125066124c4565b5b5f612514848285016124de565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125468261251d565b9050919050565b6125568161253c565b8114612560575f80fd5b50565b5f813590506125718161254d565b92915050565b5f806040838503121561258d5761258c6124c4565b5b5f61259a85828601612563565b92505060206125ab858286016124de565b9150509250929050565b5f8115159050919050565b6125c9816125b5565b82525050565b5f6020820190506125e25f8301846125c0565b92915050565b5f80604083850312156125fe576125fd6124c4565b5b5f61260b858286016124de565b925050602061261c858286016124de565b9150509250929050565b5f6020828403121561263b5761263a6124c4565b5b5f61264884828501612563565b91505092915050565b5f805f60608486031215612668576126676124c4565b5b5f61267586828701612563565b935050602061268686828701612563565b9250506040612697868287016124de565b9150509250925092565b5f60ff82169050919050565b6126b6816126a1565b82525050565b5f6020820190506126cf5f8301846126ad565b92915050565b6126de8161253c565b82525050565b5f6020820190506126f75f8301846126d5565b92915050565b5f8060408385031215612713576127126124c4565b5b5f612720858286016124de565b925050602061273185828601612563565b9150509250929050565b5f805f60608486031215612752576127516124c4565b5b5f61275f868287016124de565b935050602061277086828701612563565b925050604061278186828701612563565b9150509250925092565b5f80604083850312156127a1576127a06124c4565b5b5f6127ae85828601612563565b92505060206127bf85828601612563565b9150509250929050565b5f815190506127d7816124c8565b92915050565b5f602082840312156127f2576127f16124c4565b5b5f6127ff848285016127c9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061284c57607f821691505b60208210810361285f5761285e612808565b5b50919050565b7f496e76616c696420737472617465677920696e646578000000000000000000005f82015250565b5f61289960168361243e565b91506128a482612865565b602082019050919050565b5f6020820190508181035f8301526128c68161288d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5374726174656779206973206e6f7420616374697665000000000000000000005f82015250565b5f61292e60168361243e565b9150612939826128fa565b602082019050919050565b5f6020820190508181035f83015261295b81612922565b9050919050565b7f5374726174656779206e6f7420666f756e6420696e20616374697665207374725f8201527f6174656769657300000000000000000000000000000000000000000000000000602082015250565b5f6129bc60278361243e565b91506129c782612962565b604082019050919050565b5f6020820190508181035f8301526129e9816129b0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a2782612403565b9150612a3283612403565b9250828203905081811115612a4a57612a496129f0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f53747261746567792063616e6e6f74206265207a65726f2061646472657373005f82015250565b5f612ab1601f8361243e565b9150612abc82612a7d565b602082019050919050565b5f6020820190508181035f830152612ade81612aa5565b9050919050565b7f537472617465677920616c7265616479206163746976650000000000000000005f82015250565b5f612b1960178361243e565b9150612b2482612ae5565b602082019050919050565b5f6020820190508181035f830152612b4681612b0d565b9050919050565b5f612b57826126a1565b9150612b62836126a1565b9250828201905060ff811115612b7b57612b7a6129f0565b5b92915050565b5f606082019050612b945f8301866126d5565b612ba1602083018561240c565b612bae604083018461240c565b949350505050565b5f612bc082612403565b9150612bcb83612403565b9250828201905080821115612be357612be26129f0565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612c3e57808604811115612c1a57612c196129f0565b5b6001851615612c295780820291505b8081029050612c3785612be9565b9450612bfe565b94509492505050565b5f82612c565760019050612d11565b81612c63575f9050612d11565b8160018114612c795760028114612c8357612cb2565b6001915050612d11565b60ff841115612c9557612c946129f0565b5b8360020a915084821115612cac57612cab6129f0565b5b50612d11565b5060208310610133831016604e8410600b8410161715612ce75782820a905083811115612ce257612ce16129f0565b5b612d11565b612cf48484846001612bf5565b92509050818404811115612d0b57612d0a6129f0565b5b81810290505b9392505050565b5f612d2282612403565b9150612d2d836126a1565b9250612d5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c47565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f604082019050612da25f83018561240c565b612daf602083018461240c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f612ded826126a1565b9150612df8836126a1565b925082612e0857612e07612d62565b5b82820690509291505056fea2646970667358221220fa3bd3c51766bd22cbd04b38725598e4a5231c1d3036a24f4c2cd1f4cead250664736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/contracts/mocks/MockERC20.sol/MockERC20.dbg.json b/legacy/evm/artifacts/contracts/mocks/MockERC20.sol/MockERC20.dbg.json new file mode 100644 index 0000000..4dd768f --- /dev/null +++ b/legacy/evm/artifacts/contracts/mocks/MockERC20.sol/MockERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/contracts/mocks/MockERC20.sol/MockERC20.json b/legacy/evm/artifacts/contracts/mocks/MockERC20.sol/MockERC20.json new file mode 100644 index 0000000..34d6403 --- /dev/null +++ b/legacy/evm/artifacts/contracts/mocks/MockERC20.sol/MockERC20.json @@ -0,0 +1,209 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockERC20", + "sourceName": "contracts/mocks/MockERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561000f575f80fd5b50604051611233380380611233833981810160405281019061003191906101f5565b825f908161003f919061048a565b50816001908161004f919061048a565b508060025f6101000a81548160ff021916908360ff160217905550505050610559565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100d18261008b565b810181811067ffffffffffffffff821117156100f0576100ef61009b565b5b80604052505050565b5f610102610072565b905061010e82826100c8565b919050565b5f67ffffffffffffffff82111561012d5761012c61009b565b5b6101368261008b565b9050602081019050919050565b8281835e5f83830152505050565b5f61016361015e84610113565b6100f9565b90508281526020810184848401111561017f5761017e610087565b5b61018a848285610143565b509392505050565b5f82601f8301126101a6576101a5610083565b5b81516101b6848260208601610151565b91505092915050565b5f60ff82169050919050565b6101d4816101bf565b81146101de575f80fd5b50565b5f815190506101ef816101cb565b92915050565b5f805f6060848603121561020c5761020b61007b565b5b5f84015167ffffffffffffffff8111156102295761022861007f565b5b61023586828701610192565b935050602084015167ffffffffffffffff8111156102565761025561007f565b5b61026286828701610192565b9250506040610273868287016101e1565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102cb57607f821691505b6020821081036102de576102dd610287565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610305565b61034a8683610305565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61038e61038961038484610362565b61036b565b610362565b9050919050565b5f819050919050565b6103a783610374565b6103bb6103b382610395565b848454610311565b825550505050565b5f90565b6103cf6103c3565b6103da81848461039e565b505050565b5b818110156103fd576103f25f826103c7565b6001810190506103e0565b5050565b601f82111561044257610413816102e4565b61041c846102f6565b8101602085101561042b578190505b61043f610437856102f6565b8301826103df565b50505b505050565b5f82821c905092915050565b5f6104625f1984600802610447565b1980831691505092915050565b5f61047a8383610453565b9150826002028217905092915050565b6104938261027d565b67ffffffffffffffff8111156104ac576104ab61009b565b5b6104b682546102b4565b6104c1828285610401565b5f60209050601f8311600181146104f2575f84156104e0578287015190505b6104ea858261046f565b865550610551565b601f198416610500866102e4565b5f5b8281101561052757848901518255600182019150602085019450602081019050610502565b868310156105445784890151610540601f891682610453565b8355505b6001600288020188555050505b505050505050565b610ccd806105665f395ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c806340c10f191161006457806340c10f191461013157806370a082311461014d57806395d89b411461017d578063a9059cbb1461019b578063dd62ed3e146101cb57610091565b806306fdde0314610095578063095ea7b3146100b357806323b872dd146100e3578063313ce56714610113575b5f80fd5b61009d6101fb565b6040516100aa9190610854565b60405180910390f35b6100cd60048036038101906100c89190610905565b610286565b6040516100da919061095d565b60405180910390f35b6100fd60048036038101906100f89190610976565b61030e565b60405161010a919061095d565b60405180910390f35b61011b610589565b60405161012891906109e1565b60405180910390f35b61014b60048036038101906101469190610905565b61059b565b005b610167600480360381019061016291906109fa565b6105f2565b6040516101749190610a34565b60405180910390f35b610185610607565b6040516101929190610854565b60405180910390f35b6101b560048036038101906101b09190610905565b610693565b6040516101c2919061095d565b60405180910390f35b6101e560048036038101906101e09190610a4d565b6107c4565b6040516101f29190610a34565b60405180910390f35b5f805461020790610ab8565b80601f016020809104026020016040519081016040528092919081815260200182805461023390610ab8565b801561027e5780601f106102555761010080835404028352916020019161027e565b820191905f5260205f20905b81548152906001019060200180831161026157829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001905092915050565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561038f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038690610b58565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044190610be6565b60405180910390fd5b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104969190610c31565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104e99190610c64565b925050819055508160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105779190610c31565b92505081905550600190509392505050565b60025f9054906101000a900460ff1681565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105e79190610c64565b925050819055505050565b6003602052805f5260405f205f915090505481565b6001805461061490610ab8565b80601f016020809104026020016040519081016040528092919081815260200182805461064090610ab8565b801561068b5780601f106106625761010080835404028352916020019161068b565b820191905f5260205f20905b81548152906001019060200180831161066e57829003601f168201915b505050505081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90610b58565b60405180910390fd5b8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107609190610c31565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107b39190610c64565b925050819055506001905092915050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610826826107e4565b61083081856107ee565b93506108408185602086016107fe565b6108498161080c565b840191505092915050565b5f6020820190508181035f83015261086c818461081c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108a182610878565b9050919050565b6108b181610897565b81146108bb575f80fd5b50565b5f813590506108cc816108a8565b92915050565b5f819050919050565b6108e4816108d2565b81146108ee575f80fd5b50565b5f813590506108ff816108db565b92915050565b5f806040838503121561091b5761091a610874565b5b5f610928858286016108be565b9250506020610939858286016108f1565b9150509250929050565b5f8115159050919050565b61095781610943565b82525050565b5f6020820190506109705f83018461094e565b92915050565b5f805f6060848603121561098d5761098c610874565b5b5f61099a868287016108be565b93505060206109ab868287016108be565b92505060406109bc868287016108f1565b9150509250925092565b5f60ff82169050919050565b6109db816109c6565b82525050565b5f6020820190506109f45f8301846109d2565b92915050565b5f60208284031215610a0f57610a0e610874565b5b5f610a1c848285016108be565b91505092915050565b610a2e816108d2565b82525050565b5f602082019050610a475f830184610a25565b92915050565b5f8060408385031215610a6357610a62610874565b5b5f610a70858286016108be565b9250506020610a81858286016108be565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610acf57607f821691505b602082108103610ae257610ae1610a8b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f610b426026836107ee565b9150610b4d82610ae8565b604082019050919050565b5f6020820190508181035f830152610b6f81610b36565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f610bd06028836107ee565b9150610bdb82610b76565b604082019050919050565b5f6020820190508181035f830152610bfd81610bc4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c3b826108d2565b9150610c46836108d2565b9250828203905081811115610c5e57610c5d610c04565b5b92915050565b5f610c6e826108d2565b9150610c79836108d2565b9250828201905080821115610c9157610c90610c04565b5b9291505056fea2646970667358221220d980f1b95d92986aca3cba704275c02bcc7167fe1ad3089b07ec23124b960dfd64736f6c634300081a0033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610091575f3560e01c806340c10f191161006457806340c10f191461013157806370a082311461014d57806395d89b411461017d578063a9059cbb1461019b578063dd62ed3e146101cb57610091565b806306fdde0314610095578063095ea7b3146100b357806323b872dd146100e3578063313ce56714610113575b5f80fd5b61009d6101fb565b6040516100aa9190610854565b60405180910390f35b6100cd60048036038101906100c89190610905565b610286565b6040516100da919061095d565b60405180910390f35b6100fd60048036038101906100f89190610976565b61030e565b60405161010a919061095d565b60405180910390f35b61011b610589565b60405161012891906109e1565b60405180910390f35b61014b60048036038101906101469190610905565b61059b565b005b610167600480360381019061016291906109fa565b6105f2565b6040516101749190610a34565b60405180910390f35b610185610607565b6040516101929190610854565b60405180910390f35b6101b560048036038101906101b09190610905565b610693565b6040516101c2919061095d565b60405180910390f35b6101e560048036038101906101e09190610a4d565b6107c4565b6040516101f29190610a34565b60405180910390f35b5f805461020790610ab8565b80601f016020809104026020016040519081016040528092919081815260200182805461023390610ab8565b801561027e5780601f106102555761010080835404028352916020019161027e565b820191905f5260205f20905b81548152906001019060200180831161026157829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001905092915050565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561038f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038690610b58565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044190610be6565b60405180910390fd5b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104969190610c31565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104e99190610c64565b925050819055508160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105779190610c31565b92505081905550600190509392505050565b60025f9054906101000a900460ff1681565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105e79190610c64565b925050819055505050565b6003602052805f5260405f205f915090505481565b6001805461061490610ab8565b80601f016020809104026020016040519081016040528092919081815260200182805461064090610ab8565b801561068b5780601f106106625761010080835404028352916020019161068b565b820191905f5260205f20905b81548152906001019060200180831161066e57829003601f168201915b505050505081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90610b58565b60405180910390fd5b8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107609190610c31565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107b39190610c64565b925050819055506001905092915050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610826826107e4565b61083081856107ee565b93506108408185602086016107fe565b6108498161080c565b840191505092915050565b5f6020820190508181035f83015261086c818461081c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108a182610878565b9050919050565b6108b181610897565b81146108bb575f80fd5b50565b5f813590506108cc816108a8565b92915050565b5f819050919050565b6108e4816108d2565b81146108ee575f80fd5b50565b5f813590506108ff816108db565b92915050565b5f806040838503121561091b5761091a610874565b5b5f610928858286016108be565b9250506020610939858286016108f1565b9150509250929050565b5f8115159050919050565b61095781610943565b82525050565b5f6020820190506109705f83018461094e565b92915050565b5f805f6060848603121561098d5761098c610874565b5b5f61099a868287016108be565b93505060206109ab868287016108be565b92505060406109bc868287016108f1565b9150509250925092565b5f60ff82169050919050565b6109db816109c6565b82525050565b5f6020820190506109f45f8301846109d2565b92915050565b5f60208284031215610a0f57610a0e610874565b5b5f610a1c848285016108be565b91505092915050565b610a2e816108d2565b82525050565b5f602082019050610a475f830184610a25565b92915050565b5f8060408385031215610a6357610a62610874565b5b5f610a70858286016108be565b9250506020610a81858286016108be565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610acf57607f821691505b602082108103610ae257610ae1610a8b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f610b426026836107ee565b9150610b4d82610ae8565b604082019050919050565b5f6020820190508181035f830152610b6f81610b36565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f610bd06028836107ee565b9150610bdb82610b76565b604082019050919050565b5f6020820190508181035f830152610bfd81610bc4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c3b826108d2565b9150610c46836108d2565b9250828203905081811115610c5e57610c5d610c04565b5b92915050565b5f610c6e826108d2565b9150610c79836108d2565b9250828201905080821115610c9157610c90610c04565b5b9291505056fea2646970667358221220d980f1b95d92986aca3cba704275c02bcc7167fe1ad3089b07ec23124b960dfd64736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/contracts/mocks/MockRouter.sol/MockRouter.dbg.json b/legacy/evm/artifacts/contracts/mocks/MockRouter.sol/MockRouter.dbg.json new file mode 100644 index 0000000..4dd768f --- /dev/null +++ b/legacy/evm/artifacts/contracts/mocks/MockRouter.sol/MockRouter.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/contracts/mocks/MockRouter.sol/MockRouter.json b/legacy/evm/artifacts/contracts/mocks/MockRouter.sol/MockRouter.json new file mode 100644 index 0000000..cb26fc5 --- /dev/null +++ b/legacy/evm/artifacts/contracts/mocks/MockRouter.sol/MockRouter.json @@ -0,0 +1,43 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockRouter", + "sourceName": "contracts/mocks/MockRouter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "fromToken", + "type": "address" + }, + { + "internalType": "address", + "name": "toToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "toAddress", + "type": "address" + } + ], + "name": "swapAndSend", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x6080604052348015600e575f80fd5b506101798061001c5f395ff3fe608060405260043610610021575f3560e01c80630b51588d1461002c57610028565b3661002857005b5f80fd5b610046600480360381019061004191906100df565b610048565b005b50505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61007b82610052565b9050919050565b61008b81610071565b8114610095575f80fd5b50565b5f813590506100a681610082565b92915050565b5f819050919050565b6100be816100ac565b81146100c8575f80fd5b50565b5f813590506100d9816100b5565b92915050565b5f805f80608085870312156100f7576100f661004e565b5b5f61010487828801610098565b945050602061011587828801610098565b9350506040610126878288016100cb565b925050606061013787828801610098565b9150509295919450925056fea26469706673582212200cea30ffc360d5b146fa802726899fe4b61d8dcf62ace8ea39d9ce4f6424596864736f6c634300081a0033", + "deployedBytecode": "0x608060405260043610610021575f3560e01c80630b51588d1461002c57610028565b3661002857005b5f80fd5b610046600480360381019061004191906100df565b610048565b005b50505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61007b82610052565b9050919050565b61008b81610071565b8114610095575f80fd5b50565b5f813590506100a681610082565b92915050565b5f819050919050565b6100be816100ac565b81146100c8575f80fd5b50565b5f813590506100d9816100b5565b92915050565b5f805f80608085870312156100f7576100f661004e565b5b5f61010487828801610098565b945050602061011587828801610098565b9350506040610126878288016100cb565b925050606061013787828801610098565b9150509295919450925056fea26469706673582212200cea30ffc360d5b146fa802726899fe4b61d8dcf62ace8ea39d9ce4f6424596864736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/artifacts/contracts/mocks/MockStrategy.sol/MockStrategy.dbg.json b/legacy/evm/artifacts/contracts/mocks/MockStrategy.sol/MockStrategy.dbg.json new file mode 100644 index 0000000..4dd768f --- /dev/null +++ b/legacy/evm/artifacts/contracts/mocks/MockStrategy.sol/MockStrategy.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/1282d9a13b7ab675f783ff431077ec65.json" +} diff --git a/legacy/evm/artifacts/contracts/mocks/MockStrategy.sol/MockStrategy.json b/legacy/evm/artifacts/contracts/mocks/MockStrategy.sol/MockStrategy.json new file mode 100644 index 0000000..e8853a8 --- /dev/null +++ b/legacy/evm/artifacts/contracts/mocks/MockStrategy.sol/MockStrategy.json @@ -0,0 +1,37 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockStrategy", + "sourceName": "contracts/mocks/MockStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600e575f80fd5b5060f88061001b5f395ff3fe6080604052348015600e575f80fd5b50600436106030575f3560e01c80632e1a7d4d146034578063b6b55f2514604c575b5f80fd5b604a600480360381019060469190609c565b6064565b005b60626004803603810190605e9190609c565b6067565b005b50565b50565b5f80fd5b5f819050919050565b607e81606e565b81146087575f80fd5b50565b5f813590506096816077565b92915050565b5f6020828403121560ae5760ad606a565b5b5f60b984828501608a565b9150509291505056fea26469706673582212200b4e7bb379121e86181ee79a019def53b6ebb8d580dfaee6f8657e9ef0384a8964736f6c634300081a0033", + "deployedBytecode": "0x6080604052348015600e575f80fd5b50600436106030575f3560e01c80632e1a7d4d146034578063b6b55f2514604c575b5f80fd5b604a600480360381019060469190609c565b6064565b005b60626004803603810190605e9190609c565b6067565b005b50565b50565b5f80fd5b5f819050919050565b607e81606e565b81146087575f80fd5b50565b5f813590506096816077565b92915050565b5f6020828403121560ae5760ad606a565b5b5f60b984828501608a565b9150509291505056fea26469706673582212200b4e7bb379121e86181ee79a019def53b6ebb8d580dfaee6f8657e9ef0384a8964736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/legacy/evm/cache/solidity-files-cache.json b/legacy/evm/cache/solidity-files-cache.json new file mode 100644 index 0000000..e084dab --- /dev/null +++ b/legacy/evm/cache/solidity-files-cache.json @@ -0,0 +1,913 @@ +{ + "_format": "hh-sol-cache-2", + "files": { + "/Users/ekf/Downloads/Projects/bagfi/legacy/evm/contracts/BagFiZapper.sol": { + "lastModificationDate": 1778617221239, + "contentHash": "3590bc0b90173fbb1286d4f70c7b299d", + "sourceName": "contracts/BagFiZapper.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "@openzeppelin/contracts/interfaces/IERC4626.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "BagFiZapper" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "lastModificationDate": 1778891807101, + "contentHash": "9261adf6457863de3e9892f51317ec89", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.4.16" + ], + "artifacts": [ + "IERC20" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol": { + "lastModificationDate": 1778891807106, + "contentHash": "68f404451d4991e661423d4e1a7015a1", + "sourceName": "@openzeppelin/contracts/interfaces/IERC4626.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../token/ERC20/IERC20.sol", + "../token/ERC20/extensions/IERC20Metadata.sol" + ], + "versionPragmas": [ + ">=0.6.2" + ], + "artifacts": [ + "IERC4626" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "lastModificationDate": 1778891808014, + "contentHash": "bf8e9c3398d381dc66c5302267927386", + "sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC20.sol", + "../../../interfaces/IERC1363.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "SafeERC20" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "lastModificationDate": 1778891807102, + "contentHash": "513778b30d2750f5d2b9b19bbcf748a5", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC20.sol" + ], + "versionPragmas": [ + ">=0.6.2" + ], + "artifacts": [ + "IERC20Metadata" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol": { + "lastModificationDate": 1778891807079, + "contentHash": "a7fd0f05e36b0d0a21c75340c9c639ec", + "sourceName": "@openzeppelin/contracts/interfaces/IERC1363.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IERC20.sol", + "./IERC165.sol" + ], + "versionPragmas": [ + ">=0.6.2" + ], + "artifacts": [ + "IERC1363" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/interfaces/IERC20.sol": { + "lastModificationDate": 1778891807101, + "contentHash": "68620db2da7583d9a4919096ac77f577", + "sourceName": "@openzeppelin/contracts/interfaces/IERC20.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../token/ERC20/IERC20.sol" + ], + "versionPragmas": [ + ">=0.4.16" + ], + "artifacts": [] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/interfaces/IERC165.sol": { + "lastModificationDate": 1778891807081, + "contentHash": "947853028399b7de34bcc3704ee06e99", + "sourceName": "@openzeppelin/contracts/interfaces/IERC165.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/introspection/IERC165.sol" + ], + "versionPragmas": [ + ">=0.4.16" + ], + "artifacts": [] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "lastModificationDate": 1778891807081, + "contentHash": "7074c93b1ea0a122063f26ddd1db1032", + "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.4.16" + ], + "artifacts": [ + "IERC165" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol": { + "lastModificationDate": 1778891806345, + "contentHash": "ae4ce9f34bd057acac207aab7430bd9d", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../ERC20.sol", + "../utils/SafeERC20.sol", + "../../../interfaces/IERC4626.sol", + "../../../utils/LowLevelCall.sol", + "../../../utils/Memory.sol", + "../../../utils/math/Math.sol" + ], + "versionPragmas": [ + "^0.8.24" + ], + "artifacts": [ + "ERC4626" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/utils/LowLevelCall.sol": { + "lastModificationDate": 1778891807195, + "contentHash": "0474caccabcd255a35c82fe878701271", + "sourceName": "@openzeppelin/contracts/utils/LowLevelCall.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "LowLevelCall" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "lastModificationDate": 1778891806125, + "contentHash": "d15c4d05583536e080f1960ab282772d", + "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IERC20.sol", + "./extensions/IERC20Metadata.sol", + "../../utils/Context.sol", + "../../interfaces/draft-IERC6093.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC20" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/utils/Memory.sol": { + "lastModificationDate": 1778891807196, + "contentHash": "2807c1cb214d0448c35b60fc6d57c29e", + "sourceName": "@openzeppelin/contracts/utils/Memory.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./Panic.sol", + "./math/Math.sol" + ], + "versionPragmas": [ + "^0.8.24" + ], + "artifacts": [ + "Memory" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "lastModificationDate": 1778891807196, + "contentHash": "5b8c6935ac52b7494df19d6feb38f5cc", + "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../Panic.sol", + "./SafeCast.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Math" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/utils/Context.sol": { + "lastModificationDate": 1778891805163, + "contentHash": "67bfbc07588eb8683b3fd8f6f909563e", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Context" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "lastModificationDate": 1778891805675, + "contentHash": "bcc76f4747d56c28c40ae272ef3470a6", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.8.4" + ], + "artifacts": [ + "IERC1155Errors", + "IERC20Errors", + "IERC721Errors" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/utils/Panic.sol": { + "lastModificationDate": 1778891807764, + "contentHash": "2133dc13536b4a6a98131e431fac59e1", + "sourceName": "@openzeppelin/contracts/utils/Panic.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Panic" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": { + "lastModificationDate": 1778891808013, + "contentHash": "f28a38cd37f4225d0a91fb5405dd850f", + "sourceName": "@openzeppelin/contracts/utils/math/SafeCast.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "SafeCast" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/utils/Pausable.sol": { + "lastModificationDate": 1778891807764, + "contentHash": "0d47b53e10b1985efbb396f937626279", + "sourceName": "@openzeppelin/contracts/utils/Pausable.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/Context.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Pausable" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/legacy/evm/contracts/SmartBagVault.sol": { + "lastModificationDate": 1778697003694, + "contentHash": "bfbae56654d0a0cefa1979a4e71e03d1", + "sourceName": "contracts/SmartBagVault.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol", + "@openzeppelin/contracts/access/Ownable.sol", + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "@openzeppelin/contracts/utils/Pausable.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "SmartBagVault" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/node_modules/@openzeppelin/contracts/access/Ownable.sol": { + "lastModificationDate": 1778891807494, + "contentHash": "d3c790edc9ccf808a17c5a6cd13614fd", + "sourceName": "@openzeppelin/contracts/access/Ownable.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/Context.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Ownable" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/legacy/evm/contracts/mocks/MockERC20.sol": { + "lastModificationDate": 1778701529717, + "contentHash": "14470249fdd5394f4b745aad11832dd6", + "sourceName": "contracts/mocks/MockERC20.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "MockERC20" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/legacy/evm/contracts/mocks/MockRouter.sol": { + "lastModificationDate": 1778723664125, + "contentHash": "be6de7d10bf442432eb7a8bfd03fd25a", + "sourceName": "contracts/mocks/MockRouter.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "MockRouter" + ] + }, + "/Users/ekf/Downloads/Projects/bagfi/legacy/evm/contracts/mocks/MockStrategy.sol": { + "lastModificationDate": 1778701335829, + "contentHash": "c4d203dd1d3478345791fd247e8ae5c1", + "sourceName": "contracts/mocks/MockStrategy.sol", + "solcConfig": { + "version": "0.8.26", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "MockStrategy" + ] + } + } +} diff --git a/contracts/BagFiZapper.sol b/legacy/evm/contracts/BagFiZapper.sol similarity index 100% rename from contracts/BagFiZapper.sol rename to legacy/evm/contracts/BagFiZapper.sol diff --git a/contracts/SmartBagVault.sol b/legacy/evm/contracts/SmartBagVault.sol similarity index 100% rename from contracts/SmartBagVault.sol rename to legacy/evm/contracts/SmartBagVault.sol diff --git a/contracts/mocks/MockERC20.sol b/legacy/evm/contracts/mocks/MockERC20.sol similarity index 100% rename from contracts/mocks/MockERC20.sol rename to legacy/evm/contracts/mocks/MockERC20.sol diff --git a/contracts/mocks/MockRouter.sol b/legacy/evm/contracts/mocks/MockRouter.sol similarity index 100% rename from contracts/mocks/MockRouter.sol rename to legacy/evm/contracts/mocks/MockRouter.sol diff --git a/contracts/mocks/MockStrategy.sol b/legacy/evm/contracts/mocks/MockStrategy.sol similarity index 100% rename from contracts/mocks/MockStrategy.sol rename to legacy/evm/contracts/mocks/MockStrategy.sol diff --git a/hardhat.config.js b/legacy/evm/hardhat.config.js similarity index 100% rename from hardhat.config.js rename to legacy/evm/hardhat.config.js diff --git a/test/BagFiZapper.test.cjs b/legacy/evm/test/BagFiZapper.test.cjs similarity index 100% rename from test/BagFiZapper.test.cjs rename to legacy/evm/test/BagFiZapper.test.cjs diff --git a/test/SmartBagVault.test.cjs b/legacy/evm/test/SmartBagVault.test.cjs similarity index 100% rename from test/SmartBagVault.test.cjs rename to legacy/evm/test/SmartBagVault.test.cjs diff --git a/package.json b/package.json index f02251f..60c7bef 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,9 @@ "build": "next build", "start": "next start", "lint": "eslint .", - "test": "hardhat test", + "test": "vitest run", "test:ts": "vitest run", + "test:evm": "hardhat test --config legacy/evm/hardhat.config.js", "clean": "next clean" }, "dependencies": {